Skip to content

Commit 76f525e

Browse files
authored
Merge pull request #47 from mgxd/doc/joss
initial joss draft
2 parents 9bfa598 + a1b1d64 commit 76f525e

File tree

2 files changed

+159
-0
lines changed

2 files changed

+159
-0
lines changed

joss/nt.bib

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
@article{cox_software_1997,
2+
author = {Cox, Robert W. and Hyde, James S.},
3+
copyright = {Copyright © 1997 John Wiley \& Sons, Ltd.},
4+
doi = {10.1002/(SICI)1099-1492(199706/08)10:4/5{ extless}171::AID-NBM453{ extgreater}3.0.CO;2-L},
5+
issn = {1099-1492},
6+
journal = {NMR Biomed},
7+
language = {en},
8+
number = {4-5},
9+
pages = {171-178},
10+
title = {Software tools for analysis and visualization of fMRI data},
11+
url = {http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1099-1492(199706/08)10:4/5{ extless}171::AID-NBM453{ extgreater}3.0.CO;2-L/abstract},
12+
volume = 10,
13+
year = 1997
14+
}
15+
16+
@article{brett_nibabel_2006,
17+
author = {Brett, Matthew and Markiewicz, Christopher J. and Hanke, Michael and Cote, Marc-Alexandre and Cipollini, Ben and McCarthy, Paul and Cheng, Chris and Halchenko, Yaroslav O. and Ghosh, Satrajit S. and Larson, Eric and Wassermann, Demian and Gerhard, Stephan},
18+
doi = {10.5281/zenodo.591597},
19+
journal = {Zenodo},
20+
pages = 3458246,
21+
title = {{Open Source Software: NiBabel}},
22+
url = {https://zenodo.org/record/3458246\#.XaS82-ZKi5M},
23+
year = 2006
24+
}
25+
26+
@article{fischl_freesurfer_2012,
27+
author = {Fischl, B.},
28+
doi = {10.1016/j.neuroimage.2012.01.021},
29+
issn = {1053-8119},
30+
journal = {NeuroImage},
31+
number = 2,
32+
pages = {774-781},
33+
title = {{FreeSurfer}},
34+
url = {http://www.sciencedirect.com/science/article/pii/S1053811912000389},
35+
volume = 62,
36+
year = 2012
37+
}
38+
39+
@article{jenkinson_fsl_2012,
40+
author = {Jenkinson, Mark and Beckmann, Christian F. and Behrens, Timothy E.J. and Woolrich, Mark W. and Smith, Stephen M.},
41+
doi = {10.1016/j.neuroimage.2011.09.015},
42+
issn = {1053-8119},
43+
journal = {NeuroImage},
44+
number = 2,
45+
pages = {782-790},
46+
shorttitle = {FSL},
47+
title = {{FSL}},
48+
url = {http://www.sciencedirect.com/science/article/pii/S1053811911010603},
49+
volume = 62,
50+
year = 2012
51+
}
52+
53+
@article{avants_symmetric_2008,
54+
author = {Avants, B.B. and Epstein, C.L. and Grossman, M. and Gee, J.C.},
55+
doi = {10.1016/j.media.2007.06.004},
56+
issn = {1361-8415},
57+
journal = {Medical Image Analysis},
58+
number = 1,
59+
pages = {26-41},
60+
shorttitle = {Symmetric diffeomorphic image registration with cross-correlation},
61+
title = {Symmetric diffeomorphic image registration with cross-correlation: Evaluating automated labeling of elderly and neurodegenerative brain},
62+
url = {http://www.sciencedirect.com/science/article/pii/S1361841507000606},
63+
volume = 12,
64+
year = 2008
65+
}
66+
67+
@book{friston_statistical_2006,
68+
address = {London},
69+
author = {Friston, Karl J. and Ashburner, John and Kiebel, Stefan J. and Nichols, Thomas E. and Penny, William D.},
70+
isbn = {978-0-12-372560-8},
71+
publisher = {Academic Press},
72+
shorttitle = {Statistical parametric mapping},
73+
title = {Statistical parametric mapping : the analysis of functional brain images},
74+
year = 2006
75+
}

joss/paper.md

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: 'NiTransforms: A Python tool to read, represent, manipulate, and apply $n$-dimensional spatial transforms'
3+
tags:
4+
- Python
5+
- neuroimaging
6+
- image processing
7+
- spatial transform
8+
- nibabel
9+
authors:
10+
- name: Mathias Goncalves
11+
orcid: 0000-0002-7252-7771
12+
affiliation: 1
13+
- name: Christopher J. Markiewicz
14+
orcid: 0000-0002-6533-164X
15+
affiliation: "1, 2"
16+
- name: Satrajit S. Ghosh
17+
orcid: 0000-0002-5312-6729
18+
affiliation: "2, 3"
19+
- name: Russell A. Poldrack
20+
orcid: 0000-0001-6755-0259
21+
affiliation: 1
22+
- name: Oscar Esteban
23+
orcid: 0000-0001-8435-6191
24+
affiliation: 1
25+
affiliations:
26+
- name: Department of Psychology, Stanford University, Stanford, CA, USA
27+
index: 1
28+
- name: McGovern Institute for Brain Research, Massachusetts Institute of Technology (MIT), Cambridge, MA, USA
29+
index: 2
30+
- name: Department of Otolaryngology, Harvard Medical School, Boston, MA, USA
31+
index: 3
32+
date: 04 November 2019
33+
bibliography: nt.bib
34+
---
35+
36+
# Summary
37+
38+
Spatial transforms formalize mappings between coordinates of objects in biomedical images.
39+
Transforms typically are the outcome of image registration methodologies, which estimate the alignment between two images.
40+
Image registration is a prominent task present in image processing.
41+
In neuroimaging, the proliferation of image registration software implementations has resulted in a disparate collection of structures and file formats used to preserve and communicate the transformation.
42+
This assortment of formats presents the challenge of compatibility between tools and endangers the reproducibility of results.
43+
44+
_NiTransforms_ is a Python tool capable of reading and writing tranforms produced by the most popular neuroimaging software (AFNI [@cox_software_1997], FSL [@jenkinson_fsl_2012], FreeSurfer [@fischl_freesurfer_2012], ITK via ANTs [@avants_symmetric_2008], and SPM [@friston_statistical_2006]).
45+
Additionally, the tool provides seamless conversion between these formats, as well as the ability of applying the transforms to other images.
46+
_NiTransforms_ is inspired by `NiBabel` [@brett_nibabel_2006], a Python package with a collection of tools to read, write and handle neuroimaging data, and will be included as a new module.
47+
48+
# Spatial transforms
49+
50+
Let $\vec{x}$ represent the coordinates of a point in the reference coordinate system $R$, and $\vec{x}'$ its projection on to another coordinate system $M$:
51+
52+
$T\colon R \subset \mathbb{R}^n \to M \subset \mathbb{R}^n$
53+
54+
$\vec{x} \mapsto \vec{x}' = f(\vec{x}).$
55+
56+
In an image registration problem, $M$ is a moving image from which we want to sample data in order to bring the image into spatial alignment with the reference image $R$.
57+
Hence, $f$ here is the spatial transformation function that maps from coordinates in $R$ to coordinates in $M$.
58+
There are a multiplicity of image registration algorithms and corresponding image transformation models to estimate linear and nonlinear transforms.
59+
60+
The problem has been traditionally confused by the need of _transforming_ or mapping one image (generally referred to as _moving_) into another that serves as reference, with the goal of _fusing_ the information from both.
61+
An example of image fusion application would be the alignment of functional data from one individual's brain to the same individual's corresponding anatomical MRI scan for visualization.
62+
Therefore, "applying a transform" entails two operations: first, transforming the coordinates of the samples in the reference image $R$ to find their mapping $\vec{x}'$ on $M$ via $T\{\cdot\}$, and second an interpolation step as $\vec{x}'$ will likely fall off-the-grid of the moving image $M$.
63+
These two operations are confusing because, while the spatial transformation projects from $R$ to $M$, the data flows in reversed way after the interpolation of the values of $M$ at the mapped coordinates $\vec{x}'$.
64+
65+
# Software Architecture
66+
67+
There are four main components within the tool: an `io` submodule to handle the structure of the various file formats, a `base` submodule where abstract classes are defined, a `linear` submodule implementing $n$-dimensional linear transforms, and a `nonlinear` submodule for both parametric and non-parametric nonlinear transforms.
68+
Furthermore, _NiTranforms_ provides a straightforward _Application Programming Interface_ (API) that allows researchers to map point sets via transforms, as well as apply transforms (i.e., mapping the coordinates and interpolating the data) to data structures with ease.
69+
70+
To ensure the consistency and uniformity of internal operations, all transforms are defined using a left-handed coordinate system of physical coordinates.
71+
In words from the neuroimaging domain, the coordinate system of transforms is _RAS+_ (or positive directions point to the Righthand for the first axis, Anterior for the second, and Superior for the third axis).
72+
The internal representation of transform coordinates is the most relevant design decision, and implies that a conversion of coordinate system is necessary to correctly interpret transforms generated by other software.
73+
When a transform that is defined in another coordinate system is loaded, it is automatically converted into _RAS+_ space.
74+
75+
_NiTransforms_ was developed using a test-driven development paradigm, with the
76+
battery of tests being written prior to the software implementations.
77+
Two categories of tests were used: unit tests and cross-tool comparison tests.
78+
Unit tests evaluate the formal correctness of the implementation, while cross-tool
79+
comparison tests assess the correct implementation of third-party software.
80+
The testing suite is incorporated into a continuous integration framework, which assesses the continuity of the implementation along the development life and ensures that code changes and additions do not break existing functionalities.
81+
82+
# Examples
83+
84+
# References

0 commit comments

Comments
 (0)