class OMSSAUtil

Public Class Methods

add_retention_times(mgf_file,pepxml_file,over_write=false,save=false) click to toggle source

Reads a pepxml file and modifies it to include retention time info. The modified xml doc is returned but not yet saved

# File lib/protk/omssa_util.rb, line 13
  def self.add_retention_times(mgf_file,pepxml_file,over_write=false,save=false)
    parser=XML::Parser.file(pepxml_file)
    pepxml_doc=parser.parse
    rt_table=MascotUtil.index_mgf_times(mgf_file)
    
 #   p "Retention time table #{rt_table}"
    
#    queries=pepxml_doc.find('//x:spectrum_query','x:http://regis-web.systemsbiology.net/pepXML')
    queries=pepxml_doc.find('//spectrum_query')    
    i=0
    queries.each do |query|

      atts=query.attributes
      spect=atts["spectrum"]
      spect.chop!.chop! # Remove charge ... presume it isn't greater than 9!
      
      throw "No spectrum found for spectrum_query #{query}" unless ( spect!=nil)
      throw "No retention time found for spectrum #{spect}. Most likely MALDI data was converted without specifying MALDI option." unless (rt_table[spect]!=nil)
      
      if ( queries[i].attributes["retention_time_sec"]!=nil )
        throw "A retention time value is already present" unless over_write
      end


      if ( queries[i].attributes["retention_time_sec"]==nil || over_write)
        queries[i].attributes["retention_time_sec"]=rt_table[spect]       
        p queries[i].attributes["retention_time_sec"] 
      end
      
      
      i=i+1
    end

    if ( save)
      pepxml_doc.save(pepxml_file)
    end

    return pepxml_doc
  end