metamri 0.1.9 → 0.1.10

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.1.9
1
+ 0.1.10
@@ -0,0 +1,17 @@
1
+ class String
2
+
3
+ =begin rdoc
4
+ Does same basic string replacements to ensure valid filenames.
5
+ =end
6
+ def escape_filename
7
+ mgsub([[/[\s\:\)\(\/\?]+/, "-"], [/\*/, "star"]])
8
+ end
9
+
10
+ def mgsub(key_value_pairs=[].freeze)
11
+ regexp_fragments = key_value_pairs.collect { |k,v| k }
12
+ gsub(Regexp.union(*regexp_fragments)) do |match|
13
+ key_value_pairs.detect { |k,v| k =~ match}[1]
14
+ end
15
+ end
16
+
17
+ end
data/lib/metamri.rb CHANGED
@@ -1,6 +1,9 @@
1
+ $: << File.dirname(__FILE__)
2
+
1
3
  require 'raw_image_file'
2
4
  require 'raw_image_dataset'
3
5
  require 'visit_raw_data_directory'
6
+ require 'metamri/core_additions'
4
7
 
5
8
  module Metamri
6
9
  end
@@ -177,12 +177,7 @@ have more component files than shell commands can handle.
177
177
  end
178
178
  end
179
179
 
180
- =begin rdoc
181
- Does same basic string replacements to ensure valid filenames.
182
- =end
183
- def escape_filename(filename)
184
- filename.mgsub([[/[\s\:\)\(\/]+/, "-"], [/\*/, "star"]])
185
- end
180
+
186
181
 
187
182
  private
188
183
 
@@ -191,15 +186,5 @@ private
191
186
  @timestamp = (@raw_image_files.sort_by { |i| i.timestamp }).first.timestamp
192
187
  end
193
188
 
194
-
195
189
  end
196
190
  #### END OF CLASS ####
197
-
198
- class String
199
- def mgsub(key_value_pairs=[].freeze)
200
- regexp_fragments = key_value_pairs.collect { |k,v| k }
201
- gsub(Regexp.union(*regexp_fragments)) do |match|
202
- key_value_pairs.detect { |k,v| k =~ match}[1]
203
- end
204
- end
205
- end
@@ -79,7 +79,7 @@ temporary file.
79
79
  @hdr_data, @hdr_reader = read_header(absfilepath)
80
80
  #puts "@hdr_data: #{@hdr_data}; @hdr_reader: #{@hdr_reader}"
81
81
  rescue Exception => e
82
- raise(IOError, "Header not readable. #{e}")
82
+ raise(IOError, "Header not readable for file #{@filename}. #{e}")
83
83
  end
84
84
 
85
85
  # file type is based on file name but only if the header was read successfully
@@ -90,7 +90,7 @@ temporary file.
90
90
  begin
91
91
  import_hdr
92
92
  rescue Exception => e
93
- raise(IOError, "Header import failed. #{e}")
93
+ raise(IOError, "Header import failed for file #{@filename}. #{e}")
94
94
  end
95
95
 
96
96
  # deallocate the header data to save memory space.
@@ -157,7 +157,7 @@ Returns an array of the created nifti files.
157
157
 
158
158
  @datasets.each do |dataset|
159
159
  nifti_output_path = output_directory
160
- nifti_filename = "#{scanid}_#{dataset.escape_filename(dataset.series_description)}_#{File.basename(dataset.directory)}.nii"
160
+ nifti_filename = "#{scanid}_#{dataset.series_description.escape_filename}_#{File.basename(dataset.directory).escape_filename}.nii"
161
161
 
162
162
  Pathname.new(dataset.directory).all_dicoms do |dicom_files|
163
163
  nifti_input_path = File.dirname(dicom_files.first)
@@ -470,6 +470,7 @@ class Pathname
470
470
 
471
471
  def local_copy(tempdir = Dir.tmpdir)
472
472
  tfbase = self.to_s =~ /\.bz2$/ ? self.basename.to_s.chomp(".bz2") : self.basename.to_s
473
+ tfbase.escape_filename
473
474
  tmpfile = File.join(tempdir, tfbase)
474
475
  if self.to_s =~ /\.bz2$/
475
476
  `bunzip2 -k -c '#{self.to_s}' >> '#{tmpfile}'`
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.1.9"
8
+ s.version = "0.1.10"
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-01-22}
12
+ s.date = %q{2010-01-25}
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_study.rb", "import_visit.rb", "import_respiratory_files.rb"]
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "bin/import_study.rb",
28
28
  "bin/import_visit.rb",
29
29
  "lib/metamri.rb",
30
+ "lib/metamri/core_additions.rb",
30
31
  "lib/mysql_tools.rb",
31
32
  "lib/nifti_builder.rb",
32
33
  "lib/raw_image_dataset.rb",
@@ -3,54 +3,67 @@ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
3
3
  require 'rubygems'
4
4
  require 'spec'
5
5
  require 'fileutils'
6
+ require 'tmpdir'
6
7
  require 'visit_raw_data_directory'
7
8
  require 'raw_image_dataset'
8
9
  require 'raw_image_file'
9
10
 
10
- VISIT_FIXTURE = File.join(Dir.tmpdir, 'fixtures/visit_raw_data_directory/tbiva018b_9336_12022009')
11
11
  VISIT_FIXTURE_SRC = '/Data/vtrak1/raw/johnson.tbi-va.visit1/tbiva018b_9336_12022009'
12
+ VISIT_FIXTURE = File.join(Dir.tmpdir, 'fixtures/visit_raw_data_directory/tbiva018b_9336_12022009')
13
+ VISIT_FIXTURE_UNZIPPED = File.join(Dir.tmpdir, 'fixtures/visit_raw_data_directory/tbiva018b_9336_12022009_unzipped')
14
+
15
+
12
16
 
13
17
  describe "Convert Unknown Dicoms to Nifti Files" do
14
18
  before(:all) do
15
19
  # Initialize a local scratch directory to hold fixtures for testing if it doesn't already exist.
16
- unless File.directory?(VISIT_FIXTURE)
17
- FileUtils.mkdir_p(File.dirname(VISIT_FIXTURE))
18
- FileUtils.cp_r(VISIT_FIXTURE_SRC, VISIT_FIXTURE)
19
- end
20
+ #unless File.directory?(VISIT_FIXTURE)
21
+ #FileUtils.mkdir_p(File.dirname(VISIT_FIXTURE))
22
+ #FileUtils.cp_r(VISIT_FIXTURE_SRC, VISIT_FIXTURE)
23
+ #FileUtils.cp_r(VISIT_FIXTURE, VISIT_FIXTURE_UNZIPPED)
24
+ `find #{VISIT_FIXTURE_UNZIPPED} -name '*.bz2' -exec bunzip2 {} \\;`
25
+ #end
20
26
  end
21
27
 
22
28
  before(:each) do
23
29
  @visit = VisitRawDataDirectory.new(VISIT_FIXTURE, 'johnson.tbi-va.visit1')
24
30
  @dataset = RawImageDataset.new(
25
31
  File.join(VISIT_FIXTURE, '001'),
26
- [RawImageFile.new(File.join(VISIT_FIXTURE, '001/I0001.dcm'))]
32
+ [RawImageFile.new(File.join(VISIT_FIXTURE, '001/I0001.dcm.bz2'))]
33
+ )
34
+
35
+ @visit_unzipped = VisitRawDataDirectory.new(VISIT_FIXTURE_UNZIPPED, 'johnson.tbi-va.visit1')
36
+ @dataset_unzipped = RawImageDataset.new(
37
+ File.join(VISIT_FIXTURE_UNZIPPED, '001'),
38
+ [RawImageFile.new(File.join(VISIT_FIXTURE_UNZIPPED, '001/I0001.dcm'))]
27
39
  )
40
+
28
41
  @test_niftis = Array.new
29
42
  @output_directories = Array.new
30
43
  end
31
44
 
32
45
  it "should Convert an anatomical from dicom to nifti using original, unzipped files." do
33
- @dataset.to_nifti('/tmp/', 'filename.nii', :input_directory => @dataset.directory)[0].should == "to3d -session /tmp/ -prefix filename.nii #{@dataset.directory}/'*.dcm'"
34
- nifti_conversion_command, nifti_output_file = @dataset.to_nifti!('/tmp/', 'filename.nii', :input_directory => @dataset.directory)
35
- nifti_conversion_command.should == "to3d -session /tmp/ -prefix filename.nii #{@dataset.directory}/'*.dcm'"
46
+ @dataset_unzipped.to_nifti('/tmp/', 'filename.nii', :input_directory => @dataset_unzipped.directory)[0].should == "to3d -session /tmp/ -prefix filename.nii #{@dataset_unzipped.directory}/'*.dcm'"
47
+ nifti_conversion_command, nifti_output_file = @dataset_unzipped.to_nifti!('/tmp/', 'filename.nii', :input_directory => @dataset_unzipped.directory)
48
+ nifti_conversion_command.should == "to3d -session /tmp/ -prefix filename.nii #{@dataset_unzipped.directory}/'*.dcm'"
36
49
  @test_niftis << nifti_output_file
37
50
  @output_directories << '/tmp'
38
51
  end
39
52
 
40
53
  it "should convert all anatomicals in a visit raw directory using original, unzipped files." do
41
- @visit.scan
54
+ @visit_unzipped.scan
42
55
 
43
- @visit.datasets.each do |ds|
56
+ @visit_unzipped.datasets.each do |ds|
44
57
  begin
45
- nifti_filename = "#{@visit.scanid}_#{ds.escape_filename(ds.series_description)}_#{File.basename(ds.directory)}.nii"
46
- nifti_conversion_commmand, nifti_output_file = ds.to_nifti!(File.join(Dir.tmpdir, @visit.default_preprocess_directory), nifti_filename, :input_directory => ds.directory, :append_modality_directory => true )
58
+ nifti_filename = "#{@visit_unzipped.scanid}_#{ds.series_description.escape_filename}_#{File.basename(ds.directory)}.nii"
59
+ nifti_conversion_commmand, nifti_output_file = ds.to_nifti!(File.join(Dir.tmpdir, @visit_unzipped.default_preprocess_directory), nifti_filename, :input_directory => ds.directory, :append_modality_directory => true )
47
60
  @test_niftis << nifti_output_file
48
61
  rescue IOError => e
49
62
  puts "-- Error: #{e.message}"
50
63
  end
51
64
  end
52
65
 
53
- @output_directories = File.join(@visit.default_preprocess_directory, 'unknown')
66
+ @output_directories = File.join(@visit_unzipped.default_preprocess_directory, 'unknown')
54
67
  end
55
68
 
56
69
  it "should convert all anatomicals in a visit raw directory using local copy." do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metamri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kristopher J. Kosmatka
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-22 00:00:00 -06:00
12
+ date: 2010-01-25 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -35,6 +35,7 @@ files:
35
35
  - bin/import_study.rb
36
36
  - bin/import_visit.rb
37
37
  - lib/metamri.rb
38
+ - lib/metamri/core_additions.rb
38
39
  - lib/mysql_tools.rb
39
40
  - lib/nifti_builder.rb
40
41
  - lib/raw_image_dataset.rb