metamri 0.1.16 → 0.1.17

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.16
1
+ 0.1.17
data/bin/convert_visit.rb CHANGED
@@ -6,17 +6,19 @@
6
6
  #
7
7
  # == Examples
8
8
  # convert_visit.rb /Data/vtrak1/raw/ries.aware.visit1/awr001_7854_02102009 ries.aware.visit1
9
-
9
+ # convert_visit.rb /Data/vtrak1/raw/ries.aware.visit1/awr001_7854_02102009 ries.aware.visit1 /Data/scratch/temp_analysis/awr001
10
10
  #
11
11
  # == Usage
12
12
  # convert_visit.rb <raw_data_directory> <scan_procedure_codename>
13
13
  #
14
14
  # For help use: import_visit.rb -h
15
15
  #
16
+ # Currently, the script will create an "unknown" directory in the output
17
+ # directory, and will place files named after the series description in the
18
+ # dicom header in that directory.
19
+ #
16
20
  # == Options
17
- # -h, --help Displays help message
18
- # -v, --visit Visit raw data directory, absolute path
19
- # -p, --scan_procedure scan_procedure codename, e.g. johnson.alz.visit1
21
+ # There is currently no option parser in this script. To be implemented.
20
22
  #
21
23
  # == Author
22
24
  #
@@ -32,16 +34,7 @@ require 'pathname'
32
34
  require 'rdoc/usage'
33
35
  require 'logger'
34
36
 
35
- # == Function
36
- #
37
- #
38
- # == Usage
39
- #
40
- # convert_visit.rb /Data/vtrak1/raw/ries.aware.visit1/awr001_9999_010110/ ries.aware.visit1 /tmp/awr001
41
- #
42
- # == Example
43
- #
44
- #
37
+
45
38
  def convert_visit(raw_directory, scan_procedure_codename, output_directory = nil)
46
39
  $LOG = Logger.new(File.join(Dir.tmpdir, File.basename(raw_directory)))
47
40
  v = VisitRawDataDirectory.new(raw_directory, scan_procedure_codename)
@@ -1,10 +1,11 @@
1
+ require 'tmpdir'
1
2
  class String
2
3
 
3
4
  =begin rdoc
4
5
  Does same basic string replacements to ensure valid filenames.
5
6
  =end
6
7
  def escape_filename
7
- mgsub([[/[\s\:\)\(\/\?]+/, "-"], [/\*/, "star"]])
8
+ mgsub([[/[\s\:\)\(\/\?\,]+/, "-"], [/\*/, "star"], [/\./,""]])
8
9
  end
9
10
 
10
11
  def mgsub(key_value_pairs=[].freeze)
@@ -98,10 +99,13 @@ class Pathname
98
99
  and ensure the local copy is deleted.
99
100
  =end
100
101
 
101
- def local_copy(tempdir = Dir.tmpdir, &block)
102
+ def local_copy(tempdir = Dir.mktmpdir, &block)
102
103
  tfbase = self.to_s =~ /\.bz2$/ ? self.basename.to_s.chomp(".bz2") : self.basename.to_s
103
104
  tfbase.escape_filename
104
105
  tmpfile = File.join(tempdir, tfbase)
106
+ # puts tmpfile
107
+ # puts File.exist?(tmpfile)
108
+ File.delete(tmpfile) if File.exist?(tmpfile)
105
109
  if self.to_s =~ /\.bz2$/
106
110
  `bunzip2 -k -c '#{self.to_s}' >> '#{tmpfile}'`
107
111
  else
@@ -4,7 +4,6 @@
4
4
  Builds Nifti files from Dicoms.
5
5
  =end
6
6
 
7
- TO3D_CMD = 'to3d'
8
7
 
9
8
  module UnknownImageDataset
10
9
  # Always set AFNI GE DICOM Fix to "No" before conversion with to3d.
@@ -19,12 +18,18 @@ module UnknownImageDataset
19
18
  else input_files = "#{Dir.tmpdir}/'#{glob}'"
20
19
  end
21
20
 
21
+ if @raw_image_files.first.rep_time && @raw_image_files.first.bold_reps && @raw_image_files.first.num_slices
22
+ slice_order = "altplus"
23
+ functional_args = "-time:zt #{@raw_image_files.first.num_slices} #{@raw_image_files.first.bold_reps} #{@raw_image_files.first.rep_time} #{slice_order}"
24
+ end
25
+
26
+
22
27
  nifti_output_file = File.join(nifti_output_directory, nifti_filename)
23
28
 
24
29
  File.makedirs(nifti_output_directory) unless File.directory?(nifti_output_directory)
25
30
  raise(IOError, "Cannot write to #{nifti_output_directory}") unless File.writable?(nifti_output_directory)
26
31
 
27
- nifti_conversion_command = "#{TO3D_CMD} -session #{nifti_output_directory} -prefix #{nifti_filename} #{input_files}"
32
+ nifti_conversion_command = "to3d -session #{nifti_output_directory} -prefix #{nifti_filename} #{functional_args} #{input_files}"
28
33
 
29
34
  return nifti_conversion_command, nifti_output_file
30
35
  end
@@ -1,8 +1,7 @@
1
-
2
1
  require 'rubygems'
3
2
  require 'sqlite3'
4
- require 'nifti_builder'
5
3
  require 'ftools'
4
+ require 'metamri/nifti_builder'
6
5
 
7
6
  =begin rdoc
8
7
  A #Dataset defines a single 3D or 4D image, i.e. either a volume or a time series
@@ -28,6 +27,8 @@ class RawImageDataset
28
27
  attr_reader :scanned_file
29
28
  # the scanner source
30
29
  attr_reader :scanner_source
30
+ # A #RawImageDatasetThumbnail object that composes the thumbnail for the dataset.
31
+ attr_reader :thumbnail
31
32
 
32
33
  =begin rdoc
33
34
  * dir: The directory containing the files.
@@ -61,6 +62,8 @@ class RawImageDataset
61
62
  raise(IndexError, "No scanned file found") if @scanned_file.nil?
62
63
  @scanner_source = @raw_image_files.first.source
63
64
  raise(IndexError, "No scanner source found") if @scanner_source.nil?
65
+
66
+ $LOG ||= Logger.new(STDOUT)
64
67
  end
65
68
 
66
69
  =begin rdoc
@@ -102,8 +105,14 @@ at the visit level, or even higher when doing a whole file system scan.
102
105
 
103
106
  =begin rdoc
104
107
  Returns a hash of attributes used for insertion into active record.
108
+ Options: :thumb => FileHandle to thumbnail includes a thumbnail.
105
109
  =end
106
- def attributes_for_active_record
110
+ def attributes_for_active_record(options = {})
111
+ thumbnail = options.has_key?(:thumb) ? options[:thumb] : nil
112
+
113
+ unless (thumbnail.class == File || thumbnail == nil)
114
+ raise(IOError, "Thumbnail #{options[:thumb]} must be a #File.")
115
+ end
107
116
  { :rmr => @rmr_number,
108
117
  :series_description => @series_description,
109
118
  :path => @directory,
@@ -112,7 +121,20 @@ Returns a hash of attributes used for insertion into active record.
112
121
  :rep_time => @raw_image_files.first.rep_time,
113
122
  :bold_reps => @raw_image_files.first.bold_reps,
114
123
  :slices_per_volume => @raw_image_files.first.num_slices,
115
- :scanned_file => @scanned_file }
124
+ :scanned_file => @scanned_file,
125
+ :thumbnail => thumbnail
126
+ }
127
+ end
128
+
129
+ def create_thumbnail
130
+ @thumbnail = RawImageDatasetThumbnail.new(self)
131
+ @thumbnail.create_thumbnail
132
+ end
133
+
134
+ def thumbnail_for_active_record
135
+ # Ensure a thumbnail has been created.
136
+ create_thumbnail unless @thumbnail
137
+ return File.open(@thumbnail.path)
116
138
  end
117
139
 
118
140
  =begin rdoc
@@ -170,11 +192,16 @@ have more component files than shell commands can handle.
170
192
  return 'I.*'
171
193
  when /^I/
172
194
  return 'I*.dcm'
195
+ when /.*\.\d{3,4}/
196
+ return '*.[0-9]*'
173
197
  when /\.0/
174
198
  return '*.0*'
175
199
  else
176
200
  return nil
177
201
  end
202
+ # Note - To exclude just yaml files we could also just use the bash glob
203
+ # '!(*.yaml), but we would have to list all exclusions. This may turn
204
+ # out easier in the long run.
178
205
  end
179
206
 
180
207
 
@@ -0,0 +1,95 @@
1
+ require 'dicom'
2
+ require 'rmagick'
3
+ require 'tmpdir'
4
+
5
+ # This class is a ruby object encapsulating a .png 2D Thumbnail of a Dataset
6
+ class RawImageDatasetThumbnail
7
+
8
+ attr_reader :dataset, :path
9
+
10
+ def initialize(dataset)
11
+ if dataset.class == RawImageDataset
12
+ @dataset = dataset
13
+ else
14
+ raise StandardError, "Dataset #{dataset} class must be RawImageDataset."
15
+ end
16
+ end
17
+
18
+ def thumbnail
19
+ @path ||= create_thumbnail
20
+ end
21
+
22
+ # Returns the path of png and sets the instance variable 'path' after successfull creation.
23
+ # Raises a ScriptError if the thumbnail could not be created.
24
+ # Raises a StandardError if the format is incorrect (i.e. P-file instead of DICOM)
25
+ def create_thumbnail(output = nil)
26
+ raise StandardError, "Thumbnail available only for DICOM format." unless dataset.raw_image_files.first.dicom?
27
+ if output
28
+ if File.directory?(output)
29
+ output_directory = output.escape_filename
30
+ else
31
+ output_directory = File.dirname(output).escape_filename
32
+ png_filename = File.basename(output).escape_filename
33
+ end
34
+ else
35
+ output_directory = Dir.mktmpdir
36
+ end
37
+ name = @dataset.series_description.escape_filename
38
+ png_filename ||= File.join(output_directory, name + '.png')
39
+ nifti_filename ||= File.join(output_directory, name + '.nii')
40
+
41
+ begin
42
+ @path = create_thumbnail_with_rubydicom(png_filename)
43
+ rescue RangeError, ScriptError => e
44
+ puts "Could not create thumbnail with rubydicom. Trying FSL slicer."
45
+ @path = create_thumbnail_with_fsl_slicer(output_directory, nifti_filename, png_filename)
46
+ end
47
+
48
+ return @path
49
+ end
50
+
51
+ private
52
+
53
+ def create_thumbnail_with_rubydicom(output_file = nil)
54
+ unless output_file && File.writable?(File.dirname(output_file))
55
+ output_file = File.join(Dir.mktmpdir, dataset.series_description.escape_filename + '.jpg')
56
+ end
57
+
58
+ dicom_files = Dir.glob(File.join(dataset.directory, dataset.glob))
59
+ if dicom_files.empty? # Try the glob again with a zipped extension.
60
+ dicom_files = Dir.glob(File.join(dataset.directory, dataset.glob) + '*.bz2')
61
+ end
62
+ if dicom_files.empty? # If still empty...
63
+ raise StandardError, "Could not find dicom files using #{dataset.glob} in #{dataset.directory}"
64
+ end
65
+ dicom_file = Pathname(dicom_files[dicom_files.size/2])
66
+ dicom_file.local_copy do |lc|
67
+ dcm = DICOM::DObject.new(lc.to_s)
68
+ raise ScriptError, "Could not read dicom #{dicom_file.to_s}" unless dcm.read_success
69
+ image = dcm.get_image_magick(:rescale => true)
70
+ raise ScriptError, "RubyDicom did not return an image array (this is probably a color image)." unless image
71
+ image[0].write(output_file)
72
+ end
73
+
74
+ return output_file
75
+ end
76
+
77
+ def create_thumbnail_with_fsl_slicer(output_directory, nifti_filename, png_filename)
78
+ nii_path = File.join(output_directory, nifti_filename)
79
+ @path = File.join(output_directory, png_filename)
80
+ Pathname.new(dataset.directory).all_dicoms do |dicom_files|
81
+ # First Create a Nifti File to read
82
+ @dataset.to_nifti!(output_directory, nifti_filename, {:input_directory => File.dirname(dicom_files.first)} )
83
+ end
84
+
85
+
86
+
87
+ # Then create the .png
88
+ `slicer #{nii_path} -a #{@path}`
89
+
90
+ raise(ScriptError, "Error creating thumbnail #{@path}") unless File.exist?(@path)
91
+
92
+ return @path
93
+ end
94
+
95
+ end
@@ -57,6 +57,8 @@ class RawImageFile
57
57
  attr_reader :rep_time
58
58
  # Number of bold reps in the complete functional task run.
59
59
  attr_reader :bold_reps
60
+ # Import Warnings - Fields that could not be read.
61
+ attr_reader :warnings
60
62
 
61
63
  =begin rdoc
62
64
  Creates a new instance of the class given a path to a valid image file.
@@ -73,6 +75,7 @@ temporary file.
73
75
  absfilepath = File.expand_path(pathtofile)
74
76
  raise(IOError, "File not found at #{absfilepath}.") if not File.exists?(absfilepath)
75
77
  @filename = File.basename(absfilepath)
78
+ @warnings = []
76
79
 
77
80
  # try to read the header, raise an IOError if unsuccessful
78
81
  begin
@@ -384,7 +387,7 @@ utility.
384
387
  if tag_hash[:required]
385
388
  raise ScriptError, "#{name}"
386
389
  else
387
- puts "+++ Warning: #{name} could not be found."
390
+ @warnings << "Tag #{name} could not be found."
388
391
  end
389
392
  end
390
393
  end
@@ -4,11 +4,10 @@ require 'tempfile'
4
4
  require 'yaml'
5
5
  require 'tmpdir'
6
6
  require 'fileutils'
7
- require 'raw_image_file'
8
- require 'raw_image_dataset'
9
7
  require 'sqlite3'
10
8
  require 'logger'
11
-
9
+ require 'metamri/raw_image_file'
10
+ require 'metamri/raw_image_dataset'
12
11
 
13
12
  # A shared function that displays a message and the date/time to standard output.
14
13
  def flash(msg)
@@ -171,7 +170,7 @@ Returns an array of the created nifti files.
171
170
  nifti_input_path = File.dirname(dicom_files.first)
172
171
  nifti_conversion_command, nifti_output_file = dataset.to_nifti!(nifti_output_path, nifti_filename, :input_directory => nifti_input_path, :append_modality_directory => true)
173
172
  nifti_output_files << nifti_output_file
174
- end
173
+ end
175
174
  end
176
175
 
177
176
  return nifti_output_files
data/lib/metamri.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  $: << File.dirname(__FILE__)
2
2
 
3
- require 'raw_image_file'
4
- require 'raw_image_dataset'
5
- require 'visit_raw_data_directory'
6
3
  require 'metamri/core_additions'
4
+ require 'metamri/raw_image_file'
5
+ require 'metamri/raw_image_dataset'
6
+ require 'metamri/visit_raw_data_directory'
7
+ require 'metamri/raw_image_dataset_thumbnail'
7
8
  require 'metamri/raw_image_dataset_resource'
8
9
  require 'metamri/visit_raw_data_directory_resource'
9
10
 
data/metamri.gemspec CHANGED
@@ -5,14 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{metamri}
8
- s.version = "0.1.16"
8
+ s.version = "0.1.17"
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-04-23}
12
+ s.date = %q{2010-05-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
- s.executables = ["import_study.rb", "convert_visit.rb", "import_respiratory_files.rb", "import_visit.rb", "list_visit"]
15
+ s.executables = ["import_study.rb", "import_visit.rb", "import_respiratory_files.rb", "list_visit", "convert_visit.rb"]
16
16
  s.extra_rdoc_files = [
17
17
  "README.rdoc"
18
18
  ]
@@ -29,18 +29,20 @@ Gem::Specification.new do |s|
29
29
  "bin/list_visit",
30
30
  "lib/metamri.rb",
31
31
  "lib/metamri/core_additions.rb",
32
+ "lib/metamri/mysql_tools.rb",
33
+ "lib/metamri/nifti_builder.rb",
34
+ "lib/metamri/raw_image_dataset.rb",
32
35
  "lib/metamri/raw_image_dataset_resource.rb",
36
+ "lib/metamri/raw_image_dataset_thumbnail.rb",
37
+ "lib/metamri/raw_image_file.rb",
38
+ "lib/metamri/series_description_parameters.rb",
39
+ "lib/metamri/visit_raw_data_directory.rb",
33
40
  "lib/metamri/visit_raw_data_directory_resource.rb",
34
- "lib/mysql_tools.rb",
35
- "lib/nifti_builder.rb",
36
- "lib/raw_image_dataset.rb",
37
- "lib/raw_image_file.rb",
38
- "lib/series_description_parameters.rb",
39
- "lib/visit_raw_data_directory.rb",
40
41
  "metamri.gemspec",
41
42
  "test/fixtures/respiratory_fixtures.yaml",
42
43
  "test/nifti_builder_spec.rb",
43
44
  "test/raw_image_dataset_test.rb",
45
+ "test/raw_image_dataset_thumbnail_spec.rb",
44
46
  "test/raw_image_file_test.rb",
45
47
  "test/visit_duplication_test.rb",
46
48
  "test/visit_test.rb"
@@ -51,11 +53,12 @@ Gem::Specification.new do |s|
51
53
  s.rubygems_version = %q{1.3.6}
52
54
  s.summary = %q{MRI metadata}
53
55
  s.test_files = [
54
- "test/raw_image_dataset_test.rb",
56
+ "test/nifti_builder_spec.rb",
57
+ "test/raw_image_dataset_test.rb",
55
58
  "test/raw_image_file_test.rb",
56
59
  "test/visit_duplication_test.rb",
57
60
  "test/visit_test.rb",
58
- "test/nifti_builder_spec.rb"
61
+ "test/raw_image_dataset_thumbnail_spec.rb"
59
62
  ]
60
63
 
61
64
  if s.respond_to? :specification_version then
@@ -0,0 +1,77 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'spec'
4
+ require 'escoffier'
5
+ require 'tmpdir'
6
+ require 'raw_image_dataset'
7
+ require 'raw_image_file'
8
+ require 'metamri'
9
+ require 'metamri/raw_image_dataset_thumbnail'
10
+
11
+ describe "Create a thumbnail png for display." do
12
+ before(:all) do
13
+ # # Initialize a local scratch directory to hold fixtures for testing if it doesn't already exist.
14
+ # unless File.directory?(VISIT_FIXTURE)
15
+ # FileUtils.mkdir_p(File.dirname(VISIT_FIXTURE))
16
+ # FileUtils.cp_r(VISIT_FIXTURE_SRC, VISIT_FIXTURE)
17
+ # end
18
+ # unless File.directory?(VISIT_FIXTURE_UNZIPPED)
19
+ # FileUtils.cp_r(VISIT_FIXTURE, VISIT_FIXTURE_UNZIPPED)
20
+ # `find #{VISIT_FIXTURE_UNZIPPED} -name '*.bz2' -exec bunzip2 {} \\;`
21
+ # end
22
+ @fixture_path = '/Data/vtrak1/raw/johnson.merit220.visit1/mrt00033_830_04232010/dicoms/s10_cubet2'
23
+ end
24
+
25
+ before(:each) do
26
+ tmpdir = Dir.mktmpdir
27
+ Pathname.new(@fixture_path).prep_mise_to(tmpdir)
28
+ @dataset_wd = File.join(tmpdir, File.basename(@fixture_path))
29
+ @ds = RawImageDataset.new(@dataset_wd, RawImageFile.new(File.join(@dataset_wd, 's10_cubet2.0001')))
30
+ end
31
+
32
+ it "should create a thumbnail in a tmpdir without a specified path." do
33
+ t = RawImageDatasetThumbnail.new(@ds)
34
+ t.create_thumbnail
35
+
36
+ File.basename(t.path).should == 'Sag-CUBE-T2.png'
37
+ File.exist?(t.path).should be_true
38
+ end
39
+
40
+ it "should create a thumbnail with a specified path." do
41
+ output_filename = "/tmp/#{@ds.series_description.escape_filename}.png"
42
+ File.delete(output_filename) if File.exist?(output_filename)
43
+
44
+ t = RawImageDatasetThumbnail.new(@ds)
45
+ t.create_thumbnail('/tmp/')
46
+
47
+ t.path.should == output_filename
48
+ File.exist?(t.path).should be_true
49
+
50
+ end
51
+
52
+ it "should create a thumbnail with a specified path and filename." do
53
+ output_filename = "/tmp/test.png"
54
+ File.delete(output_filename) if File.exist?(output_filename)
55
+
56
+ t = RawImageDatasetThumbnail.new(@ds)
57
+ t.create_thumbnail(output_filename)
58
+
59
+ t.path.should == '/tmp/test.png'
60
+ File.exist?(t.path).should be_true
61
+ end
62
+
63
+ it "should raise a ScriptError if the file could not be created." do
64
+ t = RawImageDatasetThumbnail.new(@ds)
65
+
66
+ File.stub!(:exist?).and_return(false)
67
+ lambda { t.create_thumbnail }.should raise_error(ScriptError, /Error creating thumbnail/ )
68
+ end
69
+
70
+ after(:each) do
71
+ # @test_niftis.flatten.each { |nifti| File.delete(nifti) } unless @test_niftis.empty?
72
+ # [@output_directories, Dir.tmpdir, '/tmp'].flatten.each do |temp_dir|
73
+ # Dir.foreach(temp_dir) {|f| File.delete(File.join(temp_dir, f)) if File.extname(f) == '.nii'}
74
+ # end
75
+ end
76
+
77
+ end
data/test/visit_test.rb CHANGED
@@ -4,9 +4,9 @@
4
4
  $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
5
 
6
6
  require 'test/unit'
7
- require 'visit_raw_data_directory'
8
7
  require 'pathname'
9
8
  require 'logger'
9
+ require 'metamri'
10
10
 
11
11
  class RawImageFileTest < Test::Unit::TestCase
12
12
  DBFILE = '/Users/kris/projects/TransferScans/db/development.sqlite3'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 16
9
- version: 0.1.16
8
+ - 17
9
+ version: 0.1.17
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kristopher J. Kosmatka
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-23 00:00:00 -05:00
17
+ date: 2010-05-07 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -45,10 +45,10 @@ description: Extraction of MRI metadata and insertion into compatible sqlite3 da
45
45
  email: kk4@medicine.wisc.edu
46
46
  executables:
47
47
  - import_study.rb
48
- - convert_visit.rb
49
- - import_respiratory_files.rb
50
48
  - import_visit.rb
49
+ - import_respiratory_files.rb
51
50
  - list_visit
51
+ - convert_visit.rb
52
52
  extensions: []
53
53
 
54
54
  extra_rdoc_files:
@@ -66,18 +66,20 @@ files:
66
66
  - bin/list_visit
67
67
  - lib/metamri.rb
68
68
  - lib/metamri/core_additions.rb
69
+ - lib/metamri/mysql_tools.rb
70
+ - lib/metamri/nifti_builder.rb
71
+ - lib/metamri/raw_image_dataset.rb
69
72
  - lib/metamri/raw_image_dataset_resource.rb
73
+ - lib/metamri/raw_image_dataset_thumbnail.rb
74
+ - lib/metamri/raw_image_file.rb
75
+ - lib/metamri/series_description_parameters.rb
76
+ - lib/metamri/visit_raw_data_directory.rb
70
77
  - lib/metamri/visit_raw_data_directory_resource.rb
71
- - lib/mysql_tools.rb
72
- - lib/nifti_builder.rb
73
- - lib/raw_image_dataset.rb
74
- - lib/raw_image_file.rb
75
- - lib/series_description_parameters.rb
76
- - lib/visit_raw_data_directory.rb
77
78
  - metamri.gemspec
78
79
  - test/fixtures/respiratory_fixtures.yaml
79
80
  - test/nifti_builder_spec.rb
80
81
  - test/raw_image_dataset_test.rb
82
+ - test/raw_image_dataset_thumbnail_spec.rb
81
83
  - test/raw_image_file_test.rb
82
84
  - test/visit_duplication_test.rb
83
85
  - test/visit_test.rb
@@ -112,8 +114,9 @@ signing_key:
112
114
  specification_version: 3
113
115
  summary: MRI metadata
114
116
  test_files:
117
+ - test/nifti_builder_spec.rb
115
118
  - test/raw_image_dataset_test.rb
116
119
  - test/raw_image_file_test.rb
117
120
  - test/visit_duplication_test.rb
118
121
  - test/visit_test.rb
119
- - test/nifti_builder_spec.rb
122
+ - test/raw_image_dataset_thumbnail_spec.rb
File without changes