summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2012-02-08 14:15:30 +0100
committerAndreas Maunz <andreas@maunz.de>2012-02-08 14:15:30 +0100
commitc2d9390594a2008b6fec2ce724462badd458ae74 (patch)
tree64de3a858feafe9028f699fcd926000ae3e8c3e1
parent48a8728794bb8d42bab5d4f62e19d11b36bef48a (diff)
Adjusted rfe
-rw-r--r--feature_selection.rb19
1 files changed, 15 insertions, 4 deletions
diff --git a/feature_selection.rb b/feature_selection.rb
index c69a954..c5bc4fa 100644
--- a/feature_selection.rb
+++ b/feature_selection.rb
@@ -25,7 +25,9 @@ get "/feature_selection/rfe/?" do
RDF.type => [OT.Algorithm,OTA.PatternMiningSupervised],
OT.parameters => [
{ DC.description => "Dataset URI", OT.paramScope => "mandatory", DC.title => "dataset_uri" },
- { DC.description => "Feature Dataset URI", OT.paramScope => "mandatory", DC.title => "feature_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']
@@ -49,22 +51,31 @@ end
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|
- rfe=OpenTox::Algorithm::FeatureSelection.rfe( { :ds_csv_file => tf_ds, :fds_csv_file => tf_fds } )
- r_result_uri=OpenTox::Dataset.create_from_csv(r_result_file).uri
- File.unlink(r_result_file)
+ 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 } )
+ r_result_uri = OpenTox::Dataset.create_from_csv_file(r_result_file).uri
tf_ds.close!
tf_fds.close!
+ File.unlink(r_result_file)
+ File.unlink(tf_ds.path)
+ File.unlink(tf_fds.path)
r_result_uri
end
response['Content-Type'] = 'text/uri-list'