Skip to content

Instantly share code, notes, and snippets.

@cknoxrun
Created June 16, 2015 16:02
Show Gist options
  • Select an option

  • Save cknoxrun/53ae7e26035cc05891b5 to your computer and use it in GitHub Desktop.

Select an option

Save cknoxrun/53ae7e26035cc05891b5 to your computer and use it in GitHub Desktop.
require 'java'
require 'jchem_connection'
require 'lib/jchem/lib/jchem.jar'
java_package 'search.db'
java_import 'chemaxon.jchem.db.JChemSearch'
java_import 'chemaxon.sss.SearchConstants'
java_import 'chemaxon.sss.search.JChemSearchOptions'
java_import 'chemaxon.sss.search.options.HomologyTranslationOption'
module JchemSearcher
def self.search(query)
search_options = JChemSearchOptions.new(SearchConstants.SUPERSTRUCTURE)
search_options.set_absolute_stereo(SearchConstants.ABS_STEREO_ALWAYS_ON)
search_options.set_homology_broad_translation(HomologyTranslationOption.valueOf('ALL'))
search_options.set_mix_sgroup_matching(true)
jcs = JChemSearch.new
jcs.set_connection_handler(JchemConnection.instance.handler)
jcs.set_query_structure(query)
jcs.set_structure_table('C_PATTERNS')
jcs.set_search_options(search_options)
jcs.run
results = self.patterns(jcs.get_results.to_a)
Struct.new(:pattern_names, :search_errors).new(results, [])
end
private
def self.patterns(ids=[])
return [] if ids.blank?
sql = "SELECT C_NAME FROM C_PATTERNS WHERE cd_id IN (#{ids.join(',')})"
ps = JchemConnection.instance.handler.get_connection.prepare_statement(sql)
rs = ps.execute_query
names = []
while rs.next do
names << rs.get_string(1)
end
names.uniq
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment