Class: OpenTox::Parser::Table
- Inherits:
-
Object
- Object
- OpenTox::Parser::Table
- Defined in:
- lib/parser.rb
Instance Attribute Summary collapse
-
#compounds ⇒ Object
Returns the value of attribute compounds.
-
#data ⇒ Object
Returns the value of attribute data.
-
#features ⇒ Object
Returns the value of attribute features.
Instance Method Summary collapse
- #add_to_dataset(dataset) ⇒ Object
- #clean_features ⇒ Object
- #feature_types(feature) ⇒ Object
- #feature_values(feature) ⇒ Object
-
#initialize ⇒ Table
constructor
A new instance of Table.
Constructor Details
#initialize ⇒ Table
Returns a new instance of Table.
522 523 524 525 526 |
# File 'lib/parser.rb', line 522 def initialize @data = {} @activity_errors = [] @max_class_values = 3 end |
Instance Attribute Details
#compounds ⇒ Object
Returns the value of attribute compounds.
520 521 522 |
# File 'lib/parser.rb', line 520 def compounds @compounds end |
#data ⇒ Object
Returns the value of attribute data.
520 521 522 |
# File 'lib/parser.rb', line 520 def data @data end |
#features ⇒ Object
Returns the value of attribute features.
520 521 522 |
# File 'lib/parser.rb', line 520 def features @features end |
Instance Method Details
#add_to_dataset(dataset) ⇒ Object
567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 |
# File 'lib/parser.rb', line 567 def add_to_dataset(dataset) features.each do |feature_name| feature_uri = File.join(dataset.uri,"feature",URI.encode(feature_name)) dataset.add_feature(feature_uri,{DC.title => feature_name}) end @data.each do |compound,row| unless row.empty? row.each do |feature,value| if OpenTox::Algorithm::numeric?(value) value = value.to_f elsif value.nil? or value.empty? value = nil else value = value.to_s end feature_uri = File.join(dataset.uri,"feature",URI.encode(feature)) dataset.add(compound, feature_uri, value) #dataset.features[feature_uri][RDF.type] = feature_types(feature) #dataset.features[feature_uri][OT.acceptValue] = feature_values(feature) if feature_types(feature).include? OT.NumericFeature dataset.features[feature_uri][RDF.type] = [OT.NumericFeature] else dataset.features[feature_uri][RDF.type] = [OT.NominalFeature] dataset.features[feature_uri][OT.acceptValue] = feature_values(feature) end end end end end |
#clean_features ⇒ Object
540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 |
# File 'lib/parser.rb', line 540 def clean_features ignored_features = [] features.each do |feature| if feature_values(feature).size > @max_class_values if feature_types(feature).size == 1 and feature_types(feature).first == OT.NumericFeature # REGRESSION elsif feature_types(feature).include? OT.NumericFeature @data.each{|c,row| row[feature] = nil unless OpenTox::Algorithm::numeric?(row[feature]) } # delete nominal features @activity_errors << "Nominal feature values of #{feature} ignored (using numeric features for regression models)." else @activity_errors << "Feature #{feature} ignored (more than #{@max_class_values} nominal feature values and no numeric values)." ignored_features << feature next end elsif feature_values(feature).size <= 1 @activity_errors << "Feature #{feature} ignored (less than 2 feature values)." ignored_features << feature else # CLASSIFICATION end end ignored_features.each do |feature| @data.each{ |c,row| row.delete feature } end @activity_errors end |
#feature_types(feature) ⇒ Object
532 533 534 |
# File 'lib/parser.rb', line 532 def feature_types(feature) @data.collect{|c, row| feature_type(row[feature])}.uniq.compact end |
#feature_values(feature) ⇒ Object
528 529 530 |
# File 'lib/parser.rb', line 528 def feature_values(feature) @data.collect{|c, row| row[feature]}.uniq.compact end |