1
- =======
1
+ #######
2
2
Roadmap
3
- =======
3
+ #######
4
4
5
5
The roadmap is intended for larger, fundamental changes to the project that are
6
6
likely 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,
11
11
and may require the creation of one or more NIAPs (Nibabel Increased
12
12
Awesomeness Proposals).
13
13
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