Code Camp 2017
NeXus Code Camp - 24th to the 26th of October, 2017
Location: The Cosener’s house, Abingdon UK
Venue Website with contact details
Agenda
Tuesday
Morning
- Shape descriptions (Dean Keeble and Tim Spain will be visiting)
Afternoon
- C++ wrappers for HDF5
- Versioning
After Coffee
- Features
- Example files for Ray.
Evening
- 6:00 - 6:30 pre dinner drink
- 7:00 - Dinner at cosners house
- Main-Course: Rack of lamb with rosemary crumb, dauphinoise potato, chargrilled courgette, vine roasted cherry tomato, fine bean parcel and rosemary jus
- Vegetarian Option: Asparagus and broad bean risotto, parmesan tuile and lemon balm
- Pudding: Classic glazed lemon tart, crème fraiche and berries
Wednesday
Morning
- PDB integration (Greame Winter and Charles Mita will be visiting)
- Dealing with dropped frames
Afternoon
- 3pm VC with Pete on Versioning
- Detectors with modules in modules. (Aaron Brewster may be VCing in)
Evening
Thursday
Morning
- Event data (Alan Greer also attending)
- Event log disscussion and focus on example files.
Afternoon
The aim is to start at 10:00 on the 24th, 9:00 the other days and finish early afternoon on the 26th.
Minutes for the meeting
Tuesday Morning
Introductions
- Move the PDB and versions to the afternoons so that Pete Jemian can VC in
First item is to investigate the shape methodoloy as investigated by the ESS team
- There is concern over how the shape can accurately describe detectors, and how the data is mapped to the shape.
- Visualisation is important, but so it the use of full descriptions for analyis
- The OFF format will be used for Mantid and McStas
- A new description for Quadrics will be developed by DLS to deal with more complex descriptions for use with xrmc. There should be a converter for this to the OFF NeXus description.
Tuesday Afternoon
2 Seperate threads
Versioning
- Looking at the versioning concept as in the document
- Big discussion about the complexity of local vrs. global versioning, i.e version on baseclasses vrs. versioning on the file.
- Came to the conclusion of a single version number which increments gradually and incrementally to deal with new versions.
- Things to do
- UPDATE WORKFLOW - Questions here, but we will try to address at the code camp.
- VERSIONING SEMANTIC - Big changes bump version by 1
- VALIDATION - is easier now as there is only one global version to validate against
- LEGACY DOC - Still in the repository.
C++ wrappers for HDF5
- On ess-dmsc github h5cpp
- Came out of some HDF work, didn’t like the C++ API.
- Various parties were doing their own - Tobias asked them to work together.
- Eugen and Martin, ocassionally Jonas Nilison
- Auto builds docs, doxygen
- Migration of Eugen PNI code at the beginning. Lack of tests, now adding more tests.
- Aim to cover all of HDF5 features, e.g. SWMR, compound data types etc.
- Examples of implementation: write_simple_vector
- Suggest to use clang format.
- Using google’s style guide - need consistency
- Fortnightly meetings
- Implemented types: basic types int, float etc.
- Going to be used in the file writer
- Trying to make it as easy to use as h5py
- Looked at internal Paths
- Plan to create performance tests
- Will put on to conan
- Martin will replace the naïve version he is currently using.
- Detector people are interested in using it to store diagnostic data.
- Happy to take suggestions for things to be implement from other parties.
- Discussed using in-memory files for performance tests
- Setting up Windows automated build and hoping to OSX
- MPI support in the future?
- Using runtime exceptions - should it use something more tailored? Do something with the hdf error stack
Wednesday Morning
NXmx PDB discussion
- It was decided that NXmx could easily contain an NXpdb which contains the basic information required for PDB ingest
- Charles Mita from DLS will make a first pass at this for VMXi data
Dropped frames
- could the value be set to NXdetector.undefined, or NXdetector.saturation_value
- Could the count_time value be set to zero (or annother value) for the frame which is not there.
- a valid count time is anything zero or above, anything other than this is an invalid frame.
- The solution was to create a new dataset called frame_acquired
- a boolean dataset
- True if the frame is correcly collected, if the frame has been dropped by the datawriter and padded with fill value, then this shoud be set to False
- The fill value should be set to a value larger than the NXdetector.saturation_value
Wednesday Afternoon
Features
We all continued to work on features.
Versions revisitited with Pete
- It was agreed that Base class versions were not that useful, and so these can be made optional to inherit from the main version
- Agreed with the concept of global versioning
- in the January release the version numbers will move to Year.Month instead of 3.4
Modules in Modules, with Aaron Brewster.
- Seems like a sencible option
- TASK on AB to update the documentaion on modules to clarify the usage of the depends-on and pixel size
- TASK on AB to make an NXlog index class for multiple event streams.
Thursday Morning
- Discussion on NXevent_data
- Continue on features
Thursday Afternoon