예제 #1
0
        /// <summary>
        /// Convert the sequence information from the external types to the internal types
        /// </summary>
        /// <param name="peptide"></param>
        /// <returns></returns>
        public static Sequence GetIpSequence(this SimpleMZIdentMLReader.PeptideRef peptide)
        {
            var aminoAcidSet = new AminoAcidSet();
            var sequence     = new Sequence(peptide.Sequence, aminoAcidSet);

            foreach (var mod in peptide.Mods)
            {
                var seqIndex = Math.Max(0, mod.Key - 1);
                var mzidMod  = mod.Value;

                var modification = Modification.Get(mzidMod.Tag, mzidMod.Mass);
                sequence[seqIndex] = new ModifiedAminoAcid(sequence[seqIndex], modification);
            }

            return(new Sequence(sequence));
        }
예제 #2
0
        /// <summary>
        /// Read results from tsv file into group of objects from PSI_Interface
        /// </summary>
        /// <param name="idFilePath"></param>
        /// <returns></returns>
        public static SimpleMZIdentMLReader.SimpleMZIdentMLData ReadResultsFromFileToMzIdData(string idFilePath)
        {
            var databaseSearchResultData = ReadResultsFromFile(idFilePath);

            var simpleMzIdentMLData = new SimpleMZIdentMLReader.SimpleMZIdentMLData(idFilePath);

            foreach (var databaseSearchResult in databaseSearchResultData)
            {
                var peptide = new SimpleMZIdentMLReader.PeptideRef
                {
                    Sequence = databaseSearchResult.Sequence
                };

                var identification = new SimpleMZIdentMLReader.SpectrumIdItem
                {
                    Peptide = peptide,
                    Charge  = databaseSearchResult.Charge,
                    ScanNum = databaseSearchResult.ScanNum,
                    SpecEv  = databaseSearchResult.SpecEValue,
                };

                // Parse modification
                var modParts = databaseSearchResult.Modifications.Split(',');
                if (modParts.Length > 0)
                {
                    foreach (var part in modParts)
                    {
                        var mod = part.Split(' ');
                        if (mod.Length < 2)
                        {
                            continue;
                        }

                        var modName  = mod[0];
                        var modIndex = Convert.ToInt32(mod[1]);
                        var ipMod    = Modification.Get(modName);

                        var modification = new SimpleMZIdentMLReader.Modification
                        {
                            Mass = ipMod.Mass,
                            Tag  = modName,
                        };

                        peptide.ModsAdd(modIndex, modification);
                    }
                }

                var proteinAccessions = databaseSearchResult.ProteinName.Split(',');
                foreach (var accession in proteinAccessions)
                {
                    var dbSequence = new SimpleMZIdentMLReader.DatabaseSequence
                    {
                        Accession          = accession.Trim(),
                        ProteinDescription = databaseSearchResult.ProteinDescription
                    };
                    var peptideEvidence = new SimpleMZIdentMLReader.PeptideEvidence
                    {
                        DbSeq      = dbSequence,
                        Pre        = databaseSearchResult.Pre,
                        Post       = databaseSearchResult.Post,
                        PeptideRef = identification.Peptide,
                        Start      = databaseSearchResult.Start,
                        End        = databaseSearchResult.End,
                    };

                    identification.PepEvidence.Add(peptideEvidence);
                }

                simpleMzIdentMLData.Identifications.Add(identification);
            }

            return(simpleMzIdentMLData);
        }