rpipe 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +24 -0
- data/Gemfile +2 -0
- data/Rakefile +3 -23
- data/bin/create_driver.rb +6 -0
- data/bin/create_onsets_files.rb +74 -0
- data/bin/summarize_responses.rb +9 -0
- data/lib/default_methods/default_preproc.rb +1 -0
- data/lib/default_methods/default_recon.rb +4 -3
- data/lib/default_methods/recon/raw_sequence.rb +3 -2
- data/lib/logfile.rb +17 -2
- data/lib/rpipe/version.rb +3 -0
- data/lib/rpipe.rb +4 -0
- data/rpipe.gemspec +19 -180
- metadata +93 -99
data/.gitignore
ADDED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,26 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "rpipe"
|
8
|
-
gem.summary = %Q{Neuroimaging preprocessing the Ruby way}
|
9
|
-
gem.description = %Q{Neuroimaging preprocessing the Ruby way}
|
10
|
-
gem.email = "kjkosmatka@gmail.com"
|
11
|
-
gem.homepage = "http://github.com/brainmap/rpipe"
|
12
|
-
gem.authors = ["Kristopher Kosmatka", "Erik Kastman"]
|
13
|
-
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
14
|
-
gem.add_dependency "metamri"
|
15
|
-
gem.add_dependency "log4r"
|
16
|
-
gem.add_dependency "POpen4"
|
17
|
-
gem.add_dependency "ruport"
|
18
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
19
|
-
end
|
20
|
-
Jeweler::GemcutterTasks.new
|
21
|
-
rescue LoadError
|
22
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
23
|
-
end
|
3
|
+
require 'bundler/gem_tasks'
|
24
4
|
|
25
5
|
require 'rake/testtask'
|
26
6
|
Rake::TestTask.new(:test) do |test|
|
@@ -66,8 +46,8 @@ begin
|
|
66
46
|
rescue LoadError
|
67
47
|
"Not using darkfish."
|
68
48
|
end
|
69
|
-
require '
|
70
|
-
|
49
|
+
require 'rdoc/task'
|
50
|
+
RDoc::Task.new do |rdoc|
|
71
51
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
72
52
|
|
73
53
|
rdoc.rdoc_dir = 'rdoc'
|
data/bin/create_driver.rb
CHANGED
@@ -31,6 +31,8 @@ def create!
|
|
31
31
|
end
|
32
32
|
rescue StandardError => e
|
33
33
|
puts "Problem creating driver for #{rawdir}"
|
34
|
+
puts e
|
35
|
+
puts e.backtrace if cli_options[:verbose]
|
34
36
|
end
|
35
37
|
end
|
36
38
|
end
|
@@ -81,6 +83,10 @@ def parse_options
|
|
81
83
|
opts.on('-f', '--force', "Overwrite drivers if they exist.") do
|
82
84
|
options[:force] = true
|
83
85
|
end
|
86
|
+
|
87
|
+
opts.on('-v', '--verbose', "Print extra info.") do
|
88
|
+
options[:verbose] = true
|
89
|
+
end
|
84
90
|
|
85
91
|
opts.on_tail('-h', '--help', "Show this message") { puts(parser); exit }
|
86
92
|
opts.on_tail("Example: #{File.basename(__FILE__)} mrt00001")
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
3
|
+
require 'rubygems'
|
4
|
+
require 'optparse'
|
5
|
+
require 'logfile'
|
6
|
+
require 'pathname'
|
7
|
+
|
8
|
+
def create!
|
9
|
+
# Parse CLI Options and Spec File
|
10
|
+
cli_options = parse_options
|
11
|
+
|
12
|
+
# Extract Onsets Files from Log Text Files
|
13
|
+
while ARGV.size >= 1
|
14
|
+
begin
|
15
|
+
filename = ARGV.shift
|
16
|
+
basename = File.basename(filename)
|
17
|
+
|
18
|
+
log = Logfile.new(filename, *cli_options[:conditions])
|
19
|
+
puts log.to_csv
|
20
|
+
log.write_csv(basename + '.csv')
|
21
|
+
log.write_mat(filename)
|
22
|
+
rescue StandardError => e
|
23
|
+
puts "Problem creating onsets for #{filename}"
|
24
|
+
puts e
|
25
|
+
puts e.backtrace if cli_options[:verbose]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def parse_options
|
33
|
+
options = { :config => {} }
|
34
|
+
parser = OptionParser.new do |opts|
|
35
|
+
opts.banner = "Usage: #{File.basename(__FILE__)} [options] RAWDIR(S)"
|
36
|
+
|
37
|
+
opts.on('-f', '--files FILES', "Logfiles to Extract onsets from") do |files|
|
38
|
+
options[:logfiles] = files.gsub(" ", "").split(',')
|
39
|
+
end
|
40
|
+
|
41
|
+
opts.on('-c', '--conditions CONDITIONS', "Conditions to extract onsets for") do |conditions_arg|
|
42
|
+
options[:conditions] = conditions_arg.gsub(" ", "").split(",").collect(&:to_sym)
|
43
|
+
end
|
44
|
+
|
45
|
+
opts.on('-f', '--force', "Overwrite onsets files if they exist.") do
|
46
|
+
options[:force] = true
|
47
|
+
end
|
48
|
+
|
49
|
+
opts.on('-v', '--verbose', "Print extra info.") do
|
50
|
+
options[:verbose] = true
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
opts.on_tail('-h', '--help', "Show this message") { puts(parser); exit }
|
56
|
+
opts.on_tail("Example: #{File.basename(__FILE__)} -c 'old, new' pdt00020_bac_081910_faces3_recognitionA.txt pdt00045_lms_112210_faces3_recognitionB.txt")
|
57
|
+
end
|
58
|
+
parser.parse!(ARGV)
|
59
|
+
|
60
|
+
if ARGV.size == 0
|
61
|
+
puts "Problem with arguments - Missing Logfiles to extract!"
|
62
|
+
puts(parser); exit
|
63
|
+
end
|
64
|
+
|
65
|
+
if options[:conditions].empty?
|
66
|
+
puts "Missing conditions - specify them with -c 'new, old' "
|
67
|
+
puts(parser); exit
|
68
|
+
end
|
69
|
+
|
70
|
+
return options
|
71
|
+
end
|
72
|
+
|
73
|
+
# All that for this.
|
74
|
+
create!
|
data/bin/summarize_responses.rb
CHANGED
@@ -24,7 +24,7 @@ module DefaultRecon
|
|
24
24
|
# outfile = run_retroicor(scan_spec['physio_files'], outfile)
|
25
25
|
# end
|
26
26
|
|
27
|
-
slice_time_correct(outfile)
|
27
|
+
slice_time_correct(outfile, scan_spec['alt_direction'] ||= 'alt+z')
|
28
28
|
else
|
29
29
|
File.copy('tmp.nii', outfile)
|
30
30
|
end
|
@@ -43,6 +43,7 @@ module DefaultRecon
|
|
43
43
|
def reconstruct_scan(scan_spec, outfile)
|
44
44
|
if scan_spec['dir']
|
45
45
|
sequence = DicomRawSequence.new(scan_spec, @rawdir)
|
46
|
+
File.delete('tmp.nii') if File.exist? 'tmp.nii'
|
46
47
|
sequence.prepare('tmp.nii')
|
47
48
|
strip_leading_volumes('tmp.nii', outfile, @volume_skip, scan_spec['bold_reps'])
|
48
49
|
elsif scan_spec['pfile']
|
@@ -66,9 +67,9 @@ module DefaultRecon
|
|
66
67
|
end
|
67
68
|
|
68
69
|
# Uses to3d to slice time correct a 4D functional nifti file. Writes result in the current working directory.
|
69
|
-
def slice_time_correct(infile)
|
70
|
+
def slice_time_correct(infile, alt_direction = "alt+z")
|
70
71
|
$Log.info "Slice Timing Correction: #{infile}"
|
71
|
-
cmd = "3dTshift -tzero 0 -tpattern
|
72
|
+
cmd = "3dTshift -tzero 0 -tpattern #{alt_direction} -prefix a#{infile} #{infile}"
|
72
73
|
unless run(cmd)
|
73
74
|
raise ScriptError, "Failed to slice time correct: #{cmd}"
|
74
75
|
end
|
@@ -55,10 +55,11 @@ module DefaultRecon
|
|
55
55
|
def timing_options(scan_spec, second_file)
|
56
56
|
return "" if scan_spec['type'] == "anat"
|
57
57
|
instance_offset = scan_spec['z_slices'] + 1
|
58
|
+
alt_direction = scan_spec['alt_direction'] ||= 'alt+z'
|
58
59
|
if system("dicom_hdr #{second_file} | grep .*REL.Instance.*#{instance_offset}")
|
59
|
-
return "-epan -time:tz
|
60
|
+
return "-epan -time:tz %s %s 2000 %s" % [scan_spec['bold_reps'], scan_spec['z_slices'], alt_direction]
|
60
61
|
else
|
61
|
-
return "-epan -time:zt
|
62
|
+
return "-epan -time:zt %s %s 2000 %s" % [scan_spec['z_slices'], scan_spec['bold_reps'], alt_direction]
|
62
63
|
end
|
63
64
|
end
|
64
65
|
end
|
data/lib/logfile.rb
CHANGED
@@ -99,20 +99,31 @@ class Logfile
|
|
99
99
|
File.stat(@textfile).mtime <=> File.stat(other_logfile.textfile).mtime
|
100
100
|
end
|
101
101
|
|
102
|
+
# Write a summary table of logfiles to a CSV
|
103
|
+
# Arguments:
|
104
|
+
# * filename : String. Output Filename for CSV
|
105
|
+
# * directory : String. Directory to summarize (defaults to pwd).
|
106
|
+
# * grouping : String. Table attribute to group responses by. (defaults to 'version')
|
102
107
|
def self.write_summary(filename = nil, directory = nil, grouping = nil)
|
103
108
|
# One usage for this method is from the summarize_responses.rb executible,
|
104
109
|
# which doesn't allow for ordered arguments on the fly. Therefore,
|
105
110
|
# assign defaults within the method itself, not the signature.
|
106
|
-
filename ||=
|
111
|
+
filename ||= "logfile_summary.csv"
|
107
112
|
directory ||= Dir.pwd
|
108
113
|
grouping ||= 'version'
|
109
114
|
|
110
115
|
table = self.summarize_directory(directory)
|
116
|
+
|
111
117
|
File.open(filename, 'w') do |f|
|
112
118
|
f.puts Ruport::Data::Grouping(table, :by => grouping).to_csv
|
113
119
|
end
|
114
120
|
end
|
115
|
-
|
121
|
+
|
122
|
+
# Create a Ruport::Data::Table containing summary data for a group of Behavioral logfiles.
|
123
|
+
# Arguments:
|
124
|
+
# * directory : String. Path to a directory to summarize.
|
125
|
+
#
|
126
|
+
# Raises an IO Error if no logfiles were successfully summarized.
|
116
127
|
def self.summarize_directory(directory)
|
117
128
|
table = Ruport::Data::Table.new
|
118
129
|
Dir.glob(File.join(directory, '*.txt')).each do |logfile|
|
@@ -121,6 +132,10 @@ class Logfile
|
|
121
132
|
table << lf.ruport_summary
|
122
133
|
table.column_names = lf.summary_attributes if table.column_names.empty?
|
123
134
|
end
|
135
|
+
|
136
|
+
# Ensure that at least some logfiles were found and summarized.
|
137
|
+
raise IOError, "Couldn't find any logfiles in #{directory}" unless table.length >= 1
|
138
|
+
|
124
139
|
return table
|
125
140
|
end
|
126
141
|
|
data/lib/rpipe.rb
CHANGED
@@ -19,6 +19,10 @@ ENV['FSLOUTPUTTYPE'] = 'NIFTI'
|
|
19
19
|
require 'default_logger'
|
20
20
|
require 'global_additions'
|
21
21
|
|
22
|
+
# Initial Definition of Rpipe Module for Bundler-style gemspec management.
|
23
|
+
# TODO: Namespace this gem!
|
24
|
+
module Rpipe; end
|
25
|
+
|
22
26
|
class JobStep
|
23
27
|
|
24
28
|
COLLISION_POLICY = :panic # options -- :panic, :destroy, :overwrite
|
data/rpipe.gemspec
CHANGED
@@ -1,188 +1,27 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "rpipe/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
6
|
s.name = %q{rpipe}
|
8
|
-
s.version =
|
9
|
-
|
10
|
-
s.
|
7
|
+
s.version = Rpipe::VERSION
|
8
|
+
|
9
|
+
s.summary = %Q{Neuroimaging preprocessing the Ruby way}
|
10
|
+
s.description = %Q{Functional MRI Processing Pipeline for the WADRC}
|
11
11
|
s.authors = ["Kristopher Kosmatka", "Erik Kastman"]
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.email = %q{kjkosmatka@gmail.com}
|
15
|
-
s.executables = ["swallow_batch_run.rb", "rpipe", "summarize_responses.rb", "create_driver.rb"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE",
|
18
|
-
"README",
|
19
|
-
"README.rdoc"
|
20
|
-
]
|
21
|
-
s.files = [
|
22
|
-
".document",
|
23
|
-
"Gemfile",
|
24
|
-
"LICENSE",
|
25
|
-
"README",
|
26
|
-
"README.rdoc",
|
27
|
-
"Rakefile",
|
28
|
-
"VERSION",
|
29
|
-
"bin/create_driver.rb",
|
30
|
-
"bin/rpipe",
|
31
|
-
"bin/summarize_responses.rb",
|
32
|
-
"bin/swallow_batch_run.rb",
|
33
|
-
"lib/core_additions.rb",
|
34
|
-
"lib/custom_methods/JohnsonMerit220Visit1Preproc.m",
|
35
|
-
"lib/custom_methods/JohnsonMerit220Visit1Preproc.rb",
|
36
|
-
"lib/custom_methods/JohnsonMerit220Visit1Preproc_job.m",
|
37
|
-
"lib/custom_methods/JohnsonMerit220Visit1Stats.m",
|
38
|
-
"lib/custom_methods/JohnsonMerit220Visit1Stats.rb",
|
39
|
-
"lib/custom_methods/JohnsonMerit220Visit1Stats_job.m",
|
40
|
-
"lib/custom_methods/JohnsonTbiLongitudinalSnodPreproc.m",
|
41
|
-
"lib/custom_methods/JohnsonTbiLongitudinalSnodPreproc.rb",
|
42
|
-
"lib/custom_methods/JohnsonTbiLongitudinalSnodPreproc_job.m",
|
43
|
-
"lib/custom_methods/JohnsonTbiLongitudinalSnodStats.m",
|
44
|
-
"lib/custom_methods/JohnsonTbiLongitudinalSnodStats.rb",
|
45
|
-
"lib/custom_methods/JohnsonTbiLongitudinalSnodStats_job.m",
|
46
|
-
"lib/custom_methods/ReconWithHello.rb",
|
47
|
-
"lib/default_logger.rb",
|
48
|
-
"lib/default_methods/default_preproc.rb",
|
49
|
-
"lib/default_methods/default_recon.rb",
|
50
|
-
"lib/default_methods/default_stats.rb",
|
51
|
-
"lib/default_methods/recon/physionoise_helper.rb",
|
52
|
-
"lib/default_methods/recon/raw_sequence.rb",
|
53
|
-
"lib/generators/job_generator.rb",
|
54
|
-
"lib/generators/preproc_job_generator.rb",
|
55
|
-
"lib/generators/recon_job_generator.rb",
|
56
|
-
"lib/generators/stats_job_generator.rb",
|
57
|
-
"lib/generators/workflow_generator.rb",
|
58
|
-
"lib/global_additions.rb",
|
59
|
-
"lib/logfile.rb",
|
60
|
-
"lib/matlab_helpers/CreateFunctionalVolumeStruct.m",
|
61
|
-
"lib/matlab_helpers/import_csv.m",
|
62
|
-
"lib/matlab_helpers/matlab_queue.rb",
|
63
|
-
"lib/matlab_helpers/prepare_onsets.m",
|
64
|
-
"lib/rpipe.rb",
|
65
|
-
"rpipe.gemspec",
|
66
|
-
"spec/generators/preproc_job_generator_spec.rb",
|
67
|
-
"spec/generators/recon_job_generator_spec.rb",
|
68
|
-
"spec/generators/stats_job_generator_spec.rb",
|
69
|
-
"spec/generators/workflow_generator_spec.rb",
|
70
|
-
"spec/helper_spec.rb",
|
71
|
-
"spec/integration/johnson.merit220.visit1_spec.rb",
|
72
|
-
"spec/integration/johnson.tbi.longitudinal.snod_spec.rb",
|
73
|
-
"spec/logfile_spec.rb",
|
74
|
-
"spec/matlab_queue_spec.rb",
|
75
|
-
"spec/merit220_stats_spec.rb",
|
76
|
-
"spec/physio_spec.rb",
|
77
|
-
"test/drivers/merit220_workflow_sample.yml",
|
78
|
-
"test/drivers/mrt00000.yml",
|
79
|
-
"test/drivers/mrt00015.yml",
|
80
|
-
"test/drivers/mrt00015_hello.yml",
|
81
|
-
"test/drivers/mrt00015_withphys.yml",
|
82
|
-
"test/drivers/tbi000.yml",
|
83
|
-
"test/drivers/tbi000_separatevisits.yml",
|
84
|
-
"test/drivers/tmp.yml",
|
85
|
-
"test/fixtures/faces3_recognitionA.mat",
|
86
|
-
"test/fixtures/faces3_recognitionA.txt",
|
87
|
-
"test/fixtures/faces3_recognitionA_equal.csv",
|
88
|
-
"test/fixtures/faces3_recognitionA_unequal.csv",
|
89
|
-
"test/fixtures/faces3_recognitionB_incmisses.txt",
|
90
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPd3R_40.txt",
|
91
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPd3_40.txt",
|
92
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPttl_40.txt",
|
93
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTd3R_40.txt",
|
94
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTd3_40.txt",
|
95
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTttl_40.txt",
|
96
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTd3R_40.txt",
|
97
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTd3_40.txt",
|
98
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTttl_40.txt",
|
99
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_RRT_40.txt",
|
100
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_RVT_40.txt",
|
101
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_card_spline_40.txt",
|
102
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_resp_spline_40.txt",
|
103
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_RRT_40.txt",
|
104
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_RVT_40.txt",
|
105
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTd3R_40.txt",
|
106
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTd3_40.txt",
|
107
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTttl_40.txt",
|
108
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_RRT_40.txt",
|
109
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_RVT_40.txt",
|
110
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_card_spline_40.txt",
|
111
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_resp_spline_40.txt",
|
112
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_card_spline_40.txt",
|
113
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_resp_spline_40.txt",
|
114
|
-
"test/fixtures/physionoise_regressors/EPI__fMRI_Task1_resp_spline_downsampled_40.txt",
|
115
|
-
"test/fixtures/ruport_summary.yml",
|
116
|
-
"test/fixtures/valid_scans.yaml",
|
117
|
-
"test/helper.rb",
|
118
|
-
"test/test_dynamic_method_inclusion.rb",
|
119
|
-
"test/test_includes.rb",
|
120
|
-
"test/test_integrative_johnson.merit220.visit1.rb",
|
121
|
-
"test/test_preproc.rb",
|
122
|
-
"test/test_recon.rb",
|
123
|
-
"test/test_rpipe.rb",
|
124
|
-
"vendor/output_catcher.rb",
|
125
|
-
"vendor/trollop.rb"
|
126
|
-
]
|
127
|
-
s.homepage = %q{http://github.com/brainmap/rpipe}
|
128
|
-
s.require_paths = ["lib"]
|
129
|
-
s.rubygems_version = %q{1.4.2}
|
130
|
-
s.summary = %q{Neuroimaging preprocessing the Ruby way}
|
131
|
-
s.test_files = [
|
132
|
-
"spec/generators/preproc_job_generator_spec.rb",
|
133
|
-
"spec/generators/recon_job_generator_spec.rb",
|
134
|
-
"spec/generators/stats_job_generator_spec.rb",
|
135
|
-
"spec/generators/workflow_generator_spec.rb",
|
136
|
-
"spec/helper_spec.rb",
|
137
|
-
"spec/integration/johnson.merit220.visit1_spec.rb",
|
138
|
-
"spec/integration/johnson.tbi.longitudinal.snod_spec.rb",
|
139
|
-
"spec/logfile_spec.rb",
|
140
|
-
"spec/matlab_queue_spec.rb",
|
141
|
-
"spec/merit220_stats_spec.rb",
|
142
|
-
"spec/physio_spec.rb",
|
143
|
-
"test/helper.rb",
|
144
|
-
"test/test_dynamic_method_inclusion.rb",
|
145
|
-
"test/test_includes.rb",
|
146
|
-
"test/test_integrative_johnson.merit220.visit1.rb",
|
147
|
-
"test/test_preproc.rb",
|
148
|
-
"test/test_recon.rb",
|
149
|
-
"test/test_rpipe.rb"
|
150
|
-
]
|
12
|
+
s.email = "ekk@medicine.wisc.edu"
|
13
|
+
s.homepage = "http://github.com/brainmap/rpipe"
|
151
14
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
s.add_runtime_dependency(%q<POpen4>, [">= 0"])
|
164
|
-
s.add_runtime_dependency(%q<ruport>, [">= 0"])
|
165
|
-
else
|
166
|
-
s.add_dependency(%q<rpipe>, [">= 0"])
|
167
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
168
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
169
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
170
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
171
|
-
s.add_dependency(%q<metamri>, [">= 0"])
|
172
|
-
s.add_dependency(%q<log4r>, [">= 0"])
|
173
|
-
s.add_dependency(%q<POpen4>, [">= 0"])
|
174
|
-
s.add_dependency(%q<ruport>, [">= 0"])
|
175
|
-
end
|
176
|
-
else
|
177
|
-
s.add_dependency(%q<rpipe>, [">= 0"])
|
178
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
179
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
180
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
181
|
-
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
182
|
-
s.add_dependency(%q<metamri>, [">= 0"])
|
183
|
-
s.add_dependency(%q<log4r>, [">= 0"])
|
184
|
-
s.add_dependency(%q<POpen4>, [">= 0"])
|
185
|
-
s.add_dependency(%q<ruport>, [">= 0"])
|
186
|
-
end
|
15
|
+
s.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
16
|
+
s.add_dependency "metamri", '~>0.2.9'
|
17
|
+
s.add_dependency "log4r", '~>1.1.9'
|
18
|
+
s.add_dependency "POpen4", '~>0.1.4'
|
19
|
+
s.add_dependency "ruport", '~>1.6.3'
|
20
|
+
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
|
+
s.require_paths = ["lib"]
|
25
|
+
|
187
26
|
end
|
188
27
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpipe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kristopher Kosmatka
|
@@ -16,14 +16,13 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
19
|
+
date: 2011-08-18 00:00:00 -05:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
+
name: thoughtbot-shoulda
|
23
24
|
prerelease: false
|
24
|
-
|
25
|
-
type: :runtime
|
26
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
27
26
|
none: false
|
28
27
|
requirements:
|
29
28
|
- - ">="
|
@@ -32,134 +31,87 @@ dependencies:
|
|
32
31
|
segments:
|
33
32
|
- 0
|
34
33
|
version: "0"
|
35
|
-
requirement: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
prerelease: false
|
38
|
-
name: shoulda
|
39
34
|
type: :development
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
hash: 3
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
version: "0"
|
49
|
-
requirement: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
prerelease: false
|
52
|
-
name: thoughtbot-shoulda
|
53
|
-
type: :development
|
54
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
|
-
requirements:
|
57
|
-
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
hash: 3
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
version: "0"
|
63
|
-
requirement: *id003
|
35
|
+
version_requirements: *id001
|
64
36
|
- !ruby/object:Gem::Dependency
|
37
|
+
name: metamri
|
65
38
|
prerelease: false
|
66
|
-
|
67
|
-
type: :development
|
68
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
69
40
|
none: false
|
70
41
|
requirements:
|
71
|
-
- -
|
42
|
+
- - ~>
|
72
43
|
- !ruby/object:Gem::Version
|
73
|
-
hash:
|
44
|
+
hash: 5
|
74
45
|
segments:
|
75
46
|
- 0
|
76
|
-
|
77
|
-
|
47
|
+
- 2
|
48
|
+
- 9
|
49
|
+
version: 0.2.9
|
50
|
+
type: :runtime
|
51
|
+
version_requirements: *id002
|
78
52
|
- !ruby/object:Gem::Dependency
|
53
|
+
name: log4r
|
79
54
|
prerelease: false
|
80
|
-
|
81
|
-
type: :development
|
82
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
83
56
|
none: false
|
84
57
|
requirements:
|
85
|
-
- -
|
58
|
+
- - ~>
|
86
59
|
- !ruby/object:Gem::Version
|
87
|
-
hash:
|
60
|
+
hash: 1
|
88
61
|
segments:
|
89
|
-
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
prerelease: false
|
94
|
-
name: metamri
|
62
|
+
- 1
|
63
|
+
- 1
|
64
|
+
- 9
|
65
|
+
version: 1.1.9
|
95
66
|
type: :runtime
|
96
|
-
version_requirements:
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ">="
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
hash: 3
|
102
|
-
segments:
|
103
|
-
- 0
|
104
|
-
version: "0"
|
105
|
-
requirement: *id006
|
67
|
+
version_requirements: *id003
|
106
68
|
- !ruby/object:Gem::Dependency
|
69
|
+
name: POpen4
|
107
70
|
prerelease: false
|
108
|
-
|
109
|
-
type: :runtime
|
110
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
111
72
|
none: false
|
112
73
|
requirements:
|
113
|
-
- -
|
74
|
+
- - ~>
|
114
75
|
- !ruby/object:Gem::Version
|
115
|
-
hash:
|
76
|
+
hash: 19
|
116
77
|
segments:
|
117
78
|
- 0
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
prerelease: false
|
122
|
-
name: POpen4
|
79
|
+
- 1
|
80
|
+
- 4
|
81
|
+
version: 0.1.4
|
123
82
|
type: :runtime
|
124
|
-
version_requirements:
|
125
|
-
none: false
|
126
|
-
requirements:
|
127
|
-
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
hash: 3
|
130
|
-
segments:
|
131
|
-
- 0
|
132
|
-
version: "0"
|
133
|
-
requirement: *id008
|
83
|
+
version_requirements: *id004
|
134
84
|
- !ruby/object:Gem::Dependency
|
135
|
-
prerelease: false
|
136
85
|
name: ruport
|
137
|
-
|
138
|
-
|
86
|
+
prerelease: false
|
87
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
139
88
|
none: false
|
140
89
|
requirements:
|
141
|
-
- -
|
90
|
+
- - ~>
|
142
91
|
- !ruby/object:Gem::Version
|
143
|
-
hash:
|
92
|
+
hash: 9
|
144
93
|
segments:
|
145
|
-
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
94
|
+
- 1
|
95
|
+
- 6
|
96
|
+
- 3
|
97
|
+
version: 1.6.3
|
98
|
+
type: :runtime
|
99
|
+
version_requirements: *id005
|
100
|
+
description: Functional MRI Processing Pipeline for the WADRC
|
101
|
+
email: ekk@medicine.wisc.edu
|
150
102
|
executables:
|
151
|
-
-
|
103
|
+
- create_driver.rb
|
104
|
+
- create_onsets_files.rb
|
152
105
|
- rpipe
|
153
106
|
- summarize_responses.rb
|
154
|
-
-
|
107
|
+
- swallow_batch_run.rb
|
155
108
|
extensions: []
|
156
109
|
|
157
|
-
extra_rdoc_files:
|
158
|
-
|
159
|
-
- README
|
160
|
-
- README.rdoc
|
110
|
+
extra_rdoc_files: []
|
111
|
+
|
161
112
|
files:
|
162
113
|
- .document
|
114
|
+
- .gitignore
|
163
115
|
- Gemfile
|
164
116
|
- LICENSE
|
165
117
|
- README
|
@@ -167,6 +119,7 @@ files:
|
|
167
119
|
- Rakefile
|
168
120
|
- VERSION
|
169
121
|
- bin/create_driver.rb
|
122
|
+
- bin/create_onsets_files.rb
|
170
123
|
- bin/rpipe
|
171
124
|
- bin/summarize_responses.rb
|
172
125
|
- bin/swallow_batch_run.rb
|
@@ -202,6 +155,7 @@ files:
|
|
202
155
|
- lib/matlab_helpers/matlab_queue.rb
|
203
156
|
- lib/matlab_helpers/prepare_onsets.m
|
204
157
|
- lib/rpipe.rb
|
158
|
+
- lib/rpipe/version.rb
|
205
159
|
- rpipe.gemspec
|
206
160
|
- spec/generators/preproc_job_generator_spec.rb
|
207
161
|
- spec/generators/recon_job_generator_spec.rb
|
@@ -309,6 +263,46 @@ test_files:
|
|
309
263
|
- spec/matlab_queue_spec.rb
|
310
264
|
- spec/merit220_stats_spec.rb
|
311
265
|
- spec/physio_spec.rb
|
266
|
+
- test/drivers/merit220_workflow_sample.yml
|
267
|
+
- test/drivers/mrt00000.yml
|
268
|
+
- test/drivers/mrt00015.yml
|
269
|
+
- test/drivers/mrt00015_hello.yml
|
270
|
+
- test/drivers/mrt00015_withphys.yml
|
271
|
+
- test/drivers/tbi000.yml
|
272
|
+
- test/drivers/tbi000_separatevisits.yml
|
273
|
+
- test/drivers/tmp.yml
|
274
|
+
- test/fixtures/faces3_recognitionA.mat
|
275
|
+
- test/fixtures/faces3_recognitionA.txt
|
276
|
+
- test/fixtures/faces3_recognitionA_equal.csv
|
277
|
+
- test/fixtures/faces3_recognitionA_unequal.csv
|
278
|
+
- test/fixtures/faces3_recognitionB_incmisses.txt
|
279
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPd3R_40.txt
|
280
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPd3_40.txt
|
281
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CPttl_40.txt
|
282
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTd3R_40.txt
|
283
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTd3_40.txt
|
284
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_CRTttl_40.txt
|
285
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTd3R_40.txt
|
286
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTd3_40.txt
|
287
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_CRTttl_40.txt
|
288
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_RRT_40.txt
|
289
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_RVT_40.txt
|
290
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_card_spline_40.txt
|
291
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_HalfTR_resp_spline_40.txt
|
292
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_RRT_40.txt
|
293
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_RVT_40.txt
|
294
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTd3R_40.txt
|
295
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTd3_40.txt
|
296
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_CRTttl_40.txt
|
297
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_RRT_40.txt
|
298
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_RVT_40.txt
|
299
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_card_spline_40.txt
|
300
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_TR_resp_spline_40.txt
|
301
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_card_spline_40.txt
|
302
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_resp_spline_40.txt
|
303
|
+
- test/fixtures/physionoise_regressors/EPI__fMRI_Task1_resp_spline_downsampled_40.txt
|
304
|
+
- test/fixtures/ruport_summary.yml
|
305
|
+
- test/fixtures/valid_scans.yaml
|
312
306
|
- test/helper.rb
|
313
307
|
- test/test_dynamic_method_inclusion.rb
|
314
308
|
- test/test_includes.rb
|