diff options
author | Andreas Maunz <andreas@maunz.de> | 2012-04-04 16:33:12 +0200 |
---|---|---|
committer | Andreas Maunz <andreas@maunz.de> | 2012-04-04 16:33:12 +0200 |
commit | 29413fd89da76198292b89ffdbced8e971f714ae (patch) | |
tree | d0cf87ef3db4de6394914efcca296516f14ff8bd | |
parent | 79dae1e3d02f84db3f3bb3a9e5814c7c01634c37 (diff) |
Removed necessity to track names
-rw-r--r-- | lib/utils.rb | 50 |
1 files changed, 18 insertions, 32 deletions
diff --git a/lib/utils.rb b/lib/utils.rb index 0876513..3f5b95a 100644 --- a/lib/utils.rb +++ b/lib/utils.rb @@ -9,11 +9,12 @@ module OpenTox @ambit_descriptor_algorithm_uri = "http://apps.ideaconsult.net:8080/ambit2/algorithm/org.openscience.cdk.qsar.descriptors.molecular." @ambit_ds_service_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/" @ambit_mopac_model_uri = "http://apps.ideaconsult.net:8080/ambit2/model/69632" + @keysfile = File.join(ENV['HOME'], ".opentox", "config", "pc_descriptors.yaml") include OpenTox # Calculate physico-chemical descriptors. - # @param[Hash] required: :dataset_uri, :pc_type, :rjb, :task, :add_uri optional: :descriptor, :lib + # @param[Hash] required: :dataset_uri, :pc_type, :rjb, :task, :add_uri, optional: :descriptor, :lib # @return[String] dataset uri def self.pc_descriptors(params) @@ -31,23 +32,23 @@ module OpenTox # # # openbabel (via ruby bindings) if !params[:lib] || params[:lib].split(",").include?("openbabel") - ob_master, ob_ids, ob_names = get_ob_descriptors( { :compounds => compounds, :pc_type => params[:pc_type], :descriptor => params[:descriptor] } ) + ob_master, ob_ids = get_ob_descriptors( { :compounds => compounds, :pc_type => params[:pc_type], :descriptor => params[:descriptor] } ) params[:task].progress(task_weights["openbabel"]*100.floor) if params[:task] end # # # joelib (via rjb) if !params[:lib] || params[:lib].split(",").include?("joelib") - jl_master, jl_ids, jl_names = get_jl_descriptors( { :compounds => compounds, :rjb => params[:rjb], :pc_type => params[:pc_type], :descriptor => params[:descriptor] } ) + jl_master, jl_ids = get_jl_descriptors( { :compounds => compounds, :rjb => params[:rjb], :pc_type => params[:pc_type], :descriptor => params[:descriptor] } ) params[:task].progress(task_weights["joelib"]*100.floor) if params[:task] end # # # cdk (via REST) if !params[:lib] || params[:lib].split(",").include?("cdk") - ambit_result_uri, smiles_to_inchi, cdk_ids, cdk_names = get_cdk_descriptors( { :compounds => compounds, :pc_type => params[:pc_type], :task => params[:task], :step => task_weights["cdk"], :descriptor => params[:descriptor] } ) + ambit_result_uri, smiles_to_inchi, cdk_ids = get_cdk_descriptors( { :compounds => compounds, :pc_type => params[:pc_type], :task => params[:task], :step => task_weights["cdk"], :descriptor => params[:descriptor] } ) #LOGGER.debug "Ambit result uri for #{params.inspect}: '#{ambit_result_uri.to_yaml}'" - cdk_master, cdk_ids, ambit_ids, cdk_names = load_ds_csv(ambit_result_uri, smiles_to_inchi, cdk_ids, cdk_names) + cdk_master, cdk_ids, ambit_ids = load_ds_csv(ambit_result_uri, smiles_to_inchi, cdk_ids ) params[:task].progress(task_weights["cdk"]*100.floor) if params[:task] end @@ -89,15 +90,16 @@ module OpenTox ds = parser.load_csv(master.collect{|r| r.join(",")}.join("\n"),false,true) # # # add feature metadata + pc_descriptors = YAML::load_file(@keysfile) ambit_ids && ambit_ids.each_with_index { |id,idx| raise "Feature not found" if ! ds.features[File.join(ds.uri, "feature", id.to_s)] - ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.description => cdk_names[idx]}) + ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.description => pc_descriptors[cdk_ids[idx]][:name]}) ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.creator => @ambit_descriptor_algorithm_uri + cdk_ids[idx]}) ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{OT.hasSource => params[:dataset_uri]}) } ob_ids && ob_ids.each_with_index { |id,idx| raise "Feature not found" if ! ds.features[File.join(ds.uri, "feature", id.to_s)] - ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.description => ob_names[idx]}) + ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.description => pc_descriptors[id][:name]}) creator_uri = ds.uri.gsub(/\/dataset\/.*/, "/algorithm/pc") creator_uri += "/#{id}" if params[:add_uri] ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.creator => creator_uri}) @@ -105,7 +107,7 @@ module OpenTox } jl_ids && jl_ids.each_with_index { |id,idx| raise "Feature not found" if ! ds.features[File.join(ds.uri, "feature", id.to_s)] - ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.description => jl_names[idx]}) + ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.description => pc_descriptors[id][:name]}) creator_uri = ds.uri.gsub(/\/dataset\/.*/, "/algorithm/pc") creator_uri += "/#{id}" if params[:add_uri] ds.add_feature_metadata(File.join(ds.uri, "feature", id.to_s),{DC.creator => creator_uri}) @@ -128,16 +130,12 @@ module OpenTox master = nil begin - keysfile = File.join(ENV['HOME'], ".opentox", "config", "pc_descriptors.yaml") csvfile = Tempfile.open(['ob_descriptors-','.csv']) - pc_descriptors = YAML::load_file(keysfile) + pc_descriptors = YAML::load_file(@keysfile) ids = pc_descriptors.collect{ |id, info| id if info[:lib] == "openbabel" && params[:pc_type].split(",").include?(info[:pc_type]) && (!params[:descriptor] || id == params[:descriptor]) }.compact - names = ids.collect { |id| - pc_descriptors[id][:name] - }.compact if ids.length > 0 csvfile.puts((["SMILES"] + ids).join(",")) @@ -188,7 +186,7 @@ module OpenTox csvfile.close! end - [ master, ids, names ] + [ master, ids ] end @@ -204,16 +202,12 @@ module OpenTox # Load keys, enter CSV headers begin - keysfile = File.join(ENV['HOME'], ".opentox", "config", "pc_descriptors.yaml") csvfile = Tempfile.open(['jl_descriptors-','.csv']) - pc_descriptors = YAML::load_file(keysfile) + pc_descriptors = YAML::load_file(@keysfile) ids = pc_descriptors.collect{ |id, info| id if info[:lib] == "joelib" && params[:pc_type].split(",").include?(info[:pc_type]) && (!params[:descriptor] || id == params[:descriptor]) }.compact - names = ids.collect { |id| - pc_descriptors[id][:name] - }.compact if ids.length > 0 @@ -282,7 +276,7 @@ module OpenTox [ csvfile].each { |f| f.close! } end - [ master, ids, names ] + [ master, ids ] end @@ -301,8 +295,7 @@ module OpenTox # extract wanted descriptors from config file and parameters - keysfile = File.join(ENV['HOME'], ".opentox", "config", "pc_descriptors.yaml") - pc_descriptors = YAML::load_file(keysfile) + pc_descriptors = YAML::load_file(@keysfile) ids = pc_descriptors.collect { |id, info| "#{info[:pc_type]}:::#{id}" if info[:lib] == "cdk" && params[:pc_type].split(",").include?(info[:pc_type]) && (!params[:descriptor] || id == params[:descriptor]) @@ -312,10 +305,6 @@ module OpenTox ids.sort! ids.collect! { |id| id.split(":::").last } - names = ids.collect { |id| - pc_descriptors[id][:name] - }.compact - # create dataset at Ambit begin params[:compounds].each do |n| @@ -347,7 +336,6 @@ module OpenTox current_cat = "" ids.each_with_index do |id, i| old_cat = current_cat; current_cat = pc_descriptors[id][:pc_type] - LOGGER.debug "----- AM #{old_cat}" params[:task].progress(params[:task].metadata[OT.percentageCompleted] + task_weights[old_cat]) if params[:task] && params[:step] && old_cat != current_cat && old_cat != "" algorithm = Algorithm::Generic.new(@ambit_descriptor_algorithm_uri+id) result_uri = algorithm.run({:dataset_uri => ambit_ds_uri}) @@ -357,7 +345,7 @@ module OpenTox #LOGGER.debug "Ambit result: #{ambit_result_uri.join('')}" end - [ ambit_result_uri, smiles_to_inchi, ids, names ] + [ ambit_result_uri, smiles_to_inchi, ids ] end @@ -367,12 +355,11 @@ module OpenTox # @param[Hash] keys: SMILES, values: InChIs # @param[Array] field descriptions, one for each feature # @return[Array] CSV, array of field ids, array of field descriptions - def self.load_ds_csv(ambit_result_uri, smiles_to_inchi, single_ids, single_names) + def self.load_ds_csv(ambit_result_uri, smiles_to_inchi, single_ids) master=nil ids=[] ambit_ids=[] - names=[] if ambit_result_uri.size > 0 (1...ambit_result_uri.size).collect { |idx| @@ -390,7 +377,6 @@ module OpenTox nr_cols = (csv_data[0].size)-1 LOGGER.debug "Merging #{nr_cols} new columns" - names += Array.new(nr_cols, single_names[idx-2]) ids += Array.new(nr_cols, single_ids[idx-2]) master.each {|row| nr_cols.times { row.push(nil) } } # Adds empty columns to all rows csv_data.each do |row| @@ -417,7 +403,7 @@ module OpenTox #LOGGER.debug "-------- AM: Writing to dumpfile" #File.open("/tmp/test.csv", 'w') {|f| f.write( master.collect {|r| r.join(",")}.join("\n") ) } - [ master, ids, ambit_ids, names ] + [ master, ids, ambit_ids ] end |