Esempio n. 1
0
        public List <OptimalItem> BuildSpectrumBin(IEnumerable <IIdentifiedSpectrum> peptides)
        {
            GetInteger chargeCalc = GetChargeCalculator();

            GetInteger missCleavageCalc = GetMissCleavageCalculator();

            IModificationCountCalculator modificationCalc = GetModificationCountCalculator();

            GetInteger nptCalc = GetNumProteaseTerminiCalculator();

            GetInteger proteinTagCalc = GetProteinTagCalculator();

            Dictionary <OptimalResultCondition, OptimalItem> resultMap = new Dictionary <OptimalResultCondition, OptimalItem>();

            foreach (IIdentifiedSpectrum mph in peptides)
            {
                int charge = chargeCalc(mph);

                int missCleavage = missCleavageCalc(mph);

                int modificationCount = modificationCalc.Calculate(mph.GetMatchSequence());

                int nptCount = nptCalc(mph);

                int proteinTag = proteinTagCalc(mph);

                OptimalResultCondition cond = new OptimalResultCondition(charge, missCleavage, nptCount, modificationCount, mph.ClassificationTag);
                if (!resultMap.ContainsKey(cond))
                {
                    OptimalItem item = new OptimalItem();
                    item.Condition = cond;
                    item.Spectra.Add(mph);
                    resultMap[cond] = item;
                }
                else
                {
                    resultMap[cond].Spectra.Add(mph);
                }
            }

            var result = resultMap.Values.ToList();

            if (this.MinimumSpectraPerGroup > 1)
            {
                result.Sort((m1, m2) => m2.Spectra.Count.CompareTo(m1.Spectra.Count));
                for (int i = result.Count - 1; i > 0; i--)
                {
                    if (result[i].Spectra.Count < this.MinimumSpectraPerGroup)
                    {
                        result[i - 1].Spectra.AddRange(result[i].Spectra);
                        result[i - 1].Condition.MergedConditions.Add(result[i].Condition);
                        result.RemoveAt(i);
                    }
                }
            }

            result.Sort((m1, m2) => m1.Condition.CompareTo(m2.Condition));
            return(result);
        }
Esempio n. 2
0
        public void PushCurrentOptimalResults(string title)
        {
            var or = new List <OptimalItem>();

            foreach (var item in this.OptimalResults)
            {
                var newitem = new OptimalItem()
                {
                    Condition = new OptimalResultCondition(item.Condition),
                    Result    = new OptimalResult(item.Result),
                    Spectra   = new List <IIdentifiedSpectrum>()
                };
                or.Add(newitem);
            }
            this.SavedOptimalResults.Add(new Tuple <string, List <OptimalItem> >(title, or));
        }