Class: Ms::Ident::Pepxml
- Inherits:
-
Object
- Object
- Ms::Ident::Pepxml
- Defined in:
- lib/ms/ident/pepxml.rb,
lib/ms/ident/pepxml/parameters.rb,
lib/ms/ident/pepxml/search_hit.rb,
lib/ms/ident/pepxml/modifications.rb,
lib/ms/ident/pepxml/sample_enzyme.rb,
lib/ms/ident/pepxml/search_result.rb,
lib/ms/ident/pepxml/search_summary.rb,
lib/ms/ident/pepxml/spectrum_query.rb,
lib/ms/ident/pepxml/search_database.rb,
lib/ms/ident/pepxml/msms_run_summary.rb,
lib/ms/ident/pepxml/msms_pipeline_analysis.rb,
lib/ms/ident/pepxml/search_hit/modification_info.rb
Defined Under Namespace
Classes: AminoacidModification, EnzymaticSearchConstraint, MsmsPipelineAnalysis, MsmsRunSummary, Parameters, SampleEnzyme, SearchDatabase, SearchHit, SearchResult, SearchSummary, SpectrumQuery, TerminalModification
Constant Summary collapse
- XML_STYLESHEET_LOCATION =
'/tools/bin/TPP/tpp/schema/pepXML_std.xsl'
- DEFAULT_PEPXML_VERSION =
MsmsPipelineAnalysis::PEPXML_VERSION
- XML_ENCODING =
'UTF-8'
Instance Attribute Summary collapse
-
#msms_pipeline_analysis ⇒ Object
Returns the value of attribute msms_pipeline_analysis.
Class Method Summary collapse
-
.simple_search_hits(file) ⇒ Object
returns an array of Ms::Ident::Pepxml::SearchHit::Simple structs.
Instance Method Summary collapse
-
#add_stylesheet(doc, location) ⇒ Object
takes an xml document object and sets it with the xml stylesheet.
-
#initialize(&block) ⇒ Pepxml
constructor
yields a new Msms_Pipeline_Analysis object if given a block.
- #pepxml_version ⇒ Object
-
#spectrum_queries ⇒ Object
returns an array of spectrum queries.
-
#to_xml(opts = {}) ⇒ Object
if no options are given, an xml string is returned.
Constructor Details
#initialize(&block) ⇒ Pepxml
yields a new Msms_Pipeline_Analysis object if given a block
58 59 60 |
# File 'lib/ms/ident/pepxml.rb', line 58 def initialize(&block) block.call(@msms_pipeline_analysis=MsmsPipelineAnalysis.new) if block end |
Instance Attribute Details
#msms_pipeline_analysis ⇒ Object
Returns the value of attribute msms_pipeline_analysis.
25 26 27 |
# File 'lib/ms/ident/pepxml.rb', line 25 def msms_pipeline_analysis @msms_pipeline_analysis end |
Class Method Details
.simple_search_hits(file) ⇒ Object
returns an array of Ms::Ident::Pepxml::SearchHit::Simple structs
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ms/ident/pepxml.rb', line 28 def self.simple_search_hits(file) hit_values = File.open(file) do |io| doc = Nokogiri::XML.parse(io, nil, nil, Nokogiri::XML::ParseOptions::DEFAULT_XML | Nokogiri::XML::ParseOptions::NOBLANKS | Nokogiri::XML::ParseOptions::STRICT) # we can work with namespaces, or just remove them ... doc.remove_namespaces! root = doc.root search_hits = root.xpath('//search_hit') search_hits.each_with_index.map do |search_hit,i| aaseq = search_hit['peptide'] charge = search_hit.parent.parent['assumed_charge'].to_i search_score_nodes = search_hit.children.select {|node| node.name == 'search_score' } search_scores = {} search_score_nodes.each do |node| search_scores[node['name'].to_sym] = node['value'].to_f end Ms::Ident::Pepxml::SearchHit::Simple.new("hit_#{i}", Ms::Ident::Search.new(file.chomp(File.extname(file))), aaseq, charge, search_scores) end end end |
Instance Method Details
#add_stylesheet(doc, location) ⇒ Object
takes an xml document object and sets it with the xml stylesheet
63 64 65 66 67 |
# File 'lib/ms/ident/pepxml.rb', line 63 def add_stylesheet(doc, location) xml_stylesheet = Nokogiri::XML::ProcessingInstruction.new(doc, "xml-stylesheet", %Q{type="text/xsl" href="#{location}"}) doc.root.add_previous_sibling xml_stylesheet doc end |
#pepxml_version ⇒ Object
48 49 50 |
# File 'lib/ms/ident/pepxml.rb', line 48 def pepxml_version msms_pipeline_analysis.pepxml_version end |
#spectrum_queries ⇒ Object
returns an array of spectrum queries
53 54 55 |
# File 'lib/ms/ident/pepxml.rb', line 53 def spectrum_queries msms_pipeline_analysis.msms_run_summary.spectrum_queries end |
#to_xml(opts = {}) ⇒ Object
if no options are given, an xml string is returned. If either :outdir or :outfile is given, the xml is written to file and the output filename is returned. A single string argument will be interpreted as :outfile if it ends in ‘.xml’ and the :outdir otherwise. In this case, update_summary_xml is still true
options:
arg default
:outdir => nil write to disk using this outdir with summary_xml basename
:outfile => nil write to this filename (overrides outdir)
:update_summary_xml => true update summary_xml attribute to point to the output file true/false
set outdir to File.dirname(pepxml_obj.msms_pipeline_analysis.msms_run_summary.base_name) to write to the same directory as the input search file.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/ms/ident/pepxml.rb', line 84 def to_xml(opts={}) opts ||= {} if opts.is_a?(String) opts = ( opts.match(/\.xml$/) ? {:outfile => opts} : {:outdir => opts } ) end opt = {:update_summary_xml => true, :outdir => nil, :outfile => nil}.merge(opts) if opt[:outfile] outfile = opt[:outfile] elsif opt[:outdir] outfile = File.join(opt[:outdir], msms_pipeline_analysis.summary_xml.split(/[\/\\]/).last) end self.msms_pipeline_analysis.summary_xml = File.(outfile) if (opt[:update_summary_xml] && outfile) builder = Nokogiri::XML::Builder.new(:encoding => XML_ENCODING) msms_pipeline_analysis.to_xml(builder) add_stylesheet(builder.doc, Ms::Ident::Pepxml::XML_STYLESHEET_LOCATION) string = builder.doc.to_xml if outfile File.open(outfile,'w') {|out| out.print(string) } outfile else string end end |