diff options
Diffstat (limited to 'application.rb')
-rw-r--r-- | application.rb | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/application.rb b/application.rb index 0a3794a..0c19484 100644 --- a/application.rb +++ b/application.rb @@ -11,7 +11,8 @@ gem "opentox-ruby", "~> 1" require 'opentox-ruby' before do - @inchi = URI.unescape request.env['REQUEST_URI'].sub(/^\//,'').sub(/.*compound\//,'').sub(/\/smarts.*$/,'').sub(/\/image/,'') # hack to avoid sinatra's URI/CGI unescaping, splitting, ..." + @inchi = URI.unescape request.env['REQUEST_URI'].sub(/^\//,'').sub(/.*compound\//,'').sub(/\/smarts.*$/,'').sub(/\/image/,'').sub(/\?.*$/,'') # hack to avoid sinatra's URI/CGI unescaping, splitting, ..." + puts @inchi end # Display activating (red) and deactivating (green) substructures. Overlaps betwen activating and deactivating structures are marked in yellow. @@ -35,12 +36,7 @@ get %r{/(.+)/smarts/activating/(.*)/deactivating/(.*)$} do |inchi,activating,dea end end -# Get png image -# @return [image/png] Image data -get %r{/(.+)/image} do |inchi| # catches all remaining get requests - smiles = OpenTox::Compound.from_inchi(@inchi).to_smiles - content_type "image/png" - attachment "#{smiles}.png" +def png_from_smiles(smiles) begin Rjb.load(nil,["-Xmx64m"])# avoid JVM memory allocation problems Rjb::import('Structure').new(smiles,150).show @@ -49,6 +45,15 @@ get %r{/(.+)/image} do |inchi| # catches all remaining get requests end end +# Get png image +# @return [image/png] Image data +get %r{/(.+)/image} do |inchi| # catches all remaining get requests + smiles = OpenTox::Compound.from_inchi(@inchi).to_smiles + content_type "image/png" + attachment "#{smiles}.png" + png_from_smiles(smiles) +end + # Get compound representation # @param [optinal, HEADER] Accept one of `chemical/x-daylight-smiles, chemical/x-inchi, chemical/x-mdl-sdfile, chemical/x-mdl-molfile, text/plain, image/gif, image/png`, defaults to chemical/x-daylight-smiles # @example Get smiles @@ -76,7 +81,7 @@ get %r{/(.+)} do |inchi| # catches all remaining get requests OpenTox::Compound.from_inchi(@inchi).to_gif when "image/png" response['Content-Type'] = "image/png" - OpenTox::Compound.from_inchi(@inchi).to_png + png_from_smiles(OpenTox::Compound.from_inchi(@inchi).to_smiles) when "text/plain" response['Content-Type'] = "text/plain" uri = File.join @@cactus_uri,@inchi,"names" |