diff options
author | Christoph Helma <helma@in-silico.de> | 2009-09-08 11:15:50 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.de> | 2009-09-08 11:15:50 +0200 |
commit | 525a9229395070f04c54fe6aec3c2cd5e64235cd (patch) | |
tree | d942bde22ccc03e66223b9e284354387f64e4dcb /application.rb | |
parent | 55d99f141275fc34019a621d1f0c444804ebc053 (diff) |
tests successful
Diffstat (limited to 'application.rb')
-rw-r--r-- | application.rb | 192 |
1 files changed, 24 insertions, 168 deletions
diff --git a/application.rb b/application.rb index b9f518d..2ebbbc8 100644 --- a/application.rb +++ b/application.rb @@ -1,5 +1,5 @@ # SETUP -[ 'rubygems', 'redis', 'opentox-ruby-api-wrapper', 'openbabel' ].each do |lib| +[ 'rubygems', 'redis', 'opentox-ruby-api-wrapper' ].each do |lib| require lib end @@ -15,8 +15,6 @@ end set :default_content, :yaml load File.join(File.dirname(__FILE__), 'dataset.rb') -load File.join(File.dirname(__FILE__), 'compound.rb') -load File.join(File.dirname(__FILE__), 'feature.rb') helpers do @@ -26,206 +24,64 @@ helpers do end def uri(name) - uri = url_for("/", :full) + URI.encode(name) #.gsub(/\s|\n/,'_') + uri = url_for("/dataset/", :full) + URI.encode(name) end end -=begin -# current sinatra version does not halt in before filter, should be resolved in future versions -before do - if params[:name] and !request.post? - halt 404, "Dataset \"#{params[:name]}\" not found." unless @dataset = Dataset.find(url_for("/", :full) + name.gsub(/\s|\n/,'_')) - end -end -=end - ## REST API -get '/?' do +load 'compound.rb' +load 'feature.rb' + +get '/datasets/?' do Dataset.find_all.join("\n") end -get '/*/tanimoto/*/?' do +get '/dataset/*/tanimoto/*/?' do find @set.tanimoto(uri(params[:splat][1])) end -get '/*/weighted_tanimoto/*/?' do +get '/dataset/*/weighted_tanimoto/*/?' do find @set.weighted_tanimoto(uri(params[:splat][1])) end # catch the rest -get '/*/?' do +get '/dataset/*/?' do find - @set.to_yaml + @set.members.join("\n") end -post '/?' do - +# create a dataset +post '/datasets/?' do dataset_uri = uri(params[:name]) halt 403, "Dataset \"#{dataset_uri}\" exists." if Dataset.find(dataset_uri) - @set = Dataset.create(dataset_uri) - @compounds_set = Dataset.create File.join(dataset_uri, "compounds") - #@activities_set = Dataset.create File.join(dataset_uri, "activities") - #@features_set = Dataset.create File.join(dataset_uri, "features") - @set.add(@compounds_set.uri) - #@set.add(@activities_set.uri) - #@set.add(@features_set.uri) - @set.uri - -end - -post '/*/activities/?' do - - find - @compounds_set = Dataset.find File.join(@set.uri, "compounds") - #@activities_set = Dataset.find File.join(@set.uri, "activities") - File.open(params[:file][:tempfile].path).each_line do |line| - record = line.chomp.split(/,\s*/) - inchi = Compound.new(:smiles => record[0]).inchi - feature = Feature.new(:name => @set.name, :values => {:classification => record[1]}) - @compound_activities = Dataset.find_or_create File.join(@set.uri, inchi) - #@activity_compounds = Dataset.find_or_create File.join(@set.uri, feature.path) - @compounds_set.add(inchi) - #@activities_set.add(feature.path) - @compound_activities.add(feature.path) - #@activity_compounds.add(inchi) - end + @set.add Dataset.create(File.join(dataset_uri, "compounds")).uri @set.uri - end -post '/*/features/?' do +load 'import.rb' +# import yaml +post '/dataset/*/?' do find @compounds_set = Dataset.find File.join(@set.uri, "compounds") - #@features_set = Dataset.find File.join(@set.uri, "features") - YAML.load(params[:features]).each do |inchi,features| - @compound_features = Dataset.find_or_create File.join(@set.uri, inchi) - features.each do |feature| - #@feature_compounds = Dataset.find_or_create File.join(@set.uri, feature) - @compounds_set.add(inchi) - #@features_set.add(feature) - @compound_features.add(feature) - #@feature_compounds.add(inchi) + YAML.load(params[:features]).each do |compound_uri,feature_uris| + # key: /dataset/:dataset/compound/:inchi/:feature_type + @compound_features = Dataset.find_or_create File.join(@set.uri,'compound',OpenTox::Compound.new(:uri => compound_uri).inchi,URI.escape(params[:feature_type])) + feature_uris.each do |feature_uri| + @compounds_set.add compound_uri + @compound_features.add feature_uri end end @set.uri - end -delete '/*/?' do +delete '/dataset/*/?' do find - @set.members.each{|m| Dataset.find(m).delete} + @set.members.each{|m| Dataset.find(m).delete} if @set.members @set.delete end - -put '/*/?' do - find - @set.add(params[:uri]) -end - -=begin -get '/:name' do - not_found? - respond_to do |format| - format.yaml { @dataset.to_yaml } - format.xml { builder :dataset } - end -end - -get '/:name/name' do - not_found? - URI.decode(params[:name]) -end - -get '/:name/compounds' do - not_found? - @dataset.compound_uris.join("\n") -end - -get '/:name/features' do - not_found? - @dataset.feature_uris.join("\n") -end - -get '/:name/compound/*/features' do - not_found? - compound_uri = params[:splat].first.gsub(/ /,'+') - @dataset.feature_uris_for_compound(compound_uri).join("\n") -end - -get '/:name/feature/*/compounds' do - not_found? - @dataset.compound_uris_for_feature(params[:splat].first).join("\n") -end - -get '/tanimoto/:name0/compound/*/:name1/compound/*/?' do - compound_uris = params[:splat].collect{ |c| c.gsub(/ /,'+') } - features = [ {:dataset_uri => uri(params[:name0]), :compound_uri => compound_uris[0]}, {:dataset_uri => uri(params[:name1]), :compound_uri => compound_uris[1]} ] - "#{Dataset.tanimoto(features)}" -end - -get '/weighted_tanimoto/:name0/compound/*/:name1/compound/*/?' do - compound_uris = params[:splat].collect{ |c| c.gsub(/ /,'+') } - features = [ {:dataset_uri => uri(params[:name0]), :compound_uri => compound_uris[0]}, {:dataset_uri => uri(params[:name1]), :compound_uri => compound_uris[1]} ] - Dataset.weighted_tanimoto(features) -end - -post '/?' do - #protected! - halt 403, "Dataset \"#{name}\" exists - please choose another name." if Dataset.exists?(uri params[:name]) - - dataset = Dataset.create(uri params[:name]) - - if params[:file] - File.open(params[:file][:tempfile].path).each_line do |line| - record = line.chomp.split(/,\s*/) - compound_uri = OpenTox::Compound.new(:smiles => record[0]).uri - feature_uri = OpenTox::Feature.new(:name => params[:name], :values => {:classification => record[1]}).uri - dataset.add(compound_uri, feature_uri) - end - end - dataset.uri -end - -put '/:name/?' do - #protected! - not_found? - @dataset.add(params[:compound_uri],params[:feature_uri]) - @dataset.uri + " sucessfully updated." -end - -delete '/:name/?' do - #protected! - not_found? - @dataset.destroy - "Successfully deleted dataset \"#{params[:name]}\"." -end - -# Dataset collections -get '/collections/?' do - DatasetCollection.find_all.join("\n") -end - -get '/collection/:name/?' do - @collection = DatasetCollection.find(uri params[:name]) - respond_to do |format| - format.yaml { @collection.to_yaml } - format.xml { builder :collection } - end -end - -post '/collections/?' do - halt 403, "Dataset collection \"#{name}\" exists - please choose another name." if DatasetCollection.exists?(uri params[:name]) - DatasetCollection.create(uri params[:name], :dataset_uris => params[:datasets]).uri -end - -delete '/collection/:name/?' do - DatasetCollection.find(uri params[:name]).destroy - "Successfully deleted dataset collection \"#{params[:name]}\"." -end -=end |