summaryrefslogtreecommitdiff
path: root/feature_selection.rb
diff options
context:
space:
mode:
Diffstat (limited to 'feature_selection.rb')
-rw-r--r--feature_selection.rb93
1 files changed, 0 insertions, 93 deletions
diff --git a/feature_selection.rb b/feature_selection.rb
deleted file mode 100644
index 556ccf8..0000000
--- a/feature_selection.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-# Get list of feature_selection algorithms
-#
-# @return [text/uri-list] URIs of feature_selection algorithms
-get '/feature_selection/?' do
- list = [ url_for('/feature_selection/rfe', :full) ].join("\n") + "\n"
- case request.env['HTTP_ACCEPT']
- when /text\/html/
- content_type "text/html"
- OpenTox.text_to_html list
- else
- content_type 'text/uri-list'
- list
- end
-end
-
-# Get RDF/XML representation of feature_selection rfe algorithm
-# @return [application/rdf+xml] OWL-DL representation of feature_selection rfe algorithm
-get "/feature_selection/rfe/?" do
- algorithm = OpenTox::Algorithm::Generic.new(url_for('/feature_selection/rfe',:full))
- algorithm.metadata = {
- DC.title => 'recursive feature elimination',
- DC.creator => "andreas@maunz.de, helma@in-silico.ch",
- DC.contributor => "vorgrimmlerdavid@gmx.de",
- BO.instanceOf => "http://opentox.org/ontology/ist-algorithms.owl#feature_selection_rfe",
- RDF.type => [OT.Algorithm,OTA.PatternMiningSupervised],
- OT.parameters => [
- { DC.description => "Dataset URI", OT.paramScope => "mandatory", DC.title => "dataset_uri" },
- { DC.description => "Prediction Feature URI", OT.paramScope => "mandatory", DC.title => "prediction_feature_uri" },
- { DC.description => "Feature Dataset URI", OT.paramScope => "mandatory", DC.title => "feature_dataset_uri" },
- { DC.description => "Delete Instances with missing values", OT.paramScope => "optional", DC.title => "del_missing" }
- ]
- }
- case request.env['HTTP_ACCEPT']
- when /text\/html/
- content_type "text/html"
- OpenTox.text_to_html algorithm.to_yaml
- when /application\/x-yaml/
- content_type "application/x-yaml"
- algorithm.to_yaml
- else
- response['Content-Type'] = 'application/rdf+xml'
- algorithm.to_rdfxml
- end
-end
-
-# Run rfe algorithm on dataset
-#
-# @param [String] dataset_uri URI of the training dataset
-# @param [String] feature_dataset_uri URI of the feature dataset
-# @return [text/uri-list] Task URI
-post '/feature_selection/rfe/?' do
-
- raise OpenTox::NotFoundError.new "Please submit a dataset_uri." unless params[:dataset_uri]
- raise OpenTox::NotFoundError.new "Please submit a prediction_feature_uri." unless params[:prediction_feature_uri]
- raise OpenTox::NotFoundError.new "Please submit a feature_dataset_uri." unless params[:feature_dataset_uri]
-
- ds_csv=OpenTox::RestClientWrapper.get( params[:dataset_uri], {:accept => "text/csv"} )
- tf_ds=Tempfile.open(['rfe_', '.csv'])
- tf_ds.puts(ds_csv)
- tf_ds.flush()
-
- prediction_feature = params[:prediction_feature_uri].split('/').last # get col name
-
- fds_csv=OpenTox::RestClientWrapper.get( params[:feature_dataset_uri], {:accept => "text/csv"})
- tf_fds=Tempfile.open(['rfe_', '.csv'])
- tf_fds.puts(fds_csv)
- tf_fds.flush()
-
- del_missing = params[:del_missing] == "true" ? true : false
-
- task = OpenTox::Task.create("Recursive Feature Elimination", url_for('/feature_selection',:full)) do |task|
- r_result_file = OpenTox::Algorithm::FeatureSelection.rfe( { :ds_csv_file => tf_ds.path, :prediction_feature => prediction_feature, :fds_csv_file => tf_fds.path, :del_missing => del_missing } )
-
- parser = OpenTox::Parser::Spreadsheets.new
- ds = OpenTox::Dataset.new
- ds.save
- parser.dataset = ds
- ds = parser.load_csv(File.open(r_result_file).read,false,true)
- ds.save
- r_result_uri = ds.uri
- #r_result_uri = OpenTox::Dataset.create_from_csv_file(r_result_file).uri
- begin
- tf_ds.close!; tf_fds.close!
- File.unlink(r_result_file)
- rescue
- end
- r_result_uri
- end
- response['Content-Type'] = 'text/uri-list'
- raise OpenTox::ServiceUnavailableError.newtask.uri+"\n" if task.status == "Cancelled"
- halt 202,task.uri.to_s+"\n"
-end
-