Exemplo n.º 1
0
        public List <IIdentifiedSpectrum> ReadFromFile(string fileName)
        {
            var result = new MascotPeptideTextFormat().ReadFromFile(fileName);

            FilterSpectra(result);

            UpdateModifications(result);

            foreach (var peptide in result)
            {
                peptide.Peptide.AssignProteins((peptide.Annotations[PROTEIN_KEY] as string).Split(';'));
                peptide.Annotations.Remove(PROTEIN_KEY);
                peptide.TheoreticalMass = peptide.ExperimentalMass;
            }

            var i = 0;

            while (i < result.Count - 1)
            {
                var ititle = result[i].Annotations[TITLE_KEY] as string;
                while (i < result.Count - 1)
                {
                    var jtitle = result[i + 1].Annotations[TITLE_KEY] as string;
                    if (!ititle.Equals(jtitle))
                    {
                        i++;
                        break;
                    }

                    for (int l = result[i + 1].Peptides.Count - 1; l >= 0; l--)
                    {
                        result[i].AddPeptide(result[i + 1].Peptides[l]);
                    }

                    result.RemoveAt(i + 1);
                }
            }

            foreach (var peptide in result)
            {
                var title = peptide.Annotations[TITLE_KEY] as string;
                peptide.Annotations.Remove(TITLE_KEY);

                var oldCharge = peptide.Query.FileScan.Charge;
                peptide.Query.FileScan = TitleParser.GetValue(title);

                peptide.Query.FileScan.Charge = oldCharge;
                if (string.IsNullOrEmpty(peptide.Query.FileScan.Experimental))
                {
                    peptide.Query.FileScan.Experimental = Path.GetFileNameWithoutExtension(fileName);
                }
                var rtstr = peptide.Annotations[RT_KEY] as string;
                if (!string.IsNullOrWhiteSpace(rtstr))
                {
                    peptide.Query.FileScan.RetentionTime = double.Parse(rtstr.StringBefore("-"));
                }
                peptide.Annotations.Remove(RT_KEY);
            }

            return(result);
        }