Esempio n. 1
0
        public ScoreDistribution ReadFromXml(XElement root)
        {
            var conds =
                (from c in root.Descendants("Condition")
                 select c).ToList();

            ScoreDistribution result = new ScoreDistribution();

            foreach (var c in conds)
            {
                var key = new OptimalResultCondition(
                    Convert.ToInt32(c.Element("PrecursorCharge").Value),
                    Convert.ToInt32(c.Element("MissCleavageSiteCount").Value),
                    2,
                    Convert.ToInt32(c.Element("ModificationCount").Value),
                    c.Element("Classification").Value);

                var values =
                    (from d in c.Element("Distribution").Descendants("Item")
                     select new OptimalResult()
                {
                    Score = MyConvert.ToDouble(d.Element("Score").Value),
                    PeptideCountFromTargetDB = Convert.ToInt32(d.Element("Target").Value),
                    PeptideCountFromDecoyDB = Convert.ToInt32(d.Element("Decoy").Value)
                }
                    ).ToList();

                result[key] = values;
            }
            return(result);
        }
        public void Test()
        {
            ScoreDistribution      s  = new ScoreDistribution();
            OptimalResultCondition or = new OptimalResultCondition(1, 1, 1, 1);

            s[or] = new List <OptimalResult>()
            {
                new OptimalResult(1.0, 1.0, 100, 10, 0.1),
                new OptimalResult(2.0, 1.0, 200, 10, 0.05),
                new OptimalResult(3.0, 1.0, 1000, 10, 0.01)
            };

            ScoreDistribution subset = new ScoreDistribution();

            subset[or] = new List <OptimalResult>()
            {
                new OptimalResult(2.0, 1.0, 100, 0, 0),
                new OptimalResult(3.0, 1.0, 900, 0, 0)
            };

            IFalseDiscoveryRateCalculator calc = new TargetFalseDiscoveryRateCalculator();

            double fdr = s.CalculateSubsetFdr(subset, calc);

            Assert.AreEqual(0.014, fdr);
        }
Esempio n. 3
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. 4
0
        public int GetConditionSpectrumCount(OptimalResultCondition cond)
        {
            foreach (var oi in this.OptimalResults)
            {
                if (oi.Condition == cond)
                {
                    return(oi.Spectra.Count);
                }
            }

            return(0);
        }
Esempio n. 5
0
    public void Test()
    {
      ScoreDistribution s = new ScoreDistribution();
      OptimalResultCondition or = new OptimalResultCondition(1, 1, 1, 1);

      s[or] = new List<OptimalResult>(){
        new OptimalResult(1.0, 1.0, 100,10,0.1),
        new OptimalResult(2.0, 1.0, 200,10,0.05),
        new OptimalResult(3.0, 1.0, 1000,10,0.01)
      };

      ScoreDistribution subset = new ScoreDistribution();
      subset[or] = new List<OptimalResult>(){
        new OptimalResult(2.0, 1.0, 100,0,0),
        new OptimalResult(3.0, 1.0, 900,0,0)
      };

      IFalseDiscoveryRateCalculator calc = new TargetFalseDiscoveryRateCalculator();

      double fdr = s.CalculateSubsetFdr(subset, calc);

      Assert.AreEqual(0.014, fdr);
    }
Esempio n. 6
0
 public OptimalItem()
 {
     Condition = new OptimalResultCondition(-1, -1, -1, -1);
     Spectra   = new List <IIdentifiedSpectrum>();
     Result    = new OptimalResult();
 }
Esempio n. 7
0
 public OptimalItem GetConditionItem(OptimalResultCondition cond)
 {
     return(this.OptimalResults.Find(m => m.Condition == cond));
 }