rpipe 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. data/.document +5 -0
  2. data/.gitignore +23 -0
  3. data/LICENSE +20 -0
  4. data/README +0 -0
  5. data/README.rdoc +33 -0
  6. data/Rakefile +78 -0
  7. data/VERSION +1 -0
  8. data/bin/create_driver.rb +79 -0
  9. data/bin/rpipe +131 -0
  10. data/bin/swallow_batch_run.rb +21 -0
  11. data/lib/core_additions.rb +5 -0
  12. data/lib/custom_methods/JohnsonMerit220Visit1Preproc.m +26 -0
  13. data/lib/custom_methods/JohnsonMerit220Visit1Preproc.rb +43 -0
  14. data/lib/custom_methods/JohnsonMerit220Visit1Preproc_job.m +80 -0
  15. data/lib/custom_methods/JohnsonMerit220Visit1Stats.m +74 -0
  16. data/lib/custom_methods/JohnsonMerit220Visit1Stats.rb +63 -0
  17. data/lib/custom_methods/JohnsonMerit220Visit1Stats_job.m +63 -0
  18. data/lib/custom_methods/JohnsonTbiLongitudinalSnodPreproc.m +26 -0
  19. data/lib/custom_methods/JohnsonTbiLongitudinalSnodPreproc.rb +41 -0
  20. data/lib/custom_methods/JohnsonTbiLongitudinalSnodPreproc_job.m +69 -0
  21. data/lib/custom_methods/JohnsonTbiLongitudinalSnodStats.m +76 -0
  22. data/lib/custom_methods/JohnsonTbiLongitudinalSnodStats.rb +67 -0
  23. data/lib/custom_methods/JohnsonTbiLongitudinalSnodStats_job.m +59 -0
  24. data/lib/custom_methods/ReconWithHello.rb +7 -0
  25. data/lib/default_logger.rb +13 -0
  26. data/lib/default_methods/default_preproc.rb +76 -0
  27. data/lib/default_methods/default_recon.rb +80 -0
  28. data/lib/default_methods/default_stats.rb +94 -0
  29. data/lib/default_methods/recon/physionoise_helper.rb +69 -0
  30. data/lib/default_methods/recon/raw_sequence.rb +109 -0
  31. data/lib/generators/job_generator.rb +36 -0
  32. data/lib/generators/preproc_job_generator.rb +31 -0
  33. data/lib/generators/recon_job_generator.rb +76 -0
  34. data/lib/generators/stats_job_generator.rb +70 -0
  35. data/lib/generators/workflow_generator.rb +128 -0
  36. data/lib/global_additions.rb +18 -0
  37. data/lib/logfile.rb +310 -0
  38. data/lib/matlab_helpers/CreateFunctionalVolumeStruct.m +6 -0
  39. data/lib/matlab_helpers/import_csv.m +32 -0
  40. data/lib/matlab_helpers/matlab_queue.rb +37 -0
  41. data/lib/matlab_helpers/prepare_onsets_xls.m +30 -0
  42. data/lib/rpipe.rb +254 -0
  43. data/rpipe.gemspec +177 -0
  44. data/spec/generators/preproc_job_generator_spec.rb +27 -0
  45. data/spec/generators/recon_job_generator_spec.rb +33 -0
  46. data/spec/generators/stats_job_generator_spec.rb +50 -0
  47. data/spec/generators/workflow_generator_spec.rb +97 -0
  48. data/spec/helper_spec.rb +40 -0
  49. data/spec/integration/johnson.merit220.visit1_spec.rb +47 -0
  50. data/spec/integration/johnson.tbi.longitudinal.snod_spec.rb +48 -0
  51. data/spec/logfile_spec.rb +96 -0
  52. data/spec/matlab_queue_spec.rb +40 -0
  53. data/spec/merit220_stats_spec.rb +81 -0
  54. data/spec/physio_spec.rb +98 -0
  55. data/test/drivers/merit220_workflow_sample.yml +15 -0
  56. data/test/drivers/mrt00000.yml +65 -0
  57. data/test/drivers/mrt00015.yml +62 -0
  58. data/test/drivers/mrt00015_hello.yml +41 -0
  59. data/test/drivers/mrt00015_withphys.yml +81 -0
  60. data/test/drivers/tbi000.yml +129 -0
  61. data/test/drivers/tbi000_separatevisits.yml +137 -0
  62. data/test/drivers/tmp.yml +58 -0
  63. data/test/fixtures/faces3_recognitionA.mat +0 -0
  64. data/test/fixtures/faces3_recognitionA.txt +86 -0
  65. data/test/fixtures/faces3_recognitionA_equal.csv +25 -0
  66. data/test/fixtures/faces3_recognitionA_unequal.csv +21 -0
  67. data/test/fixtures/faces3_recognitionB_incmisses.txt +86 -0
  68. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPd3R_40.txt +13360 -0
  69. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPd3_40.txt +13360 -0
  70. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPttl_40.txt +13360 -0
  71. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTd3R_40.txt +13360 -0
  72. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTd3_40.txt +13360 -0
  73. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTttl_40.txt +13360 -0
  74. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTd3R_40.txt +334 -0
  75. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTd3_40.txt +334 -0
  76. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTttl_40.txt +334 -0
  77. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_RRT_40.txt +334 -0
  78. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_RVT_40.txt +334 -0
  79. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_card_spline_40.txt +334 -0
  80. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_resp_spline_40.txt +334 -0
  81. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_RRT_40.txt +9106 -0
  82. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_RVT_40.txt +9106 -0
  83. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTd3R_40.txt +167 -0
  84. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTd3_40.txt +167 -0
  85. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTttl_40.txt +167 -0
  86. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_RRT_40.txt +167 -0
  87. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_RVT_40.txt +167 -0
  88. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_card_spline_40.txt +167 -0
  89. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_resp_spline_40.txt +167 -0
  90. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_card_spline_40.txt +13360 -0
  91. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_resp_spline_40.txt +9106 -0
  92. data/test/fixtures/physionoise_regressors/EPI__fMRI_Task1_resp_spline_downsampled_40.txt +9106 -0
  93. data/test/fixtures/ruport_summary.yml +123 -0
  94. data/test/fixtures/valid_scans.yaml +35 -0
  95. data/test/helper.rb +10 -0
  96. data/test/test_dynamic_method_inclusion.rb +10 -0
  97. data/test/test_includes.rb +11 -0
  98. data/test/test_integrative_johnson.merit220.visit1.rb +31 -0
  99. data/test/test_preproc.rb +11 -0
  100. data/test/test_recon.rb +11 -0
  101. data/test/test_rpipe.rb +19 -0
  102. data/vendor/output_catcher.rb +93 -0
  103. data/vendor/trollop.rb +781 -0
  104. metadata +260 -0
@@ -0,0 +1,81 @@
1
+ require 'helper_spec'
2
+ require 'rpipe'
3
+
4
+ describe "Unit testing for johnson.merit220.visit1" do
5
+ before(:each) do
6
+ @driver_file = File.join(File.dirname(__FILE__), 'drivers', 'mrt00000.yml')
7
+ @driver = YAML.load_file(@driver_file)
8
+
9
+ @driver['rawdir'] = File.join($MRI_DATA, 'mrt00000', 'dicoms')
10
+ @driver['origdir'] = @origdir = Dir.mktmpdir('orig_')
11
+ @driver['procdir'] = @procdir = Dir.mktmpdir('proc_')
12
+ @driver['statsdir'] = @statsdir = Dir.mktmpdir('stats_')
13
+
14
+ @valid_responses_options = {
15
+ 'directory' => File.join($MRI_DATA, 'responses'),
16
+ 'logfiles' => [
17
+ 'mrt00000_abc_01012010_faces3_recognitionB.txt',
18
+ 'mrt00000_abc_01012010_faces3_recognitionA.txt'
19
+ ]
20
+ }
21
+
22
+ @valid_combine_options = {
23
+ :combined_vector_title => :misses,
24
+ :original_vector_titles => [:new_misses, :old_misses]
25
+ }
26
+
27
+ @pipe = RPipe.new(@driver)
28
+ @job = @pipe.stats_jobs.first
29
+ end
30
+
31
+ it "should convert logfiles into matfiles" do
32
+ conditions = [:new_correct, :new_incorrect, :old_correct, :old_incorrect]
33
+ Dir.mktmpdir do |dir|
34
+ Dir.chdir dir do
35
+ @job.onsetsfiles = @job.create_onsets_files(@valid_responses_options, conditions)
36
+ @job.onsetsfiles.should_not be_nil
37
+ @job.onsetsfiles.should == ["mrt00000_faces3_recognitionB.mat", "mrt00000_faces3_recognitionA.mat"]
38
+ puts Dir.glob('*')
39
+ @job.onsetsfiles.each do |onsetfile|
40
+ File.exist?(onsetfile).should be_true
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ it "should convert logfiles into matfiles including misses as a condition" do
47
+ conditions = [:new_correct, :new_incorrect, :old_correct, :old_incorrect, {:misses => [:new_misses, :old_misses]} ]
48
+ output_conditions = ['new_correct', 'new_incorrect', 'old_correct', 'old_incorrect', 'misses']
49
+
50
+ Dir.mktmpdir do |dir|
51
+ Dir.chdir dir do
52
+ @job.onsetsfiles = @job.create_onsets_files(@valid_responses_options, conditions)
53
+ @job.onsetsfiles.should_not be_nil
54
+ @job.onsetsfiles.should == ["mrt00000_faces3_recognitionB.mat", "mrt00000_faces3_recognitionA.mat"]
55
+ puts Dir.glob('*')
56
+ @job.onsetsfiles.each do |onsetfile|
57
+ File.exist?(onsetfile).should be_true
58
+ csvfile = File.basename(onsetfile, '.mat') + '.csv'
59
+ lines = File.open(csvfile, 'r') {|f| f.readlines }
60
+ header = lines.first.chomp
61
+ missing_conditions = []
62
+ header.split(", ").collect do |output_condition|
63
+ missing_conditions << output_condition unless output_conditions.include?(output_condition)
64
+ end
65
+ missing_conditions.should be_empty
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+
72
+ it "should raise a script error if neither log files nor mat files are configured." do
73
+ @job.onsetsfiles = nil
74
+ @job.responses = nil
75
+ lambda { @job.create_or_link_onsets_files }.should raise_error ScriptError, /Condition vectors cannot be created/
76
+ end
77
+
78
+ after(:each) do
79
+ FileUtils.rm_r([@origdir, @procdir, @statsdir])
80
+ end
81
+ end
@@ -0,0 +1,98 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../physionoise/lib'))
2
+
3
+ require 'helper_spec'
4
+ require 'rpipe'
5
+ require 'physionoise'
6
+
7
+
8
+ describe "Test Phyiosnoise" do
9
+ before(:each) do
10
+ @runs_dir = File.join($MRI_DATA, 'mrt00000', 'dicoms')
11
+ job_params = {
12
+ "scans" => [{
13
+ "label"=>"task1",
14
+ "dir"=>"s07_epi",
15
+ "z_slices"=>36,
16
+ "rep_time"=>2.0,
17
+ "type"=>"func",
18
+ "physio_files"=> {
19
+ :phys_directory => "../cardiac", # Relative to rawdir
20
+ :series_description => "EPI fMRI Task1",
21
+ :respiration_signal => "RESPData_epiRT_0211201009_21_22_80",
22
+ :respiration_trigger => "RESPTrig_epiRT_0211201009_21_22_80",
23
+ :cardiac_signal => "PPGData_epiRT_0211201009_21_22_80",
24
+ :cardiac_trigger => "PPGTrig_epiRT_0211201009_21_22_80"
25
+ },
26
+ "bold_reps"=>167,
27
+ "task"=>"Faces3B"
28
+ }]
29
+ }
30
+
31
+ workflow_spec = {
32
+ "subid"=>"mrt00000",
33
+ "rawdir"=> @runs_dir,
34
+ "origdir"=> Dir.mktmpdir('orig_'),
35
+ "procdir"=> Dir.mktmpdir('proc_'),
36
+ "statsdir"=> Dir.mktmpdir('stats_'),
37
+ "collision"=> "destroy"
38
+ }
39
+
40
+ @valid_physionoise_run_spec = [{
41
+ :run_directory=> @runs_dir,
42
+ :bold_reps=>167, :respiration_signal=>"RESPData_epiRT_0211201009_21_22_80",
43
+ :respiration_trigger=>"RESPTrig_epiRT_0211201009_21_22_80",
44
+ :cardiac_signal=>"PPGData_epiRT_0211201009_21_22_80",
45
+ :cardiac_trigger=>"PPGTrig_epiRT_0211201009_21_22_80",
46
+ :phys_directory=> File.join(@runs_dir, '..', 'cardiac'),
47
+ :rep_time=>2.0,
48
+ :series_description=>"EPI fMRI Task1"
49
+ }]
50
+
51
+ @recon_job = Reconstruction.new(workflow_spec, job_params)
52
+ @scan_spec = @recon_job.scans.first
53
+
54
+ @physionoise_fixture_dir = File.join(File.dirname(__FILE__), 'fixtures', 'physionoise_regressors')
55
+
56
+ end
57
+
58
+ it "should create physionoise regressors from Cardiac and Respiration Data" do
59
+ Dir.chdir @recon_job.origdir do
60
+ @recon_job.create_physiosnoise_regressors(@scan_spec)
61
+ end
62
+
63
+ Dir.compare_directories(@recon_job.origdir, @physionoise_fixture_dir).should be_true
64
+
65
+ end
66
+
67
+ it "should correctly build a spec for passing to physionoise" do
68
+ @recon_job.build_physionoise_run_spec(@scan_spec).should == @valid_physionoise_run_spec
69
+ end
70
+
71
+ it "should correctly build a physionoise python command" do
72
+ @valid_physionoise_run_spec.each do |run|
73
+ puts Physionoise.build_run_cmd(run)
74
+ end
75
+ end
76
+
77
+ it "should build a 3dRetroicor string" do
78
+ valid_cmd = "3dretroicor -prefix ptask1.nii -card #{@runs_dir}/../cardiac/PPGData_epiRT_0211201009_21_22_80 -resp #{@runs_dir}/../cardiac/RESPData_epiRT_0211201009_21_22_80 task1.nii"
79
+ valid_outfile = "p#{@scan_spec['label']}.nii"
80
+ test_cmd, test_outfile = @recon_job.build_retroicor_cmd(@scan_spec['physio_files'], "#{@scan_spec['label']}.nii")
81
+
82
+ valid_cmd.should == test_cmd
83
+ valid_outfile.should == test_outfile
84
+ end
85
+
86
+ it "should raise an error building a 3dRetroicor string if improperly configured" do
87
+ physio_files = @scan_spec['physio_files']
88
+ physio_files.delete(:cardiac_signal)
89
+
90
+ lambda {@recon_job.build_retroicor_cmd(physio_files, "#{@scan_spec['label']}.nii") }.should raise_error ScriptError, /Missing .* cardiac/
91
+ end
92
+
93
+ it "should raise an IOError building a 3dRetroicor string with bad files"
94
+
95
+ after(:each) do
96
+ FileUtils.rm_r([@recon_job.origdir, @recon_job.procdir, @recon_job.statsdir])
97
+ end
98
+ end
@@ -0,0 +1,15 @@
1
+ # Workflow Driver Sample
2
+ # johnson.merit220.visit1
3
+ # 6/15/2010
4
+ study_procedure: johnson.merit220.visit1
5
+ ignore_patterns:
6
+ - /pcasl/i
7
+ - /raw$/i
8
+ directory_formats:
9
+ origdir: /Data/vtrak1/preprocessed/visits/<study_procedure>/<subid>/fmri/images
10
+ procdir: /Data/vtrak1/preprocessed/visits/<study_procedure>/<subid>/fmri/proc
11
+ statsdir: /Data/vtrak1/preprocessed/visits/<study_procedure>/<subid>/fmri/stats_basic
12
+ responses_dir: /Data/vtrak1/raw/test/fixtures/rpipe/responses
13
+ custom_methods:
14
+ preproc: true
15
+ stats: true
@@ -0,0 +1,65 @@
1
+ subid: mrt00000
2
+ rawdir: /Data/vtrak1/raw/test/fixtures/rpipe/johnson.merit220.visit1/mrt00000/dicoms
3
+ origdir: /Data/scratch/mrt00000_orig
4
+ procdir: /Data/scratch/mrt00000_proc
5
+ statsdir: /Data/scratch/mrt00000_stats
6
+ collision: destroy
7
+
8
+ jobs:
9
+ - step: reconstruct
10
+ scans:
11
+ - dir: s07_epi
12
+ type: func
13
+ label: task1
14
+ task: Faces3A
15
+ bold_reps: 167
16
+ volumes_to_skip: 3
17
+ z_slices: 36
18
+ - dir: s08_epi
19
+ type: func
20
+ label: task2
21
+ task: Faces3B
22
+ bold_reps: 167
23
+ volumes_to_skip: 3
24
+ z_slices: 36
25
+ - dir: s09_epi
26
+ type: func
27
+ label: rest
28
+ bold_reps: 167
29
+ volumes_to_skip: 3
30
+ z_slices: 36
31
+
32
+ - step: preprocess
33
+ method: JohnsonMerit220Visit1Preproc
34
+ bold_reps:
35
+ - 164
36
+ - 164
37
+ - 164
38
+
39
+ - step: stats
40
+ method: JohnsonMerit220Visit1Stats
41
+ responses:
42
+ directory: /Data/vtrak1/raw/test/fixtures/rpipe/responses
43
+ logfiles:
44
+ - mrt00000_abc_01012010_faces3_recognitionB.txt
45
+ - mrt00000_abc_01012010_faces3_recognitionA.txt
46
+ # - /Data/scratch/mrt00000/onsets/mrt00015_sep_021110_faces3_recognitionA.txt
47
+ # - /Data/scratch/mrt00000/onsets/mrt00015_sep_021110_faces3_recognitionB.txt
48
+ # This is an ordered list, so put A or B first as appropriate.
49
+ # onsetsfiles:
50
+ # - /Data/scratch/mrt00000/onsets/mrt00015_faces3_recognitionA.mat
51
+ # - /Data/scratch/mrt00000/onsets/mrt00015_faces3_recognitionB.mat
52
+ regressorsfiles:
53
+ - rp_amrt00000_task1.txt
54
+ - rp_amrt00000_task2.txt
55
+ conditions:
56
+ - new_correct
57
+ - new_incorrect
58
+ - old_correct
59
+ - old_incorrect
60
+ - misses:
61
+ - new_misses
62
+ - old_misses
63
+ bold_reps:
64
+ - 164
65
+ - 164
@@ -0,0 +1,62 @@
1
+ subid: mrt00015
2
+ rawdir: /Data/scratch/mrt00015/dicoms
3
+ origdir: /Data/scratch/mrt00015_orig
4
+ procdir: /Data/scratch/mrt00015_proc
5
+ statsdir: /Data/scratch/mrt00015_stats
6
+ collision: destroy
7
+
8
+ jobs:
9
+ - step: reconstruct
10
+ scans:
11
+ - dir: s07_epi
12
+ type: func
13
+ label: task1
14
+ task: Faces3A
15
+ bold_reps: 167
16
+ volumes_to_skip: 3
17
+ z_slices: 36
18
+ - dir: s08_epi
19
+ type: func
20
+ label: task2
21
+ task: Faces3B
22
+ bold_reps: 167
23
+ volumes_to_skip: 3
24
+ z_slices: 36
25
+ - dir: s09_epi
26
+ type: func
27
+ label: rest
28
+ bold_reps: 167
29
+ volumes_to_skip: 3
30
+ z_slices: 36
31
+
32
+ - step: preprocess
33
+ method: Merit220Preproc
34
+ bold_reps:
35
+ - 164
36
+ - 164
37
+ - 164
38
+
39
+ - step: stats
40
+ method: Merit220Stats
41
+ responses:
42
+ directory: rpipe/spec/fixtures/rawdata/responses
43
+ logfiles:
44
+ - mrt00015_faces3_recognitionB.txt
45
+ - mrt00015_faces3_recognitionA.txt
46
+ # - /Data/scratch/mrt00015/onsets/mrt00015_sep_021110_faces3_recognitionA.txt
47
+ # - /Data/scratch/mrt00015/onsets/mrt00015_sep_021110_faces3_recognitionB.txt
48
+ # This is an ordered list, so put A or B first as appropriate.
49
+ # onsetsfiles:
50
+ # - /Data/scratch/mrt00015/onsets/mrt00015_faces3_recognitionA.mat
51
+ # - /Data/scratch/mrt00015/onsets/mrt00015_faces3_recognitionB.mat
52
+ regressorsfiles:
53
+ - rp_amrt00015_task1.txt
54
+ - rp_amrt00015_task2.txt
55
+ conditions:
56
+ - new_correct
57
+ - new_incorrect
58
+ - old_correct
59
+ - old_incorrect
60
+ bold_reps:
61
+ - 164
62
+ - 164
@@ -0,0 +1,41 @@
1
+ subid: mrt00015
2
+ rawdir: /Data/scratch/mrt00015
3
+ origdir: /Data/scratch/mrt00015_orig
4
+ procdir: /Data/scratch/mrt00015_proc
5
+ collision: destroy
6
+
7
+ jobs:
8
+ - step: reconstruct
9
+ method: ReconWithHello
10
+ scans:
11
+ - dir: s07_epi
12
+ type: func
13
+ label: task1
14
+ task: Faces3A
15
+ bold_reps: 167
16
+ z_slices: 36
17
+ - dir: s08_epi
18
+ type: func
19
+ label: task2
20
+ task: Faces3B
21
+ bold_reps: 167
22
+ z_slices: 36
23
+ - dir: s09_epi
24
+ type: func
25
+ label: rest
26
+ bold_reps: 167
27
+ z_slices: 36
28
+
29
+ - step: preprocess
30
+ template_spec:
31
+ job: template_pipetest_spatial_preproc.mat
32
+ subid: Swallow003
33
+
34
+ - step: stats
35
+ onsets_files:
36
+ - Swallow003_v01_sw01_onsets.mat
37
+ - Swallow003_v01_sw02_onsets.mat
38
+ - Swallow003_v01_sw03_onsets.mat
39
+ template_spec:
40
+ job: template_stats.mat
41
+ subid: Swallow003
@@ -0,0 +1,81 @@
1
+ subid: mrt00015
2
+ rawdir: /Data/scratch/mrt00015/dicoms
3
+ origdir: /Data/scratch/mrt00015_withphys_orig
4
+ procdir: /Data/scratch/mrt00015_withphys_proc
5
+ statsdir: /Data/scratch/mrt00015_withphys_stats
6
+ collision: destroy
7
+
8
+ jobs:
9
+ - step: reconstruct
10
+ scans:
11
+ - dir: s07_epi
12
+ type: func
13
+ label: task1
14
+ task: Faces3A
15
+ bold_reps: 167
16
+ z_slices: 36
17
+ rep_time: 2.0
18
+ physio_files:
19
+ :respiration_signal: RESPData_epiRT_0211201009_21_22_80
20
+ :phys_directory: ../cardiac # Relative to raw dir or absolute
21
+ :respiration_trigger: RESPTrig_epiRT_0211201009_21_22_80
22
+ :cardiac_signal: PPGData_epiRT_0211201009_21_22_80
23
+ :series_description: EPI fMRI Task1
24
+ :cardiac_trigger: PPGTrig_epiRT_0211201009_21_22_80
25
+ - dir: s08_epi
26
+ type: func
27
+ label: task2
28
+ task: Faces3B
29
+ bold_reps: 167
30
+ z_slices: 36
31
+ rep_time: 2.0
32
+ physio_files:
33
+ :respiration_signal: RESPData_epiRT_0211201009_28_12_835
34
+ :phys_directory: ../cardiac # Relative to raw dir or absolute
35
+ :respiration_trigger: RESPTrig_epiRT_0211201009_28_12_835
36
+ :cardiac_signal: PPGData_epiRT_0211201009_28_12_835
37
+ :series_description: EPI fMRI Task2
38
+ :cardiac_trigger: PPGTrig_epiRT_0211201009_28_12_835
39
+ - dir: s09_epi
40
+ type: func
41
+ label: rest
42
+ bold_reps: 167
43
+ z_slices: 36
44
+ rep_time: 2.0
45
+ physio_files:
46
+ :respiration_signal: RESPData_epiRT_0211201009_34_39_738
47
+ :phys_directory: ../cardiac # Relative to raw dir or absolute
48
+ :respiration_trigger: RESPTrig_epiRT_0211201009_34_39_738
49
+ :cardiac_signal: PPGData_epiRT_0211201009_34_39_738
50
+ :series_description: EPI Resting fMRI
51
+ :cardiac_trigger: PPGTrig_epiRT_0211201009_34_39_738
52
+
53
+ - step: preprocess
54
+ method: Merit220Preproc
55
+ bold_reps:
56
+ - 164
57
+ - 164
58
+ - 164
59
+
60
+ - step: stats
61
+ method: Merit220Stats
62
+ logresponsefiles:
63
+ - /Volumes/MED-CLUSTER-A.MEDICINE_DATA/team/FMRI/BEHAVIORAL_ANALYSES/CURRENT/johnson.merit220.visit1/Scan/Unprocessed/mrt00015_sep_021110_faces3_recognitionB.txt
64
+ - /Volumes/MED-CLUSTER-A.MEDICINE_DATA/team/FMRI/BEHAVIORAL_ANALYSES/CURRENT/johnson.merit220.visit1/Scan/Unprocessed/mrt00015_sep_021110_faces3_recognitionA.txt
65
+ # - /Data/scratch/mrt00015/onsets/mrt00015_sep_021110_faces3_recognitionA.txt
66
+ # - /Data/scratch/mrt00015/onsets/mrt00015_sep_021110_faces3_recognitionB.txt
67
+ # This is an ordered list, so put A or B first as appropriate.
68
+ # onsetsfiles:
69
+ # - /Data/scratch/mrt00015/onsets/mrt00015_faces3_recognitionA.mat
70
+ # - /Data/scratch/mrt00015/onsets/mrt00015_faces3_recognitionB.mat
71
+ regressorsfiles:
72
+ - rp_apmrt00015_task1.txt
73
+ - rp_apmrt00015_task2.txt
74
+ conditions:
75
+ - new_correct
76
+ - new_incorrect
77
+ - old_correct
78
+ - old_incorrect
79
+ bold_reps:
80
+ - 164
81
+ - 164
@@ -0,0 +1,129 @@
1
+ ---
2
+ subid: tbi000
3
+ origdir: <%= Dir.mktmpdir('orig') %>
4
+ procdir: <%= Dir.mktmpdir('proc') %>
5
+ statsdir: <%= @statsdir = Dir.mktmpdir('stats') %>
6
+ study_procedure: johnson.tbi.longitudinal.snod
7
+ # task_onsets: /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/snod_onsets.yml
8
+ collision: overwrite
9
+
10
+ jobs:
11
+ - step: reconstruct
12
+ rawdir: /Data/vtrak1/raw/test/fixtures/rpipe/johnson.tbi.longitudinal.snod/tbi000_1/raw
13
+ scans:
14
+ - label: v1_snodB
15
+ pfile: P38400.7
16
+ type: func
17
+ volumes_to_skip: 3
18
+ bold_reps: 141
19
+ task: snodB
20
+ - label: v1_snodA
21
+ pfile: P38912.7
22
+ type: func
23
+ volumes_to_skip: 3
24
+ bold_reps: 141
25
+ task: snodA
26
+ - step: reconstruct
27
+ rawdir: /Data/vtrak1/raw/test/fixtures/rpipe/johnson.tbi.longitudinal.snod/tbi000_2/raw
28
+ scans:
29
+ - label: v2_snodC
30
+ pfile: P33280.7
31
+ type: func
32
+ volumes_to_skip: 3
33
+ bold_reps: 141
34
+ task: snodC
35
+ - label: v2_snodD
36
+ pfile: P33792.7
37
+ type: func
38
+ volumes_to_skip: 3
39
+ bold_reps: 141
40
+ task: snodD
41
+ - step: reconstruct
42
+ rawdir: /Data/vtrak1/raw/test/fixtures/rpipe/johnson.tbi.longitudinal.snod/tbi000_3/raw
43
+ scans:
44
+ - label: v3_snodB
45
+ pfile: P61440.7
46
+ type: func
47
+ volumes_to_skip: 3
48
+ bold_reps: 141
49
+ task: snodB
50
+ - label: v3_snodA
51
+ pfile: P61952.7
52
+ type: func
53
+ volumes_to_skip: 3
54
+ bold_reps: 141
55
+ task: snodA
56
+
57
+ - step: preprocess
58
+ method: JohnsonTbiLongitudinalSnodPreproc
59
+ scan_labels:
60
+ - v1_snodB
61
+ - v1_snodA
62
+ - v2_snodC
63
+ - v2_snodD
64
+ - v3_snodB
65
+ - v3_snodA
66
+ bold_reps:
67
+ - 138
68
+ - 138
69
+ - 138
70
+ - 138
71
+ - 138
72
+ - 138
73
+
74
+ - step: stats
75
+ statsdir: <%= File.join(@statsdir, 'v1') %>
76
+ method: JohnsonTbiLongitudinalSnodStats
77
+ scan_labels:
78
+ - v1_snodB
79
+ - v1_snodA
80
+ onsetsfiles:
81
+ - /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/onsets/snodB_vectors.mat
82
+ - /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/onsets/snodA_vectors.mat
83
+ regressorsfiles:
84
+ - rp_atbi000_v1_snodB.txt
85
+ - rp_atbi000_v1_snodA.txt
86
+ bold_reps:
87
+ - 138
88
+ - 138
89
+ conditions:
90
+ - new
91
+ - old
92
+
93
+ - step: stats
94
+ statsdir: <%= File.join(@statsdir, 'v2') %>
95
+ method: JohnsonTbiLongitudinalSnodStats
96
+ scan_labels:
97
+ - v2_snodC
98
+ - v2_snodD
99
+ onsetsfiles:
100
+ - /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/onsets/snodC_vectors.mat
101
+ - /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/onsets/snodD_vectors.mat
102
+ regressorsfiles:
103
+ - rp_atbi000_v2_snodC.txt
104
+ - rp_atbi000_v2_snodD.txt
105
+ bold_reps:
106
+ - 138
107
+ - 138
108
+ conditions:
109
+ - new
110
+ - old
111
+
112
+ - step: stats
113
+ statsdir: <%= File.join(@statsdir, 'v3') %>
114
+ method: JohnsonTbiLongitudinalSnodStats
115
+ scan_labels:
116
+ - v3_snodB
117
+ - v3_snodA
118
+ onsetsfiles:
119
+ - /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/onsets/snodB_vectors.mat
120
+ - /Data/vtrak1/analyses/aparna/tbifmrilongitudinal/johnson.tbi.longitudinal.snod/progs/onsets/snodA_vectors.mat
121
+ regressorsfiles:
122
+ - rp_atbi000_v3_snodB.txt
123
+ - rp_atbi000_v3_snodA.txt
124
+ bold_reps:
125
+ - 138
126
+ - 138
127
+ conditions:
128
+ - new
129
+ - old