Class: OpenTox::Serializer::Spreadsheets
- Inherits:
-
Object
- Object
- OpenTox::Serializer::Spreadsheets
- Defined in:
- lib/serializer.rb
Overview
Serializer for spreadsheet formats
Instance Method Summary collapse
-
#initialize(dataset) ⇒ Spreadsheets
constructor
Create a new spreadsheet serializer.
-
#to_csv ⇒ String
Convert to CSV string.
-
#to_spreadsheet(sheetname = "sheet1") ⇒ Spreadsheet::Workbook
Convert to spreadsheet workbook.
Constructor Details
#initialize(dataset) ⇒ Spreadsheets
Create a new spreadsheet serializer
459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 |
# File 'lib/serializer.rb', line 459 def initialize(dataset) @rows = [] @rows << ["SMILES"] features = dataset.features.keys @rows.first << features @rows.first.flatten! dataset.data_entries.each do |compound,entries| cmpd = Compound.new(compound) smiles = cmpd.to_smiles inchi = URI.encode_www_form_component(cmpd.to_inchi) row_container = Array.new row = Array.new(@rows.first.size) row_container << row #row[0] = smiles row[0] = inchi entries.each do |feature, values| i = features.index(feature)+1 values.each do |value| if row_container[0][i] #LOGGER.debug "Feature '#{feature}' (nr '#{i}'): '#{value}'" row_container << row_container.last.collect row_container.last[i] = value #LOGGER.debug "RC: #{row_container.to_yaml}" else row_container.each { |r| r[i] = value } end end end row_container.each { |r| @rows << r } end end |
Instance Method Details
#to_csv ⇒ String
Convert to CSV string
493 494 495 496 497 498 |
# File 'lib/serializer.rb', line 493 def to_csv rows = @rows.collect result = "" result << rows.shift.collect { |f| f.split('/').last }.join(",") << "\n" # only feature name result << rows.collect{ |r| r.join(",") }.join("\n") end |
#to_spreadsheet(sheetname = "sheet1") ⇒ Spreadsheet::Workbook
Convert to spreadsheet workbook
502 503 504 505 506 507 508 509 510 511 512 513 514 515 |
# File 'lib/serializer.rb', line 502 def to_spreadsheet(sheetname="sheet1") Spreadsheet.client_encoding = 'UTF-8' book = Spreadsheet::Workbook.new sheet = book.create_worksheet(:name => "#{sheetname}") sheet.column(0).width = 100 i = 0 @rows.each do |row| row.each do |c| sheet.row(i).push c end i+=1 end book end |