Class: MzIdentMLDoc

Inherits:
Object
  • Object
show all
Defined in:
lib/protk/mzidentml_doc.rb

Constant Summary collapse

MZID_NS_PREFIX =
"mzidentml"
MZID_NS =
'http://psidev.info/psi/pi/mzIdentML/1.1'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ MzIdentMLDoc

Returns a new instance of MzIdentMLDoc.



10
11
12
13
# File 'lib/protk/mzidentml_doc.rb', line 10

def initialize(path)
	parser=XML::Parser.file(path)
	@document=parser.parse
end

Class Method Details

.find(node, expression, root = false) ⇒ Object


Class Level Utility methods for searching from a given node




53
54
55
56
# File 'lib/protk/mzidentml_doc.rb', line 53

def self.find(node,expression,root=false)
	pp = root ? "//" : "./"
	node.find("#{pp}#{MZID_NS_PREFIX}:#{expression}","#{MZID_NS_PREFIX}:#{MZID_NS}")
end

.get_best_psm_for_peptide(peptide_node) ⇒ Object

<PeptideHypothesis peptideEvidence_ref=“PepEv_1”> <SpectrumIdentificationItemRef spectrumIdentificationItem_ref=“SII_1_1”/> </PeptideHypothesis>



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/protk/mzidentml_doc.rb', line 94

def self.get_best_psm_for_peptide(peptide_node)

	best_score=-1
	best_psm=nil
	self.find(peptide_node,"SpectrumIdentificationItemRef").each do |id_ref_node|  
		id_ref = id_ref_node.attributes['spectrumIdentificationItem_ref']
		psm_node = self.find(peptide_node,"SpectrumIdentificationItem[@id=\'#{id_ref}\']",true)[0]
		score = self.get_cvParam(psm_node,"MS:1002466")['value'].to_f
		if score>best_score
			best_psm=psm_node
			best_score=score
		end
	end
	best_psm
end

.get_cvParam(mzidnode, accession) ⇒ Object



59
60
61
# File 'lib/protk/mzidentml_doc.rb', line 59

def self.get_cvParam(mzidnode,accession)
	self.find(mzidnode,"cvParam[@accession=\'#{accession}\']")[0]
end

.get_dbsequence(mzidnode, accession) ⇒ Object



63
64
65
# File 'lib/protk/mzidentml_doc.rb', line 63

def self.get_dbsequence(mzidnode,accession)
	self.find(mzidnode,"DBSequence[@accession=\'#{accession}\']",true)[0]
end

.get_peptide_evidence_from_psm(psm_node) ⇒ Object



124
125
126
127
128
129
130
131
# File 'lib/protk/mzidentml_doc.rb', line 124

def self.get_peptide_evidence_from_psm(psm_node)
	pe_nodes = []
	self.find(psm_node,"PeptideEvidenceRef").each do |pe_node|
		ev_id=pe_node.attributes['peptideEvidence_ref']   
		pe_nodes << self.find(pe_node,"PeptideEvidence[@id=\'#{ev_id}\']",true)[0]
	end
	pe_nodes
end

.get_peptides_for_protein(protein_node) ⇒ Object

def self.get_sister_proteins(protein_node) self.find(protein_node.parent,“ProteinDetectionHypothesis”) end



87
88
89
# File 'lib/protk/mzidentml_doc.rb', line 87

def self.get_peptides_for_protein(protein_node)
	self.find(protein_node,"PeptideHypothesis")
end

.get_protein_probability(protein_node) ⇒ Object

As per PeptideShaker. Assume group probability used for protein if it is group rep otherwise 0



68
69
70
71
72
73
74
75
76
77
# File 'lib/protk/mzidentml_doc.rb', line 68

def self.get_protein_probability(protein_node)

	#MS:1002403
	is_group_representative=(self.get_cvParam(protein_node,"MS:1002403")!=nil)
	if is_group_representative
		return 	self.get_cvParam(protein_node.parent,"MS:1002470").attributes['value'].to_f*0.01
	else
		return 0
	end
end

.get_proteins_for_group(group_node) ⇒ Object



79
80
81
# File 'lib/protk/mzidentml_doc.rb', line 79

def self.get_proteins_for_group(group_node)
	self.find(group_node,"ProteinDetectionHypothesis")
end

.get_sequence_for_peptide(peptide_node) ⇒ Object



110
111
112
113
114
115
116
# File 'lib/protk/mzidentml_doc.rb', line 110

def self.get_sequence_for_peptide(peptide_node)
	evidence_ref = peptide_node.attributes['peptideEvidence_ref']
	pep_ref = peptide_node.find("//#{MZID_NS_PREFIX}:PeptideEvidence[@id=\'#{evidence_ref}\']","#{MZID_NS_PREFIX}:#{MZID_NS}")[0].attributes['peptide_ref']
	peptide=peptide_node.find("//#{MZID_NS_PREFIX}:Peptide[@id=\'#{pep_ref}\']","#{MZID_NS_PREFIX}:#{MZID_NS}")[0]
	# require 'byebug';byebug
	peptide.find("./#{MZID_NS_PREFIX}:PeptideSequence","#{MZID_NS_PREFIX}:#{MZID_NS}")[0].content
end

.get_sequence_for_psm(psm_node) ⇒ Object



118
119
120
121
122
# File 'lib/protk/mzidentml_doc.rb', line 118

def self.get_sequence_for_psm(psm_node)
	pep_ref = psm_node.attributes['peptide_ref']
	peptide=psm_node.find("//#{MZID_NS_PREFIX}:Peptide[@id=\'#{pep_ref}\']","#{MZID_NS_PREFIX}:#{MZID_NS}")[0]
	peptide.find("./#{MZID_NS_PREFIX}:PeptideSequence","#{MZID_NS_PREFIX}:#{MZID_NS}")[0].content
end

Instance Method Details

#peptide_evidenceObject



20
21
22
# File 'lib/protk/mzidentml_doc.rb', line 20

def peptide_evidence
	@document.find("//#{MZID_NS_PREFIX}:PeptideEvidence","#{MZID_NS_PREFIX}:#{MZID_NS}")
end

#peptidesObject

Peptides are referenced in many ways in mzidentml. We define a “Peptide” as a peptide supporting a particular protein Such peptides may encompass several PSM’s



41
42
43
# File 'lib/protk/mzidentml_doc.rb', line 41

def peptides
	@document.find("//#{MZID_NS_PREFIX}:PeptideHypothesis","#{MZID_NS_PREFIX}:#{MZID_NS}")
end

#protein_groupsObject



28
29
30
# File 'lib/protk/mzidentml_doc.rb', line 28

def protein_groups
	@document.find("//#{MZID_NS_PREFIX}:ProteinAmbiguityGroup","#{MZID_NS_PREFIX}:#{MZID_NS}")
end

#proteinsObject



33
34
35
# File 'lib/protk/mzidentml_doc.rb', line 33

def proteins
	@document.find("//#{MZID_NS_PREFIX}:ProteinDetectionHypothesis","#{MZID_NS_PREFIX}:#{MZID_NS}")
end

#psmsObject



24
25
26
# File 'lib/protk/mzidentml_doc.rb', line 24

def psms
	@document.find("//#{MZID_NS_PREFIX}:SpectrumIdentificationItem","#{MZID_NS_PREFIX}:#{MZID_NS}")
end

#spectrum_queriesObject



16
17
18
# File 'lib/protk/mzidentml_doc.rb', line 16

def spectrum_queries
	@document.find("//#{MZID_NS_PREFIX}:SpectrumIdentificationResult","#{MZID_NS_PREFIX}:#{MZID_NS}")
end