diff options
author | Andreas Maunz <andreas@maunz.de> | 2012-05-15 15:20:25 +0200 |
---|---|---|
committer | Andreas Maunz <andreas@maunz.de> | 2012-05-15 15:20:25 +0200 |
commit | d2397c0d6682989ff720bd0eb04be8b596d6b392 (patch) | |
tree | c5f5e0a0dbdbc8de60d0f9bd6e9fc92b91ef9ffe | |
parent | 3a790b762fafbfe1a3b92aa494355bc8ab6ca978 (diff) |
Fixed empty entries
-rw-r--r-- | lib/serializer.rb | 48 |
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 |