Sha256: cf4f61220799a1051b8eb0277b969cc6a8f299a7e2a777ba97d5a73b41c2e904
Contents?: true
Size: 2 KB
Versions: 3
Compression:
Stored size: 2 KB
Contents
#!/usr/bin/env ruby require 'trollop' require 'rubabel' require 'rubabel/molecule/fragmentable' default_ph = 2.5 Fragment = Struct.new(:frag, :id, :title, :mz, :mass, :charge, :smiles, :pairing) parser = Trollop::Parser.new do banner "usage: #{File.basename($0)} [OPTIONS|RULES] <SMARTS> ..." text "\noptions:" opt :ph, "the pH to use (experimental option)", :default => default_ph opt :images, "print out svg images of fragments" opt :format, "format of the molecules", :default => 'smiles' #opt :uniq, "no repeated fragments", :default => false text "\nrules:" Rubabel::Molecule::Fragmentable::RULES.each do |rule| opt rule, rule.to_s.gsub("_",' ') end text "\nexample:" text "fragmenter.rb -xeh 'CCC(=O)OCCC' 'CCC(=O)OCCC(=O)O'" end options = parser.parse(ARGV) opts = {rules: []} opts[:uniq] = options.delete(:uniq) ph = options.delete(:ph) opts[:rules] = Rubabel::Molecule::Fragmentable::RULES.map do |rule| rule if options["#{rule}_given".to_sym] end.compact if ARGV.size == 0 parser.educate && exit end ARGV.each do |smiles| mol = Rubabel[smiles, options[:format].to_sym] puts "\nmolecule: #{mol.csmiles}" mol.correct_for_ph!(ph) puts "at ph #{ph}: #{mol.csmiles}" fragment_sets = mol.fragment(opts) puts %w(mz mass charge title smiles pairing).join("\t") frags = [] fragment_sets.each_with_index do |frag_set,i| frag_set.each_with_index do |frag,j| unless frag.charge == 0 mz = (frag.mass / frag.charge).round(5) end frag.title = "#{i}-#{j}pair_" + (mz ? "#{mz}_mz" : "#{frag.mass.round(3)}_Mass") frag_obj = Fragment.new(frag, frag.title, frag.title, mz, frag.exact_mass, frag.charge, frag.csmiles, i) frags << frag_obj end end frags = frags.sort_by {|frag| [-frag.charge, frag.mz] } if options[:images] frags.each do |frag| fn = "#{frag.title}.png" frag.frag.write(fn) end end frags.each do |frag| puts [:mz, :mass, :charge, :title, :smiles, :pairing].map {|cat| frag.send(cat) }.join("\t") end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rubabel-0.4.0 | bin/fragmenter.rb |
rubabel-0.3.0 | bin/fragmenter.rb |
rubabel-0.2.2 | bin/fragmenter.rb |