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 CHANGED
@@ -1 +1 @@
1
- 0.0.3
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 :driver, "file does not exist" unless File.exist?(driver)
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
- out_logfile = logfile_stem + '.out'
84
- error_logfile = logfile_stem + '.err'
85
- command_logfile = logfile_stem + '.log'
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, tee)
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.add Log4r::IOOutputter.new(:stdout, tee, :formatter => FlashFormatter.new)
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, tee, :formatter => FlashFormatter.new)
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 << ['/Applications/spm/spm8/spm8_current',
30
- '/apps/spm/spm8_current',
31
- File.join(@libdir, 'custom_methods'),
32
- File.join(@libdir, 'matlab_helpers')
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 << ['/Applications/spm/spm8/spm8_current',
48
- '/apps/spm/spm8_current',
49
- File.join(@libdir, 'custom_methods'),
50
- File.join(@libdir, 'matlab_helpers') ]
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
- raise ScriptError, "Problem running #{epirecon_cmd}" unless run(epirecon_cmd)
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
- base_refdat_path = File.join(@rawdir, refdat_stem)
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
- FileUtils.ln_s(local_refdat_file, Dir.pwd, :force => true)
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
- logfiles = Dir.glob(File.join(@responses['directory'], @config['subid'] + "*.txt"))
55
- raise IOError, "No logfiles found in #{@responses['directory']} matching #{@config['subid']}" if logfiles.empty?
56
- logfiles = logfiles.collect! {|file| Logfile.new(file)}.sort
57
- @logfiles = logfiles.collect! {|file| File.basename(file.textfile) }
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
@@ -6,7 +6,7 @@ def run(command)
6
6
 
7
7
  status = POpen4::popen4(command) do |stdout, stderr|
8
8
  puts stdout.read.strip
9
- puts stderr.read.strip
9
+ $Log.error stderr.read.strip
10
10
  end
11
11
 
12
12
  status && status.exitstatus == 0 ? true : false
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 << "prepare_onsets_xls( \
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
- cmd = @ml_command + " -r \"#{ to_s }; exit\" "
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 [] = prepare_onsets_xls(csvfile, matfileprefix, conditions)
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
- import_csv(csvfile);
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
- require module_name
53
- extend self.class.const_get(module_name.dot_camelize)
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', 'conditions', 'procdir'
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.3"
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-07-16}
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/prepare_onsets_xls.m",
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.7}
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::VERSION) >= Gem::Version.new('1.2.0') then
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"])
@@ -77,7 +77,7 @@ class Tee < IO
77
77
 
78
78
  def initialize(filename, post = :out, mode_string = 'w')
79
79
  super(FILE_DESC[post], mode_string)
80
- @file = File.open(filename, 'w')
80
+ @file = File.open(filename, mode_string)
81
81
  eval("$std#{post} = self")
82
82
  end
83
83
 
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
- - 3
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-07-16 00:00:00 -05:00
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/prepare_onsets_xls.m
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.7
223
+ rubygems_version: 1.3.6
239
224
  signing_key:
240
225
  specification_version: 3
241
226
  summary: Neuroimaging preprocessing the Ruby way