rpipe 0.0.3 → 0.1.0
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/VERSION +1 -1
- data/bin/rpipe +30 -14
- data/lib/custom_methods/JohnsonMerit220Visit1Preproc.rb +8 -5
- data/lib/custom_methods/JohnsonMerit220Visit1Stats.rb +5 -4
- data/lib/default_methods/default_stats.rb +1 -0
- data/lib/default_methods/recon/raw_sequence.rb +6 -4
- data/lib/generators/stats_job_generator.rb +8 -4
- data/lib/generators/workflow_generator.rb +1 -1
- data/lib/global_additions.rb +1 -1
- data/lib/logfile.rb +2 -2
- data/lib/matlab_helpers/matlab_queue.rb +17 -5
- data/lib/matlab_helpers/{prepare_onsets_xls.m → prepare_onsets.m} +9 -2
- data/lib/rpipe.rb +55 -12
- data/rpipe.gemspec +5 -5
- data/vendor/output_catcher.rb +1 -1
- metadata +5 -20
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/bin/rpipe
CHANGED
@@ -5,6 +5,7 @@ begin
|
|
5
5
|
require 'trollop'
|
6
6
|
require 'output_catcher'
|
7
7
|
require 'pp'
|
8
|
+
require 'etc'
|
8
9
|
require 'log4r'
|
9
10
|
rescue LoadError
|
10
11
|
require 'rubygems'
|
@@ -24,8 +25,8 @@ EOS
|
|
24
25
|
# Main Function for the CLI runner.
|
25
26
|
def run!
|
26
27
|
options, driver = setup_options
|
27
|
-
run_with_logging File.basename(driver, File.extname(driver)) do
|
28
|
-
$Log.info "Begin Pipelining #{driver}"
|
28
|
+
run_with_logging File.basename(driver, File.extname(driver)), options do
|
29
|
+
$Log.info "Begin Pipelining #{driver} | #{Etc.getlogin} on #{`hostname`}"
|
29
30
|
run_pipe(options, driver)
|
30
31
|
$Log.info "Finished Pipelining #{driver}"
|
31
32
|
end
|
@@ -61,6 +62,7 @@ def setup_options
|
|
61
62
|
banner BANNER
|
62
63
|
opt :only, "Perform only a certain step (recon, preproc, stats)", :type => String
|
63
64
|
opt :debug, "Be more wordy than usual for debugging"
|
65
|
+
opt :log_directory, "Output Directory for processing logs.", :type => String
|
64
66
|
end
|
65
67
|
|
66
68
|
if opts[:only_given]
|
@@ -71,7 +73,7 @@ def setup_options
|
|
71
73
|
|
72
74
|
Trollop::die "Driver file not given" if (ARGV.size < 1)
|
73
75
|
driver = ARGV.shift
|
74
|
-
Trollop::die
|
76
|
+
Trollop::die "Driver file #{driver} does not exist. Check the path to that file and try again" unless File.exist?(driver)
|
75
77
|
|
76
78
|
pp opts if opts[:debug]
|
77
79
|
|
@@ -79,18 +81,28 @@ def setup_options
|
|
79
81
|
end
|
80
82
|
|
81
83
|
# Setup Tee IO's for Out and Error and start logs for them.
|
82
|
-
def run_with_logging(logfile_stem, &block)
|
83
|
-
|
84
|
-
|
85
|
-
|
84
|
+
def run_with_logging(logfile_stem, options, &block)
|
85
|
+
if options[:log_directory]
|
86
|
+
log_dir = options[:log_directory]
|
87
|
+
else
|
88
|
+
# If no explicit directory has been passed as an argument, check to see if
|
89
|
+
# a directory named "logs" exists. If so, use that, otherwise use the current directory.
|
90
|
+
log_dir = File.directory?('logs') ? 'logs' : '.'
|
91
|
+
end
|
92
|
+
out_logfile = File.join(log_dir, logfile_stem + '.out')
|
93
|
+
error_logfile = File.join(log_dir, logfile_stem + '.err')
|
94
|
+
command_logfile = File.join(log_dir, logfile_stem + '.sh')
|
86
95
|
|
87
|
-
teeout = Tee.new(out_logfile, :out)
|
88
|
-
teeerr = Tee.new(error_logfile, :err)
|
96
|
+
teeout = Tee.new(out_logfile, :out, 'a')
|
97
|
+
teeerr = Tee.new(error_logfile, :err, 'a')
|
89
98
|
|
90
|
-
setup_logger(command_logfile, teeout)
|
99
|
+
setup_logger(command_logfile, teeout, teeerr, options)
|
91
100
|
|
92
101
|
begin
|
93
102
|
yield
|
103
|
+
rescue Exception => e
|
104
|
+
$ErrorLog.error e
|
105
|
+
raise e
|
94
106
|
ensure
|
95
107
|
# Discard the error log if there were no errors.
|
96
108
|
# Size returns nil for an empty file.
|
@@ -100,15 +112,19 @@ def run_with_logging(logfile_stem, &block)
|
|
100
112
|
end
|
101
113
|
|
102
114
|
# Log Commands to a file and Output to stdout
|
103
|
-
def setup_logger(command_logfile,
|
115
|
+
def setup_logger(command_logfile, teeout, teeerr, options)
|
104
116
|
console_pattern = "#{'*' * 10} %m [ %d ]"
|
105
117
|
$Log = Log4r::Logger.new('output')
|
106
|
-
$Log.
|
118
|
+
$Log.level = Log4r::DEBUG
|
119
|
+
$Log.add Log4r::IOOutputter.new(:stdout, teeout, :formatter => FlashFormatter.new)
|
107
120
|
|
108
121
|
File.delete command_logfile if File.exist? command_logfile
|
109
122
|
$CommandLog = Log4r::Logger.new('command::output')
|
110
|
-
$CommandLog.add Log4r::FileOutputter.new(:file, :filename => command_logfile, :formatter => Log4r::PatternFormatter.new(:pattern => "%m"))
|
111
|
-
$CommandLog.add Log4r::IOOutputter.new(:stdout,
|
123
|
+
$CommandLog.add Log4r::FileOutputter.new(:file, :filename => command_logfile, :trunc => false, :formatter => Log4r::PatternFormatter.new(:pattern => "%m"))
|
124
|
+
$CommandLog.add Log4r::IOOutputter.new(:stdout, teeout, :formatter => FlashFormatter.new)
|
125
|
+
|
126
|
+
$ErrorLog = Log4r::Logger.new('error::output')
|
127
|
+
$ErrorLog.add Log4r::IOOutputter.new(:stderr, teeerr, :formatter => Log4r::PatternFormatter.new(:pattern => "%m"))
|
112
128
|
end
|
113
129
|
|
114
130
|
|
@@ -25,12 +25,15 @@ module JohnsonMerit220Visit1Preproc
|
|
25
25
|
|
26
26
|
def run_preproc_mfile
|
27
27
|
raise ScriptError, "Can't find any slice-time corrected images in #{@origdir}" if image_files.empty?
|
28
|
+
|
29
|
+
validate_existence_of @image_files
|
30
|
+
|
28
31
|
queue = MatlabQueue.new
|
29
|
-
queue.paths << [
|
30
|
-
'
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
queue.paths << [
|
33
|
+
File.join(@spmdir, 'config'),
|
34
|
+
File.join(@spmdir, 'matlabbatch'),
|
35
|
+
File.expand_path(File.join(@libdir, 'custom_methods')),
|
36
|
+
File.expand_path(File.join(@libdir, 'matlab_helpers')) ]
|
34
37
|
|
35
38
|
queue << "JohnsonMerit220Visit1Preproc('#{@procdir}/', \
|
36
39
|
{ #{image_files.collect {|im| "'#{File.basename(im)}'"}.join(' ')} }, \
|
@@ -44,10 +44,11 @@ module JohnsonMerit220Visit1Stats
|
|
44
44
|
raise ScriptError, "Can't find any smoothed, warped images in #{@statsdir}" if images.empty?
|
45
45
|
|
46
46
|
queue = MatlabQueue.new
|
47
|
-
queue.paths << [
|
48
|
-
'
|
49
|
-
|
50
|
-
|
47
|
+
queue.paths << [
|
48
|
+
File.join(@spmdir, 'config'),
|
49
|
+
File.join(@spmdir, 'matlabbatch'),
|
50
|
+
File.expand_path(File.join(@libdir, 'custom_methods')),
|
51
|
+
File.expand_path(File.join(@libdir, 'matlab_helpers')) ]
|
51
52
|
|
52
53
|
queue << "#{@method}('#{@statsdir}/', \
|
53
54
|
{ #{images.collect {|im| "'#{File.basename(im)}'"}.join(' ')} }, \
|
@@ -46,6 +46,7 @@ module DefaultStats
|
|
46
46
|
# Finally runs the stats job and writes output to current working directory.
|
47
47
|
def run_stats_spm_job
|
48
48
|
# TODO
|
49
|
+
# These are mostly being implemented in custom methods.
|
49
50
|
end
|
50
51
|
|
51
52
|
# Create onsets files using logfile responses for given conditions.
|
@@ -81,7 +81,7 @@ module DefaultRecon
|
|
81
81
|
epirecon_cmd_format = "epirecon_ex -f %s -NAME %s -skip %d -scltype=0"
|
82
82
|
epirecon_cmd_options = [@pfile_data, outfile, volumes_to_skip]
|
83
83
|
epirecon_cmd = epirecon_cmd_format % epirecon_cmd_options
|
84
|
-
|
84
|
+
raise ScriptError, "Problem running #{epirecon_cmd}" unless run(epirecon_cmd)
|
85
85
|
end
|
86
86
|
|
87
87
|
alias_method :prepare, :reconstruct_sequence
|
@@ -99,11 +99,13 @@ module DefaultRecon
|
|
99
99
|
# Create a new unzipped local copy of the ref.dat file and link it into
|
100
100
|
# pwd for reconstruction.
|
101
101
|
def setup_refdat(refdat_stem)
|
102
|
-
|
102
|
+
$Log.debug "Using refdat file: #{refdat_stem}"
|
103
|
+
base_refdat_path = File.join(@rawdir, refdat_stem)
|
103
104
|
refdat_path = File.exist?(base_refdat_path) ? base_refdat_path : base_refdat_path + ".bz2"
|
104
105
|
raise IOError, "#{refdat_path} does not exist." unless File.exist?(refdat_path)
|
105
106
|
local_refdat_file = Pathname.new(refdat_path).local_copy
|
106
|
-
|
107
|
+
# epirecon expects a reference named _exactly_ ref.dat, so that's what the link should be named.
|
108
|
+
FileUtils.ln_s(local_refdat_file, File.join(Dir.pwd, 'ref.dat'), :force => true)
|
107
109
|
end
|
108
110
|
end
|
109
|
-
end
|
111
|
+
end
|
@@ -51,10 +51,14 @@ class StatsJobGenerator < JobGenerator
|
|
51
51
|
|
52
52
|
def logfiles
|
53
53
|
return @logfiles if @logfiles
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
if @responses['directory']
|
55
|
+
logfiles = Dir.glob(File.join(@responses['directory'], @config['subid'] + "*.txt"))
|
56
|
+
raise IOError, "No logfiles found in #{@responses['directory']} matching #{@config['subid']}" if logfiles.empty?
|
57
|
+
logfiles = logfiles.collect! {|file| Logfile.new(file)}.sort
|
58
|
+
@logfiles = logfiles.collect! {|file| File.basename(file.textfile) }
|
59
|
+
else
|
60
|
+
puts "Warning: No responses specified."
|
61
|
+
end
|
58
62
|
end
|
59
63
|
|
60
64
|
def regressorsfiles
|
@@ -31,7 +31,7 @@ class WorkflowGenerator < JobGenerator
|
|
31
31
|
@spec['subid'] = parse_subid
|
32
32
|
@spec['study_procedure'] = @config['study_procedure'] ||= guess_study_procedure_from(@rawdir)
|
33
33
|
|
34
|
-
config_requires 'responses_dir'
|
34
|
+
# config_requires 'responses_dir'
|
35
35
|
end
|
36
36
|
|
37
37
|
# Create and return a workflow spec to drive processing
|
data/lib/global_additions.rb
CHANGED
data/lib/logfile.rb
CHANGED
@@ -76,12 +76,12 @@ class Logfile
|
|
76
76
|
def write_mat(prefix)
|
77
77
|
queue = MatlabQueue.new
|
78
78
|
queue.paths << [
|
79
|
-
Pathname.new(File.join(File.dirname(__FILE__), 'matlab_helpers'))
|
79
|
+
Pathname.new(File.join(File.dirname(__FILE__), 'matlab_helpers')).realpath
|
80
80
|
]
|
81
81
|
|
82
82
|
raise ScriptError, "Can't find #{@csv_filename}" unless File.exist?(@csv_filename)
|
83
83
|
|
84
|
-
queue << "
|
84
|
+
queue << "prepare_onsets( \
|
85
85
|
'#{@csv_filename}', \
|
86
86
|
'#{prefix}', \
|
87
87
|
{ #{@conditions.collect {|c| "'#{c}'"}.join(' ') } } \
|
@@ -15,14 +15,12 @@ class MatlabQueue
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_s
|
18
|
-
|
19
|
-
@paths.flatten.collect {|path| "addpath(genpath('#{path}'))"},
|
20
|
-
@commands
|
21
|
-
].flatten.join('; ')
|
18
|
+
@commands.flatten.join(', ')
|
22
19
|
end
|
23
20
|
|
24
21
|
def run!
|
25
|
-
|
22
|
+
set_matlabpath
|
23
|
+
cmd = @ml_command + " -r \"#{ escape_error(to_s) }, exit\" "
|
26
24
|
@success = run(cmd)
|
27
25
|
end
|
28
26
|
|
@@ -30,8 +28,22 @@ class MatlabQueue
|
|
30
28
|
@commands.send(m, *args, &block)
|
31
29
|
end
|
32
30
|
|
31
|
+
# Add paths that should be available for Matlab scripts.
|
33
32
|
def add_to_path(*args)
|
34
33
|
args.each { |arg| @paths << arg }
|
35
34
|
end
|
36
35
|
|
36
|
+
private
|
37
|
+
|
38
|
+
# Ensure all the paths from #MatlabQueue @paths instance var are present.
|
39
|
+
def set_matlabpath
|
40
|
+
mlpath = ENV['MATLABPATH'].split(":")
|
41
|
+
@paths.flatten.collect { |path| mlpath << path }
|
42
|
+
$Log.debug ENV['MATLABPATH'] = mlpath.uniq.join(":")
|
43
|
+
end
|
44
|
+
|
45
|
+
def escape_error(command)
|
46
|
+
"try; #{command}; catch exception; display(getReport(exception)); pause(1); end"
|
47
|
+
end
|
48
|
+
|
37
49
|
end
|
@@ -1,9 +1,16 @@
|
|
1
|
-
function [] =
|
1
|
+
function [] = prepare_onsets(csvfile, matfileprefix, conditions)
|
2
2
|
%IMPORTFILE(FILETOREAD1)
|
3
3
|
% Imports data from the specified file
|
4
4
|
% FILETOREAD1: file to read
|
5
5
|
|
6
|
-
|
6
|
+
try
|
7
|
+
import_csv(csvfile);
|
8
|
+
catch exception
|
9
|
+
% Since this is running in a script, catch errors and force Matlab to exit
|
10
|
+
% instead of hanging. (Not exactly elegant, but it works.)
|
11
|
+
['Error Importing CSV' exception.identifier]
|
12
|
+
exit
|
13
|
+
end
|
7
14
|
|
8
15
|
for i = 1:length(conditions)
|
9
16
|
condition = conditions{i};
|
data/lib/rpipe.rb
CHANGED
@@ -23,7 +23,7 @@ class JobStep
|
|
23
23
|
|
24
24
|
COLLISION_POLICY = :panic # options -- :panic, :destroy, :overwrite
|
25
25
|
|
26
|
-
attr_accessor :subid, :rawdir, :origdir, :procdir, :statsdir, :spmdir, :collision_policy, :libdir
|
26
|
+
attr_accessor :subid, :rawdir, :origdir, :procdir, :statsdir, :spmdir, :collision_policy, :libdir, :step
|
27
27
|
|
28
28
|
# Intialize with two configuration option hashes - workflow_spec and job_spec
|
29
29
|
def initialize(workflow_spec, job_spec)
|
@@ -33,10 +33,11 @@ class JobStep
|
|
33
33
|
@origdir = job_spec['origdir'] || workflow_spec['origdir']
|
34
34
|
@procdir = job_spec['procdir'] || workflow_spec['procdir']
|
35
35
|
@statsdir = job_spec['statsdir'] || workflow_spec['statsdir']
|
36
|
-
@spmdir = job_spec['spmdir'] || workflow_spec['spmdir']
|
36
|
+
@spmdir = job_spec['spmdir'] || workflow_spec['spmdir'] || default_spmdir
|
37
37
|
@scans = job_spec['scans'] || workflow_spec['scans']
|
38
38
|
@scan_labels = job_spec['scan_labels'] || workflow_spec['scan_labels']
|
39
39
|
@collision_policy = (job_spec['collision'] || workflow_spec['collision'] || COLLISION_POLICY).to_sym
|
40
|
+
@step = job_spec['step']
|
40
41
|
@method = job_spec['method']
|
41
42
|
include_custom_methods(@method)
|
42
43
|
@libdir = File.dirname(Pathname.new(__FILE__).realpath)
|
@@ -49,8 +50,24 @@ class JobStep
|
|
49
50
|
if module_name.nil? or ['default','wadrc'].include?(module_name)
|
50
51
|
# do nothing, use default implementation
|
51
52
|
else
|
52
|
-
|
53
|
-
|
53
|
+
# Search the load path and require a file named after the custom method.
|
54
|
+
# Include methods contained in the custom method module.
|
55
|
+
# Ensure it's named properly according to file convention or it won't be correctly included.
|
56
|
+
begin
|
57
|
+
require module_name
|
58
|
+
extend self.class.const_get(module_name.dot_camelize)
|
59
|
+
rescue LoadError => e
|
60
|
+
puts "Unable to find the specified method #{module_name}"
|
61
|
+
puts "Please either use a standard preprocessing step or put a method in app/methods/#{module_name}.rb"
|
62
|
+
puts "Looking in: #{$LOAD_PATH.join(":")}"
|
63
|
+
raise e
|
64
|
+
rescue NameError => e
|
65
|
+
$Log.error "Unable to include a module #{module_name.dot_camelize} (for custom #{@step} step)."
|
66
|
+
puts "Please check app/methods/#{module_name}.rb and ensure that you declared a module named _exactly_ #{module_name.dot_camelize}."
|
67
|
+
puts
|
68
|
+
raise e
|
69
|
+
end
|
70
|
+
|
54
71
|
end
|
55
72
|
end
|
56
73
|
|
@@ -78,7 +95,7 @@ class JobStep
|
|
78
95
|
error = "
|
79
96
|
Warning: Misconfiguration detected.
|
80
97
|
You are missing the following required variables from your spec file:
|
81
|
-
#{missing_vars.collect { |var| " - #{var} \n" } }
|
98
|
+
#{missing_vars.collect { |var| "\t - #{var} \n" } }
|
82
99
|
"
|
83
100
|
|
84
101
|
puts error
|
@@ -99,6 +116,19 @@ class JobStep
|
|
99
116
|
end
|
100
117
|
end
|
101
118
|
|
119
|
+
def validate_existence_of(*args)
|
120
|
+
missing_files = []
|
121
|
+
args.flatten.collect { |file| missing_files << file unless File.exist?(file) }
|
122
|
+
raise ScriptError, "Missing files: #{missing_files.join(", ")}" unless missing_files.empty?
|
123
|
+
end
|
124
|
+
|
125
|
+
def default_spmdir
|
126
|
+
spmdirs = %w{/Applications/spm/spm8/spm8_current /apps/spm/spm8_current}
|
127
|
+
spmdirs.each do |dir|
|
128
|
+
return dir if File.directory? dir
|
129
|
+
end
|
130
|
+
raise IOError, "Couldn't find default SPM directory in #{spmdirs.join("; ")}."
|
131
|
+
end
|
102
132
|
|
103
133
|
|
104
134
|
end
|
@@ -182,7 +212,8 @@ class Stats < JobStep
|
|
182
212
|
@bold_reps = stats_spec['bold_reps']
|
183
213
|
@conditions = stats_spec['conditions'] || workflow_spec['conditions']
|
184
214
|
|
185
|
-
job_requires 'bold_reps', '
|
215
|
+
job_requires 'bold_reps', 'procdir', 'statsdir'
|
216
|
+
job_requires 'conditions' if @responses
|
186
217
|
end
|
187
218
|
|
188
219
|
end
|
@@ -221,6 +252,7 @@ class RPipe
|
|
221
252
|
# the configuration.
|
222
253
|
@workflow_spec = driver.kind_of?(Hash) ? driver : read_driver_file(driver)
|
223
254
|
|
255
|
+
# lib/default_logger.rb
|
224
256
|
setup_logger
|
225
257
|
|
226
258
|
jobs = @workflow_spec['jobs']
|
@@ -229,18 +261,29 @@ class RPipe
|
|
229
261
|
@preproc_jobs << Preprocessing.new(@workflow_spec, job_params) if job_params['step'] == 'preprocess'
|
230
262
|
@stats_jobs << Stats.new(@workflow_spec, job_params) if job_params['step'] == 'stats'
|
231
263
|
end
|
232
|
-
|
233
|
-
def jobs
|
234
|
-
[@recon_jobs, @preproc_jobs, @stats_jobs].flatten
|
235
|
-
end
|
236
|
-
|
237
264
|
end
|
265
|
+
|
266
|
+
def jobs
|
267
|
+
[@recon_jobs, @preproc_jobs, @stats_jobs].flatten
|
268
|
+
end
|
238
269
|
|
239
270
|
# Reads a YAML driver file, parses it with ERB and returns the Configuration Hash.
|
240
271
|
# Raises an error if the file is not found in the file system.
|
241
272
|
def read_driver_file(driver_file)
|
273
|
+
@matlab_paths = []
|
274
|
+
# Add Application Config files to the path if they are present.
|
275
|
+
application_directory = File.expand_path(File.join(File.dirname(driver_file), '..'))
|
276
|
+
%w( matlab methods jobs ).each do |directory|
|
277
|
+
code_dir = File.join(application_directory, directory)
|
278
|
+
if File.directory?(code_dir)
|
279
|
+
$LOAD_PATH.unshift(code_dir)
|
280
|
+
p = ENV['MATLABPATH'].split(":") << code_dir
|
281
|
+
ENV['MATLABPATH'] = p.join(":")
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
242
285
|
raise(IOError, "Driver file not found: #{driver_file}") unless File.exist?(driver_file)
|
243
|
-
YAML.load(ERB.new(File.read(driver_file)).result)
|
286
|
+
YAML.load(ERB.new(File.read(driver_file)).result)
|
244
287
|
end
|
245
288
|
|
246
289
|
private
|
data/rpipe.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rpipe}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristopher Kosmatka", "Erik Kastman"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-21}
|
13
13
|
s.description = %q{Neuroimaging preprocessing the Ruby way}
|
14
14
|
s.email = %q{kjkosmatka@gmail.com}
|
15
15
|
s.executables = ["rpipe", "swallow_batch_run.rb", "create_driver.rb"]
|
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
|
|
59
59
|
"lib/matlab_helpers/CreateFunctionalVolumeStruct.m",
|
60
60
|
"lib/matlab_helpers/import_csv.m",
|
61
61
|
"lib/matlab_helpers/matlab_queue.rb",
|
62
|
-
"lib/matlab_helpers/
|
62
|
+
"lib/matlab_helpers/prepare_onsets.m",
|
63
63
|
"lib/rpipe.rb",
|
64
64
|
"rpipe.gemspec",
|
65
65
|
"spec/generators/preproc_job_generator_spec.rb",
|
@@ -126,7 +126,7 @@ Gem::Specification.new do |s|
|
|
126
126
|
s.homepage = %q{http://github.com/brainmap/rpipe}
|
127
127
|
s.rdoc_options = ["--charset=UTF-8"]
|
128
128
|
s.require_paths = ["lib"]
|
129
|
-
s.rubygems_version = %q{1.3.
|
129
|
+
s.rubygems_version = %q{1.3.6}
|
130
130
|
s.summary = %q{Neuroimaging preprocessing the Ruby way}
|
131
131
|
s.test_files = [
|
132
132
|
"spec/generators/preproc_job_generator_spec.rb",
|
@@ -153,7 +153,7 @@ Gem::Specification.new do |s|
|
|
153
153
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
154
154
|
s.specification_version = 3
|
155
155
|
|
156
|
-
if Gem::Version.new(Gem::
|
156
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
157
157
|
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
158
158
|
s.add_runtime_dependency(%q<metamri>, [">= 0"])
|
159
159
|
s.add_runtime_dependency(%q<log4r>, [">= 0"])
|
data/vendor/output_catcher.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpipe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 25
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
7
|
+
- 1
|
8
8
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.3
|
9
|
+
version: 0.1.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Kristopher Kosmatka
|
@@ -16,18 +15,16 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2010-
|
18
|
+
date: 2010-09-21 00:00:00 -05:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
23
22
|
name: thoughtbot-shoulda
|
24
23
|
prerelease: false
|
25
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
25
|
requirements:
|
28
26
|
- - ">="
|
29
27
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 3
|
31
28
|
segments:
|
32
29
|
- 0
|
33
30
|
version: "0"
|
@@ -37,11 +34,9 @@ dependencies:
|
|
37
34
|
name: metamri
|
38
35
|
prerelease: false
|
39
36
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
37
|
requirements:
|
42
38
|
- - ">="
|
43
39
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 3
|
45
40
|
segments:
|
46
41
|
- 0
|
47
42
|
version: "0"
|
@@ -51,11 +46,9 @@ dependencies:
|
|
51
46
|
name: log4r
|
52
47
|
prerelease: false
|
53
48
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
49
|
requirements:
|
56
50
|
- - ">="
|
57
51
|
- !ruby/object:Gem::Version
|
58
|
-
hash: 3
|
59
52
|
segments:
|
60
53
|
- 0
|
61
54
|
version: "0"
|
@@ -65,11 +58,9 @@ dependencies:
|
|
65
58
|
name: POpen4
|
66
59
|
prerelease: false
|
67
60
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
61
|
requirements:
|
70
62
|
- - ">="
|
71
63
|
- !ruby/object:Gem::Version
|
72
|
-
hash: 3
|
73
64
|
segments:
|
74
65
|
- 0
|
75
66
|
version: "0"
|
@@ -79,11 +70,9 @@ dependencies:
|
|
79
70
|
name: ruport
|
80
71
|
prerelease: false
|
81
72
|
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
74
|
- - ">="
|
85
75
|
- !ruby/object:Gem::Version
|
86
|
-
hash: 3
|
87
76
|
segments:
|
88
77
|
- 0
|
89
78
|
version: "0"
|
@@ -142,7 +131,7 @@ files:
|
|
142
131
|
- lib/matlab_helpers/CreateFunctionalVolumeStruct.m
|
143
132
|
- lib/matlab_helpers/import_csv.m
|
144
133
|
- lib/matlab_helpers/matlab_queue.rb
|
145
|
-
- lib/matlab_helpers/
|
134
|
+
- lib/matlab_helpers/prepare_onsets.m
|
146
135
|
- lib/rpipe.rb
|
147
136
|
- rpipe.gemspec
|
148
137
|
- spec/generators/preproc_job_generator_spec.rb
|
@@ -215,27 +204,23 @@ rdoc_options:
|
|
215
204
|
require_paths:
|
216
205
|
- lib
|
217
206
|
required_ruby_version: !ruby/object:Gem::Requirement
|
218
|
-
none: false
|
219
207
|
requirements:
|
220
208
|
- - ">="
|
221
209
|
- !ruby/object:Gem::Version
|
222
|
-
hash: 3
|
223
210
|
segments:
|
224
211
|
- 0
|
225
212
|
version: "0"
|
226
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
|
-
none: false
|
228
214
|
requirements:
|
229
215
|
- - ">="
|
230
216
|
- !ruby/object:Gem::Version
|
231
|
-
hash: 3
|
232
217
|
segments:
|
233
218
|
- 0
|
234
219
|
version: "0"
|
235
220
|
requirements: []
|
236
221
|
|
237
222
|
rubyforge_project:
|
238
|
-
rubygems_version: 1.3.
|
223
|
+
rubygems_version: 1.3.6
|
239
224
|
signing_key:
|
240
225
|
specification_version: 3
|
241
226
|
summary: Neuroimaging preprocessing the Ruby way
|