sqed 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d47942c64d4e9dfee4eefdb864de8b537aad0166
4
- data.tar.gz: e6a282b0b85f83615315c291bf2cbf66fe26b15c
3
+ metadata.gz: 047c0529db7c52677c9ece993cbfbb76aad0e475
4
+ data.tar.gz: d700a6fffb703f94bcb1b5e0c3250b16b9b65894
5
5
  SHA512:
6
- metadata.gz: e53e4bbc42260cd2723eaa4ef917a2f8b1c99b8947bb3af3675beeffcee07ad6567c753a601a38b82e0ae86d27e103bd6b06de06d8517d38394b228dc606c64b
7
- data.tar.gz: 861e69ad4e87e8e7261f3020f4d9aef5c1ce1a2bf3962dae1ac4eef898ac5ddf27f85d3a53c3a448e04bd401305be79c5a014a0f5f9b099ea9f8fb94b1f23261
6
+ metadata.gz: c45f312e2c5d42706104997a101b9aa5bcc25b37ddd774260b337e16d5426f17bf75614fd17b662c8444beecdd5c79e9d7520060b98a665f90a61f830aeec599
7
+ data.tar.gz: 0c14d57039134180aa3f9f85d80e24fe3d4863eb4a1e6116e2f6bfd08d4e18ad8d031f7de7d0cf3cd87625db2f4f7bb27edfc034cee1b1c0962c3ca64a67cf0b
@@ -4,6 +4,7 @@ recent_ruby = RUBY_VERSION >= '2.4.1'
4
4
  raise 'IMPORTANT: sqed gem requires ruby >= 2.4.1' unless recent_ruby
5
5
 
6
6
  require 'rmagick'
7
+ require 'sqed_utils'
7
8
 
8
9
  # Instances take the following
9
10
  # 1) An :image @image
@@ -119,8 +119,9 @@ class Sqed
119
119
  # @param scan
120
120
  # (:rows|:columns), :rows finds vertical borders, :columns finds horizontal borders
121
121
  #
122
+ #
123
+ # image: image, sample_subdivision_size: nil, sample_cutoff_factor: nil, scan: :rows, boundary_color: :green)
122
124
  def self.color_boundary_finder(**opts)
123
- # image: image, sample_subdivision_size: nil, sample_cutoff_factor: nil, scan: :rows, boundary_color: :green)
124
125
  image = opts[:image]
125
126
  sample_subdivision_size = opts[:sample_subdivision_size]
126
127
  sample_cutoff_factor = opts[:sample_cutoff_factor]
@@ -222,54 +223,6 @@ class Sqed
222
223
  [hit_ranges.first, hit_ranges[(hit_ranges.length / 2).to_i], hit_ranges.last]
223
224
  end
224
225
 
225
- # @return [Array]
226
- # like `[0,1,2]`
227
- # If median-min or max-median * width_factor are different from one another (by more than width_factor) then replace the larger wth the median +/- 1/2 the smaller
228
- # Given [10, 12, 20] and width_factor 2 the result will be [10, 12, 13]
229
- #
230
- def corrected_frequency(frequency_stats, width_factor = 3.0, max_width = nil)
231
- v0 = frequency_stats[0]
232
- m = frequency_stats[1]
233
- v2 = frequency_stats[2]
234
-
235
- width_pct = nil
236
-
237
- # If the width of the detected line is > 5 percent then
238
- # assume the center is good measure, and use an arbitrary percentage width.
239
- if !max_width.nil?
240
- width_pct = (v2 - v0).to_f / max_width.to_f
241
- end
242
-
243
- if !width_pct.nil? && width_pct >= 0.05
244
- half_width = max_width * 0.025
245
- z = [m - half_width, m, m + half_width]
246
- return z
247
- end
248
-
249
- # a = m - v0
250
- # b = v2 - m
251
-
252
- # largest = (a > b ? a : b)
253
-
254
- # c = a * width_factor
255
- # d = b * width_factor
256
-
257
- # if c > largest || d > largest
258
- # e = c > largest ? ((m - b) / 2).to_i : v0
259
- # f = d > largest ? ((m + a) / 2).to_i : v2
260
- # [e, m, f]
261
- # else
262
- # frequency_stats
263
- # end
264
-
265
- if a * width_factor > largest
266
- [(m - (v2 - m) / 2).to_i, m, v2]
267
- elsif b * width_factor > largest
268
- [v0, m, (m + (m - v0) / 2).to_i]
269
- else
270
- frequency_stats
271
- end
272
- end
273
226
 
274
227
  # Returns an Integer, the maximum of the pairwise differences of the values in the array
275
228
  # For example, given
@@ -30,7 +30,57 @@ class Sqed::BoundaryFinder::ColorLineFinder < Sqed::BoundaryFinder
30
30
  def find_bands
31
31
  case layout # boundaries.coordinates are referenced from stage image
32
32
 
33
- # No specs for this yet
33
+ # No specs for this yet
34
+ when :lep_stage
35
+ top_bottom_split = Sqed::BoundaryFinder.color_boundary_finder(image: image, scan: :columns, boundary_color: boundary_color) # detect vertical division [array]
36
+ left_right_split = Sqed::BoundaryFinder.color_boundary_finder(image: image, sample_subdivision_size: 2, boundary_color: boundary_color) # detect horizontal division [array]
37
+
38
+ boundaries.set(6, [0, top_bottom_split[2], left_right_split[0], image.rows - top_bottom_split[2]] )
39
+
40
+ left_top_image = image.crop( 0, 0, left_right_split[0], top_bottom_split[0], true)
41
+
42
+ left_top_split =
43
+ SqedUtils.corrected_frequency(
44
+ Sqed::BoundaryFinder.color_boundary_finder(image: left_top_image, boundary_color: boundary_color),
45
+ max_width: left_top_image.columns,
46
+ width_factor: 1.8
47
+ )
48
+
49
+ boundaries.set(0, [0, 0, left_top_split[1], top_bottom_split[0]] ) # keep as 1 for safety
50
+
51
+ boundaries.set(1, [left_top_split[2], 0, left_top_image.columns - left_top_split[2], top_bottom_split[0]] ) # <
52
+
53
+ boundaries.set(2, [left_right_split[2], 0, image.columns - left_right_split[0], top_bottom_split[0]] )
54
+
55
+ bottom_right_image = image.crop(left_right_split[2], top_bottom_split[2], image.columns - left_right_split[2], image.rows - top_bottom_split[2], true)
56
+
57
+ bottom_right_split =
58
+ SqedUtils.corrected_frequency(
59
+ Sqed::BoundaryFinder.color_boundary_finder(image: bottom_right_image, boundary_color: boundary_color, scan: :rows),
60
+ max_width: bottom_right_image.columns,
61
+ width_factor: 1.8
62
+ )
63
+
64
+ boundaries.set(3, [left_right_split[2] + bottom_right_split[2], top_bottom_split[2], image.columns - bottom_right_split[2], image.rows - top_bottom_split[2] ] )
65
+
66
+ bottom_right_left_image = image.crop(left_right_split[2], top_bottom_split[2], bottom_right_split[0], image.rows - top_bottom_split[2], true)
67
+
68
+ bottom_right_left_split =
69
+ SqedUtils.corrected_frequency(
70
+ Sqed::BoundaryFinder.color_boundary_finder(image: bottom_right_left_image, scan: :columns, boundary_color: boundary_color),
71
+ max_width: bottom_right_left_image.columns,
72
+ width_factor: 1.8
73
+ )
74
+
75
+ boundaries.set(4, [left_right_split[2], top_bottom_split[2], bottom_right_image.columns - bottom_right_left_image.columns, bottom_right_left_split[0] ] )
76
+
77
+ boundaries.set(5, [
78
+ left_right_split[2],
79
+ top_bottom_split[2] + bottom_right_left_split[2],
80
+ bottom_right_image.columns - bottom_right_left_image.columns,
81
+ bottom_right_left_image.rows - bottom_right_left_split[2]
82
+ ])
83
+
34
84
  when :seven_slot
35
85
  top_bottom_split = Sqed::BoundaryFinder.color_boundary_finder(image: image, scan: :columns, boundary_color: boundary_color) # detect vertical division [array]
36
86
  left_right_split = Sqed::BoundaryFinder.color_boundary_finder(image: image, sample_subdivision_size: 2, boundary_color: boundary_color) # detect horizontal division [array]
@@ -41,12 +91,19 @@ class Sqed::BoundaryFinder::ColorLineFinder < Sqed::BoundaryFinder
41
91
  right_top_image = image.crop( left_right_split[2], 0, image.columns - left_right_split[2], top_bottom_split[0] , true) # sections 1,2
42
92
  right_bottom_image = image.crop(left_right_split[2], top_bottom_split[2], image.columns - left_right_split[2], image.rows - top_bottom_split[2], true) # sections 3,4,5
43
93
 
44
- right_top_split = corrected_frequency(Sqed::BoundaryFinder.color_boundary_finder(image: right_top_image, boundary_color: boundary_color), 1.8, right_top_image.columns) # vertical line b/w 1 & 2, use "corrected_frequency" to account for color bleed from previous crop
94
+ right_top_split = ::SqedUtils.corrected_frequency(
95
+ Sqed::BoundaryFinder.color_boundary_finder(image: right_top_image, boundary_color: boundary_color),
96
+ width_factor: 1.8,
97
+ max_width: right_top_image.columns
98
+ ) # vertical line b/w 1 & 2, use "corrected_frequency" to account for color bleed from previous crop
45
99
 
46
100
  boundaries.set(1, [left_right_split[2], 0, right_top_split[0], top_bottom_split[0]] )
47
101
  boundaries.set(2, [left_right_split[2] + right_top_split[2], 0, right_top_image.columns - right_top_split[2], top_bottom_split[0]])
48
102
 
49
- right_bottom_split = corrected_frequency(Sqed::BoundaryFinder.color_boundary_finder(image: right_bottom_image, scan: :columns, sample_subdivision_size: 2, boundary_color: boundary_color), 1.8, right_bottom_image.rows) # horizontal line b/w (5,3) & 4, use "corrected_frequency" to account for color bleed from previous crop
103
+ right_bottom_split = SqedUtils.corrected_frequency(
104
+ Sqed::BoundaryFinder.color_boundary_finder(image: right_bottom_image, scan: :columns, sample_subdivision_size: 2, boundary_color: boundary_color),
105
+ width_factor: 1.8,
106
+ max_width: right_bottom_image.rows) # horizontal line b/w (5,3) & 4, use "corrected_frequency" to account for color bleed from previous crop
50
107
 
51
108
  bottom_right_top_image = right_bottom_image.crop(0,0, image.columns - left_right_split[2], right_bottom_split[0], true) # 3,5
52
109
 
@@ -1,3 +1,3 @@
1
1
  class Sqed
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  end
@@ -1,5 +1,7 @@
1
1
  # require 'zxing'
2
2
 
3
+ require_relative 'sqed_utils'
4
+
3
5
  require_relative 'sqed/parser'
4
6
  require_relative 'sqed/parser/ocr_parser'
5
7
  require_relative 'sqed/parser/barcode_parser'
@@ -62,6 +64,11 @@ module SqedConfig
62
64
  # 6 |--------
63
65
  # | 4
64
66
  #
67
+ # 0 | 1 | 2
68
+ # ------------
69
+ # | 5 | :lep_stage
70
+ # 6 |---- 3
71
+ # | 4 |
65
72
  #
66
73
  # Hash values are used to stub out
67
74
  # the Sqed::Boundaries instance.
@@ -74,7 +81,8 @@ module SqedConfig
74
81
  right_t: [0, 1, 2],
75
82
  left_t: [0, 1, 2],
76
83
  internal_box: [0],
77
- seven_slot: [0, 1, 2, 3, 4, 5, 6]
84
+ seven_slot: [0, 1, 2, 3, 4, 5, 6],
85
+ lep_stage: [0, 1, 2, 3, 4, 5, 6]
78
86
  }.freeze
79
87
 
80
88
  # Each element of the layout is a "section".
@@ -142,6 +150,12 @@ module SqedConfig
142
150
  boundary_finder: Sqed::BoundaryFinder::ColorLineFinder,
143
151
  layout: :seven_slot,
144
152
  metadata_map: { 0 => :collecting_event_labels, 1 => :determination_labels, 2 => :other_labels, 3 => :image_registration, 4 => :curator_metadata, 5 => :identifier, 6 => :specimen }
153
+ },
154
+
155
+ lep_stage: {
156
+ boundary_finder: Sqed::BoundaryFinder::ColorLineFinder,
157
+ layout: :lep_stage,
158
+ metadata_map: { 0 => :curator_metadata, 1 => :collecting_event_labels, 2 => :image_registration, 3 => :identifier, 4 => :other_labels, 5 => :determination_labels, 6 => :specimen }
145
159
  }
146
160
  }.freeze
147
161
 
@@ -0,0 +1,60 @@
1
+ require 'byebug'
2
+
3
+ # Functions that don't belong in Sqed proper
4
+ #
5
+ module SqedUtils
6
+
7
+
8
+ # @return [Array]
9
+ # like `[0,1,2]`
10
+ #
11
+ # @param frequency_stats [Array]
12
+ # like [1,2,3]
13
+ #
14
+ # @param max_width [Integer]
15
+ # required, the width of the image in question
16
+ #
17
+ # See tests. This code does a rough job of smoothing out boundaries that seem to
18
+ # be biased on one side or the other. Definitely could be refined to use a more
19
+ # weighted approach.
20
+ #
21
+ def self.corrected_frequency(frequency_stats, width_factor: 3.0, max_width: nil)
22
+
23
+ return frequency_stats if max_width.nil?
24
+
25
+ v0 = frequency_stats[0]
26
+ m = frequency_stats[1]
27
+ v2 = frequency_stats[2]
28
+
29
+ width_pct = (v2.to_f - v0.to_f) / max_width.to_f
30
+
31
+ return frequency_stats if (width_pct * 100) <= 2.0
32
+
33
+ a = (m - v0).abs
34
+ b = (v2 - m).abs
35
+
36
+ c = a * width_factor
37
+ d = b * width_factor
38
+
39
+ largest = (a > b ? a : b)
40
+
41
+ l = (m - b / 2)
42
+ l = 0 if l < 0
43
+
44
+ r = (m + a / 2)
45
+ r = max_width if r > max_width
46
+
47
+ x = a * width_factor
48
+ y = b * width_factor
49
+
50
+ [
51
+ x > largest ? l : v0,
52
+ m,
53
+ y > largest ? r : v2
54
+ ]
55
+
56
+ end
57
+
58
+
59
+
60
+ end
@@ -0,0 +1,42 @@
1
+ require 'sqed_utils'
2
+
3
+ describe SqedUtils do
4
+
5
+ context '.corrected_frequency' do
6
+
7
+ specify '[1,2,3]' do
8
+ expect(SqedUtils.corrected_frequency([1,2,3])).to eq([1,2,3] )
9
+ end
10
+
11
+ specify '[1,2,3], max_width: 100' do
12
+ expect(SqedUtils.corrected_frequency([1,2,3], max_width: 100)).to eq([1,2,3] )
13
+ end
14
+
15
+ specify '[90,100,1000], max_width: 2000' do
16
+ expect(SqedUtils.corrected_frequency([90,100,1000], max_width: 2000)).to eq([90, 100, 105] )
17
+ end
18
+
19
+ specify '[90,100,1000], max_width: 2000)' do
20
+ expect(SqedUtils.corrected_frequency([90,100,1000], max_width: 2000)).to eq([90, 100, 105] )
21
+ end
22
+
23
+ specify '[90,1000,1010], max_width: 2000)' do
24
+ expect(SqedUtils.corrected_frequency([90,1000,1010], max_width: 2000)).to eq([995, 1000, 1010] )
25
+ end
26
+
27
+ specify '[10, 12, 20], max_width: 2000' do
28
+ expect(SqedUtils.corrected_frequency([10, 12, 20], max_width: 2000)).to eq([10, 12, 20] )
29
+ end
30
+
31
+ specify '[10, 12, 20], max_width: 100)' do
32
+ expect(SqedUtils.corrected_frequency([10, 12, 20], max_width: 100)).to eq([10, 12, 13] )
33
+ end
34
+
35
+ specify '[10, 12, 20], max_width: 100, width_factor: 5)' do
36
+ expect(SqedUtils.corrected_frequency([1, 3, 10], max_width: 100, width_factor: 5)).to eq([0, 3, 4] )
37
+ end
38
+
39
+
40
+ end
41
+
42
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'handling lep stage images' do
4
+
5
+ let(:image) { ImageHelpers.lep_stage }
6
+ let(:sqed) do
7
+ Sqed.new(
8
+ image: image,
9
+ pattern: :lep_stage,
10
+ boundary_color: :red,
11
+ has_border: false )
12
+ end
13
+
14
+ let(:m) do
15
+ { 0 => :curator_metadata,
16
+ 1 => :collecting_event_labels,
17
+ 2 => :image_registration,
18
+ 3 => :identifier,
19
+ 4 => :other_labels,
20
+ 5 => :determination_labels,
21
+ 6 => :specimen
22
+ }
23
+ end
24
+
25
+ context 'parses' do
26
+ specify 'new() without errors' do
27
+ expect(sqed).to be_truthy
28
+ end
29
+
30
+ specify 'get result without errors' do
31
+ expect(sqed.result).to be_truthy
32
+ end
33
+ end
34
+
35
+ context 'trickier boundaries - without thumbnail' do
36
+ let(:s) { Sqed.new(image: ImageHelpers.lep_stage, use_thumbnail: false, pattern: :lep_stage, boundary_color: :red, has_border: false ) }
37
+
38
+ specify 'boundaries are reasonable' do
39
+ s.result
40
+ c = s.boundaries.coordinates
41
+ c.each do |section, values|
42
+ c[section].each_with_index do |v, i|
43
+ msg = "section #{section}, index #{i} has a bad value '#{v}'"
44
+ expect(v > -1).to be_truthy, msg
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ context 'trickier boundaries - with_thumbnail' do
51
+ let(:s) { Sqed.new(image: ImageHelpers.lep_stage, use_thumbnail: true, pattern: :lep_stage, boundary_color: :red, has_border: false ) }
52
+
53
+ specify 'boundaries are reasonable' do
54
+ s.result
55
+ c = s.boundaries.coordinates
56
+ c.each do |section, values|
57
+ c[section].each_with_index do |v, i|
58
+ msg = "section #{section}, index #{i} has a bad value '#{v}'"
59
+ expect(v > -1).to be_truthy, msg
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -35,6 +35,10 @@ module ImageHelpers
35
35
  get_image 'stage_images/inhs_7_slot.jpg'
36
36
  end
37
37
 
38
+ def lep_stage
39
+ get_image 'stage_images/lep_stage.jpg'
40
+ end
41
+
38
42
  def inhs_stage_7_slot2
39
43
  get_image 'stage_images/inhs_7_slot2.jpg'
40
44
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Sqed::VERSION
9
9
  spec.authors = ["Matt Yoder", "Rich Flood"]
10
10
  spec.email = ["diapriid@gmail.com"]
11
- spec.summary = %q{Specimens Quickly Extracted and Digitized, or just "squid". A ruby gem for image related specimen accessioning.}
11
+ spec.summary = %q{Specimens Quickly extracted and Digitized, or just "squid". A ruby gem for image based specimen accessioning.}
12
12
  spec.description = %q{A utility gem to aid in the processing of images taken in the process of digitizing natural history collections.}
13
13
  spec.homepage = "http://github.com/SpeciesFileGroup/sqed"
14
14
  spec.license = "NCSA"
@@ -18,17 +18,17 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency 'rake', '~> 12.0'
21
+ spec.add_dependency 'rake', '~> 12.3'
22
22
  spec.add_dependency 'rmagick', '~> 2.16'
23
- spec.add_dependency 'rtesseract', '~> 2.1.0'
23
+ spec.add_dependency 'rtesseract', '~> 2.2.0'
24
24
 
25
25
  # A qrcode reader, too many problems with compiling, dependencies
26
26
  # spec.add_dependency 'zxing_cpp', '~> 0.1.0'
27
27
 
28
- spec.add_development_dependency 'rspec', '~> 3.6'
28
+ spec.add_development_dependency 'rspec', '~> 3.8'
29
29
  spec.add_development_dependency 'bundler', '~> 1.5'
30
30
  # spec.add_development_dependency 'did_you_mean', '~> 0.9'
31
- spec.add_development_dependency 'byebug', '~> 9.0.6'
31
+ spec.add_development_dependency 'byebug', '~> 10.0.0'
32
32
  spec.add_development_dependency 'awesome_print', '~> 1.8'
33
33
  end
34
34
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Yoder
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-03-23 00:00:00.000000000 Z
12
+ date: 2018-09-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '12.0'
20
+ version: '12.3'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '12.0'
27
+ version: '12.3'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rmagick
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -45,28 +45,28 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 2.1.0
48
+ version: 2.2.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 2.1.0
55
+ version: 2.2.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '3.6'
62
+ version: '3.8'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '3.6'
69
+ version: '3.8'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: bundler
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 9.0.6
90
+ version: 10.0.0
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 9.0.6
97
+ version: 10.0.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: awesome_print
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -139,6 +139,7 @@ files:
139
139
  - lib/sqed/result.rb
140
140
  - lib/sqed/version.rb
141
141
  - lib/sqed_config.rb
142
+ - lib/sqed_utils.rb
142
143
  - spec/lib/sqed/boundaries_spec.rb
143
144
  - spec/lib/sqed/boundary_finder/color_line_finder_spec.rb
144
145
  - spec/lib/sqed/boundary_finder/cross_finder_spec.rb
@@ -150,6 +151,8 @@ files:
150
151
  - spec/lib/sqed/parser_spec.rb
151
152
  - spec/lib/sqed/result_spec.rb
152
153
  - spec/lib/sqed_spec.rb
154
+ - spec/lib/sqed_utils_spec.rb
155
+ - spec/lib/stage_handling/lep_stage_spec.rb
153
156
  - spec/lib/stage_handling/seven_slot_spec.rb
154
157
  - spec/spec_helper.rb
155
158
  - spec/support/files/barcode_images/code_128_barcode.png
@@ -175,6 +178,7 @@ files:
175
178
  - spec/support/files/stage_images/inhs_7_slot.jpg
176
179
  - spec/support/files/stage_images/inhs_7_slot2.jpg
177
180
  - spec/support/files/stage_images/inhs_four_thirds.jpg
181
+ - spec/support/files/stage_images/lep_stage.jpg
178
182
  - spec/support/files/test0.jpg
179
183
  - spec/support/files/test1.jpg
180
184
  - spec/support/files/test2.jpg
@@ -206,8 +210,8 @@ rubyforge_project:
206
210
  rubygems_version: 2.6.14
207
211
  signing_key:
208
212
  specification_version: 4
209
- summary: Specimens Quickly Extracted and Digitized, or just "squid". A ruby gem for
210
- image related specimen accessioning.
213
+ summary: Specimens Quickly extracted and Digitized, or just "squid". A ruby gem for
214
+ image based specimen accessioning.
211
215
  test_files:
212
216
  - spec/lib/sqed/boundaries_spec.rb
213
217
  - spec/lib/sqed/boundary_finder/color_line_finder_spec.rb
@@ -220,6 +224,8 @@ test_files:
220
224
  - spec/lib/sqed/parser_spec.rb
221
225
  - spec/lib/sqed/result_spec.rb
222
226
  - spec/lib/sqed_spec.rb
227
+ - spec/lib/sqed_utils_spec.rb
228
+ - spec/lib/stage_handling/lep_stage_spec.rb
223
229
  - spec/lib/stage_handling/seven_slot_spec.rb
224
230
  - spec/spec_helper.rb
225
231
  - spec/support/files/barcode_images/code_128_barcode.png
@@ -245,6 +251,7 @@ test_files:
245
251
  - spec/support/files/stage_images/inhs_7_slot.jpg
246
252
  - spec/support/files/stage_images/inhs_7_slot2.jpg
247
253
  - spec/support/files/stage_images/inhs_four_thirds.jpg
254
+ - spec/support/files/stage_images/lep_stage.jpg
248
255
  - spec/support/files/test0.jpg
249
256
  - spec/support/files/test1.jpg
250
257
  - spec/support/files/test2.jpg