cicada 0.9.0-java → 0.9.1-java
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/cicada/cicada_main.rb +3 -2
- data/lib/cicada/correction/correction.rb +71 -25
- data/lib/cicada/correction/position_corrector.rb +10 -12
- data/lib/cicada/version.rb +1 -1
- metadata +1 -1
data/lib/cicada/cicada_main.rb
CHANGED
@@ -293,7 +293,7 @@ module Cicada
|
|
293
293
|
y = fp.getPosition(ImageCoordinate::Y)
|
294
294
|
z = fp.getPosition(ImageCoordinate::Z)
|
295
295
|
|
296
|
-
ok = (range_x.include?(x) and range_y.include?(y) and range_z.include?(z))
|
296
|
+
ok = (range_x.include?(x) and range_y.include?(y) and (range_z.include?(z) or toCheck.getParent.getDimensionSizes[:z] == 1))
|
297
297
|
|
298
298
|
unless ok then
|
299
299
|
|
@@ -538,6 +538,7 @@ module Cicada
|
|
538
538
|
FileInteraction.write_position_data(image_objects, @parameters)
|
539
539
|
|
540
540
|
pc = PositionCorrector.new(@parameters)
|
541
|
+
pc.logger= @logger
|
541
542
|
|
542
543
|
c = pc.generate_correction(image_objects)
|
543
544
|
|
@@ -545,7 +546,7 @@ module Cicada
|
|
545
546
|
|
546
547
|
if @parameters[:determine_tre] and @parameters[:determine_correction] then
|
547
548
|
|
548
|
-
|
549
|
+
self.logger.info("calculating tre")
|
549
550
|
|
550
551
|
tre = pc.determine_tre(image_objects)
|
551
552
|
|
@@ -117,46 +117,69 @@ module Cicada
|
|
117
117
|
|
118
118
|
end
|
119
119
|
|
120
|
+
|
120
121
|
##
|
121
|
-
# Writes the correction to
|
122
|
-
#
|
123
|
-
# @return [String] the correction data encoded as XML
|
122
|
+
# Writes all the points used for correction to XML within a supplied correction
|
123
|
+
# XML element
|
124
124
|
#
|
125
|
-
|
126
|
-
|
127
|
-
|
125
|
+
# @param [REXML::Element] correction_element the XML element representing the correction
|
126
|
+
#
|
127
|
+
# @return [void]
|
128
|
+
#
|
129
|
+
def write_all_correction_point_xml(correction_element)
|
128
130
|
|
129
|
-
|
131
|
+
@distance_cutoffs.each_with_index do |e,i|
|
130
132
|
|
131
|
-
|
133
|
+
write_correction_point_xml(correction_element, i)
|
132
134
|
|
133
|
-
|
135
|
+
end
|
134
136
|
|
135
|
-
|
136
|
-
|
137
|
-
@distance_cutoffs.each_with_index do |e, i|
|
137
|
+
end
|
138
138
|
|
139
|
-
cp = ce.add_element XML_STRINGS[:correction_point_element]
|
140
139
|
|
141
|
-
|
142
|
-
|
143
|
-
|
140
|
+
##
|
141
|
+
# Writes a single point used for correction to XML within a supplied correction
|
142
|
+
# XML element
|
143
|
+
#
|
144
|
+
# @param [REXML::Element] correction_element the XML element representing the correction
|
145
|
+
# @param [Integer] i the index of the point to write
|
146
|
+
#
|
147
|
+
# @return [void]
|
148
|
+
#
|
149
|
+
def write_correction_point_xml(correction_element, i)
|
150
|
+
|
151
|
+
cp = correction_element.add_element XML_STRINGS[:correction_point_element]
|
152
|
+
|
153
|
+
cp.attributes[XML_STRINGS[:x_pos_attr]]= @positions_for_correction[i,0]
|
154
|
+
cp.attributes[XML_STRINGS[:y_pos_attr]]= @positions_for_correction[i,1]
|
155
|
+
cp.attributes[XML_STRINGS[:z_pos_attr]]= @positions_for_correction[i,2]
|
144
156
|
|
145
|
-
|
157
|
+
point_dims_to_corr = {XML_STRINGS[:x_param_element] => @correction_x,
|
158
|
+
XML_STRINGS[:y_param_element] => @correction_y,
|
159
|
+
XML_STRINGS[:z_param_element] => @correction_z}
|
146
160
|
|
147
|
-
xp.text = @correction_x[i].to_a.join(", ")
|
148
161
|
|
149
|
-
|
162
|
+
point_dims_to_corr.each do |dim_el, corr_txt|
|
150
163
|
|
151
|
-
|
164
|
+
p = cp.add_element dim_el
|
165
|
+
|
166
|
+
p.text = corr_txt[i].to_a.join(", ")
|
152
167
|
|
153
|
-
zp = cp.add_element XML_STRINGS[:z_param_element]
|
154
|
-
|
155
|
-
zp.text = @correction_z[i].to_a.join(", ")
|
156
|
-
|
157
168
|
end
|
158
169
|
|
159
|
-
|
170
|
+
end
|
171
|
+
|
172
|
+
##
|
173
|
+
# Writes the internal binary representation of the correction into
|
174
|
+
# an XML element.
|
175
|
+
#
|
176
|
+
# @param [REXML::Element] correction_element the XML element representing the correction
|
177
|
+
#
|
178
|
+
# @return [void]
|
179
|
+
#
|
180
|
+
def write_correction_binary_data_element(correction_element)
|
181
|
+
|
182
|
+
bd = correction_element.add_element XML_STRINGS[:binary_data_element]
|
160
183
|
|
161
184
|
bd.attributes[XML_STRINGS[:encoding_attr]]= XML_STRINGS[:encoding_name]
|
162
185
|
|
@@ -164,6 +187,29 @@ module Cicada
|
|
164
187
|
|
165
188
|
bd.text = bin_data
|
166
189
|
|
190
|
+
end
|
191
|
+
|
192
|
+
##
|
193
|
+
# Writes the correction to a string in XML format
|
194
|
+
#
|
195
|
+
# @return [String] the correction data encoded as XML
|
196
|
+
#
|
197
|
+
def write_to_xml
|
198
|
+
|
199
|
+
doc = REXML::Document.new
|
200
|
+
|
201
|
+
ce = doc.add_element XML_STRINGS[:correction_element]
|
202
|
+
|
203
|
+
ce.attributes[XML_STRINGS[:n_points_attr]] = @distance_cutoffs.size
|
204
|
+
|
205
|
+
ce.attributes[XML_STRINGS[:ref_channel_attr]] = @reference_channel
|
206
|
+
|
207
|
+
ce.attributes[XML_STRINGS[:corr_channel_attr]] = @correction_channel
|
208
|
+
|
209
|
+
write_all_correction_point_xml(ce)
|
210
|
+
|
211
|
+
write_correction_binary_data_element(ce)
|
212
|
+
|
167
213
|
doc_string = ""
|
168
214
|
|
169
215
|
doc.write doc_string, 2
|
@@ -29,6 +29,7 @@ require 'cicada/mutable_matrix'
|
|
29
29
|
require 'cicada/correction/correction'
|
30
30
|
|
31
31
|
require 'ostruct'
|
32
|
+
require 'logger'
|
32
33
|
|
33
34
|
require 'pqueue'
|
34
35
|
|
@@ -59,7 +60,7 @@ module Cicada
|
|
59
60
|
# for a 2d quadratic fit)
|
60
61
|
NUM_CORR_PARAM = 6
|
61
62
|
|
62
|
-
attr_accessor :parameters, :pixel_to_distance_conversions
|
63
|
+
attr_accessor :parameters, :pixel_to_distance_conversions, :logger
|
63
64
|
|
64
65
|
##
|
65
66
|
# Constructs a new position corrector with the specified parameters
|
@@ -69,6 +70,7 @@ module Cicada
|
|
69
70
|
def initialize(p)
|
70
71
|
@parameters = p
|
71
72
|
@pixel_to_distance_conversions = Vector[p[:pixelsize_nm].to_f, p[:pixelsize_nm].to_f, p[:z_sectionsize_nm].to_f]
|
73
|
+
@logger = Logger.new(STDOUT)
|
72
74
|
end
|
73
75
|
|
74
76
|
|
@@ -281,12 +283,10 @@ module Cicada
|
|
281
283
|
|
282
284
|
mean_corr_vec.map! { |e| e / corrected_vec_diffs.length }
|
283
285
|
|
284
|
-
#
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
puts "mean components corrected: [#{mean_corr_vec.join(', ')}]"
|
289
|
-
puts "mean distance corrected: #{Vector[*mean_corr_vec].norm}"
|
286
|
+
self.logger.info("mean components uncorrected: [#{mean_uncorr_vec.join(', ')}]")
|
287
|
+
self.logger.info("mean distance uncorrected: #{Vector[*mean_uncorr_vec].norm}")
|
288
|
+
self.logger.info("mean components corrected: [#{mean_corr_vec.join(', ')}]")
|
289
|
+
self.logger.info("mean distance corrected: #{Vector[*mean_corr_vec].norm}")
|
290
290
|
|
291
291
|
end
|
292
292
|
|
@@ -426,7 +426,7 @@ module Cicada
|
|
426
426
|
|
427
427
|
tq.submit do
|
428
428
|
|
429
|
-
|
429
|
+
self.logger.debug("Calculating TRE. Progress: #{ii} of #{objs.length}") if ii.modulo(10) == 0
|
430
430
|
|
431
431
|
temp_objs = objs.select { |e| e != obj }
|
432
432
|
|
@@ -486,10 +486,8 @@ module Cicada
|
|
486
486
|
|
487
487
|
tre_2d = Math.mean(tre_values) { |e| e.tre_xy }
|
488
488
|
|
489
|
-
#
|
490
|
-
|
491
|
-
puts "TRE: #{tre_3d}"
|
492
|
-
puts "X-Y TRE: #{tre_2d}"
|
489
|
+
self.logger.info("TRE: #{tre_3d}")
|
490
|
+
self.logger.info("X-Y TRE: #{tre_2d}")
|
493
491
|
|
494
492
|
tre_3d
|
495
493
|
|
data/lib/cicada/version.rb
CHANGED