summaryrefslogtreecommitdiff
path: root/application.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2012-12-07 11:42:12 +0100
committerChristoph Helma <helma@in-silico.ch>2012-12-07 11:42:12 +0100
commit17e783b5d159f205f0de59c6c522f5de5b8c9a6e (patch)
tree0b9f3602770ec9388b109b8c83e832a61216878a /application.rb
parentc38f9f2e4c2dec4ef163c6c76d64f5dbf4974a5a (diff)
working version without proxy
Diffstat (limited to 'application.rb')
-rw-r--r--application.rb128
1 files changed, 36 insertions, 92 deletions
diff --git a/application.rb b/application.rb
index a3d46c3..68bb8d2 100644
--- a/application.rb
+++ b/application.rb
@@ -1,70 +1,36 @@
require "./pubchem.rb"
require 'rack/session/dalli'
+require "rack/cache"
module OpenTox
class Application < Service
set :static, true
set :root, File.dirname(__FILE__)
also_reload './pubchem.rb'
- #enable :sessions
- use Rack::Session::Dalli, :cache => Dalli::Client.new
@@pug_uri = "http://pubchem.ncbi.nlm.nih.gov/rest/pug/"
- helpers do
-
-=begin
- def pubchem_search url
- attempts = 0
- result = nil
- begin
- attempts += 1
- json = RestClient.get url, :timeout => 90000000
- result = JSON.parse json
- while result["Waiting"] do
- sleep 2
- listkey = result["Waiting"]["ListKey"]
- result = pubchem_search File.join(@pug_uri, "compound", "listkey", listkey, "cids", "JSON")
- end
- rescue
- if $!.message =~ /Timeout/i and attempts < 4
- sleep 2
- retry
- elsif $!.message =~ /Timeout/i and attempts >= 4
- File.open("timeouts","a+"){|f| f.puts url}
- puts url
- puts $!.message
- elsif $!.message.match /404/
- #not_found_error #TODO
- else
- puts url
- puts $!.message
- end
- end
- end
-=end
-
- def image_uri cid
- File.join @@pug_uri, "compound", "cid", cid, "PNG"#?record_type=3d&image_size=small"
- end
-
+ before do
+ #cache_control :public, :max_age => 3600
end
before '/cid/:cid/*' do
+ #cache_control :public, :max_age => 3600
session[:compound] = PubChemCompound.new params[:cid] unless session[:compound] and session[:compound].cid == params[:cid]
end
get '/?' do
+ #cache_control :public, :no_cache
haml :index
end
get '/cid/:cid/?' do
- session[:compound] = PubChemCompound.new params[:cid]
haml :compound
end
get '/search/?' do
- #begin
- cids = RestClientWrapper.get(File.join(@@pug_uri,"compound","name",URI.escape(params[:name]),"cids","TXT")).split("\n")
+ #cache_control :public, :no_cache
+ begin
+ cids = RestClient.get(File.join(@@pug_uri,"compound","name",CGI.escape(params[:name]),"cids","TXT")).split("\n")
if cids.size == 1
session[:compound] = PubChemCompound.new cids.first
haml :compound
@@ -72,96 +38,74 @@ module OpenTox
@compounds = cids.collect{|cid| PubChemCompound.new cid }
haml :select
end
- #rescue
- #haml :not_found
- #end
+ rescue
+ haml :not_found
+ end
end
get '/cid/:cid/targets/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].targets
- else
- @assays = PubChemCompound.new(params[:cid]).targets
- end
+ @assays = session[:compound].targets
haml :targets, :layout => false
end
get '/cid/:cid/nontargets/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].non_targets
- else
- @assays = PubChemCompound.new(params[:cid]).non_targets
- end
+ @assays = session[:compound].non_targets
haml :targets, :layout => false
end
get '/cid/:cid/other_active_assays/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].active_assays - session[:compound].targets
- else
- compound = PubChemCompound.new(params[:cid])
- @assays = compound.active_assays - compound.targets
- end
+ @assays = session[:compound].active_assays - session[:compound].targets
haml :assays, :layout => false
end
get '/cid/:cid/other_inactive_assays/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].inactive_assays - session[:compound].non_targets
- else
- compound = PubChemCompound.new(params[:cid])
- @assays = compound.inactive_assays - compound.non_targets
- end
+ @assays = session[:compound].inactive_assays - session[:compound].non_targets
haml :assays, :layout => false
end
get '/cid/:cid/predicted_targets/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].predicted_targets
- else
- @assays = PubChemCompound.new(params[:cid]).predicted_targets
- end
+ @assays = session[:compound].predicted_targets
haml :predicted_targets, :layout => false
end
get '/cid/:cid/predicted_nontargets/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].predicted_non_targets
- else
- @assays = PubChemCompound.new(params[:cid]).predicted_non_targets
- end
+ @assays = session[:compound].predicted_non_targets
haml :predicted_targets, :layout => false
end
get '/cid/:cid/other_predicted_active_assays/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].predicted_active_assays - session[:compound].predicted_targets
- else
- compound = PubChemCompound.new(params[:cid])
- @assays = compound.predicted_active_assays - compound.predicted_targets
- end
+ @assays = session[:compound].predicted_active_assays - session[:compound].predicted_targets
haml :predicted_assays, :layout => false
end
get '/cid/:cid/other_predicted_inactive_assays/?' do
- if params[:cid] == session[:compound].cid
- @assays = session[:compound].predicted_inactive_assays - session[:compound].predicted_non_targets
- else
- compound = PubChemCompound.new(params[:cid])
- @assays = compound.predicted_inactive_assays - compound.predicted_non_targets
- end
- haml :assays, :layout => false
+ @assays = session[:compound].predicted_inactive_assays - session[:compound].predicted_non_targets
+ haml :predicted_assays, :layout => false
end
get '/cid/:cid/neighbors/?' do
haml :neighbors, :layout => false
end
-
get '/cid/:cid/cosine/:cid2/?' do
- session[:compound].cosine(PubChemCompound.new(params[:cid2])).to_s
+ session[:compound].cosine(PubChemCompound.new(params[:cid2])).round(3).to_s
end
+=begin
+ get '/aid/:aid/?' do
+ puts File.join(@@pug_uri, "assay", "aid", params[:aid].to_s, "description", "JSON")
+ json = RestClient.get File.join(@@pug_uri, "assay", "aid", params[:aid].to_s, "description", "JSON")
+ @description = JSON.parse(json)["PC_AssayContainer"][0]["assay"]["descr"]
+ haml :assay_description, :layout => false
+ end
+
+ get '/pubchem_proxy/*' do |path|
+ puts path.inspect
+ puts "http://pubchem.ncbi.nlm.nih.gov/rest/pug/#{path}"
+ RestClientWrapper.get "http://pubchem.ncbi.nlm.nih.gov/rest/pug/#{path}"
+ end
+=end
+
get '/fp/?' do
@fp = []
YAML.load_file("false_positives.yaml").each do |pred|