Class: OpenTox::Algorithm::Fminer
- Inherits:
-
Object
- Object
- OpenTox::Algorithm::Fminer
- Includes:
- OpenTox::Algorithm
- Defined in:
- lib/algorithm.rb
Overview
Fminer algorithms (github.com/amaunz/fminer2)
Instance Attribute Summary collapse
-
#all_activities ⇒ Object
Returns the value of attribute all_activities.
-
#compounds ⇒ Object
Returns the value of attribute compounds.
-
#db_class_sizes ⇒ Object
Returns the value of attribute db_class_sizes.
-
#minfreq ⇒ Object
Returns the value of attribute minfreq.
-
#prediction_feature ⇒ Object
Returns the value of attribute prediction_feature.
-
#smi ⇒ Object
Returns the value of attribute smi.
-
#training_dataset ⇒ Object
Returns the value of attribute training_dataset.
Attributes included from OpenTox
Instance Method Summary collapse
- #add_fminer_data(fminer_instance, params, value_map) ⇒ Object
- #check_params(params, per_mil, subjectid = nil) ⇒ Object
Methods included from OpenTox::Algorithm
effect, gauss, get_pc_descriptors, isnull_or_singular?, load_ds_csv, min_frequency, numeric?, pc_descriptors, #run, sum_size, #to_rdfxml, zero_variance?
Methods included from OpenTox
#add_metadata, all, #delete, #initialize, #load_metadata, sign_in, text_to_html, #to_rdfxml
Instance Attribute Details
#all_activities ⇒ Object
Returns the value of attribute all_activities.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def all_activities @all_activities end |
#compounds ⇒ Object
Returns the value of attribute compounds.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def compounds @compounds end |
#db_class_sizes ⇒ Object
Returns the value of attribute db_class_sizes.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def db_class_sizes @db_class_sizes end |
#minfreq ⇒ Object
Returns the value of attribute minfreq.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def minfreq @minfreq end |
#prediction_feature ⇒ Object
Returns the value of attribute prediction_feature.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def prediction_feature @prediction_feature end |
#smi ⇒ Object
Returns the value of attribute smi.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def smi @smi end |
#training_dataset ⇒ Object
Returns the value of attribute training_dataset.
55 56 57 |
# File 'lib/algorithm.rb', line 55 def training_dataset @training_dataset end |
Instance Method Details
#add_fminer_data(fminer_instance, params, value_map) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/algorithm.rb', line 72 def add_fminer_data(fminer_instance, params, value_map) id = 1 # fminer start id is not 0 @training_dataset.data_entries.each do |compound,entry| begin smiles = OpenTox::Compound.smiles(compound.to_s) rescue LOGGER.warn "No resource for #{compound.to_s}" next end if smiles == '' or smiles.nil? LOGGER.warn "Cannot find smiles for #{compound.to_s}." next end value_map=params[:value_map] unless params[:value_map].nil? entry.each do |feature,values| if feature == @prediction_feature.uri values.each do |value| if value.nil? LOGGER.warn "No #{feature} activity for #{compound.to_s}." else if @prediction_feature.feature_type == "classification" activity= value_map.invert[value.to_s].to_i # activities are mapped to 1..n @db_class_sizes[activity-1].nil? ? @db_class_sizes[activity-1]=1 : @db_class_sizes[activity-1]+=1 # AM effect elsif @prediction_feature.feature_type == "regression" activity= value.to_f end begin fminer_instance.AddCompound(smiles,id) fminer_instance.AddActivity(activity, id) @all_activities[id]=activity # DV: insert global information @compounds[id] = compound @smi[id] = smiles id += 1 rescue Exception => e LOGGER.warn "Could not add " + smiles + "\t" + value.to_s + " to fminer" LOGGER.warn e.backtrace end end end end end end end |
#check_params(params, per_mil, subjectid = nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/algorithm.rb', line 57 def check_params(params,per_mil,subjectid=nil) raise OpenTox::NotFoundError.new "Please submit a dataset_uri." unless params[:dataset_uri] and !params[:dataset_uri].nil? raise OpenTox::NotFoundError.new "Please submit a prediction_feature." unless params[:prediction_feature] and !params[:prediction_feature].nil? @prediction_feature = OpenTox::Feature.find params[:prediction_feature], subjectid @training_dataset = OpenTox::Dataset.find "#{params[:dataset_uri]}", subjectid raise OpenTox::NotFoundError.new "No feature #{params[:prediction_feature]} in dataset #{params[:dataset_uri]}" unless @training_dataset.features and @training_dataset.features.include?(params[:prediction_feature]) unless params[:min_frequency].nil? @minfreq=params[:min_frequency].to_i raise "Minimum frequency must be a number >0!" unless @minfreq>0 else @minfreq=OpenTox::Algorithm.min_frequency(@training_dataset,per_mil) # AM sugg. 8-10 per mil for BBRC, 50 per mil for LAST end end |