summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicha Rautenberg <rautenberg@in-silico.ch>2015-10-29 13:52:39 +0100
committerMicha Rautenberg <rautenberg@in-silico.ch>2015-10-29 13:52:39 +0100
commit65552bdcf26aafdc79ebd61c6ad919916a4b35a3 (patch)
tree836df17631132bbfd4a43328b18f7b02337b1d38
parent89425b508010a8309c8dc3200765f8eea2173886 (diff)
add descriptor calculation for single compound
-rw-r--r--application.rb16
1 files changed, 11 insertions, 5 deletions
diff --git a/application.rb b/application.rb
index 06aa8fe..b771b61 100644
--- a/application.rb
+++ b/application.rb
@@ -90,15 +90,21 @@ get "/algorithm/descriptor/?:descriptor?" do
end
post "/algorithm/descriptor/?" do
- bad_request_error "Missing Parameter " unless params[:file] or params[:descriptor]
+ bad_request_error "Missing Parameter " unless (params[:identifier] or params[:file]) and params[:descriptor]
descriptor = params['descriptor'].split(',')
- dataset = OpenTox::Dataset.from_csv_file params[:file][:tempfile]
- d = Algorithm::Descriptor.physchem dataset, descriptor
+ if params[:file]
+ data = OpenTox::Dataset.from_csv_file params[:file][:tempfile]
+ else
+ data = OpenTox::Compound.from_smiles params[:identifier]
+ end
+ d = Algorithm::Descriptor.physchem data, descriptor
+ csv = d.to_csv
+ csv = "SMILES,#{params[:descriptor]}\n#{params[:identifier]},#{csv}" if params[:identifier]
case @accept
when "application/csv"
- return d.to_csv
+ return csv
when "application/json"
- lines=CSV.parse(d.to_csv)
+ lines = CSV.parse(csv)
keys = lines.delete lines.first
data = lines.collect{|values|Hash[keys.zip(values)]}
return JSON.pretty_generate(data)