Class: OpenTox::Serializer::Spreadsheets

Inherits:
Object
  • Object
show all
Defined in:
lib/serializer.rb

Overview

Serializer for spreadsheet formats

Instance Method Summary collapse

Constructor Details

#initialize(dataset) ⇒ Spreadsheets

Create a new spreadsheet serializer

Parameters:



453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
# File 'lib/serializer.rb', line 453

def initialize(dataset)
  @rows = []
  @rows << ["SMILES"]
  features = dataset.features.keys
  @rows.first << features
  @rows.first.flatten!
  dataset.data_entries.each do |compound,entries|
    smiles = Compound.new(compound).to_smiles
    row = Array.new(@rows.first.size)
    row[0] = smiles
    entries.each do |feature, values|
      i = features.index(feature)+1
      values.each do |value|
        if row[i] 
          row[i] = "#{row[i]} #{value}" # multiple values
        else
          row[i] = value 
        end
      end
    end
    @rows << row
  end
end

Instance Method Details

#to_csvString

Convert to CSV string

Returns:



479
480
481
# File 'lib/serializer.rb', line 479

def to_csv
  @rows.collect{|r| r.join(", ")}.join("\n")
end

#to_spreadsheetSpreadsheet::Workbook

Convert to spreadsheet workbook

Returns:

  • (Spreadsheet::Workbook)

    Workbook object (use the spreadsheet gemc to write a file)



485
486
487
488
489
490
491
492
493
494
495
496
497
498
# File 'lib/serializer.rb', line 485

def to_spreadsheet
  Spreadsheet.client_encoding = 'UTF-8'
  book = Spreadsheet::Workbook.new
  sheet = book.create_worksheet(:name => '')
  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