This is an old revision of the document!
Una opcion para preprocesar las imagenes fMRI es utilizar C-PAC.
Se instala bajando una imagen docker que he transformado a Singularity.
Siguiendo la documentacion puede lanzarse como,
[osotolongo@brick01 mopead]$ singularity run --cleanenv -B /nas/data/mopead/bids:/bids_dataset -B /nas/data/mopead/cpac_out:/outputs -B /nas/data/mopead/tmp:/scratch /nas/software/cpac-latest.simg /bids_dataset /outputs participant --participant_label sub-0001
Nota: el tag –cleanenv es necesario para que singularity no tome las variables del bash_profile de la maquina sino las de la imagen.
y por supuesto, la primera vez no funciona,
*********************************** 190516-08:51:36,763 nipype.workflow ERROR: could not run node: resting_preproc_sub-0001_ses-1.anat_preproc_afni_0.anat_skullstrip 190516-08:51:36,765 nipype.workflow INFO: crashfile: /outputs/crash/crash-20190516-084320-osotolongo-anat_skullstrip-28dd4540-f205-44b7-9ad2-c4af06706a15.pklz 190516-08:51:36,769 nipype.workflow INFO: ***********************************
Puedo cambiar el skullstrip para hacerlo con FSL, pero he de especificarlo en la configuracion del pipeline. Asi que me copio un archivo previo y lo cambio.
# Choice of using AFNI or FSL-BET to perform SkullStripping skullstrip_option: [BET]
La orden ahora es ligeramente diferente pues he de especificar el archivo de configuracion del pipeline,
[osotolongo@brick01 mopead]$ singularity run --cleanenv -B /nas/data/mopead:/project -B /nas/data/mopead/bids:/bids_dataset -B /nas/data/mopead/cpac_out:/outputs -B /nas/data/mopead/tmp:/scratch /nas/software/cpac-latest.simg --pipeline_file /project/cpac_pipeline_config.yml /bids_dataset /outputs participant --participant_label sub-0002
183 minutos después,
End of subject workflow resting_preproc_sub-0002_ses-1 CPAC run complete: Pipeline configuration: analysis Subject workflow: resting_preproc_sub-0002_ses-1 Elapsed run time (minutes): 184.085074282 Timing information saved in /outputs/log/cpac_individual_timing_analysis.csv System time of start: 2019-05-16 09:17:52 System time of completion: 2019-05-16 12:21:49
El output es enorme,
[osotolongo@brick01 mopead]$ ls cpac_out/output/pipeline_analysis_nuisance/sub-0002_ses-1/ alff_to_standard_smooth_zstd frame_wise_displacement_power anatomical_brain functional_brain_mask anatomical_csf_mask functional_brain_mask_to_standard anatomical_gm_mask functional_freq_filtered anatomical_reorient functional_nuisance_regressors anatomical_to_mni_nonlinear_xfm functional_to_anat_linear_xfm anatomical_to_standard functional_to_standard anatomical_to_symmetric_mni_nonlinear_xfm mean_functional_to_standard anatomical_wm_mask mni_to_anatomical_nonlinear_xfm ants_affine_xfm motion_correct ants_initial_xfm motion_params ants_rigid_xfm qc ants_symmetric_affine_xfm qc_html ants_symmetric_initial_xfm roi_timeseries ants_symmetric_rigid_xfm spatial_map_timeseries centrality_smooth_zstd spatial_map_timeseries_for_DR dr_tempreg_maps_files_to_standard_smooth symmetric_anatomical_to_standard dr_tempreg_maps_zstat_files_to_standard_smooth symmetric_mni_to_anatomical_nonlinear_xfm falff_to_standard_smooth_zstd vmhc_fisher_zstd_zstat_map frame_wise_displacement_jenkinson
Afortunadamente, la explicacion de cada directorio esta documentada.
El esquema para correr en el cluster es el de lanzar las imagenes de singularity en paralelo. Hay que hacer varias pruebas por si se solapan unas a otras pero en principio intentaremos lanzar unos 8 procesos por nodo (o menos).
Nota: Al correr c-pac en el cluster dan errores de I/O. Esto puede ser debido a un intenso uso de la red o de disco. He de reducir el nuemro de lanzamientos concurrentes y probar de nuevo.
C-PAC genera un directorio de output por cada sujeto analizado
[osotolongo@detritus mopead]$ ls cpac_out/output/pipeline_analysis_nuisance/ sub-0001_ses-1 sub-0003_ses-1 sub-0005_ses-1 sub-0007_ses-1 sub-0009_ses-1 sub-0012_ses-1 sub-0015_ses-1 sub-0018_ses-1 sub-0020_ses-1 sub-0022_ses-1 sub-0002_ses-1 sub-0004_ses-1 sub-0006_ses-1 sub-0008_ses-1 sub-0010_ses-1 sub-0014_ses-1 sub-0017_ses-1 sub-0019_ses-1 sub-0021_ses-1 sub-0023_ses-1
190529-07:56:45,394 nipype.workflow INFO: [Node] Setting-up "resting_preproc_sub-0004_ses-1.sinker_0_13" in "/scratch/working/resting_preproc_sub-0004_ses-1/sinker_0_13". 190529-07:56:46,61 nipype.workflow INFO: [Node] Running "sinker_0_13" ("nipype.interfaces.io.DataSink") 190529-07:56:46,617 nipype.workflow INFO: [Node] Finished "resting_preproc_sub-0004_ses-1.sinker_0_13". srun: error: brick01: task 0: Exited with exit code 1
Hay diferentes niveles de analisis grupal, explicados en http://fcp-indi.github.io/docs/user/group_analysis.html. Primero ha de elegirse lo que se desee hacer.