Esempio n. 1
0
 public void Test58Percent()
 {
     var path = Path.Combine(TestContext.TestDir, Guid.NewGuid().ToString() + ".tpg");
     var workspace = CreateWorkspace(path, TracerDef.GetD3LeuEnrichment());
     var turnoverCalculator = new TurnoverCalculator(workspace, "LL");
     var dict = new Dictionary<TracerFormula, double>();
     // initialize the dictionary with 70% newly synthesized from 58% precursor pool
     dict.Add(TracerFormula.Parse("Tracer2"), Math.Pow(.58, 2) * .7);
     dict.Add(TracerFormula.Parse("Tracer1"), 2 * .58 * .42 * .7);
     dict.Add(TracerFormula.Empty, 1- dict.Values.Sum());
     double turnover;
     double turnoverScore;
     IDictionary<TracerFormula, double> bestMatch;
     var precursorEnrichment = turnoverCalculator.ComputePrecursorEnrichmentAndTurnover(dict, out turnover, out turnoverScore, out bestMatch);
     Assert.AreEqual(.7, turnover);
     Assert.AreEqual(58, precursorEnrichment["Tracer"]);
 }
Esempio n. 2
0
        public void Test58Percent()
        {
            var path               = Path.Combine(TestContext.TestDir, Guid.NewGuid().ToString() + ".tpg");
            var workspace          = CreateWorkspace(path, TracerDef.GetD3LeuEnrichment());
            var turnoverCalculator = new TurnoverCalculator(workspace, "LL");
            var dict               = new Dictionary <TracerFormula, double>();

            // initialize the dictionary with 70% newly synthesized from 58% precursor pool
            dict.Add(TracerFormula.Parse("Tracer2"), Math.Pow(.58, 2) * .7);
            dict.Add(TracerFormula.Parse("Tracer1"), 2 * .58 * .42 * .7);
            dict.Add(TracerFormula.Empty, 1 - dict.Values.Sum());
            double turnover;
            double turnoverScore;
            IDictionary <TracerFormula, double> bestMatch;
            var precursorEnrichment = turnoverCalculator.ComputePrecursorEnrichmentAndTurnover(dict, out turnover, out turnoverScore, out bestMatch);

            Assert.AreEqual(.7, turnover);
            Assert.AreEqual(58, precursorEnrichment["Tracer"]);
        }
Esempio n. 3
0
        private void BtnGoOnClick(object sender, EventArgs e)
        {
            graphDetails.GraphPane.CurveList.Clear();
            int    pointCount    = PointCount;
            double precursorPool = PrecursorPool;
            double turnover      = Turnover;
            int    labelCount    = LabelCount;
            double noise         = Noise;
            var    points        = new PointPairList();
            var    tracerDef     = Workspace.GetTracerDefs().FirstOrDefault(td => td.AminoAcidSymbol.HasValue);

            if (tracerDef == null)
            {
                MessageBox.Show(
                    "The simulation cannot be run because there is no amino acid tracer defined in this workspace");
                return;
            }

            Debug.Assert(tracerDef.AminoAcidSymbol.HasValue);
            string peptide               = new string(tracerDef.AminoAcidSymbol.Value, labelCount);
            var    turnoverCalculator    = new TurnoverCalculator(Workspace, peptide);
            var    initialTracerPercents = TracerPercentFormula.Parse("").SetElementCount(tracerDef.Name, tracerDef.InitialApe);
            var    newTracerPercents     = TracerPercentFormula.Parse("").SetElementCount(tracerDef.Name, precursorPool);
            var    initialDistribution   = turnoverCalculator.GetDistribution(initialTracerPercents);
            var    newDistribution       = turnoverCalculator.GetDistribution(newTracerPercents);
            var    currentMixture        = Mix(initialDistribution, (100.0 - turnover) / 100, newDistribution, turnover / 100);
            var    keys = new List <TracerFormula>();

            for (int i = 0; i <= labelCount; i++)
            {
                keys.Add(TracerFormula.Parse("").SetElementCount(tracerDef.Name, i));
            }
            var bestMatches          = new List <IDictionary <TracerFormula, double> >();
            var precursorEnrichments = new List <TracerPercentFormula>();
            var observedResults      = new List <IDictionary <TracerFormula, double> >();

            while (points.Count < pointCount)
            {
                var    noisyMixture = Perturb(keys, currentMixture, noise / 100);
                double calcTurnover;
                double calcTurnoverScore;
                double calcPrecursorPool;
                IDictionary <TracerFormula, double> bestMatch;
                var calcMixture = turnoverCalculator.ComputePrecursorEnrichmentAndTurnover(noisyMixture, out calcTurnover, out calcTurnoverScore, out bestMatch);
                if (calcMixture == null)
                {
                    continue;
                }
                calcMixture.TryGetValue(tracerDef.Name, out calcPrecursorPool);
                points.Add(new PointPair(calcTurnover * 100, calcPrecursorPool));
                bestMatches.Add(bestMatch);
                precursorEnrichments.Add(calcMixture);
                observedResults.Add(noisyMixture);
            }
            graphResults.GraphPane.CurveList.Clear();
            graphResults.GraphPane.GraphObjList.Clear();
            var lineItem = graphResults.GraphPane.AddCurve(null, points, Color.Black);

            lineItem.Line.IsVisible = false;
            graphResults.GraphPane.XAxis.Title.Text = "% newly synthesized";
            graphResults.GraphPane.YAxis.Title.Text = "Precursor pool";
            graphResults.GraphPane.AxisChange();
            graphResults.Invalidate();
            dataGridView.Rows.Clear();
            var row = dataGridView.Rows[dataGridView.Rows.Add()];

            row.Cells[colQuantity.Index].Value = "% newly synthesized";
            var statsTurnover = new Statistics(points.Select(p => p.X).ToArray());

            row.Cells[colMean.Index].Value   = statsTurnover.Mean();
            row.Cells[colMedian.Index].Value = statsTurnover.Median();
            row.Cells[colStdDev.Index].Value = statsTurnover.StdDev();

            row = dataGridView.Rows[dataGridView.Rows.Add()];
            var statsPrecursorPool = new Statistics(points.Select(p => p.Y).ToArray());

            row.Cells[colQuantity.Index].Value = "Precursor Pool";
            row.Cells[colMean.Index].Value     = statsPrecursorPool.Mean();
            row.Cells[colMedian.Index].Value   = statsPrecursorPool.Median();
            row.Cells[colStdDev.Index].Value   = statsPrecursorPool.StdDev();
            _precursorEnrichmentsByPoint       = points.Select(p => p.Y).ToArray();
            _bestMatches      = bestMatches;
            _observedResults  = observedResults;
            _scatterPlotCurve = lineItem;
            _expected         = currentMixture;
            _turnovers        = points.Select(p => p.X).ToArray();
            _tracerFormulas   = keys;
            ShowResult(-1);
        }