public void CompareAveragingWithMSstats()
        {
            var srmDocument       = LoadRatPlasmaDocument();
            var documentContainer = new MemoryDocumentContainer();

            documentContainer.SetDocument(documentContainer.Document, srmDocument);
            GroupComparisonModel model = new GroupComparisonModel(documentContainer, null);

            model.GroupComparisonDef = GroupComparisonDef.EMPTY.ChangeControlAnnotation("Condition")
                                       .ChangeControlValue("Healthy")
                                       .ChangeIdentityAnnotation("BioReplicate")
                                       .ChangeSummarizationMethod(SummarizationMethod.AVERAGING)
                                       .ChangePerProtein(false);
            var expectedValues = MsStatsTestUtil.ReadExpectedResults(typeof(MSstatsAveragingTest),
                                                                     "RatPlasmaTestingResult.csv");
            var groupComparer = new GroupComparer(model.GroupComparisonDef, srmDocument, new QrFactorizationCache());

            foreach (var protein in srmDocument.PeptideGroups)
            {
                foreach (var peptide in protein.Peptides)
                {
                    var result         = groupComparer.CalculateFoldChange(new GroupComparisonSelector(protein, peptide, IsotopeLabelType.light, null, new GroupIdentifier("Diseased")), null);
                    var expectedResult = expectedValues[peptide.Peptide.Sequence];
                    Assert.AreEqual(expectedResult.EstimatedValue, result.LinearFitResult.EstimatedValue,
                                    (expectedResult.StandardError + result.LinearFitResult.StandardError) * 2, peptide.Peptide.Sequence);
                }
            }
        }
Example #2
0
        public void TestProteinAbundance()
        {
            var srmDocument       = LoadRatPlasmaDocument();
            var documentContainer = new MemoryDocumentContainer();

            documentContainer.SetDocument(srmDocument, documentContainer.Document);
            var skylineDataSchema      = new SkylineDataSchema(documentContainer, DataSchemaLocalizer.INVARIANT);
            GroupComparisonModel model = new GroupComparisonModel(documentContainer, null);

            model.GroupComparisonDef = GroupComparisonDef.EMPTY.ChangeControlAnnotation("Condition")
                                       .ChangeControlValue("Healthy")
                                       .ChangeSummarizationMethod(SummarizationMethod.AVERAGING)
                                       .ChangePerProtein(true);
            var groupComparer = new GroupComparer(model.GroupComparisonDef, srmDocument, new QrFactorizationCache());

            foreach (var moleculeGroup in srmDocument.MoleculeGroups)
            {
                if (moleculeGroup.Molecules.Any(mol => null != mol.GlobalStandardType))
                {
                    continue;
                }
                var foldChangeResult = groupComparer.CalculateFoldChange(new GroupComparisonSelector(moleculeGroup, null, IsotopeLabelType.light, null, new GroupIdentifier("Diseased")), null);
                var xValues          = new List <double>();
                var yValues          = new List <double>();
                var protein          = new Protein(skylineDataSchema, new IdentityPath(moleculeGroup.PeptideGroup));
                foreach (var proteinResult in protein.Results.Values)
                {
                    var abundance = proteinResult.Abundance;
                    if (!abundance.HasValue)
                    {
                        continue;
                    }

                    var condition = proteinResult.Replicate.ChromatogramSet.Annotations.GetAnnotation("Condition");
                    if (condition == "Healthy")
                    {
                        xValues.Add(0);
                    }
                    else if (condition == "Diseased")
                    {
                        xValues.Add(1);
                    }
                    yValues.Add(Math.Log(abundance.Value));
                }
                Assert.AreEqual(xValues.Count, foldChangeResult.ReplicateCount);

                if (!xValues.Any())
                {
                    continue;
                }
                var yStatistics        = new Statistics(yValues);
                var xStatistics        = new Statistics(xValues);
                var slope              = yStatistics.Slope(xStatistics);
                var actualFoldChange   = Math.Exp(slope);
                var expectedFoldChange = Math.Pow(2.0, foldChangeResult.LinearFitResult.EstimatedValue);

                AssertEx.AreEqual(expectedFoldChange, actualFoldChange, .01);
            }
        }
 public EditGroupComparisonDlg(GroupComparisonModel groupComparisonModel)
 {
     InitializeComponent();
     Icon = Resources.Skyline;
     GroupComparisonModel = groupComparisonModel;
     GroupComparisonModel.AddModelChanged(this, OnModelChanged);
     Height -= panelAdvanced.Height;
     panelAdvanced.Visible = false;
 }
 private void OnModelChanged(GroupComparisonModel model)
 {
     if (_inChangeSettings)
     {
         return;
     }
     try
     {
         _inChangeSettings = true;
         UpdateSettings();
     }
     finally
     {
         _inChangeSettings = false;
     }
 }
Example #5
0
        public static void ChangeGroupComparisonDef(bool pushChangesToDocument, GroupComparisonModel model, GroupComparisonDef groupDef)
        {
            if (pushChangesToDocument)
            {
                Program.MainWindow.ModifyDocument(
                    GroupComparisonStrings.GroupComparisonSettingsForm_GroupComparisonDef_Change_Group_Comparison,
                    doc => model.ApplyChangesToDocument(doc, groupDef)
                    );

                Settings.Default.GroupComparisonDefList.Add(groupDef);
            }
            else
            {
                model.GroupComparisonDef = groupDef;
            }
        }
        public GroupComparisonRefinementData(SrmDocument document, double adjustedPValCutoff,
                                             double foldChangeCutoff, int?msLevel, List <GroupComparisonDef> groupComparisonDefs,
                                             SrmSettingsChangeMonitor progressMonitor)
        {
            _progressMonitor    = progressMonitor;
            _foldChangeCutoff   = foldChangeCutoff;
            _adjustedPValCutoff = adjustedPValCutoff;
            if (msLevel.HasValue)
            {
                _msLevel = msLevel.Value;
            }
            else
            {
                _msLevel = document.PeptideTransitions.Any(t => !t.IsMs1) ? 2 : 1;
            }
            Data = new List <List <GroupComparisonRow> >();

            foreach (var groupComparisonDef in groupComparisonDefs)
            {
                var groupComparer = new GroupComparer(groupComparisonDef, document, _qrFactorizationCache);
                var results       = GroupComparisonModel.ComputeResults(groupComparer, document, null, null, progressMonitor);


                var adjustedPValues = PValues.AdjustPValues(results.Select(
                                                                row => row.LinearFitResult.PValue)).ToArray();

                var foldChangeList = new List <GroupComparisonRow>();
                for (int iRow = 0; iRow < results.Count; iRow++)
                {
                    var resultRow = results[iRow];
                    FoldChangeResult foldChangeResult = new FoldChangeResult(groupComparisonDef.ConfidenceLevel,
                                                                             adjustedPValues[iRow], resultRow.LinearFitResult, double.NaN);
                    foldChangeList.Add(new GroupComparisonRow(resultRow.Selector.Protein, resultRow.Selector.Peptide,
                                                              resultRow.Selector.MsLevel,
                                                              foldChangeResult));
                }

                Data.Add(foldChangeList);
            }
        }
Example #7
0
 public FoldChangeBindingSource(GroupComparisonModel groupComparisonModel)
 {
     _container           = new Container();
     GroupComparisonModel = groupComparisonModel;
     _taskScheduler       = TaskScheduler.FromCurrentSynchronizationContext();
 }
Example #8
0
 public FoldChangeBindingSource(GroupComparisonModel groupComparisonModel)
 {
     _container           = new Container();
     GroupComparisonModel = groupComparisonModel;
     _taskScheduler       = new EventTaskScheduler();
 }
 protected BaseGroupComparisonSettings(GroupComparisonModel groupComparisonModel)
 {
     GroupComparisonModel = groupComparisonModel;
     GroupComparisonModel.AddModelChanged(this, OnModelChanged);
 }