Main ==== + Add plane/frame-number/broken metadata in the UFO buffers. Check propagation trough standard ufo filters. [ propogates trough processors, but not reductors ] + Plane selector filter - Handle packets with data from multiple datasets + Try UFO 'flat-field' correction filter [ works to a degree, but possible to make it better + anyway multiple planes will be needed later likely... ] - Compute flat-/dark-fields per plane. - Support reading raw sinograms in get_reader (we need to set dimensions like in flat-/dark-fields, but howto handle parallel-sinograms/slices - function in config?) - Cone-beam to parallel-beam resampling ? - Full reconstruction chain - Try UFO visualization filter - "Reconstructed data storage" and "Visualization + raw data storage" modes. Implement stand-alone 'roof-converter' filter. If necesary =========== - Task 'roof-ingest-missing' to ingest zero-padded broken frames (and include get_writer()) - Add ROOF metadata (plane, etc.) if reading from sinograms Optional ======== - Try online compression of the ROOF data @Gregoire - Introduce JSON schema and JSON schema validator @Zhassulan - If neceessary, reconstruct slightly broken frames (currently dropped) @Zhassulan - Implement fast-writer filter for quick raw data storage * Either include plane in the file name or pass invalid frames trough (so we can compute the frame number)? ? Support multi-plane configuration in the roof.py Ufo bugs ======== - Complain if TIF-writer is used with 1D data. Ufo features ============ ? Support non-fp data in UFO writer