1- =======
1+ #######
22Roadmap
3- =======
3+ #######
44
55The roadmap is intended for larger, fundamental changes to the project that are
66likely to take months or years of developer time. Smaller-scoped items will
@@ -11,3 +11,81 @@ are likely to involve significant discussion among the core development team,
1111and may require the creation of one or more NIAPs (Nibabel Increased
1212Awesomeness Proposals).
1313
14+ ==========
15+ Background
16+ ==========
17+
18+ Nibabel is a workbench that provides a Python API for working with images in
19+ many formats. It is also a base library for tools implementing higher level
20+ processing.
21+
22+ Nibabel's success depends on:
23+
24+ * How easy it is to express common imaging tasks in the API.
25+ * The range of tasks it can perform.
26+
27+ An expressive, broad API will increase adoption and make it easier to teach.
28+
29+ Expressive API
30+ ==============
31+
32+ Axis and tick labels
33+ --------------------
34+
35+ Brain images typically have three or four axes, whose meanings depend on the
36+ way the image was acquired. Axes have natural labels, expressing meaning, such
37+ as "time" or "slice", and they may have tick labels such as acquisition time.
38+ The scanner captures this information, but typical image formats cannot store
39+ it, so it is easy to lose metadata and make analysis errors; see
40+ `https://github.com/nipy/nibabel/wiki/BIAP6 `_
41+
42+ We plan to expand Nibabel's API to encode axis and tick labels by integrating
43+ the Xarray package: `http://xarray.pydata.org `_. Xarray simplifies HDF5
44+ serialization, and visualization; see `https://napari.org `_.
45+
46+ An API for labels is not useful if we cannot read labels from the scanner
47+ data, or save them with the image. We plan to:
48+
49+ * Develop HDF5 equivalents of standard image formats, for serialization of
50+ data with labels.
51+ * Expand the current standard image format, NIfTI, to store labels in a JSON
52+ addition to image metadata: `https://github.com/nipy/nibabel/wiki/BIAP3 `_.
53+ * Read image metadata from DICOM, the standard scanner format.
54+
55+ Reading and attaching DICOM data will start with code integrated from Dcmstack,
56+ by Brendan Moloney: `https://github.com/moloney/dcmstack `_; see:
57+ `https://github.com/nipy/nibabel/wiki/BIAP4 `_.
58+
59+ DICOM metadata is often hidden inside "private" DICOM elements that need
60+ specialized parsers. We want to expand these parsers to preserve full metadata
61+ and build a normalization layer to abstract vendor-specific storage locations
62+ for metadata elements that describe the same thing.
63+
64+ API for surface data
65+ --------------------
66+
67+ Neuroimaging data often refers to locations on the brain surface. There are
68+ three common formats for such data: GIFTI, CIFTI and Freesurfer. Nibabel can
69+ read these formats, but lacks a standard API for reading and storing surface
70+ data with metadata; see `https://github.com/nipy/nibabel/issues/936 `_,
71+ `https://github.com/nilearn/nilearn/issues/2171 `_. We plan to develop
72+ a standard API, apply it to the standard formats, and design an efficient
73+ general HDF5 storage container for serializing surface data and metadata.
74+
75+ Range
76+ =====
77+
78+ Spatial transforms
79+ ------------------
80+
81+ Neuroimaging toolboxes include spatial registration methods to align the
82+ objects and features present in two or more images. Registration methods
83+ estimate and store spatial transforms. There is no standard or compatible
84+ format to store and reuse these transforms, across packages.
85+
86+ Because Nibabel is a workbench, we want to extend its support to read
87+ transforms calculated with AFNI, FreeSurfer, FSL, ITK/ANTs, NiftyReg, and SPM.
88+
89+ We have developed the NiTransforms project for this task; we plan to complete
90+ and integrate NiTransforms into Nibabel. This will make transforms more
91+ accessible to researchers, and therefore easier to work with, and reason about.
0 commit comments