Caret:Operations/Freesurfer to fs LR
From Van Essen Lab
(Created page with "This script resulted from taking the hatchet to Matt Glasser's FreeSurfer2CaretConvertAndRegisterNonlinear.sh script. Several steps were removed: nonlinear spatial normalizatio…") |
|||
Line 11: | Line 11: | ||
Before running freesurfer_to_fs_LR.sh, edit this variable location for sure: | Before running freesurfer_to_fs_LR.sh, edit this variable location for sure: | ||
- | CaretAtlasSpaceDirectory=/mnt/myelin/donna/ATLAS/fs_LR/standard_mesh_atlases | + | CaretAtlasSpaceDirectory=/mnt/myelin/donna/ATLAS/fs_LR/standard_mesh_atlases<br> |
Note: The standard_mesh_atlases subdirectory is included with this zip file, so point this to where you unpacked it. | Note: The standard_mesh_atlases subdirectory is included with this zip file, so point this to where you unpacked it. | ||
Line 32: | Line 32: | ||
... which has several Freesurfer subject directories under it, e.g.: | ... which has several Freesurfer subject directories under it, e.g.: | ||
- | /mnt/myelin/donna/SAIS/SAIS_001 | + | /mnt/myelin/donna/SAIS/SAIS_001<br> |
- | /mnt/myelin/donna/SAIS/SAIS_002_MR1 | + | /mnt/myelin/donna/SAIS/SAIS_002_MR1<br> |
- | /mnt/myelin/donna/SAIS/SAIS_003 | + | /mnt/myelin/donna/SAIS/SAIS_003<br> |
- | /mnt/myelin/donna/SAIS/SAIS_004_MR1 | + | /mnt/myelin/donna/SAIS/SAIS_004_MR1<br> |
- | /mnt/myelin/donna/SAIS/SAIS_009_MR1 | + | /mnt/myelin/donna/SAIS/SAIS_009_MR1<br> |
In other words, it might be your Freesurfer $SUBJECTS_DIR directory. One of these is your input to this command; its contents are read, but not modified (e.g., ?h.white, ?h.pial, ?h.sphere, ?h.sphere.reg, ?h.curv, ?h.sulc, ?h.thickness, orig.mgz, talairach.xfm). Outputs go to $OutputRootDir. | In other words, it might be your Freesurfer $SUBJECTS_DIR directory. One of these is your input to this command; its contents are read, but not modified (e.g., ?h.white, ?h.pial, ?h.sphere, ?h.sphere.reg, ?h.curv, ?h.sulc, ?h.thickness, orig.mgz, talairach.xfm). Outputs go to $OutputRootDir. | ||
Line 42: | Line 42: | ||
If OutputRootDir=fs_LR_output_directory and you run this command once for each of subject directory, e.g.: | If OutputRootDir=fs_LR_output_directory and you run this command once for each of subject directory, e.g.: | ||
- | freesurfer_to_fs_LR.sh SAIS_001 | + | freesurfer_to_fs_LR.sh SAIS_001<br> |
- | freesurfer_to_fs_LR.sh SAIS_002_MR1 | + | freesurfer_to_fs_LR.sh SAIS_002_MR1<br> |
- | freesurfer_to_fs_LR.sh SAIS_003 | + | freesurfer_to_fs_LR.sh SAIS_003<br> |
- | freesurfer_to_fs_LR.sh SAIS_004_MR1 | + | freesurfer_to_fs_LR.sh SAIS_004_MR1<br> |
- | freesurfer_to_fs_LR.sh SAIS_009_MR1 | + | freesurfer_to_fs_LR.sh SAIS_009_MR1<br> |
... then you would get output subdirectories like this: | ... then you would get output subdirectories like this: | ||
- | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_001 | + | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_001<br> |
- | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_002_MR1 | + | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_002_MR1<br> |
- | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_003 | + | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_003<br> |
- | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_004_MR1 | + | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_004_MR1<br> |
- | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_009_MR1 | + | /mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_009_MR1<br> |
Each of these subdirectories in /mnt/myelin/donna/SAIS/fs_LR_output_directory would have output files like those listed below. | Each of these subdirectories in /mnt/myelin/donna/SAIS/fs_LR_output_directory would have output files like those listed below. | ||
Line 60: | Line 60: | ||
The real magic of this script is in this command: | The real magic of this script is in this command: | ||
- | caret_command -surface-sphere-project-unproject $OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.sphere.reg.initial_mesh.coord.gii $OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.initial_mesh.topo.gii $OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.sphere.reg.reg_LR.initial_mesh.coord.gii $OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.sphere.164k_fs_"$Hemisphere".coord.gii $OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.def_sphere.164k_fs_"$Hemisphere".coord.gii $OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.164k_fs_"$Hemisphere".topo.gii | + | caret_command -surface-sphere-project-unproject \<br> |
+ | $OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.sphere.reg.initial_mesh.coord.gii \<br> | ||
+ | $OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.initial_mesh.topo.gii \<br> | ||
+ | $OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.sphere.reg.reg_LR.initial_mesh.coord.gii \<br> | ||
+ | $OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.sphere.164k_fs_"$Hemisphere".coord.gii\<br> | ||
+ | $OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.def_sphere.164k_fs_"$Hemisphere".coord.gii \<br> | ||
+ | $OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.164k_fs_"$Hemisphere".topo.gii | ||
Its usage is like so: | Its usage is like so: |
Revision as of 16:55, 19 March 2012
This script resulted from taking the hatchet to Matt Glasser's FreeSurfer2CaretConvertAndRegisterNonlinear.sh script. Several steps were removed: nonlinear spatial normalization (replaced with affine talairach.xfm); brain mask; downsampling; and caret workbench stuff.
This script is used like so:
freesurfer_to_fs_LR.sh freesurfer-subject-directory
You must have both freesurfer and Caret installed for it to work, as it calls command line utilities in those distributions (e.g., mri_convert, mri_info, caret_command).
It was written to be called from within the same directory where freesurfer-subject-directory is located, but might work with an absolute path.
Before running freesurfer_to_fs_LR.sh, edit this variable location for sure:
CaretAtlasSpaceDirectory=/mnt/myelin/donna/ATLAS/fs_LR/standard_mesh_atlases
Note: The standard_mesh_atlases subdirectory is included with this zip file, so point this to where you unpacked it.
Check your Freesurfer installation path, too:
FreeSurferInstallationDirectory=/usr/local/freesurfer
If you don't like this name for the output subdirectory, change it:
OutputRootDir=fs_LR_output_directory
Save your edits; chmod +x freesurfer_to_fs_LR.sh, if needed; and run the script, e.g.:
freesurfer_to_fs_LR.sh bert
Note that this command was written to be run in a directory like this:
/mnt/myelin/donna/SAIS
... which has several Freesurfer subject directories under it, e.g.:
/mnt/myelin/donna/SAIS/SAIS_001
/mnt/myelin/donna/SAIS/SAIS_002_MR1
/mnt/myelin/donna/SAIS/SAIS_003
/mnt/myelin/donna/SAIS/SAIS_004_MR1
/mnt/myelin/donna/SAIS/SAIS_009_MR1
In other words, it might be your Freesurfer $SUBJECTS_DIR directory. One of these is your input to this command; its contents are read, but not modified (e.g., ?h.white, ?h.pial, ?h.sphere, ?h.sphere.reg, ?h.curv, ?h.sulc, ?h.thickness, orig.mgz, talairach.xfm). Outputs go to $OutputRootDir.
If OutputRootDir=fs_LR_output_directory and you run this command once for each of subject directory, e.g.:
freesurfer_to_fs_LR.sh SAIS_001
freesurfer_to_fs_LR.sh SAIS_002_MR1
freesurfer_to_fs_LR.sh SAIS_003
freesurfer_to_fs_LR.sh SAIS_004_MR1
freesurfer_to_fs_LR.sh SAIS_009_MR1
... then you would get output subdirectories like this:
/mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_001
/mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_002_MR1
/mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_003
/mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_004_MR1
/mnt/myelin/donna/SAIS/fs_LR_output_directory/SAIS_009_MR1
Each of these subdirectories in /mnt/myelin/donna/SAIS/fs_LR_output_directory would have output files like those listed below.
The real magic of this script is in this command:
caret_command -surface-sphere-project-unproject \
$OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.sphere.reg.initial_mesh.coord.gii \
$OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.initial_mesh.topo.gii \
$OutputRootDir/$Subject/$InitialMeshDirectory/$Subject.$Hemisphere.sphere.reg.reg_LR.initial_mesh.coord.gii \
$OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.sphere.164k_fs_"$Hemisphere".coord.gii\
$OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.def_sphere.164k_fs_"$Hemisphere".coord.gii \
$OutputRootDir/$Subject/fsaverage/$Subject.$Hemisphere.164k_fs_"$Hemisphere".topo.gii
Its usage is like so:
caret_command -surface-sphere-project-unproject 1<input-spherical-coordinate-file-name> 2<input-spherical-topology-file-name> 3<output-spherical-coordinate-file-name> 4<project-to-spherical-coordinate-file-name> 5<unproject-to-spherical-coordinate-file-name> 6<project-unproject-spherical-topology-file-name> Transform a spherical surface. The input spherical surface is projected to the "project-to" surface using barycentric projections and then unprojected using the "unproject-to" spherical surface. Typically the "unproject-to" surface is created during surface-based registration of the "project-to" spherical surface to some target.
Pseudocode for left hemisphere:
1. Project SAIS_001/surf/lh.sphere.reg to $FreeSurferInstallationDirectory/subjects/fsaverage/surf/lh.sphere.reg. (Because we're using sphere.reg, they should be in good geographic agreement, so this is a more or a resampling from initial mesh to the Freesurfer hemisphere-specific 164k mesh.)
2. Unproject the hem-specific 164k sphere onto the hemisphere-independent (fs_LR) sphere. This keeps the nodes the same, so there is no resampling, but the geography gets swapped around, so that node i in both left and right is in decent correspondence. (In the hem-specific spheres, node i might be in the frontal lobe on the left, occipital on the right.)
Repeat for the right.