コード例 #1
0
        void CalculateAnalysisResults(ResultCalculatorTask task)
        {
            StatusMessage = "Processing " + task.PeptideAnalysis.Peptide.FullSequence;
            var peaksList           = new List <CalculatedPeaks>();
            var peptideFileAnalyses = task.PeptideAnalysis.FileAnalyses.ToArray();

            Array.Sort(peptideFileAnalyses,
                       (f1, f2) => (null == f1.PsmTimes).CompareTo(null == f2.PsmTimes)
                       );
            foreach (var peptideFileAnalysis in peptideFileAnalyses)
            {
                if (peptideFileAnalysis.ChromatogramSet == null ||
                    !peptideFileAnalysis.IsMzKeySetComplete(peptideFileAnalysis.ChromatogramSet.Chromatograms.Keys))
                {
                    continue;
                }
                var peaks = CalculatedPeaks.Calculate(peptideFileAnalysis, peaksList);
                if (peaks.Peaks.Count != 0)
                {
                    peaksList.Add(peaks);
                }
            }
            task.PeptideAnalysis.SetCalculatedPeaks(peaksList);
            _workspace.RunOnEventQueue(() => _workspace.RetentionTimeAlignments.MergeFrom(task.Workspace.RetentionTimeAlignments));
            if (task.CanSave())
            {
                using (_session = _workspace.OpenWriteSession())
                {
                    _session.BeginTransaction();
                    foreach (var peptideFileAnalysis in task.PeptideAnalysis.GetFileAnalyses(false))
                    {
                        if (peptideFileAnalysis.ChromatogramSet != null &&
                            !peptideFileAnalysis.IsMzKeySetComplete(peptideFileAnalysis.ChromatogramSet.Chromatograms.Keys))
                        {
                            var dbPeptideFileAnalysis = _session.Get <DbPeptideFileAnalysis>(peptideFileAnalysis.Id);
                            var dbChromatogramSet     = dbPeptideFileAnalysis.ChromatogramSet;
                            if (null != dbChromatogramSet)
                            {
                                foreach (var dbChromatogram in dbPeptideFileAnalysis.ChromatogramSet.Chromatograms)
                                {
                                    _session.Delete(dbChromatogram);
                                }
                                dbPeptideFileAnalysis.ChromatogramSet = null;
                                _session.Update(dbPeptideFileAnalysis);
                                _session.Delete(dbChromatogramSet);
                            }
                        }
                        if (null == peptideFileAnalysis.CalculatedPeaks)
                        {
                            var dbPeptideFileAnalysis = _session.Get <DbPeptideFileAnalysis>(peptideFileAnalysis.Id);
                            CalculatedPeaks.DeleteResults(_session, dbPeptideFileAnalysis);
                            _session.Update(dbPeptideFileAnalysis);
                        }
                        else
                        {
                            peptideFileAnalysis.CalculatedPeaks.Save(_session);
                        }
                    }
                    _session.Save(new DbChangeLog(task.PeptideAnalysis));
                    task.FinishLock(_session);
                    try
                    {
                        _session.Transaction.Commit();
                    }
// ReSharper disable RedundantCatchClause
// ReSharper disable UnusedVariable
                    catch (Exception e)
// ReSharper restore UnusedVariable
                    {
                        throw;
                    }
// ReSharper restore RedundantCatchClause
                }
            }
        }
コード例 #2
0
 void CalculateAnalysisResults(ResultCalculatorTask task)
 {
     StatusMessage = "Processing " + task.PeptideAnalysis.Peptide.FullSequence;
     var peaksList = new List<CalculatedPeaks>();
     var peptideFileAnalyses = task.PeptideAnalysis.FileAnalyses.ToArray();
     Array.Sort(peptideFileAnalyses,
         (f1, f2) => (null == f1.PsmTimes).CompareTo(null == f2.PsmTimes)
     );
     foreach (var peptideFileAnalysis in peptideFileAnalyses)
     {
         if (peptideFileAnalysis.ChromatogramSet == null
             || !peptideFileAnalysis.IsMzKeySetComplete(peptideFileAnalysis.ChromatogramSet.Chromatograms.Keys))
         {
             continue;
         }
         var peaks = CalculatedPeaks.Calculate(peptideFileAnalysis, peaksList);
         if (peaks.Peaks.Count != 0)
         {
             peaksList.Add(peaks);
         }
     }
     task.PeptideAnalysis.SetCalculatedPeaks(peaksList);
     _workspace.RunOnEventQueue(() => _workspace.RetentionTimeAlignments.MergeFrom(task.Workspace.RetentionTimeAlignments));
     if (task.CanSave())
     {
         using (_session = _workspace.OpenWriteSession())
         {
             _session.BeginTransaction();
             foreach (var peptideFileAnalysis in task.PeptideAnalysis.GetFileAnalyses(false))
             {
                 if (peptideFileAnalysis.ChromatogramSet != null &&
                     !peptideFileAnalysis.IsMzKeySetComplete(peptideFileAnalysis.ChromatogramSet.Chromatograms.Keys))
                 {
                     var dbPeptideFileAnalysis = _session.Get<DbPeptideFileAnalysis>(peptideFileAnalysis.Id);
                     var dbChromatogramSet = dbPeptideFileAnalysis.ChromatogramSet;
                     if (null != dbChromatogramSet)
                     {
                         foreach (var dbChromatogram in dbPeptideFileAnalysis.ChromatogramSet.Chromatograms)
                         {
                             _session.Delete(dbChromatogram);
                         }
                         dbPeptideFileAnalysis.ChromatogramSet = null;
                         _session.Update(dbPeptideFileAnalysis);
                         _session.Delete(dbChromatogramSet);
                     }
                 }
                 if (null == peptideFileAnalysis.CalculatedPeaks)
                 {
                     var dbPeptideFileAnalysis = _session.Get<DbPeptideFileAnalysis>(peptideFileAnalysis.Id);
                     CalculatedPeaks.DeleteResults(_session, dbPeptideFileAnalysis);
                     _session.Update(dbPeptideFileAnalysis);
                 }
                 else
                 {
                     peptideFileAnalysis.CalculatedPeaks.Save(_session);
                 }
             }
             _session.Save(new DbChangeLog(task.PeptideAnalysis));
             task.FinishLock(_session);
             try
             {
                 _session.Transaction.Commit();
             }
     // ReSharper disable RedundantCatchClause
     // ReSharper disable UnusedVariable
             catch (Exception e)
     // ReSharper restore UnusedVariable
             {
                 throw;
             }
     // ReSharper restore RedundantCatchClause
         }
     }
 }