metamri 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.2.4
@@ -51,7 +51,12 @@ def run!
51
51
 
52
52
  unless input_directories.empty?
53
53
  input_directories.each do |raw_directory|
54
- list_visit raw_directory, options
54
+ begin
55
+ list_visit raw_directory, options
56
+ rescue StandardError => e
57
+ puts e
58
+ next
59
+ end
55
60
  end
56
61
  else
57
62
  raise IOError, "No input directories specified."
@@ -79,7 +84,7 @@ def list_visit(raw_directory, options = {})
79
84
  raise ScriptError, "Scaning filesystem directly..." if options[:force_scan]
80
85
 
81
86
  lookup_path = File.dirname(raw_directory).split(File::Separator).last == "dicoms" ? File.join(raw_directory, '..') : raw_directory
82
- visit = VisitRawDataDirectoryResource.find(:first, :params => {:search => {:path => File.expand_path(lookup_path)}})
87
+ visit = VisitRawDataDirectoryResource.find(:first, :params => {:search => {:path_contains => File.expand_path(lookup_path)}})
83
88
 
84
89
  raise IOError.new("Could not lookup visit using path #{lookup_path}.") unless visit
85
90
  raise IOError.new("Returned visit's path #{visit.path} does not match path.") unless visit.path == File.expand_path(lookup_path)
@@ -164,11 +164,18 @@ class RawImageDataset
164
164
  # Returns a hash of attributes used for insertion into active record.
165
165
  # Options: :thumb => FileHandle to thumbnail includes a thumbnail.
166
166
  def attributes_for_active_record(options = {})
167
- thumbnail = options.has_key?(:thumb) ? options[:thumb] : nil
167
+ attrs = {}
168
168
 
169
- unless (thumbnail.class == File || thumbnail == nil)
170
- raise(IOError, "Thumbnail #{options[:thumb]} must be a #File instead of #{thumbnail.class}.")
169
+ # If the thumbnail is present and valid, add it to the hash.
170
+ # Otherwise don't add the key, or paperclip will delete the attachments (it deletes when given nil)
171
+ if options.has_key?(:thumb)
172
+ thumbnail = options[:thumb]
173
+ unless (thumbnail.class == File || thumbnail == nil)
174
+ raise(IOError, "Thumbnail #{options[:thumb]} must be a #File instead of #{thumbnail.class}.")
175
+ end
176
+ attrs[:thumbnail] = thumbnail
171
177
  end
178
+
172
179
  { :rmr => @rmr_number,
173
180
  :series_description => @series_description,
174
181
  :path => @directory,
@@ -178,10 +185,9 @@ class RawImageDataset
178
185
  :bold_reps => @raw_image_files.first.bold_reps,
179
186
  :slices_per_volume => @raw_image_files.first.num_slices,
180
187
  :scanned_file => @scanned_file,
181
- :thumbnail => thumbnail,
182
188
  :dicom_series_uid => @dicom_series_uid,
183
189
  :dicom_taghash => @dicom_taghash
184
- }
190
+ }.merge attrs
185
191
  end
186
192
 
187
193
  def create_thumbnail
@@ -272,7 +278,7 @@ Returns a path to the created dataset as a string if successful.
272
278
 
273
279
  def file_count
274
280
  unless @file_count
275
- if @raw_image_files.first.dicom?
281
+ if @raw_image_files.first.dicom? or @raw_image_files.first.geifile?
276
282
  @file_count = Dir.open(@directory).reject{ |branch| /(^\.|.yaml$)/.match(branch) }.length
277
283
  elsif @raw_image_files.first.pfile?
278
284
  @file_count = 1
@@ -305,7 +311,7 @@ Returns a path to the created dataset as a string if successful.
305
311
  def relative_dataset_path(visit_dir = nil)
306
312
  image_file = @raw_image_files.first
307
313
  case image_file.file_type
308
- when 'dicom'
314
+ when 'dicom', 'geifile'
309
315
  relative_dataset_path = File.basename(directory)
310
316
  when 'pfile'
311
317
  full_dataset_path = Pathname.new(File.join(directory, image_file.filename))
@@ -19,6 +19,8 @@ class RawImageDatasetThumbnail
19
19
  attr_reader :path
20
20
  # The processor for creating the thumbnail (:rubydicom or :slicer)
21
21
  attr_reader :processor
22
+ # An array of errors encountered during the reading process.
23
+ attr_reader :errors
22
24
 
23
25
  # Creates a RawImageDatasetThumbnail instance by passing in a parent dataset to thumbnail.
24
26
  def initialize(dataset)
@@ -143,6 +143,10 @@ class RawImageFile
143
143
  return @file_type == "dicom"
144
144
  end
145
145
 
146
+ def geifile?
147
+ return @file_type == "geifile"
148
+ end
149
+
146
150
 
147
151
  # Returns a yaml string based on a subset of the attributes. Specifically,
148
152
  # the @hdr_data is not included. This is used to generate .yaml files that are
@@ -294,8 +298,9 @@ private
294
298
  # file a "pfile" if it is an image and the file name is of the form P*.7
295
299
  # All other images are called "dicom".
296
300
  def determine_file_type
297
- return "pfile" if image? and (@filename =~ /^P.....\.7/) != nil
298
- return "dicom" if image? and (@filename =~ /^P.....\.7/) == nil
301
+ return "pfile" if image? and (@filename =~ /^P.....\.7/) != nil
302
+ return "geifile" if image? and (@filename =~ /^I\.\d*/) != nil
303
+ return "dicom" if image? and (@filename =~ /^P.....\.7/) == nil
299
304
  return nil
300
305
  end
301
306
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{metamri}
8
- s.version = "0.2.3"
8
+ s.version = "0.2.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kristopher J. Kosmatka"]
12
- s.date = %q{2011-02-25}
12
+ s.date = %q{2011-03-07}
13
13
  s.description = %q{Extraction of MRI metadata and insertion into compatible sqlite3 databases.}
14
14
  s.email = %q{kk4@medicine.wisc.edu}
15
15
  s.executables = ["convert_visit.rb", "import_visit.rb", "import_respiratory_files.rb", "import_study.rb", "list_visit"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metamri
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 3
10
- version: 0.2.3
9
+ - 4
10
+ version: 0.2.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kristopher J. Kosmatka
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-25 00:00:00 -06:00
18
+ date: 2011-03-07 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency