Hi Monica
There are a number of options:
A) If you have a GPU, you can use probtrackx2_gpu, which reduces execution time by 100-200 times.
B) With so many seed voxels you may not necessarily need many samples per seed, P=5000 seems like an overkill. I do not know what you track, but P=50 in that case may be enough.
C) Do you really need that many seed voxels? Are your data interpolated? If yes, there is no gain using interpolated data, so a downsampling of the seed mask may suffice (again depending on the context)
D) The reason that you get different results for different runs is that probabilistic tractography has stochastic components. If you really want to replicate results across separate runs, you can set the random number generator starting from the same seed (—seed option) and that will replicate the same stochastic components across runs.
E) If you therefore want to parallelise a probtrackx2 run, you can simply divide the number of samples per seed to subsets and then give for each run different —rseed values. You can at the end add the results.
For instance, if you have a probtrack run with P=5000 samples, you can divide that into e.g. 10 probtrackx runs, each with —P=50 and different seed (e.g. --rseed=1, —rseed=2, —rseed=3 etc). These 10 runs can run in parallel and at the end you can add the results.
> I know it says in the web page that it should take 1second per voxel. For me, in the tests I am running is taking anything between 4 and 15 sec. But that's a different issue…
Execution time depends on the resolution of your data. If you have very high resolution in the data you use, this means that either you have cutting-edge datasets or massively interpolated datasets. The latter is bad.
Cheers
Stam
> On 11 Oct 2019, at 19:39, Monica Keith <[log in to unmask]> wrote:
>
> Hi, I have a seed with 106464 voxels and a target. Because my seed is so large, it takes an insane amount of time running. So, I am thinking on ways to run probtrackx in parallel.
>
> For me, the easiest way would be to run 106464 tractographies (from each voxel of the seed to the same target). Off course, I cant run 106464 in parallel at the same time, but if I run 32 voxels at a time, the running time will come down from 18 days to 1 day (because it takes me 15 sec to run 1 voxel, so 1596960 sec to run in the whole mask and 49905 sec to run 3327 groups of 32 voxels).
>
> So, I did a test to see if I would get the same results. To do a fast test, I created 3 masks: one with voxel A, one with voxel B and one with voxels A and B. Because the output that I care about is the seed_to_target file, I was hoping that the values in the seed_to_traget from the tractography of the joint mask (the one with the two voxels) will give me the same values as the other two tractographies. That's what I should expect, right? well, that was not exactly the result:
>
> seed_to_target value for voxel A for tractography from that voxel: 80110.5
> seed_to_target value for voxel B for tractography from that voxel: 77924.5
> seed_to_target values for voxels A and B for tractography from joint mask: 77974 and 77924.5
>
> Why does it give me the same value for one voxel but not the other? Because I ran using the --pd option, I thought maybe it was related to that. So, I re-ran without that option. Now, these were the results:
> seed_to_target value for voxel A for tractography from that voxel: 727
> seed_to_target value for voxel B for tractography from that voxel: 695
> seed_to_target values for voxels A and B for tractography from joint mask: 724 and 695
> Again, gives the same result for voxel B but not voxel A. I thought perhaps it was because there's streamlines going from B to A. But in that case the joint mask would give a higher value. Instead, the mask with the single voxel A gives higher value than that voxel using the joint mask.
>
> What could possibly be the reason/explanation for this?
>
> This is the command I am running:
> The only thing that changes in the 3 runs is $MASK and $OUTPUT and I ran it with and without the --pd
>
> probtrackx2 -x $MASK -l --modeuler --onewaycondition --pd -c 0.2 -S 2000 --steplength=0.5 -P 5000 --fibthresh=0.01 --distthresh=0.0 --sampvox=0.0 --xfm=$TRANSFORM --avoid=$AVOID --stop=$TARGET --forcedir --opd -s $BEDPOSTX/merged -m $BEDPOSTX/nodif_brain_mask --dir=$OUTPUT --targetmasks=$TARGET --os2t
>
> Thanks!
>
> PS. I know it says in the web page that it should take 1second per voxel. For me, in the tests I am running is taking anything between 4 and 15 sec. But that's a different issue...
>
> ########################################################################
>
> To unsubscribe from the FSL list, click the following link:
> https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=FSL&A=1
########################################################################
To unsubscribe from the FSL list, click the following link:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?SUBED1=FSL&A=1
|