User Tools

Site Tools


neuroimagen:tracula

TRACULA, integrando en el cluster

dmrirc

El primer paso ha de ser escribir el archivo de configuracion adecuado. Ha de tener una forma como esta,

[tester@detritus fstest]$ cat dmri.rc
set subjlist = (  fstest_0001 fstest_0027 fstest_0106 fstest_0119 fstest_0187 )
set dcmlist = ( /nas/data/fstest/bids/sub-0001/dwi/sub-0001_dwi.nii.gz /nas/data/fstest/bids/sub-0027/dwi/sub-0027_dwi.nii.gz /nas/data/fstest/bids/sub-0106/dwi/sub-0106_dwi.nii.gz /nas/data/fstest/bids/sub-0119/dwi/sub-0119_dwi.nii.gz /nas/data/fstest/bids/sub-0187/dwi/sub-0187_dwi.nii.gz )
set bveclist = ( /nas/data/fstest/bids/sub-0001/dwi/sub-0001_dwi.bvec /nas/data/fstest/bids/sub-0027/dwi/sub-0027_dwi.bvec /nas/data/fstest/bids/sub-0106/dwi/sub-0106_dwi.bvec /nas/data/fstest/bids/sub-0119/dwi/sub-0119_dwi.bvec /nas/data/fstest/bids/sub-0187/dwi/sub-0187_dwi.bvec )
set bvallist = ( /nas/data/fstest/bids/sub-0001/dwi/sub-0001_dwi.bval /nas/data/fstest/bids/sub-0027/dwi/sub-0027_dwi.bval /nas/data/fstest/bids/sub-0106/dwi/sub-0106_dwi.bval /nas/data/fstest/bids/sub-0119/dwi/sub-0119_dwi.bval /nas/data/fstest/bids/sub-0187/dwi/sub-0187_dwi.bval )

Teniendo la lista de sujetos y los archivos en formato BIDS es bastante simple escribir este archivo. Update: Asi que construimos un script que lo haga, asi como de que verifique y/o ejecute las segmentacion del thalamus ( ctrac_dmri.pl)

Ejemplo de dmri.rc

Escribir el archivo es bastante simple

Pero hay mas,

Al incorporar la posibilidad de ejecutar topup, ahora tenemos que suministrar ls bvec y bval no solo de nuestro DTI (sentido AP), sino del B0 que se usa para corregir (sentido PA). En el caso del DTI completo, estos se crean a partir del DICOM. En el caso del B0 individual, este es facil de construir. Los he puesto como plantillas en el pipeline y lo que hago es añadirlos en cada caso.

b0.bvec
0 0 0
b0.bval
0

Y todavia hay mas,

El nuevo TRACULA busca la segmentacion del Thalamus dentro del directorio de Freesurfer. Asi que para cada sujeto, he de verificar que exista el archivo mri/ThalamicNuclei.v12.T1.FSvoxelSpace.mgz o en caso contrario ejecutar algo como

$ segmentThalamicNuclei.sh subject

Esto por supuesto he de lanzarlo integrado en el cluster pues demora un rato. Dentro del script sería algo como,

                        unless ( -e $ENV{'SUBJECTS_DIR'}.'/'.$study.'_'.$subject.'/mri/ThalamicNuclei.v12.T1.FSvoxelSpace.mgz' ){
                                my %ptask = ( 'filename' => $outdir.'/segthalamus_'.$subject.'.sh',
                                        'job_name' => 'segthalamus_'.$study,
                                        'cpus' => 2,
                                        'time' => '2:0:0',
                                        'mem_per_cpu' => '4G',
                                        'partition' => 'fast',
                                        'output' => $outdir.'/segthalamus',
                                        'command' => 'segmentThalamicNuclei.sh '.$study.'_'.$subject,
                                );
                                my $jobid = send2slurm(\%ptask);
                                push @jobs, $jobid;
                        }

y despues aviso cuando terminen las segmentaciones,

if (scalar(@jobs)) {
        my $ljobs = join(',',@jobs);
        $ljobs = 'afterok:'.$ljobs;
        my %hey = (
                'filename' => $outdir.'/segthalamus_end.sh',
                'job_name' => 'segthalamus_'.$study,
                'output' => $outdir.'/segthalamus_end',
                'dependency' => $ljobs,
        );
        send2slurm(\%hey);
}

Procesos a correr

Ha cuatro pasos distintos que han de ejecutarse,

https://surfer.nmr.mgh.harvard.edu/fswiki/trac-all#Processingstepoptions

Pero el objetivo no es ejecutar directamente los pasos sino tomarlos por separado y enviarlos a slurm. trac-all tiene la opcion -jobs que en lugar de ejecutar las ordenes las escribe en un archivo de texto y nosotros somos los responsables de enviarlas al cluster.

-prep

El primer paso es el pre-processing. Ejecutamos el comando apropiado,

[tester@detritus fstest]$ trac-all -prep -c dmri.rc -jobs trac_step1.txt
INFO: SUBJECTS_DIR is /nas/data/subjects
INFO: Diffusion root is /nas/data/subjects
Actual FREESURFER_HOME /nas/usr/local/opt/freesurfer

y obtenemos la lista d ecomandos a ejecutarse,

[tester@detritus fstest]$ cat trac_step1.txt
trac-preproc -c /nas/data/subjects/fstest_0001/scripts/dmrirc.local -log /nas/data/subjects/fstest_0001/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0001/scripts/trac-all.cmd
trac-preproc -c /nas/data/subjects/fstest_0027/scripts/dmrirc.local -log /nas/data/subjects/fstest_0027/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0027/scripts/trac-all.cmd
trac-preproc -c /nas/data/subjects/fstest_0106/scripts/dmrirc.local -log /nas/data/subjects/fstest_0106/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0106/scripts/trac-all.cmd
trac-preproc -c /nas/data/subjects/fstest_0119/scripts/dmrirc.local -log /nas/data/subjects/fstest_0119/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0119/scripts/trac-all.cmd
trac-preproc -c /nas/data/subjects/fstest_0187/scripts/dmrirc.local -log /nas/data/subjects/fstest_0187/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0187/scripts/trac-all.cmd

Luego, es tan sencillos como hacer la plantilla, ejecutar un comando simple y luego lanzar el contenido del archivo output en el cluster.

Esto mas o menos se hace asi,

y deberia lanzarse,

$ ctrac_prep.pl [-cut <cut_file.txt>] proj

siendo cut_file.txt la lista de sujetos que queremos analizar exclusivamente (en caso de no ser el proyecto completo) y proj el nombre del proyecto.

-bedp

Este proceso es similar, se lanza el script,

[tester@detritus fstest]$ trac-all -bedp -c dmri.rc -jobs trac_step2.txt

Pero tiene una dificultad añadida, el output son tres archivos con ordenes. Cada archivo debe ejecutarse despues que el anterior haya terminado.

[tester@detritus fstest]$ ls trac_step2*
trac_step2.post.txt  trac_step2.pre.txt  trac_step2.txt
[tester@detritus fstest]$ cat trac_step2.pre.txt
bedpostx_preproc.sh /nas/data/subjects/fstest_0001/dmri
bedpostx_preproc.sh /nas/data/subjects/fstest_0027/dmri
bedpostx_preproc.sh /nas/data/subjects/fstest_0106/dmri
bedpostx_preproc.sh /nas/data/subjects/fstest_0119/dmri
bedpostx_preproc.sh /nas/data/subjects/fstest_0187/dmri
[tester@detritus fstest]$ cat trac_step2.txt
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 0 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 1 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 2 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 3 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 4 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 5 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 6 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 7 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 8 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 9 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 10 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 11 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 12 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 13 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 14 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 15 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 16 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 17 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 18 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0001/dmri 19 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 0 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 1 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 2 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 3 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 4 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 5 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 6 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 7 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 8 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 9 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 10 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 11 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 12 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 13 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 14 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 15 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 16 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 17 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 18 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0027/dmri 19 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 0 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 1 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 2 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 3 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 4 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 5 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 6 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 7 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 8 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 9 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 10 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 11 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 12 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 13 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 14 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 15 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 16 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 17 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 18 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0106/dmri 19 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 0 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 1 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 2 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 3 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 4 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 5 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 6 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 7 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 8 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 9 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 10 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 11 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 12 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 13 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 14 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 15 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 16 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 17 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 18 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0119/dmri 19 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 0 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 1 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 2 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 3 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 4 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 5 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 6 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 7 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 8 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 9 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 10 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 11 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 12 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 13 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 14 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 15 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 16 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 17 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 18 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
bedpostx_single_slice.sh /nas/data/subjects/fstest_0187/dmri 19 --nf=2 --fudge=1 --bi=1000 --nj=1250 --se=25 --model=1 --cnonlinear
[tester@detritus fstest]$ cat trac_step2.post.txt
bedpostx_postproc.sh /nas/data/subjects/fstest_0001/dmri
bedpostx_postproc.sh /nas/data/subjects/fstest_0027/dmri
bedpostx_postproc.sh /nas/data/subjects/fstest_0106/dmri
bedpostx_postproc.sh /nas/data/subjects/fstest_0119/dmri
bedpostx_postproc.sh /nas/data/subjects/fstest_0187/dmri

Esto lo voy a hacer aprovechando el sistema de dependencias de SLURM. Lanzo el primer grupo, pongo una bandera que dependa de que todos terminen, lanzo el segundo grupo, haciendo que dependa de la bandera y asi sucesivamente. ;-)

Tiene su truco pero no es tan complicado

y ya hemos hecho el bedpost.

OJO que esta parte demora bastante pero no mas que lanzar los bedpost con FSL.

-path

Y ahora el probtrack.

[tester@detritus fstest]$ trac-all -path -c dmri.rc -jobs trac_step3.txt
INFO: SUBJECTS_DIR is /nas/data/subjects
INFO: Diffusion root is /nas/data/subjects
Actual FREESURFER_HOME /nas/usr/local/opt/freesurfer

Son unas pocas lineas ahora,

[tester@detritus fstest]$ cat trac_step3.txt
trac-paths -c /nas/data/subjects/fstest_0001/scripts/dmrirc.local -log /nas/data/subjects/fstest_0001/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0001/scripts/trac-all.cmd
trac-paths -c /nas/data/subjects/fstest_0027/scripts/dmrirc.local -log /nas/data/subjects/fstest_0027/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0027/scripts/trac-all.cmd
trac-paths -c /nas/data/subjects/fstest_0106/scripts/dmrirc.local -log /nas/data/subjects/fstest_0106/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0106/scripts/trac-all.cmd
trac-paths -c /nas/data/subjects/fstest_0119/scripts/dmrirc.local -log /nas/data/subjects/fstest_0119/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0119/scripts/trac-all.cmd
trac-paths -c /nas/data/subjects/fstest_0187/scripts/dmrirc.local -log /nas/data/subjects/fstest_0187/scripts/trac-all.log -cmd /nas/data/subjects/fstest_0187/scripts/trac-all.cmd

Esto vuelve a ser sencillo, solo hay que reaprovechar un poco el script inicial,

-stat

Y la ultima parte,

[tester@detritus fstest]$ trac-all -stat -c dmri.rc -jobs trac_step4.txt
INFO: SUBJECTS_DIR is /nas/data/subjects
INFO: Diffusion root is /nas/data/subjects
Actual FREESURFER_HOME /nas/usr/local/opt/freesurfer

Son unas lineas mas pero es iguaun solo archivo, sin dependencias,

[tester@detritus fstest]$ cat trac_step4.txt
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.cst_AS.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.cst_AS.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.cst_AS.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.cst_AS.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.cst_AS.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.cst_AS.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.ilf_AS.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.ilf_AS.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.ilf_AS.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.ilf_AS.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.ilf_AS.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.ilf_AS.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.unc_AS.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.unc_AS.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.unc_AS.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.unc_AS.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.unc_AS.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.unc_AS.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/fmajor_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/fmajor_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/fmajor_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/fminor_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/fminor_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/fminor_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.atr_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.atr_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.atr_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.atr_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.atr_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.atr_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.ccg_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.ccg_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.ccg_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.ccg_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.ccg_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.ccg_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.cab_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.cab_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.cab_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.cab_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.cab_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.cab_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.slfp_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.slfp_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.slfp_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.slfp_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.slfp_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.slfp_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/lh.slft_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/lh.slft_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/lh.slft_PP.avg33_mni_bbr.log
/nas/usr/local/opt/freesurfer/bin/dmri_group --list /nas/data/subjects/stats/rh.slft_PP.avg33_mni_bbr.inputs.txt --ref /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz --out /nas/data/subjects/stats/rh.slft_PP.avg33_mni_bbr |& tee -a /nas/data/subjects/stats/rh.slft_PP.avg33_mni_bbr.log

Hay que retocar un poco y ya esta,

tl;dr

$ ctrac_prep.pl proj
$ ctrac_bedp.pl proj
$ ctrac_path.pl proj
$ ctrac_stat.pl proj

Lista de los PATHs

lh.cst_AS: Left corticospinal tract
rh.cst_AS: Right corticospinal tract
lh.ilf_AS: Left inferior longitudinal fasciculus
rh.ilf_AS: Right inferior longitudinal fasciculus
lh.unc_AS: Left uncinate fasciculus
rh.unc_AS: Right uncinate fasciculus
fmajor_PP: Corpus callosum - forceps major
fminor_PP: Corpus callosum - forceps minor
lh.atr_PP: Left anterior thalamic radiations
rh.atr_PP: Right anterior thalamic radiations
lh.ccg_PP: Left cingulum - cingulate gyrus endings
rh.ccg_PP: Right cingulum - cingulate gyrus endings
lh.cab_PP: Left cingulum - angular bundle
rh.cab_PP: Right cingulum - angular bundle
lh.slfp_PP: Left superior longitudinal fasciculus - parietal endings
rh.slfp_PP: Right superior longitudinal fasciculus - parietal endings
lh.slft_PP: Left superior longitudinal fasciculus - temporal endings
rh.slft_PP: Right superior longitudinal fasciculus - temporal endings 

Resultados

Tractos,

[fsluser@FSLVm7_64 ~]$ freeview -v /nas/data/subjects/fstest_0027/dmri/dtifit_FA.nii.gz /nas/data/subjects/fstest_0027/dpath/rh.ilf_AS_avg33_mni_bbr/path.pd.nii.gz:colormap=heat:isosurface=0,0:color='Red':name=rh.ilf /nas/data/subjects/fstest_0027/dpath/lh.ilf_AS_avg33_mni_bbr/path.pd.nii.gz:colormap=heat:isosurface=0,0:color='Red':name=lh.ilf

Pathways,

[fsluser@FSLVm7_64 ~]$ freeview -v /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz -w /nas/data/stats_fstest/*.path.mean.txt


Ojo, esto para FACEHBI no sirve

[fsluser@FSLVm7_64 ~]$ freeview -v /usr/local/fsl/data/standard/MNI152_T1_1mm_brain.nii.gz /nas/data/subjects/fstest_0027/dmri/mni/dtifit_FA.bbr.nii.gz &


Parseando

Freesurfer deja todos los resultados dentro del directorio del sujeto y saca, ademas, estadisticas grupales relativas a los tractos que se han calculado. Pero lo que queremos es algo distinto, determinar el valor medio de FA y MD en los tractos calculados, para todos los sujetos y ponerlo en un mismo archivo que se pueda integrar con los resultados del resto de proyectos.

Cada tracto esta almacenado en un direcotrio independiente dentro del directorio dpath,

[tester@detritus fstest]$ ls /nas/data/subjects/fstest_0001/dpath/
fmajor_PP_avg33_mni_bbr  lh.cab_PP_avg33_mni_bbr  lh.ilf_AS_avg33_mni_bbr   lh.unc_AS_avg33_mni_bbr   rh.cab_PP_avg33_mni_bbr  rh.ilf_AS_avg33_mni_bbr   rh.unc_AS_avg33_mni_bbr
fminor_PP_avg33_mni_bbr  lh.ccg_PP_avg33_mni_bbr  lh.slfp_PP_avg33_mni_bbr  merged_avg33_mni_bbr.mgz  rh.ccg_PP_avg33_mni_bbr  rh.slfp_PP_avg33_mni_bbr
lh.atr_PP_avg33_mni_bbr  lh.cst_AS_avg33_mni_bbr  lh.slft_PP_avg33_mni_bbr  rh.atr_PP_avg33_mni_bbr   rh.cst_AS_avg33_mni_bbr  rh.slft_PP_avg33_mni_bbr

Y dentro de este subdirectorio nos interesa el archivo pathstats.overall.txt,

[tester@detritus fstest]$ ls /nas/data/subjects/fstest_0001/dpath/fmajor_PP_avg33_mni_bbr/
endpt1.pd.nii.gz  endpt2.pd.nii.gz  length.samples.txt  log.txt  path.map.nii.gz  path.map.txt  path.pd.nii.gz  path.pd.trk  pathstats.byvoxel.txt  pathstats.overall.txt  pd.samples.txt

Y dentro de este archivo el valor que necesitamos,

[tester@detritus fstest]$ grep "FA_Avg " /nas/data/subjects/fstest_0001/dpath/fmajor_PP_avg33_mni_bbr/pathstats.overall.txt
FA_Avg 0.528634

Entonces, solo hay que ir sujeto por sujeto compilando estos valores y escribiendolos en un archivo de salida.

Esto se resume facilmente

Basta hacer,

$ ctrac_metrics.pl proj

y el archivo de salida sera algo como,

[tester@detritus fstest]$ head fstest_dti_tracula.csv
Subject;fmajor_FA;fmajor_MD;fminor_FA;fminor_MD;lh.atr_FA;lh.atr_MD;lh.cab_FA;lh.cab_MD;lh.ccg_FA;lh.ccg_MD;lh.cst_FA;lh.cst_MD;lh.ilf_FA;lh.ilf_MD;lh.slfp_FA;lh.slfp_MD;lh.slft_FA;lh.slft_MD;lh.unc_FA;lh.unc_MD;rh.atr_FA;rh.atr_MD;rh.cab_FA;rh.cab_MD;rh.ccg_FA;rh.ccg_MD;rh.cst_FA;rh.cst_MD;rh.ilf_FA;rh.ilf_MD;rh.slfp_FA;rh.slfp_MD;rh.slft_FA;rh.slft_MD;rh.unc_FA;rh.unc_MD
0001;0.528634;0.000827984;0.418862;0.000837851;0.38762;0.000808873;0.285617;0.000864355;0.480356;0.000927924;0.486141;0.00071761;0.404125;0.000826366;0.311155;0.000771376;0.359977;0.000805707;0.364496;0.000803023;0.36817;0.000803661;0.347436;0.000818787;0.398203;0.000860262;0.467309;0.00073149;0.42421;0.000816664;0.349221;0.000768625;0.384073;0.000786565;0.368076;0.000801726
0027;0.537571;0.000800813;0.420022;0.000846507;0.420897;0.00079418;0.290632;0.000903317;0.353056;0.000831895;0.508674;0.000771471;0.418434;0.000842544;0.329285;0.00079904;0.368359;0.000812858;0.35905;0.000849702;0.393285;0.000811594;0.26983;0.000928979;0.361511;0.000850733;0.464204;0.000768423;0.422892;0.000849195;0.333106;0.000782956;0.371509;0.000784775;0.361369;0.000828747
0106;0.570249;0.000748165;0.452091;0.000846462;0.423598;0.000723258;0.296025;0.000793815;0.467001;0.000824213;0.509462;0.000698;0.458105;0.000795525;0.382791;0.000692079;0.433996;0.000715618;0.370571;0.000816281;0.424781;0.00071601;0.226781;0.000810964;0.462459;0.000751646;0.477618;0.000710536;0.409424;0.000773103;0.382323;0.000694046;0.407935;0.000691525;0.378478;0.00080298
0119;0.614449;0.00074317;0.446337;0.000752267;0.386983;0.000713591;0.324273;0.000784348;0.441098;0.00081737;0.54778;0.000678324;0.528145;0.000754968;0.38144;0.000697071;0.437348;0.000700224;0.447795;0.000759076;0.386529;0.000724425;0.273868;0.000809277;0.440816;0.000772664;0.502312;0.000701165;0.4749;0.000745737;0.370977;0.000699952;0.442473;0.000708482;0.396617;0.000739047
0187;0.466919;0.00087339;0.400457;0.000966647;0.362489;0.000821896;0.211317;0.00098259;0.348662;0.000967363;0.498185;0.00080447;0.363993;0.00089466;0.331463;0.0008317;0.382911;0.000838648;0.309629;0.00091525;0.343212;0.000843028;0.275517;0.000922106;0.349813;0.000884783;0.459096;0.000764194;0.40892;0.000906821;0.342572;0.000813444;0.386516;0.000817556;0.34704;0.000918453

Updating to TRACULA FS 7.2

Con la nueva version de FS, se introduce la capacidad de corregir el DTI con otro hecho en sentido inverso. Vamos a hacer esto obligatorio en el pipeline.

[osotolongo@brick03 ~]$ make_proj.pl ttrac /nas/bioface_raw
[osotolongo@brick03 ~]$ cd /nas/data/ttrac/
[osotolongo@brick03 ttrac]$ update_mri_db.pl ttrac
[osotolongo@brick03 bids]$ bulk2bids.pl ttrac
[osotolongo@brick03 ttrac]$ cp ttrac_mri.csv ttrac_mri.csv.orig
[osotolongo@brick03 ttrac]$ head ttrac_mri.csv.orig > ttrac_mri.csv

cambios dmri.rc

Voy a generar un archivo dmri para que se tenga en cuenta la correcion (ctrac_dmri.pl).

Aqui necesito los valores de Echo spacing y EPI factor. Esto lo tengo que sacar del protocolo de DTI de cada proyecto.

Y ahora basicamente lo que hago es algo asi,

ctrac_dmri.pl -epif 112 -echosp 0.96 ttrac

que genera un archivo como,

[osotolongo@brick03 ttrac]$ cat dmri.rc 
set dob0 = 2
set subjlist = (  ttrac_0002 ttrac_0002 ttrac_0004 ttrac_0004 ttrac_0006 ttrac_0006 ttrac_0007 ttrac_0007 ttrac_0009 ttrac_0009 ttrac_0010 ttrac_0010 )
set dcmlist = ( /old_nas/data/ttrac/bids/sub-0002/dwi/sub-0002_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0002/dwi/sub-0002_dir-PA_sbref_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0004/dwi/sub-0004_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0004/dwi/sub-0004_dir-PA_sbref_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0006/dwi/sub-0006_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0006/dwi/sub-0006_dir-PA_sbref_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0007/dwi/sub-0007_run-01_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0007/dwi/sub-0007_dir-PA_sbref_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0009/dwi/sub-0009_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0009/dwi/sub-0009_dir-PA_sbref_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0010/dwi/sub-0010_dwi.nii.gz /old_nas/data/ttrac/bids/sub-0010/dwi/sub-0010_dir-PA_sbref_dwi.nii.gz )
set bveclist = ( /old_nas/data/ttrac/bids/sub-0002/dwi/sub-0002_dwi.bvec /nas/software/neuro.dev/lib/b0.bvec /old_nas/data/ttrac/bids/sub-0004/dwi/sub-0004_dwi.bvec /nas/software/neuro.dev/lib/b0.bvec /old_nas/data/ttrac/bids/sub-0006/dwi/sub-0006_dwi.bvec /nas/software/neuro.dev/lib/b0.bvec /old_nas/data/ttrac/bids/sub-0007/dwi/sub-0007_run-01_dwi.bvec /nas/software/neuro.dev/lib/b0.bvec /old_nas/data/ttrac/bids/sub-0009/dwi/sub-0009_dwi.bvec /nas/software/neuro.dev/lib/b0.bvec /old_nas/data/ttrac/bids/sub-0010/dwi/sub-0010_dwi.bvec /nas/software/neuro.dev/lib/b0.bvec )
set bvallist = ( /old_nas/data/ttrac/bids/sub-0002/dwi/sub-0002_dwi.bval /nas/software/neuro.dev/lib/b0.bval /old_nas/data/ttrac/bids/sub-0004/dwi/sub-0004_dwi.bval /nas/software/neuro.dev/lib/b0.bval /old_nas/data/ttrac/bids/sub-0006/dwi/sub-0006_dwi.bval /nas/software/neuro.dev/lib/b0.bval /old_nas/data/ttrac/bids/sub-0007/dwi/sub-0007_run-01_dwi.bval /nas/software/neuro.dev/lib/b0.bval /old_nas/data/ttrac/bids/sub-0009/dwi/sub-0009_dwi.bval /nas/software/neuro.dev/lib/b0.bval /old_nas/data/ttrac/bids/sub-0010/dwi/sub-0010_dwi.bval /nas/software/neuro.dev/lib/b0.bval )
set pedir = ( AP PA AP PA AP PA AP PA AP PA AP PA )
set echospacing = 0.96
set epifactor = 112

Aqui guardan los valores del B0 en direccion PA y todo lo que es necesario para hacer la correccion.

cambios -prep

El proximo commando, que seria algo como,

[osotolongo@brick03 ttrac]$ trac-all -prep -c dmri.rc -jobs trac_step1.txt

genera las ordenes que deben lanzarse en paralelo,

[osotolongo@brick03 ttrac]$ cat  trac_step1.txt
trac-preproc -c /old_nas/subjects/ttrac_0002/scripts/dmrirc.local -log /old_nas/subjects/ttrac_0002/scripts/trac-all.log -cmd /old_nas/subjects/ttrac_0002/scripts/trac-all.cmd
trac-preproc -c /old_nas/subjects/ttrac_0004/scripts/dmrirc.local -log /old_nas/subjects/ttrac_0004/scripts/trac-all.log -cmd /old_nas/subjects/ttrac_0004/scripts/trac-all.cmd
trac-preproc -c /old_nas/subjects/ttrac_0006/scripts/dmrirc.local -log /old_nas/subjects/ttrac_0006/scripts/trac-all.log -cmd /old_nas/subjects/ttrac_0006/scripts/trac-all.cmd
trac-preproc -c /old_nas/subjects/ttrac_0007/scripts/dmrirc.local -log /old_nas/subjects/ttrac_0007/scripts/trac-all.log -cmd /old_nas/subjects/ttrac_0007/scripts/trac-all.cmd
trac-preproc -c /old_nas/subjects/ttrac_0009/scripts/dmrirc.local -log /old_nas/subjects/ttrac_0009/scripts/trac-all.log -cmd /old_nas/subjects/ttrac_0009/scripts/trac-all.cmd
trac-preproc -c /old_nas/subjects/ttrac_0010/scripts/dmrirc.local -log /old_nas/subjects/ttrac_0010/scripts/trac-all.log -cmd /old_nas/subjects/ttrac_0010/scripts/trac-all.cmd

Asi como el config para que cada orden se ejecute individualmente,

Este paso y los siguientes son similares a la version antigua de FS, y estan en ctrac_prep.pl, ctrac_bedp.pl, ctrac_path.pl y ctrac_stat.pl.

Aqui hay que añadir un FIX cuando se hace el -prep. Segun https://www.mail-archive.com/freesurfer@nmr.mgh.harvard.edu/msg70655.html, se han de lanzar las tareas independientes con una orden previa de setenv MY_MORPHS_DO_NOT_CONFORM_DEAL_WITH_IT. Asi que aqui el envio de ordenes toma la forma,

my %ptask;
$ptask{'job_name'} = 'trac_prep_'.$study;
$ptask{'cpus'} = $cpus;
$ptask{'time'} = '72:0:0';
$ptask{'mem_per_cpu'} = '4G';
$ptask{'partition'} = 'fast';
while (<CORD>){
        #ahora hay que enviar cada orden de este archivo al cluster
        (my $subj) = /subjects\/$study\_(.*)\/scripts\/dmrirc/;
        #print "$subj\n";
        $ptask{'filename'} = $outdir.'/'.$subj.'_trac_prep.sh';
        $ptask{'output'} = $outdir.'/trac_prep';
        $ptask{'command'} = 'export MY_MORPHS_DO_NOT_CONFORM_DEAL_WITH_IT=1'."\n".$_;
        send2slurm(\%ptask);
}
close CORD;

Por simplicidad he quitado la capacidad de los scripts intermedios de construir el dmri.rc asi que ahora es obligatorio que exista siempre.

metrics

Las metricas tambien han cambiado en esta version (https://dmri.mgh.harvard.edu/tract-atlas/). En la version 7.2 puedo obtener la lista de paths haciendo algo asi,

[osotolongo@brick03 ttrac]$ ls /old_nas/subjects/ttrac_0002/dpath/*/pathstats.overall.txt | awk -F"/" '{print $6}' | awk -F "_" {'printf("\047%s\047 => \047%s\047,\n", $1, $0)'} 
'acomm' => 'acomm_avg16_syn_bbr',
'cc.bodyc' => 'cc.bodyc_avg16_syn_bbr',
'cc.bodyp' => 'cc.bodyp_avg16_syn_bbr',
'cc.bodypf' => 'cc.bodypf_avg16_syn_bbr',
'cc.bodypm' => 'cc.bodypm_avg16_syn_bbr',
'cc.bodyt' => 'cc.bodyt_avg16_syn_bbr',
'cc.genu' => 'cc.genu_avg16_syn_bbr',
'cc.rostrum' => 'cc.rostrum_avg16_syn_bbr',
'cc.splenium' => 'cc.splenium_avg16_syn_bbr',
'lh.af' => 'lh.af_avg16_syn_bbr',
'lh.ar' => 'lh.ar_avg16_syn_bbr',
'lh.atr' => 'lh.atr_avg16_syn_bbr',
'lh.cbd' => 'lh.cbd_avg16_syn_bbr',
'lh.cbv' => 'lh.cbv_avg16_syn_bbr',
'lh.cst' => 'lh.cst_avg16_syn_bbr',
'lh.emc' => 'lh.emc_avg16_syn_bbr',
'lh.fat' => 'lh.fat_avg16_syn_bbr',
'lh.fx' => 'lh.fx_avg16_syn_bbr',
'lh.ilf' => 'lh.ilf_avg16_syn_bbr',
'lh.mlf' => 'lh.mlf_avg16_syn_bbr',
'lh.or' => 'lh.or_avg16_syn_bbr',
'lh.slf1' => 'lh.slf1_avg16_syn_bbr',
'lh.slf2' => 'lh.slf2_avg16_syn_bbr',
'lh.slf3' => 'lh.slf3_avg16_syn_bbr',
'lh.uf' => 'lh.uf_avg16_syn_bbr',
'mcp' => 'mcp_avg16_syn_bbr',
'rh.af' => 'rh.af_avg16_syn_bbr',
'rh.ar' => 'rh.ar_avg16_syn_bbr',
'rh.atr' => 'rh.atr_avg16_syn_bbr',
'rh.cbd' => 'rh.cbd_avg16_syn_bbr',
'rh.cbv' => 'rh.cbv_avg16_syn_bbr',
'rh.cst' => 'rh.cst_avg16_syn_bbr',
'rh.emc' => 'rh.emc_avg16_syn_bbr',
'rh.fat' => 'rh.fat_avg16_syn_bbr',
'rh.fx' => 'rh.fx_avg16_syn_bbr',
'rh.ilf' => 'rh.ilf_avg16_syn_bbr',
'rh.mlf' => 'rh.mlf_avg16_syn_bbr',
'rh.or' => 'rh.or_avg16_syn_bbr',
'rh.slf1' => 'rh.slf1_avg16_syn_bbr',
'rh.slf2' => 'rh.slf2_avg16_syn_bbr',
'rh.slf3' => 'rh.slf3_avg16_syn_bbr',
'rh.uf' => 'rh.uf_avg16_syn_bbr',

tl;dr


Entonces, ahora el procedimiento general es,

$ ctrac_dmri.pl -epif XXX -echosp X.XX proj
$ ctrac_prep.pl proj
$ ctrac_bedp.pl proj
$ ctrac_path.pl proj
$ ctrac_stat.pl proj
$ ctrac_metrics.pl proj

neuroimagen/tracula.txt · Last modified: 2021/08/20 15:12 by osotolongo