metamri 0.2.1 → 0.2.2

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.2.1
1
+ 0.2.2
@@ -42,6 +42,8 @@ class RawImageDataset
42
42
  attr_reader :dicom_series_uid
43
43
  # DICOM Study UID
44
44
  attr_reader :dicom_study_uid
45
+ # Array of Read Error Strings
46
+ attr_reader :read_errors
45
47
 
46
48
  # * dir: The directory containing the files.
47
49
  # * files: An array of #RawImageFile objects that compose the complete data set.
@@ -51,6 +53,7 @@ class RawImageDataset
51
53
  # * any of the raw image files is not actually a RawImageFile => IndexError
52
54
  # * series description, rmr number, or timestamp cannot be extracted from the first RawImageFile => IndexError
53
55
  def initialize(directory, raw_image_files)
56
+ @read_errors = Array.new
54
57
  @directory = File.expand_path(directory)
55
58
  raise(IOError, "#{@directory} not found.") if not File.directory?(@directory)
56
59
  raise(IOError, "No raw image files supplied.") unless raw_image_files
@@ -90,7 +93,7 @@ class RawImageDataset
90
93
  validates_metainfo_for :protocol_name, :msg => "No protocol name found" if dicom?
91
94
 
92
95
  @operator_name = @raw_image_files.first.operator_name
93
- validates_metainfo_for :operator_name if dicom?
96
+ validates_metainfo_for :operator_name, :optional => true if dicom?
94
97
 
95
98
  @patient_name = @raw_image_files.first.patient_name
96
99
  validates_metainfo_for :patient_name if dicom?
@@ -104,6 +107,15 @@ class RawImageDataset
104
107
  $LOG ||= Logger.new(STDOUT)
105
108
  end
106
109
 
110
+ # Prints a "success" dot or error mesage if any errors in @read_errors.
111
+ def print_scan_status
112
+ if @read_errors.empty?
113
+ print "."; STDOUT.flush
114
+ else
115
+ puts @read_errors.join("; ")
116
+ end
117
+ end
118
+
107
119
 
108
120
 
109
121
  # Generates an SQL insert statement for this dataset that can be used to
@@ -330,7 +342,8 @@ private
330
342
  def validates_metainfo_for(info_variable, options = {})
331
343
  raise StandardError, "#{info_variable} must be a symbol" unless info_variable.kind_of? Symbol
332
344
  if self.instance_variable_get("@" + info_variable.to_s).nil?
333
- raise IndexError, options[:msg] ||= "Couldn't find #{info_variable.to_s}"
345
+ @read_errors << options[:msg] ||= "Couldn't find #{info_variable.to_s}"
346
+ raise IndexError, message unless options[:optional]
334
347
  end
335
348
  end
336
349
 
@@ -108,7 +108,7 @@ class RawImageDatasetResource < ActiveResource::Base
108
108
  unless image_dataset_quality_checks.empty?
109
109
  image_dataset_quality_checks.each do |qc|
110
110
  qc.failed_checks.each do |check|
111
- output << "* #{check[:name].capitalize.gsub("_", " ")} (#{check[:value]}): #{check[:comment]}."
111
+ output << "* #{check[:name].capitalize.gsub("_", " ") } (#{check[:value]}): #{(check[:comment] + ".") if check[:comment]}"
112
112
  end
113
113
 
114
114
  output << "Concerns: #{qc.other_issues}" if qc.other_issues
@@ -131,7 +131,8 @@ class RawImageDatasetResource < ActiveResource::Base
131
131
  datasets.sort_by{ |ds| [ds.timestamp, File.basename(ds.path)] },
132
132
  :headers => { :relative_dataset_path => 'Dataset', :series_description => 'Series Details', :file_count => "File Count", :image_dataset_quality_checks_tablerow => "Quality Checks"},
133
133
  :fields => [:relative_dataset_path, :series_description, :file_count, :image_dataset_quality_checks_tablerow],
134
- :description => false # Turn off rendering row count description at bottom.
134
+ :description => false, # Turn off rendering row count description at bottom.
135
+ :resize => false
135
136
  )
136
137
  rescue NameError => e
137
138
  raise e
@@ -95,8 +95,8 @@ class VisitRawDataDirectory
95
95
  begin
96
96
  matches = options[:ignore_patterns].collect {|pat| dd.to_s =~ pat ? dd : nil }.compact
97
97
  next unless matches.empty?
98
- dd.each_pfile { |pf| @datasets << import_dataset(pf, dd); (print "."; STDOUT.flush) if $LOG.level == Logger::INFO }
99
- dd.first_dicom { |fd| @datasets << import_dataset(fd, dd); (print "."; STDOUT.flush) if $LOG.level == Logger::INFO }
98
+ dd.each_pfile { |pf| @datasets << import_dataset(pf, dd); @datasets.last.print_scan_status if $LOG.level == Logger::INFO }
99
+ dd.first_dicom { |fd| @datasets << import_dataset(fd, dd); @datasets.last.print_scan_status if $LOG.level == Logger::INFO }
100
100
  rescue StandardError => e
101
101
  raise(e, "There was an error scaning dataset #{dd}: #{e}")
102
102
  end
data/metamri.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{metamri}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
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{2010-11-22}
12
+ s.date = %q{2011-01-18}
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"]
@@ -57,7 +57,7 @@ Gem::Specification.new do |s|
57
57
  ]
58
58
  s.homepage = %q{http://github.com/brainmap/metamri}
59
59
  s.require_paths = ["lib"]
60
- s.rubygems_version = %q{1.3.6}
60
+ s.rubygems_version = %q{1.4.1}
61
61
  s.summary = %q{MRI metadata}
62
62
  s.test_files = [
63
63
  "spec/helper_spec.rb",
@@ -73,10 +73,9 @@ Gem::Specification.new do |s|
73
73
  ]
74
74
 
75
75
  if s.respond_to? :specification_version then
76
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
77
76
  s.specification_version = 3
78
77
 
79
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
78
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
80
79
  s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 0"])
81
80
  s.add_runtime_dependency(%q<dicom>, [">= 0"])
82
81
  s.add_development_dependency(%q<rspec>, [">= 0"])
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metamri
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 19
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 2
8
- - 1
9
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - Kristopher J. Kosmatka
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-11-22 00:00:00 -06:00
18
+ date: 2011-01-18 00:00:00 -06:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: sqlite3-ruby
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -33,9 +36,11 @@ dependencies:
33
36
  name: dicom
34
37
  prerelease: false
35
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ">="
38
42
  - !ruby/object:Gem::Version
43
+ hash: 3
39
44
  segments:
40
45
  - 0
41
46
  version: "0"
@@ -45,9 +50,11 @@ dependencies:
45
50
  name: rspec
46
51
  prerelease: false
47
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
48
54
  requirements:
49
55
  - - ">="
50
56
  - !ruby/object:Gem::Version
57
+ hash: 3
51
58
  segments:
52
59
  - 0
53
60
  version: "0"
@@ -113,23 +120,27 @@ rdoc_options: []
113
120
  require_paths:
114
121
  - lib
115
122
  required_ruby_version: !ruby/object:Gem::Requirement
123
+ none: false
116
124
  requirements:
117
125
  - - ">="
118
126
  - !ruby/object:Gem::Version
127
+ hash: 3
119
128
  segments:
120
129
  - 0
121
130
  version: "0"
122
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
123
133
  requirements:
124
134
  - - ">="
125
135
  - !ruby/object:Gem::Version
136
+ hash: 3
126
137
  segments:
127
138
  - 0
128
139
  version: "0"
129
140
  requirements: []
130
141
 
131
142
  rubyforge_project:
132
- rubygems_version: 1.3.6
143
+ rubygems_version: 1.4.1
133
144
  signing_key:
134
145
  specification_version: 3
135
146
  summary: MRI metadata