summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2012-05-15 15:20:25 +0200
committerAndreas Maunz <andreas@maunz.de>2012-05-15 15:20:25 +0200
commitd2397c0d6682989ff720bd0eb04be8b596d6b392 (patch)
treec5f5e0a0dbdbc8de60d0f9bd6e9fc92b91ef9ffe
parent3a790b762fafbfe1a3b92aa494355bc8ab6ca978 (diff)
Fixed empty entries
-rw-r--r--lib/serializer.rb48
1 files changed, 26 insertions, 22 deletions
diff --git a/lib/serializer.rb b/lib/serializer.rb
index 4c26329..a1b980d 100644
--- a/lib/serializer.rb
+++ b/lib/serializer.rb
@@ -483,13 +483,15 @@ module OpenTox
compound_sizes = {}
dataset.compounds.each do |compound|
entries=dataset.data_entries[compound]
- entries.each do |feature, values|
- compound_sizes[compound] || compound_sizes[compound] = []
- compound_sizes[compound] << values.size
+ if entries
+ entries.each do |feature, values|
+ compound_sizes[compound] || compound_sizes[compound] = []
+ compound_sizes[compound] << values.size
+ end
+ compound_sizes[compound].uniq!
+ raise "Inappropriate data for CSV export for compound #{compound}" if compound_sizes[compound].size > 1
+ compound_sizes[compound] = compound_sizes[compound][0] # integer instead of array
end
- compound_sizes[compound].uniq!
- raise "Inappropriate data for CSV export" if compound_sizes[compound].size > 1
- compound_sizes[compound] = compound_sizes[compound][0] # integer instead of array
end
# substructures: complete data entries with zeroes of appropriate duplicates
@@ -501,23 +503,25 @@ module OpenTox
dataset.compounds.each do |compound|
entries=dataset.data_entries[compound]
- cmpd = Compound.new(compound)
- inchi = URI.encode_www_form_component(cmpd.to_inchi)
-
- # allocate container
- row_container = Array.new(compound_sizes[compound])
- (0...row_container.size).each do |i|
- row_container[i] = Array.new(@rows.first.size)
- end
-
- entries.each { |feature, values|
- (0...compound_sizes[compound]).each { |i|
- j = features.index(feature)+1
- row_container[i][0] = inchi
- row_container[i][j] = values[i]
+ if entries
+ cmpd = Compound.new(compound)
+ inchi = URI.encode_www_form_component(cmpd.to_inchi)
+
+ # allocate container
+ row_container = Array.new(compound_sizes[compound])
+ (0...row_container.size).each do |i|
+ row_container[i] = Array.new(@rows.first.size)
+ end
+
+ entries.each { |feature, values|
+ (0...compound_sizes[compound]).each { |i|
+ j = features.index(feature)+1
+ row_container[i][0] = inchi
+ row_container[i][j] = values[i]
+ }
}
- }
- row_container.each { |r| @rows << r }
+ row_container.each { |r| @rows << r }
+ end
end
end