public void WritePSM(PeptideSpectralMatch psm, int hitRank = 1)
{
_writer.WriteStartElement("search_hit");
_writer.WriteAttributeString("hit_rank", hitRank.ToString());
_writer.WriteAttributeString("peptide", psm.Peptide.Sequence);
_writer.WriteAttributeString("peptide_prev_aa", (psm.Peptide.PreviousAminoAcid != null) ? psm.Peptide.PreviousAminoAcid.Letter.ToString() : "-");
_writer.WriteAttributeString("peptide_next_aa", (psm.Peptide.NextAminoAcid != null) ? psm.Peptide.NextAminoAcid.Letter.ToString() : "-");
double pepMonoMass = psm.Peptide.MonoisotopicMass;
double massDifference = spectrumNeutralMass - pepMonoMass;
_writer.WriteAttributeString("calc_neutral_pep_mass", pepMonoMass.ToString());
_writer.WriteAttributeString("massdiff", massDifference.ToString());
Protein protein = psm.Peptide.Parent as Protein;
if (protein != null)
{
_writer.WriteAttributeString("protein", protein.Description);
_writer.WriteAttributeString("protein_descr", protein.Description);
}
_writer.WriteAttributeString("num_tot_proteins", "1");
_writer.WriteAttributeString("is_rejected", "0");
_writer.WriteStartElement("search_score");
_writer.WriteAttributeString("name", Enum.GetName(typeof (PeptideSpectralMatchScoreType), psm.ScoreType));
_writer.WriteAttributeString("value", psm.Score.ToString());
_writer.WriteEndElement(); // search_score
_writer.WriteEndElement(); // search_hit
}