Exemplo n.º 1
0
 public void UpdateGrid()
 {
     using (var session = Workspace.OpenSession())
     {
         IEnumerable<TableData> tableDatas = null;
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Querying Table Sizes"))
         {
             var broker = new LongOperationBroker(b => { tableDatas = RequeryGrid(b, session); }, longWaitDialog
                                                  , session);
             if (!broker.LaunchJob() || tableDatas == null)
             {
                 return;
             }
             dataGridView1.Rows.Clear();
             foreach (var tableData in tableDatas)
             {
                 var row = dataGridView1.Rows[dataGridView1.Rows.Add()];
                 row.Cells[colTableName.Index].Value = tableData.Name;
                 row.Cells[colRowCount.Index].Value = tableData.RowCount;
                 row.Cells[colDataFileSize.Index].Value = tableData.DataFileSize;
                 row.Cells[colFreeSpace.Index].Value = tableData.FreeSpace;
                 row.Cells[colIndexSize.Index].Value = tableData.IndexSize;
             }
         }
     }
 }
Exemplo n.º 2
0
        private bool SaveWorkspace()
        {
            if ((Workspace.SavedWorkspaceChange.HasChromatogramMassChange || Workspace.SavedWorkspaceChange.HasPeakPickingChange) &&
                Workspace.HasAnyChromatograms())
            {
                string message;
                if (Workspace.SavedWorkspaceChange.HasChromatogramMassChange)
                {
                    message =
                        "You have made changes to the settings which affect the calculated mass of peptides.  When you save this workspace, the chromatograms which have already been generated will be deleted, and will need to be regenerated.  Are you sure you want to save this workspace now?";
                }
                else
                {
                    message =
                        "You have made changes the the settings which affect how Topograph integrates peaks.  When you save this workspace, the results which Topograph has already calculated will be deleted, and they will need to be recalculated.  Are you sure you want to save this workspace now?";
                }
                if (MessageBox.Show(this, message, Program.AppName, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return(false);
                }
            }

            using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Saving Workspace"))
            {
                return(Workspace.Save(longWaitDialog));
            }
        }
Exemplo n.º 3
0
        private void BtnRequeryOnClick(object sender, EventArgs e)
        {
            var halfLifeSettings = HalfLifeSettings;

            Settings.Default.Reload();
            Settings.Default.HalfLifeSettings = halfLifeSettings;
            Settings.Default.Save();
            var calculator = new HalfLifeCalculator(Workspace, halfLifeSettings)
            {
                ExcludedTimePoints = UpdateTimePoints(),
            };

            using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
            {
                var longOperationBroker = new LongOperationBroker(calculator.Run, longWaitDialog);
                if (!longOperationBroker.LaunchJob())
                {
                    return;
                }
            }
            var viewInfo = bindingSource1.ViewInfo;
            var rows     = calculator.ResultRows.Select(row => new ResultRow(this, row)).ToArray();

            if (viewInfo == null || "default" == viewInfo.Name)
            {
                viewInfo = new ViewInfo(ColumnDescriptor.RootColumn(bindingSource1.ViewInfo.DataSchema, typeof(ResultRow)),
                                        GetDefaultViewSpec(calculator.ByProtein));
                bindingSource1.SetViewContext(GetViewContext(rows), viewInfo);
            }
            bindingSource1.RowSource = rows;
        }
Exemplo n.º 4
0
            public override void Delete()
            {
                IList <PeptideAnalysis> peptideAnalyses = GetSelectedRows <PeptideAnalysisRow>(_form.boundDataGridView1).Select(row => row.PeptideAnalysis).ToArray();

                if (peptideAnalyses.Count == 0)
                {
                    return;
                }
                string message;

                if (peptideAnalyses.Count == 1)
                {
                    message = string.Format("Are you sure you want to delete the analysis of the peptide '{0}'?",
                                            peptideAnalyses[0].Peptide.FullSequence);
                }
                else
                {
                    message = string.Format("Are you sure you want to delete these {0} peptide analyses?",
                                            peptideAnalyses.Count);
                }
                if (MessageBox.Show(_form, message, Program.AppName, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
                {
                    return;
                }
                using (var longWaitDlg = new LongWaitDialog(_form, "Deleting Peptide Analyses"))
                {
                    using (var session = _form.Workspace.OpenSession())
                    {
                        new LongOperationBroker(
                            longOpBroker => DeletePeptideAnalyses(longOpBroker, session, peptideAnalyses),
                            longWaitDlg).LaunchJob();
                    }
                }
                _form.Workspace.DatabasePoller.MergeChangesNow();
            }
Exemplo n.º 5
0
 public void UpdateGrid()
 {
     using (var session = Workspace.OpenSession())
     {
         IEnumerable <TableData> tableDatas = null;
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Querying Table Sizes"))
         {
             var broker = new LongOperationBroker(b => { tableDatas = RequeryGrid(b, session); }, longWaitDialog
                                                  , session);
             if (!broker.LaunchJob() || tableDatas == null)
             {
                 return;
             }
             dataGridView1.Rows.Clear();
             foreach (var tableData in tableDatas)
             {
                 var row = dataGridView1.Rows[dataGridView1.Rows.Add()];
                 row.Cells[colTableName.Index].Value    = tableData.Name;
                 row.Cells[colRowCount.Index].Value     = tableData.RowCount;
                 row.Cells[colDataFileSize.Index].Value = tableData.DataFileSize;
                 row.Cells[colFreeSpace.Index].Value    = tableData.FreeSpace;
                 row.Cells[colIndexSize.Index].Value    = tableData.IndexSize;
             }
         }
     }
 }
Exemplo n.º 6
0
            public override void Delete()
            {
                IList <MsDataFile> dataFiles = GetSelectedRows <DataFileRow>(_form.gridView).Select(row => row.MsDataFile).ToArray();

                if (dataFiles.Count == 0)
                {
                    return;
                }

                string message;

                if (dataFiles.Count == 1)
                {
                    message = "Are you sure you want to remove this data file from the workspace?";
                }
                else
                {
                    message = string.Format(
                        "Are you sure you want to remove these {0}  data files from the workspace?", dataFiles.Count);
                }
                message += "\nAll search results and analyses of these files will also be deleted.";
                if (MessageBox.Show(_form, message, Program.AppName, MessageBoxButtons.OKCancel) != DialogResult.OK)
                {
                    return;
                }
                using (var longWaitDialog = new LongWaitDialog(_form, "Deleting data files"))
                {
                    var dataFileIds    = dataFiles.Select(dataFile => dataFile.Id).ToArray();
                    var longWaitBroker = new LongOperationBroker((b => _form.DeleteDataFiles(b, dataFileIds)), longWaitDialog);
                    longWaitBroker.LaunchJob();
                }
                _form.Workspace.DatabasePoller.LoadAndMergeChanges(null);
            }
Exemplo n.º 7
0
        public Workspace OpenWorkspace(String path)
        {
            var upgrader = new WorkspaceUpgrader(path);
            int version;

            try
            {
                using (var connection = upgrader.OpenConnection())
                {
                    try
                    {
                        version = upgrader.ReadSchemaVersion(connection);
                    }
                    catch (Exception e)
                    {
                        Console.Out.WriteLine(e);
                        MessageBox.Show(
                            "Unable to read version number from the workspace.  This workspace may be too old to be upgraded.");
                        return(null);
                    }
                }
            }
            catch (Exception openException)
            {
                Console.Out.WriteLine(openException);
                MessageBox.Show("Unable to open the database:" + openException.Message);
                return(null);
            }
            if (version > WorkspaceUpgrader.CurrentVersion || version < WorkspaceUpgrader.MinUpgradeableVersion)
            {
                MessageBox.Show("This workspace cannot be opened by this version of Topograph", Program.AppName);
                return(null);
            }
            if (version < WorkspaceUpgrader.CurrentVersion)
            {
                var result =
                    MessageBox.Show(
                        "This workspace needs to be upgraded to this version of Topograph.  Do you want to do that now?",
                        Program.AppName, MessageBoxButtons.OKCancel);
                if (result == DialogResult.Cancel)
                {
                    return(null);
                }
                using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Upgrading Workspace"))
                {
                    if (!new LongOperationBroker(upgrader.Run, longWaitDialog).LaunchJob())
                    {
                        return(null);
                    }
                }
            }
            return(new Workspace(path));
        }
Exemplo n.º 8
0
        public static bool TryInitMsDataFile(IWin32Window parent, MsDataFile msDataFile, out string errorMessage)
        {
            bool   success = false;
            string message = null;

            using (var longWaitDialog = new LongWaitDialog(parent, Program.AppName))
            {
                new LongOperationBroker(broker =>
                {
                    broker.UpdateStatusMessage(string.Format("Reading retention times for {0}", msDataFile.Name));
                    success = MsDataFileUtil.TryInitMsDataFile(msDataFile.Workspace, msDataFile, broker.CancellationToken, out message);
                }, longWaitDialog).LaunchJob();
            }
            errorMessage = message;
            return(success);
        }
Exemplo n.º 9
0
 // ReSharper disable AccessToDisposedClosure
 private void UpdateWorkspaceVersion(WorkspaceChangeArgs v)
 {
     using (var session = Workspace.OpenSession())
     {
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Updating Workspace"))
         {
             var broker = new LongOperationBroker(b =>
             {
                 session.BeginTransaction();
                 Workspace.UpdateWorkspaceVersion(b, session, v);
                 session.Transaction.Commit();
             }, longWaitDialog, session);
             broker.LaunchJob();
         }
     }
 }
Exemplo n.º 10
0
        private void Requery()
        {
            var locks = new List <DbLock>();

            using (var session = Workspace.OpenSession())
            {
                using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Querying Database"))
                {
                    var broker = new LongOperationBroker(b => session.CreateCriteria(typeof(DbLock)).List(locks),
                                                         longWaitDialog, session);
                    if (broker.LaunchJob())
                    {
                        BeginInvoke(new Action <List <DbLock> >(DisplayResults), locks);
                    }
                }
            }
        }
Exemplo n.º 11
0
        private void BtnRequeryOnClick(object sender, EventArgs e)
        {
            var calculator = new HalfLifeCalculator(Workspace, HalfLifeSettings.Default)
            {
                MaxResults = MaxResults,
            };

            using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
            {
                var longOperationBroker = new LongOperationBroker(calculator.Run, longWaitDialog);
                if (!longOperationBroker.LaunchJob())
                {
                    return;
                }
            }
            UpdateRows(calculator);
        }
Exemplo n.º 12
0
 private void OutputWorkspaceSqlToolStripMenuItemOnClick(object sender, EventArgs e)
 {
     if (!PromptToSaveWorkspace())
     {
         return;
     }
     using (var dumpWorkspaceDlg = new DumpWorkspaceDlg())
     {
         if (dumpWorkspaceDlg.ShowDialog(TopLevelControl) == DialogResult.Cancel)
         {
             return;
         }
         Settings.Default.Reload();
         using (var fileDialog = new SaveFileDialog
         {
             Title = "Export Workspace SQL",
             Filter = "SQL Files (*.sql)|*.sql|All Files|*.*",
             FileName = Path.GetFileNameWithoutExtension(Workspace.DatabasePath) + ".sql",
             InitialDirectory = Settings.Default.ExportResultsDirectory,
         })
         {
             if (fileDialog.ShowDialog(this) == DialogResult.Cancel)
             {
                 return;
             }
             Settings.Default.ExportResultsDirectory = Path.GetDirectoryName(fileDialog.FileName);
             Settings.Default.Save();
             var workspace = new Workspace(Workspace.DatabasePath);
             try
             {
                 Workspace = null;
                 using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Exporting SQL"))
                 {
                     var databaseDumper = new DatabaseDumper(workspace, dumpWorkspaceDlg.DatabaseTypeEnum, fileDialog.FileName);
                     new LongOperationBroker(databaseDumper.Run, longWaitDialog).LaunchJob();
                 }
             }
             finally
             {
                 Workspace = OpenWorkspace(workspace.DatabasePath);
             }
         }
     }
 }
Exemplo n.º 13
0
        public Dictionary <long, PeptideAnalysis> LoadPeptideAnalyses(ICollection <long> ids)
        {
            var job   = new LoadPeptideAnalysisSnapshot(Workspace, ids);
            var title = ids.Count == 1 ? "Loading peptide analysis" : "Loading " + ids.Count + " peptide analyses";

            using (var longWaitDialog = new LongWaitDialog(TopLevelControl, title))
            {
                new LongOperationBroker(job.Run, longWaitDialog).LaunchJob();
            }
            var result = new Dictionary <long, PeptideAnalysis>();

            foreach (var id in ids)
            {
                PeptideAnalysis peptideAnalysis;
                if (Workspace.PeptideAnalyses.TryGetValue(id, out peptideAnalysis))
                {
                    result[id] = peptideAnalysis;
                }
            }
            return(result);
        }
Exemplo n.º 14
0
        private void BtnRefreshOnClick(object sender, EventArgs e)
        {
            _queryRows = null;
            IDictionary <CohortKey, IDictionary <double, int> > rows = null;

            using (var session = Workspace.OpenSession())
            {
                using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Querying database"))
                {
                    var broker = new LongOperationBroker(delegate
                    {
                        rows = QueryRecords(session);
                    },
                                                         longWaitDialog, session);
                    if (broker.LaunchJob())
                    {
                        _queryRows = rows;
                    }
                }
            }
            RefreshUi();
        }
Exemplo n.º 15
0
        private void OutputWorkspaceSqlToolStripMenuItemOnClick(object sender, EventArgs e)
        {
            if (!PromptToSaveWorkspace())
            {
                return;
            }
            using (var dumpWorkspaceDlg = new DumpWorkspaceDlg())
            {
                if (dumpWorkspaceDlg.ShowDialog(TopLevelControl) == DialogResult.Cancel)
                {
                    return;
                }
                Settings.Default.Reload();
                using (var fileDialog = new SaveFileDialog
                    {
                        Title = "Export Workspace SQL",
                        Filter = "SQL Files (*.sql)|*.sql|All Files|*.*",
                        FileName = Path.GetFileNameWithoutExtension(Workspace.DatabasePath) + ".sql",
                        InitialDirectory = Settings.Default.ExportResultsDirectory,
                    })
                {
                    if (fileDialog.ShowDialog(this) == DialogResult.Cancel)
                    {
                        return;
                    }
                    Settings.Default.ExportResultsDirectory = Path.GetDirectoryName(fileDialog.FileName);
                    Settings.Default.Save();
                    var workspace = new Workspace(Workspace.DatabasePath);
                    try
                    {
                        Workspace = null;
                        using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Exporting SQL"))
                        {
                            var databaseDumper = new DatabaseDumper(workspace, dumpWorkspaceDlg.DatabaseTypeEnum, fileDialog.FileName);
                            new LongOperationBroker(databaseDumper.Run, longWaitDialog).LaunchJob();
                        }
                    }
                    finally
                    {
                        Workspace = OpenWorkspace(workspace.DatabasePath);
                    }

                }
            }
        }
Exemplo n.º 16
0
            public override void Delete()
            {
                IList<MsDataFile> dataFiles = GetSelectedRows<DataFileRow>(_form.gridView).Select(row=>row.MsDataFile).ToArray();
                if (dataFiles.Count == 0)
                {
                    return;
                }

                string message;
                if (dataFiles.Count == 1)
                {
                    message = "Are you sure you want to remove this data file from the workspace?";
                }
                else
                {
                    message = string.Format(
                        "Are you sure you want to remove these {0}  data files from the workspace?", dataFiles.Count);
                }
                message += "\nAll search results and analyses of these files will also be deleted.";
                if (MessageBox.Show(_form, message, Program.AppName, MessageBoxButtons.OKCancel) != DialogResult.OK)
                {
                    return;
                }
                using (var longWaitDialog = new LongWaitDialog(_form, "Deleting data files"))
                {
                    var dataFileIds = dataFiles.Select(dataFile => dataFile.Id).ToArray();
                    var longWaitBroker = new LongOperationBroker((b => _form.DeleteDataFiles(b, dataFileIds)), longWaitDialog);
                    longWaitBroker.LaunchJob();
                }
                _form.Workspace.DatabasePoller.LoadAndMergeChanges(null);
            }
Exemplo n.º 17
0
 public Dictionary<long, PeptideAnalysis> LoadPeptideAnalyses(ICollection<long> ids)
 {
     var job = new LoadPeptideAnalysisSnapshot(Workspace, ids);
     var title = ids.Count == 1 ? "Loading peptide analysis" : "Loading " + ids.Count + " peptide analyses";
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, title))
     {
         new LongOperationBroker(job.Run, longWaitDialog).LaunchJob();
     }
     var result = new Dictionary<long, PeptideAnalysis>();
     foreach (var id in ids)
     {
         PeptideAnalysis peptideAnalysis;
         if (Workspace.PeptideAnalyses.TryGetValue(id, out peptideAnalysis))
         {
             result[id] = peptideAnalysis;
         }
     }
     return result;
 }
Exemplo n.º 18
0
 public Workspace OpenWorkspace(String path)
 {
     var upgrader = new WorkspaceUpgrader(path);
     int version;
     try
     {
         using (var connection = upgrader.OpenConnection())
         {
             try
             {
                 version = upgrader.ReadSchemaVersion(connection);
             }
             catch (Exception e)
             {
                 Console.Out.WriteLine(e);
                 MessageBox.Show(
                     "Unable to read version number from the workspace.  This workspace may be too old to be upgraded.");
                 return null;
             }
         }
     }
     catch (Exception openException)
     {
         Console.Out.WriteLine(openException);
         MessageBox.Show("Unable to open the database:" + openException.Message);
         return null;
     }
     if (version > WorkspaceUpgrader.CurrentVersion || version < WorkspaceUpgrader.MinUpgradeableVersion)
     {
         MessageBox.Show("This workspace cannot be opened by this version of Topograph", Program.AppName);
         return null;
     }
     if (version < WorkspaceUpgrader.CurrentVersion)
     {
         var result =
             MessageBox.Show(
                 "This workspace needs to be upgraded to this version of Topograph.  Do you want to do that now?",
                 Program.AppName, MessageBoxButtons.OKCancel);
         if (result == DialogResult.Cancel)
         {
             return null;
         }
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Upgrading Workspace"))
         {
             if (!new LongOperationBroker(upgrader.Run, longWaitDialog).LaunchJob())
             {
                 return null;
             }
         }
     }
     return new Workspace(path);
 }
Exemplo n.º 19
0
        private bool SaveWorkspace()
        {
            if ((Workspace.SavedWorkspaceChange.HasChromatogramMassChange || Workspace.SavedWorkspaceChange.HasPeakPickingChange)
                && Workspace.HasAnyChromatograms())
            {
                string message;
                if (Workspace.SavedWorkspaceChange.HasChromatogramMassChange)
                {
                    message =
                        "You have made changes to the settings which affect the calculated mass of peptides.  When you save this workspace, the chromatograms which have already been generated will be deleted, and will need to be regenerated.  Are you sure you want to save this workspace now?";
                }
                else
                {
                    message =
                        "You have made changes the the settings which affect how Topograph integrates peaks.  When you save this workspace, the results which Topograph has already calculated will be deleted, and they will need to be recalculated.  Are you sure you want to save this workspace now?";
                }
                if (MessageBox.Show(this, message, Program.AppName, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return false;
                }
            }

            using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Saving Workspace"))
            {
                return Workspace.Save(longWaitDialog);
            }
        }
Exemplo n.º 20
0
 public static bool TryInitMsDataFile(IWin32Window parent, MsDataFile msDataFile, out string errorMessage)
 {
     bool success = false;
     string message = null;
     using (var longWaitDialog = new LongWaitDialog(parent, Program.AppName))
     {
         new LongOperationBroker(broker=>
                                     {
                                         broker.UpdateStatusMessage(string.Format("Reading retention times for {0}", msDataFile.Name));
                                         success = MsDataFileUtil.TryInitMsDataFile(msDataFile.Workspace, msDataFile, broker.CancellationToken, out message);
                                     }, longWaitDialog).LaunchJob();
     }
     errorMessage = message;
     return success;
 }
Exemplo n.º 21
0
 private void btnRequery_Click(object sender, EventArgs e)
 {
     var halfLifeCalculator = new HalfLifeCalculator(Workspace, HalfLifeSettings)
                                  {
                                      ByFile = cbxGroupByFile.Checked,
                                  };
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
     {
         var longOperationBroker = new LongOperationBroker(halfLifeCalculator.Run, longWaitDialog);
         if (!longOperationBroker.LaunchJob())
         {
             return;
         }
     }
     bool byCohort = cbxGroupByCohort.Checked;
     bool byTimePoint = cbxGroupByTimePoint.Checked;
     bool bySample = cbxGroupBySample.Checked;
     bool byFile = cbxGroupByFile.Checked;
     var displayRows = new List<DisplayRow>();
     foreach (var resultRow in halfLifeCalculator.ResultRows)
     {
         var displayRow = new DisplayRow(halfLifeCalculator, resultRow);
         var rowDatasByCohort = new Dictionary<GroupKey, List<HalfLifeCalculator.ProcessedRowData>>();
         foreach (var halfLife in resultRow.HalfLives)
         {
             if (resultRow.HalfLives.Count > 1 && string.IsNullOrEmpty(halfLife.Key) != byCohort)
             {
                 continue;
             }
             foreach (var rowData in halfLife.Value.FilteredRowDatas)
             {
                 GroupKey cohortKey = new GroupKey(
                     byCohort ? rowData.RawRowData.MsDataFile.Cohort : null,
                     byTimePoint ? rowData.RawRowData.MsDataFile.TimePoint : null,
                     bySample ? rowData.RawRowData.MsDataFile.Sample : null,
                     byFile ? rowData.RawRowData.MsDataFile.Name : null);
                 List<HalfLifeCalculator.ProcessedRowData> list;
                 if (!rowDatasByCohort.TryGetValue(cohortKey, out list))
                 {
                     list = new List<HalfLifeCalculator.ProcessedRowData>();
                     rowDatasByCohort.Add(cohortKey, list);
                 }
                 list.Add(rowData);
             }
         }
         foreach (var cohortRowDatas in rowDatasByCohort)
         {
             displayRow.Results.Add(cohortRowDatas.Key, new GroupResult(this, displayRow, cohortRowDatas.Key, new ResultData(cohortRowDatas.Value)));
         }
         displayRows.Add(displayRow);
     }
     var viewInfo = bindingSource1.ViewInfo;
     var dataSchema = new TopographDataSchema(Workspace);
     if (viewInfo == null || "default" == viewInfo.Name)
     {
         viewInfo= new ViewInfo(ColumnDescriptor.RootColumn(dataSchema, typeof(DisplayRow)),
             GetDefaultViewSpec(halfLifeCalculator.ByProtein));
     }
     var viewContext = new TopographViewContext(Workspace, typeof (DisplayRow), displayRows,
         GetDefaultViewSpec(halfLifeCalculator.ByProtein));
     bindingSource1.SetViewContext(viewContext, viewInfo);
     bindingSource1.RowSource = displayRows;
     dataGridViewSummary.Rows.Clear();
     SetSummary("Tracer %", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().TracerPercentByArea)));
     SetSummary("Precursor Enrichment", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().IndPrecursorEnrichment)));
     SetSummary("Turnover", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().IndTurnover)));
     SetSummary("Area Under Curve", displayRows.Select(dr=>dr.Results).SelectMany(r=>r.Values
         .Select(cohortResult=>cohortResult.GetResultData().AreaUnderCurve)));
 }
Exemplo n.º 22
0
        private void BtnOkOnClick(object sender, EventArgs e)
        {
            int unreadableFiles = 0;
            int checkedItems    = 0;

            TopographForm.Instance.EnsureDataDirectory(Workspace);
            var msDataFiles = new List <MsDataFile>();

            for (int i = 0; i < MsDataFiles.Count; i++)
            {
                if (!checkedListBox1.GetItemChecked(i))
                {
                    continue;
                }
                checkedItems++;
                var    msDataFile = MsDataFiles[i];
                string errorMessage;
                if (TopographForm.TryInitMsDataFile(this, msDataFile, out errorMessage))
                {
                    msDataFiles.Add(msDataFile);
                }
                else
                {
                    unreadableFiles++;
                }
            }
            if (checkedItems == 0)
            {
                return;
            }
            if (unreadableFiles > 0)
            {
                if (msDataFiles.Count == 0)
                {
                    var dlgResult = MessageBox.Show(this,
                                                    unreadableFiles +
                                                    " of the data files could not be read.  Do you want to process the remaining files?",
                                                    Program.AppName, MessageBoxButtons.YesNoCancel);
                    if (dlgResult == DialogResult.Cancel)
                    {
                        return;
                    }
                    if (dlgResult == DialogResult.No)
                    {
                        Close();
                        return;
                    }
                }
                else
                {
                    var dlgResult = MessageBox.Show("None of the selected files could be read.  Make sure the data directory setting is correct.", Program.AppName, MessageBoxButtons.OKCancel);
                    if (dlgResult == DialogResult.OK)
                    {
                        Close();
                    }
                    return;
                }
            }
            if (msDataFiles.Count > 0)
            {
                var job = new Task(PeptideAnalysis, msDataFiles);
                using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Creating file analyses"))
                {
                    new LongOperationBroker(job.Run, longWaitDialog).LaunchJob();
                }
                Workspace.DatabasePoller.Wake();
            }
            Close();
        }
Exemplo n.º 23
0
        private void btnRequery_Click(object sender, EventArgs e)
        {
            var halfLifeCalculator = new HalfLifeCalculator(Workspace, HalfLifeSettings)
            {
                ByFile = cbxGroupByFile.Checked,
            };

            using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
            {
                var longOperationBroker = new LongOperationBroker(halfLifeCalculator.Run, longWaitDialog);
                if (!longOperationBroker.LaunchJob())
                {
                    return;
                }
            }
            bool byCohort    = cbxGroupByCohort.Checked;
            bool byTimePoint = cbxGroupByTimePoint.Checked;
            bool bySample    = cbxGroupBySample.Checked;
            bool byFile      = cbxGroupByFile.Checked;
            var  displayRows = new List <DisplayRow>();

            foreach (var resultRow in halfLifeCalculator.ResultRows)
            {
                var displayRow       = new DisplayRow(halfLifeCalculator, resultRow);
                var rowDatasByCohort = new Dictionary <GroupKey, List <HalfLifeCalculator.ProcessedRowData> >();
                foreach (var halfLife in resultRow.HalfLives)
                {
                    if (resultRow.HalfLives.Count > 1 && string.IsNullOrEmpty(halfLife.Key) != byCohort)
                    {
                        continue;
                    }
                    foreach (var rowData in halfLife.Value.FilteredRowDatas)
                    {
                        GroupKey cohortKey = new GroupKey(
                            byCohort ? rowData.RawRowData.MsDataFile.Cohort : null,
                            byTimePoint ? rowData.RawRowData.MsDataFile.TimePoint : null,
                            bySample ? rowData.RawRowData.MsDataFile.Sample : null,
                            byFile ? rowData.RawRowData.MsDataFile.Name : null);
                        List <HalfLifeCalculator.ProcessedRowData> list;
                        if (!rowDatasByCohort.TryGetValue(cohortKey, out list))
                        {
                            list = new List <HalfLifeCalculator.ProcessedRowData>();
                            rowDatasByCohort.Add(cohortKey, list);
                        }
                        list.Add(rowData);
                    }
                }
                foreach (var cohortRowDatas in rowDatasByCohort)
                {
                    displayRow.Results.Add(cohortRowDatas.Key, new GroupResult(this, displayRow, cohortRowDatas.Key, new ResultData(cohortRowDatas.Value)));
                }
                displayRows.Add(displayRow);
            }
            var viewInfo   = bindingSource1.ViewInfo;
            var dataSchema = new TopographDataSchema(Workspace);

            if (viewInfo == null || "default" == viewInfo.Name)
            {
                viewInfo = new ViewInfo(ColumnDescriptor.RootColumn(dataSchema, typeof(DisplayRow)),
                                        GetDefaultViewSpec(halfLifeCalculator.ByProtein));
            }
            var viewContext = new TopographViewContext(Workspace, typeof(DisplayRow), displayRows,
                                                       GetDefaultViewSpec(halfLifeCalculator.ByProtein));

            bindingSource1.SetViewContext(viewContext, viewInfo);
            bindingSource1.RowSource = displayRows;
            dataGridViewSummary.Rows.Clear();
            SetSummary("Tracer %", displayRows.Select(dr => dr.Results).SelectMany(r => r.Values
                                                                                   .Select(cohortResult => cohortResult.GetResultData().TracerPercentByArea)));
            SetSummary("Precursor Enrichment", displayRows.Select(dr => dr.Results).SelectMany(r => r.Values
                                                                                               .Select(cohortResult => cohortResult.GetResultData().IndPrecursorEnrichment)));
            SetSummary("Turnover", displayRows.Select(dr => dr.Results).SelectMany(r => r.Values
                                                                                   .Select(cohortResult => cohortResult.GetResultData().IndTurnover)));
            SetSummary("Area Under Curve", displayRows.Select(dr => dr.Results).SelectMany(r => r.Values
                                                                                           .Select(cohortResult => cohortResult.GetResultData().AreaUnderCurve)));
        }
Exemplo n.º 24
0
 private void Requery()
 {
     var locks = new List<DbLock>();
     using (var session = Workspace.OpenSession())
     {
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Querying Database"))
         {
             var broker = new LongOperationBroker(b => session.CreateCriteria(typeof (DbLock)).List(locks),
                                                  longWaitDialog, session);
             if (broker.LaunchJob())
             {
                 BeginInvoke(new Action<List<DbLock>>(DisplayResults), locks);
             }
         }
     }
 }
Exemplo n.º 25
0
        private void btnRequery_Click(object sender, EventArgs e)
        {
            var lstResultData    = new List <ResultData>();
            var activeCohortKeys = new HashSet <CohortKey>();

            using (var session = Workspace.OpenSession())
            {
                var query = session.CreateQuery("SELECT d.PeptideFileAnalysis.Id,"
                                                + "\nd.PeptideFileAnalysis.PeptideAnalysis.Peptide.Id,"
                                                + "\nd.PeptideFileAnalysis.MsDataFile.TimePoint,"
                                                + "\nd.PeptideFileAnalysis.MsDataFile.Cohort,"
                                                + "\nd.PeptideFileAnalysis.MsDataFile.Sample,"
                                                + "\nd.TracerPercent,"
                                                + "\nd.TotalArea,"
                                                + "\nd.RatioToBase,"
                                                + "\nd.PeptideFileAnalysis.Turnover * 100,"
                                                + "\nd.PeptideFileAnalysis.PrecursorEnrichment * 100"
                                                + "\nFROM DbPeak d"
                                                + "\nWHERE d.PeptideFileAnalysis.DeconvolutionScore > :minScore "
                                                + "\nAND d.PeptideFileAnalysis.ValidationStatus <> " + (int)ValidationStatus.reject);
                if (!string.IsNullOrEmpty(tbxMinScore.Text))
                {
                    query.SetParameter("minScore", double.Parse(tbxMinScore.Text));
                }
                else
                {
                    query.SetParameter("minScore", 0.0);
                }
                var rowDataArrays = new List <object[]>();
                using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Executing query"))
                {
                    var broker = new LongOperationBroker(b => query.List(rowDataArrays),
                                                         longWaitDialog, session);
                    if (!broker.LaunchJob())
                    {
                        return;
                    }
                }
                bool groupByCohort    = cbxGroupByCohort.Checked;
                bool groupByTimePoint = cbxGroupByTimePoint.Checked;
                bool groupBySample    = cbxGroupBySample.Checked;
                var  rawRows          = rowDataArrays.Select(r => new RawRow()
                {
                    PeptideFileAnalysisId = (long)r[0],
                    PeptideId             = (long)r[1],
                    CohortKey             = new CohortKey(
                        groupByCohort ? (string)r[3] : null,
                        groupByTimePoint ? (double?)r[2] : null,
                        groupBySample ? (string)r[4] : null),
                    TracerPercent       = (double)r[5],
                    TotalArea           = (double)r[6],
                    RatioToBase         = (double)r[7],
                    Turnover            = (double?)r[8],
                    PrecursorEnrichment = (double?)r[9],
                });
                var rowDatas        = rawRows.GroupBy(r => r.PeptideFileAnalysisId, (id, peaks) => AggregatePeaks(id, peaks));
                var byProtein       = cbxByProtein.Checked;
                var groupedRowDatas = new Dictionary <string, IList <RowData> >();
                foreach (var rowData in rowDatas)
                {
                    var peptide = Workspace.Peptides.GetChild(rowData.PeptideId);
                    if (peptide == null)
                    {
                        continue;
                    }
                    var             key = byProtein ? peptide.ProteinName : peptide.Sequence;
                    IList <RowData> list;
                    if (!groupedRowDatas.TryGetValue(key, out list))
                    {
                        list = new List <RowData>();
                        groupedRowDatas.Add(key, list);
                    }
                    list.Add(rowData);
                }
                var resultRows = new List <ResultRow>();
                foreach (var entry in groupedRowDatas)
                {
                    resultRows.Add(GetResultRow(entry.Value, byProtein));
                }
                dataGridView1.Rows.Clear();
                if (resultRows.Count > 0)
                {
                    dataGridView1.Rows.Add(resultRows.Count());
                    for (int iRow = 0; iRow < resultRows.Count; iRow++)
                    {
                        var resultRow = resultRows[iRow];
                        var row       = dataGridView1.Rows[iRow];
                        row.Cells[colPeptide.Index].Value     = resultRow.PeptideSequence;
                        row.Cells[colProteinName.Index].Value = resultRow.ProteinName;
                        row.Cells[colProteinKey.Index].Value  = resultRow.ProteinKey;
                        row.Cells[colProteinDescription.Index].Value
                            = row.Cells[colProteinDescription.Index].ToolTipText = resultRow.ProteinDescription;
                        foreach (var entry in resultRow.ResultDatas)
                        {
                            Columns columns;
                            if (!_columnsDict.TryGetValue(entry.Key, out columns))
                            {
                                string cohortName = entry.Key.Cohort ?? "";
                                if (entry.Key.TimePoint != null)
                                {
                                    cohortName += " " + entry.Key.TimePoint;
                                }
                                columns = AddColumns(string.IsNullOrEmpty(cohortName) ? "" : cohortName + " ");
                                _columnsDict.Add(entry.Key, columns);
                            }
                            row.Cells[columns.ReplicateCountColumn.Index].Value = entry.Value.TracerPercentByArea.Length;
                            SetColumnValues(columns.TracerAmountsByAreaColumns, row, entry.Value.TracerPercentByArea);
                            SetColumnValues(columns.TracerAmountsBySlopeColumns, row, entry.Value.TracerPercentBySlope);
                            SetColumnValues(columns.PrecursorEnrichmentColumns, row, entry.Value.PrecursorEnrichment);
                            SetColumnValues(columns.TurnoverColumns, row, entry.Value.Turnover);
                            SetColumnValues(columns.AreaUnderCurveColumns, row, entry.Value.AreaUnderCurve);
                            lstResultData.Add(entry.Value);
                            activeCohortKeys.Add(entry.Key);
                        }
                    }
                }
            }
            dataGridViewSummary.Rows.Clear();
            SetSummary("Tracer % (area)", lstResultData.Select(r => r.TracerPercentByArea));
            SetSummary("Tracer % (slope)", lstResultData.Select(r => r.TracerPercentBySlope));
            SetSummary("Precursor Enrichment", lstResultData.Select(r => r.PrecursorEnrichment));
            SetSummary("Turnover", lstResultData.Select(r => r.Turnover));
            SetSummary("Area Under Curve", lstResultData.Select(r => r.AreaUnderCurve));
            foreach (var entry in _columnsDict.ToArray())
            {
                if (!activeCohortKeys.Contains(entry.Key))
                {
                    dataGridView1.Columns.Remove(entry.Value.ReplicateCountColumn);
                    RemoveDataColumns(entry.Value.TracerAmountsByAreaColumns);
                    RemoveDataColumns(entry.Value.TracerAmountsBySlopeColumns);
                    RemoveDataColumns(entry.Value.PrecursorEnrichmentColumns);
                    RemoveDataColumns(entry.Value.TurnoverColumns);
                    RemoveDataColumns(entry.Value.AreaUnderCurveColumns);
                    _columnsDict.Remove(entry.Key);
                }
            }
            UpdateColumnVisibility();
        }
Exemplo n.º 26
0
 private void BtnRequeryOnClick(object sender, EventArgs e)
 {
     var halfLifeSettings = HalfLifeSettings;
     Settings.Default.Reload();
     Settings.Default.HalfLifeSettings = halfLifeSettings;
     Settings.Default.Save();
     var calculator = new HalfLifeCalculator(Workspace, halfLifeSettings)
                          {
                              ExcludedTimePoints = UpdateTimePoints(),
                          };
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
     {
         var longOperationBroker = new LongOperationBroker(calculator.Run, longWaitDialog);
         if (!longOperationBroker.LaunchJob())
         {
             return;
         }
     }
     var viewInfo = bindingSource1.ViewInfo;
     var rows = calculator.ResultRows.Select(row => new ResultRow(this, row)).ToArray();
     if (viewInfo == null || "default" == viewInfo.Name)
     {
         viewInfo = new ViewInfo(ColumnDescriptor.RootColumn(bindingSource1.ViewInfo.DataSchema, typeof(ResultRow)),
             GetDefaultViewSpec(calculator.ByProtein));
         bindingSource1.SetViewContext(GetViewContext(rows), viewInfo);
     }
     bindingSource1.RowSource = rows;
 }
Exemplo n.º 27
0
 public override bool RunLongJob(Control owner, Action<IProgressMonitor> job)
 {
     using (var longWaitDialog = new LongWaitDialog(owner.TopLevelControl, Program.AppName))
     {
         var longOperationBroker =
             new LongOperationBroker(
                 broker =>
                 job.Invoke(ProgressMonitorImpl.NewProgressMonitorImpl(new ProgressStatus("Working"),
                                                                       iProgress =>
                                                                           {
                                                                               try
                                                                               {
                                                                                   broker.
                                                                                       UpdateStatusMessage(
                                                                                           iProgress + "% complete");
                                                                                   return true;
                                                                               }
                                                                               catch (JobCancelledException)
                                                                               {
                                                                                   return false;
                                                                               }
                                                                           })), longWaitDialog);
         longOperationBroker.LaunchJob();
         return !longOperationBroker.WasCancelled;
     }
 }
Exemplo n.º 28
0
 // ReSharper disable AccessToDisposedClosure
 private void UpdateWorkspaceVersion(WorkspaceChangeArgs v)
 {
     using (var session = Workspace.OpenSession())
     {
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Updating Workspace"))
         {
             var broker = new LongOperationBroker(b =>
             {
                 session.BeginTransaction();
                 Workspace.UpdateWorkspaceVersion(b, session, v);
                 session.Transaction.Commit();
             }, longWaitDialog, session);
             broker.LaunchJob();
         }
     }
 }
Exemplo n.º 29
0
 private void BtnOkOnClick(object sender, EventArgs e)
 {
     int unreadableFiles = 0;
     int checkedItems = 0;
     TopographForm.Instance.EnsureDataDirectory(Workspace);
     var msDataFiles = new List<MsDataFile>();
     for (int i = 0; i < MsDataFiles.Count; i++)
     {
         if (!checkedListBox1.GetItemChecked(i))
         {
             continue;
         }
         checkedItems++;
         var msDataFile = MsDataFiles[i];
         string errorMessage;
         if (TopographForm.TryInitMsDataFile(this, msDataFile, out errorMessage))
         {
             msDataFiles.Add(msDataFile);
         }
         else
         {
             unreadableFiles++;
         }
     }
     if (checkedItems == 0)
     {
         return;
     }
     if (unreadableFiles > 0)
     {
         if (msDataFiles.Count == 0)
         {
             var dlgResult = MessageBox.Show(this,
                                             unreadableFiles +
                                             " of the data files could not be read.  Do you want to process the remaining files?",
                                             Program.AppName, MessageBoxButtons.YesNoCancel);
             if (dlgResult == DialogResult.Cancel)
             {
                 return;
             }
             if (dlgResult == DialogResult.No)
             {
                 Close();
                 return;
             }
         }
         else
         {
             var dlgResult = MessageBox.Show("None of the selected files could be read.  Make sure the data directory setting is correct.", Program.AppName, MessageBoxButtons.OKCancel);
             if (dlgResult == DialogResult.OK)
             {
                 Close();
             }
             return;
         }
     }
     if (msDataFiles.Count > 0)
     {
         var job = new Task(PeptideAnalysis, msDataFiles);
         using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Creating file analyses"))
         {
             new LongOperationBroker(job.Run, longWaitDialog).LaunchJob();
         }
         Workspace.DatabasePoller.Wake();
     }
     Close();
 }
Exemplo n.º 30
0
 private void BtnRequeryOnClick(object sender, EventArgs e)
 {
     var calculator = new HalfLifeCalculator(Workspace, HalfLifeSettings.Default)
     {
         MaxResults = MaxResults,
     };
     using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Calculating Half Lives"))
     {
         var longOperationBroker = new LongOperationBroker(calculator.Run, longWaitDialog);
         if (!longOperationBroker.LaunchJob())
         {
             return;
         }
     }
     UpdateRows(calculator);
 }
Exemplo n.º 31
0
        private void btnRequery_Click(object sender, EventArgs e)
        {
            var lstResultData = new List<ResultData>();
            var activeCohortKeys = new HashSet<CohortKey>();
            using (var session = Workspace.OpenSession())
            {
                var query = session.CreateQuery("SELECT d.PeptideFileAnalysis.Id,"
                                                + "\nd.PeptideFileAnalysis.PeptideAnalysis.Peptide.Id,"
                                                + "\nd.PeptideFileAnalysis.MsDataFile.TimePoint,"
                                                + "\nd.PeptideFileAnalysis.MsDataFile.Cohort,"
                                                + "\nd.PeptideFileAnalysis.MsDataFile.Sample,"
                                                + "\nd.TracerPercent,"
                                                + "\nd.TotalArea,"
                                                + "\nd.RatioToBase,"
                                                + "\nd.PeptideFileAnalysis.Turnover * 100,"
                                                + "\nd.PeptideFileAnalysis.PrecursorEnrichment * 100"
                                                + "\nFROM DbPeak d"
                                                + "\nWHERE d.PeptideFileAnalysis.DeconvolutionScore > :minScore "
                                                + "\nAND d.PeptideFileAnalysis.ValidationStatus <> " + (int) ValidationStatus.reject);
                if (!string.IsNullOrEmpty(tbxMinScore.Text))
                {
                    query.SetParameter("minScore", double.Parse(tbxMinScore.Text));
                }
                else
                {
                    query.SetParameter("minScore", 0.0);
                }
                var rowDataArrays = new List<object[]>();
                using (var longWaitDialog = new LongWaitDialog(TopLevelControl, "Executing query"))
                {
                    var broker = new LongOperationBroker(b => query.List(rowDataArrays),
                        longWaitDialog, session);
                    if (!broker.LaunchJob())
                    {
                        return;
                    }

                }
                bool groupByCohort = cbxGroupByCohort.Checked;
                bool groupByTimePoint = cbxGroupByTimePoint.Checked;
                bool groupBySample = cbxGroupBySample.Checked;
                var rawRows = rowDataArrays.Select(r => new RawRow()
                                                             {
                                                                 PeptideFileAnalysisId =  (long) r[0],
                                                                 PeptideId = (long) r[1],
                                                                 CohortKey = new CohortKey(
                                                                     groupByCohort ? (string) r[3] : null,
                                                                     groupByTimePoint ? (double?) r[2] : null,
                                                                     groupBySample ? (string) r[4] : null),
                                                                 TracerPercent = (double) r[5],
                                                                 TotalArea = (double) r[6],
                                                                 RatioToBase = (double) r[7],
                                                                 Turnover = (double?) r[8],
                                                                 PrecursorEnrichment = (double?) r[9],
                                                             });
                var rowDatas = rawRows.GroupBy(r => r.PeptideFileAnalysisId, (id,peaks) => AggregatePeaks(id, peaks));
                var byProtein = cbxByProtein.Checked;
                var groupedRowDatas = new Dictionary<string, IList<RowData>>();
                foreach (var rowData in rowDatas)
                {
                    var peptide = Workspace.Peptides.GetChild(rowData.PeptideId);
                    if (peptide == null)
                    {
                        continue;
                    }
                    var key = byProtein ? peptide.ProteinName : peptide.Sequence;
                    IList<RowData> list;
                    if (!groupedRowDatas.TryGetValue(key, out list))
                    {
                        list = new List<RowData>();
                        groupedRowDatas.Add(key, list);
                    }
                    list.Add(rowData);
                }
                var resultRows = new List<ResultRow>();
                foreach (var entry in groupedRowDatas)
                {
                    resultRows.Add(GetResultRow(entry.Value, byProtein));
                }
                dataGridView1.Rows.Clear();
                if (resultRows.Count > 0)
                {
                    dataGridView1.Rows.Add(resultRows.Count());
                    for (int iRow = 0; iRow < resultRows.Count; iRow ++)
                    {
                        var resultRow = resultRows[iRow];
                        var row = dataGridView1.Rows[iRow];
                        row.Cells[colPeptide.Index].Value = resultRow.PeptideSequence;
                        row.Cells[colProteinName.Index].Value = resultRow.ProteinName;
                        row.Cells[colProteinKey.Index].Value = resultRow.ProteinKey;
                        row.Cells[colProteinDescription.Index].Value
                            = row.Cells[colProteinDescription.Index].ToolTipText = resultRow.ProteinDescription;
                        foreach (var entry in resultRow.ResultDatas)
                        {
                            Columns columns;
                            if (!_columnsDict.TryGetValue(entry.Key, out columns))
                            {
                                string cohortName = entry.Key.Cohort ?? "";
                                if (entry.Key.TimePoint != null)
                                {
                                    cohortName += " " + entry.Key.TimePoint;
                                }
                                columns = AddColumns(string.IsNullOrEmpty(cohortName) ? "" : cohortName + " ");
                                _columnsDict.Add(entry.Key, columns);
                            }
                            row.Cells[columns.ReplicateCountColumn.Index].Value = entry.Value.TracerPercentByArea.Length;
                            SetColumnValues(columns.TracerAmountsByAreaColumns, row, entry.Value.TracerPercentByArea);
                            SetColumnValues(columns.TracerAmountsBySlopeColumns, row, entry.Value.TracerPercentBySlope);
                            SetColumnValues(columns.PrecursorEnrichmentColumns, row, entry.Value.PrecursorEnrichment);
                            SetColumnValues(columns.TurnoverColumns, row, entry.Value.Turnover);
                            SetColumnValues(columns.AreaUnderCurveColumns, row, entry.Value.AreaUnderCurve);
                            lstResultData.Add(entry.Value);
                            activeCohortKeys.Add(entry.Key);
                        }
                    }
                }
            }
            dataGridViewSummary.Rows.Clear();
            SetSummary("Tracer % (area)", lstResultData.Select(r=>r.TracerPercentByArea));
            SetSummary("Tracer % (slope)", lstResultData.Select(r => r.TracerPercentBySlope));
            SetSummary("Precursor Enrichment", lstResultData.Select(r => r.PrecursorEnrichment));
            SetSummary("Turnover", lstResultData.Select(r => r.Turnover));
            SetSummary("Area Under Curve", lstResultData.Select(r => r.AreaUnderCurve));
            foreach (var entry in _columnsDict.ToArray())
            {
                if (!activeCohortKeys.Contains(entry.Key))
                {
                    dataGridView1.Columns.Remove(entry.Value.ReplicateCountColumn);
                    RemoveDataColumns(entry.Value.TracerAmountsByAreaColumns);
                    RemoveDataColumns(entry.Value.TracerAmountsBySlopeColumns);
                    RemoveDataColumns(entry.Value.PrecursorEnrichmentColumns);
                    RemoveDataColumns(entry.Value.TurnoverColumns);
                    RemoveDataColumns(entry.Value.AreaUnderCurveColumns);
                    _columnsDict.Remove(entry.Key);
                }
            }
            UpdateColumnVisibility();
        }