Closed ebrahimebrahim closed 7 months ago
Inputs should be
Outputs
Here is my current idea for how to approach this:
template.py
stands for a script to be written here that takes a set of multichannel scalar images and a pariwise registration function as input, does Joshi style iterative template construction, and generates a template and a collection of warps to that template. Warps should be in a format mrtrix would understand. The pairwise registration function needs to be able to handle blurry images.mrtrix
step is to use mrtransform
to warp all the subject fods to the same space, and then to average them using mrmath
. you can see here how population_template
is doing its aggregation step.mrtrix
step does tractography in the template space using tckgen
.analysis.py
stands for a script we will write that takes a set of scalar subject images (say FA) and a tract in template space and a set of warps from the subject image to the template space. these ingredients can give a set of tract profiles of the scalar (e.g. FA) along the tract in the subject space. then we look at the intersubject variance of the scalar along the tract. the result is a set of functions of a tract parameter $t$ that output variance $\sigma^2$. these can be aggregated to generate an overall intersubject variance score. a registration algorithm is better at aligning tracts if this aggregate variance is smaller.mrmath
to average images in the first mrtrix
step, we might want to normalize the fods. otherwise the fods that seem to be large for no reason would be weighted higher in the average. fod magnitude seems to be very scanner dependent. does it matter if we normalize the fods before or after warping them? would be good to check.mrtrix
step with the tractography is going to require thinking about how to seed it, where to get the tracts, etc. might need to bring an atlas with some seed points on it or something.Registration algorithms to include in the evaluations:
Thinking about these, I think on second thought that a generic template.py
doesn't makes sense
The real goal is to generate the warps for each of these methods that we include in the evaluation.
After a research group meeting we are now thinking differently. Here is a summary:
This can be considered complete when there is at least one pathway (possibly consisting of many disparate scripts) that takes us from at least one pairwise registration method to a score that describes the quality of tract alignment.
I have finished a script (or yes, a collection of scripts) which starts from dwi images and outputs fiber tract scores using ANTs (w/ fa images). It is light on error checking, creates several temporary files, and uses some hardcoded filenames. It may be good enough for our evaluation purposes or we can address these issues.
It looks good, I'll test it out! Merging first and if I suggest any changes it'll be in my own PR.
We can talk about how to approach this but my current thought is to approach this in a way that uses template construction.
A generic way to go from a pairwise registration algorithm to a template construction algorithm is to use the classic Joshi-style iteration (as described in @jamesfishbaugh's presentation). Template construction will be both (a) an important step in our pipeline and (b) a possibly very useful step for the evaluation of our registration methodology.
In order to use template construction when evaluating and comparing different pairwise registration algorithms we'd like to have a script/function that can accept a generic pairwise registration function and a set of multichannel scalar images and does Joshi-style iterative template construction, generating a template and a collection of warps to that template.