Skip to content

Commit d9841d0

Browse files
committed
Roadmap from CZI application
[skip ci]
1 parent ce2d023 commit d9841d0

File tree

1 file changed

+80
-2
lines changed

1 file changed

+80
-2
lines changed

doc/source/devel/roadmap.rst

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
=======
1+
#######
22
Roadmap
3-
=======
3+
#######
44

55
The roadmap is intended for larger, fundamental changes to the project that are
66
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,
1111
and may require the creation of one or more NIAPs (Nibabel Increased
1212
Awesomeness 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

Comments
 (0)