コード例 #1
0
 public Chromatogram(DbChromatogram dbChromatogram)
     : this()
 {
     MzMin = dbChromatogram.MzMin;
     MzMax = dbChromatogram.MzMax;
     ChromatogramPoints = ImmutableList.ValueOf(dbChromatogram.ChromatogramPoints);
 }
コード例 #2
0
 private void SaveChromatograms(ICollection <AnalysisChromatograms> analyses, MsDataFile msDataFile)
 {
     using (ISession session = workspace.OpenWriteSession())
     {
         ITransaction transaction = session.BeginTransaction();
         foreach (AnalysisChromatograms analysis in analyses)
         {
             var dbPeptideAnalysis = session.Get <DbPeptideFileAnalysis>(analysis.PeptideFileAnalysis.Id);
             if (dbPeptideAnalysis == null)
             {
                 continue;
             }
             dbPeptideAnalysis.Times            = analysis.Times.ToArray();
             dbPeptideAnalysis.ScanIndexes      = analysis.ScanIndexes.ToArray();
             dbPeptideAnalysis.HasChromatograms = true;
             session.Update(dbPeptideAnalysis);
             var dbChromatogramDict = dbPeptideAnalysis.GetChromatogramDict();
             foreach (Chromatogram chromatogram in analysis.Chromatograms)
             {
                 DbChromatogram dbChromatogram;
                 if (!dbChromatogramDict.TryGetValue(chromatogram.MzKey, out dbChromatogram))
                 {
                     dbChromatogram = new DbChromatogram
                     {
                         PeptideFileAnalysis = dbPeptideAnalysis,
                         MzKey = chromatogram.MzKey,
                     };
                 }
                 dbChromatogram.IntensitiesBytes = ArrayConverter.ToBytes(chromatogram.Intensities.ToArray());
                 dbChromatogram.PeakMzsBytes     = ArrayConverter.ToBytes(chromatogram.PeakMzs.ToArray());
                 dbChromatogram.Mz = chromatogram.Mz;
                 session.SaveOrUpdate(dbChromatogram);
             }
         }
         if (msDataFile != null)
         {
             msDataFile.MsDataFileData.Save(session);
         }
         transaction.Commit();
     }
     foreach (var analysis in analyses)
     {
         Debug.Assert(_activePeptideFileAnalysisIds.Contains(analysis.PeptideFileAnalysis.Id.Value));
         analysis.PeptideFileAnalysis.HasChromatograms = true;
     }
 }
コード例 #3
0
 private void SaveChromatograms(ChromatogramTask chromatogramTask, ICollection<AnalysisChromatograms> analyses, bool finished)
 {
     if (analyses.Count == 0)
     {
         return;
     }
     if (!IsRunning())
     {
         return;
     }
     _workspace.RunOnEventQueue(() =>
                             {
                                 if (
                                     chromatogramTask.Workspace.CompareSettings(_workspace)
                                                     .HasChromatogramMassChange)
                                 {
                                     return;
                                 }
                                 foreach (var analysisChromatograms in analyses)
                                 {
                                     PeptideAnalysis peptideAnalysis;
                                     _workspace.PeptideAnalyses.TryGetValue(
                                         analysisChromatograms.PeptideAnalysisId, out peptideAnalysis);
                                     if (peptideAnalysis == null ||
                                         0 == peptideAnalysis.GetChromatogramRefCount())
                                     {
                                         continue;
                                     }
                                     var peptideFileAnalysis =
                                         peptideAnalysis.GetFileAnalysis(
                                             analysisChromatograms.PeptideFileAnalysisId);
                                     if (peptideFileAnalysis == null)
                                     {
                                         continue;
                                     }
                                     peptideFileAnalysis.SetChromatograms(analysisChromatograms);
                                 }
                             });
     if (!chromatogramTask.CanSave())
     {
         return;
     }
     using (_session = _workspace.OpenWriteSession())
     {
         // TODO(nicksh)
     //                if (chromatogramTask.WorkspaceChange.MassVersion != _workspace.SavedWorkspaceChange.MassVersion)
     //                {
     //                    return;
     //                }
         _session.BeginTransaction();
         foreach (AnalysisChromatograms analysis in analyses)
         {
             if (!IsRunning())
             {
                 return;
             }
             var dbPeptideFileAnalysis = _session.Get<DbPeptideFileAnalysis>(analysis.PeptideFileAnalysisId);
             if (dbPeptideFileAnalysis == null)
             {
                 continue;
             }
             if (analysis.MinCharge != dbPeptideFileAnalysis.PeptideAnalysis.MinCharge
                 || analysis.MaxCharge != dbPeptideFileAnalysis.PeptideAnalysis.MaxCharge)
             {
                 continue;
             }
             foreach (DbChromatogramSet dbChromatogramSet in _session.CreateCriteria(typeof(DbChromatogramSet))
                 .Add(Restrictions.Eq("PeptideFileAnalysis", dbPeptideFileAnalysis)).List())
             {
                 foreach (DbChromatogram dbChromatogram in _session.CreateCriteria(typeof(DbChromatogram))
                     .Add(Restrictions.Eq("ChromatogramSet", dbChromatogramSet)).List())
                 {
                     _session.Delete(dbChromatogram);
                 }
                 _session.Delete(dbChromatogramSet);
             }
             dbPeptideFileAnalysis.ChromatogramSet = null;
             _session.Update(dbPeptideFileAnalysis);
             _session.Flush();
             dbPeptideFileAnalysis.ChromatogramSet = new DbChromatogramSet
                                   {
                                       PeptideFileAnalysis = dbPeptideFileAnalysis,
                                       Times = analysis.Times.ToArray(),
                                       ScanIndexes = analysis.ScanIndexes.ToArray(),
                                       ChromatogramCount = analysis.Chromatograms.Count,
                                   };
             bool noPoints = false;
             if (dbPeptideFileAnalysis.ChromatogramSet.Times.Length == 0)
             {
                 noPoints = true;
                 dbPeptideFileAnalysis.ChromatogramSet.Times = new double[]{0};
                 dbPeptideFileAnalysis.ChromatogramSet.ScanIndexes = new int[]{0};
             }
             _session.Save(dbPeptideFileAnalysis.ChromatogramSet);
             foreach (Chromatogram chromatogram in analysis.Chromatograms)
             {
                 DbChromatogram dbChromatogram = new DbChromatogram
                                          {
                                              ChromatogramSet = dbPeptideFileAnalysis.ChromatogramSet,
                                              MzKey = chromatogram.MzKey,
                                              ChromatogramPoints = chromatogram.Points,
                                              MzRange = chromatogram.MzRange,
                                          };
                 if (noPoints)
                 {
                     dbChromatogram.ChromatogramPoints = new []{new ChromatogramPoint(), };
                 }
                 _session.Save(dbChromatogram);
             }
             _session.Update(dbPeptideFileAnalysis);
             _session.Save(new DbChangeLog(_workspace, dbPeptideFileAnalysis.PeptideAnalysis));
         }
         if (chromatogramTask.MsDataFile.IsBinaryDirty)
         {
             chromatogramTask.MsDataFile.SaveBinary(_session);
         }
         chromatogramTask.UpdateLock(_session);
         _session.Transaction.Commit();
     }
 }
コード例 #4
0
        private void SaveChromatograms(ChromatogramTask chromatogramTask, ICollection <AnalysisChromatograms> analyses, bool finished)
        {
            if (analyses.Count == 0)
            {
                return;
            }
            if (!IsRunning())
            {
                return;
            }
            _workspace.RunOnEventQueue(() =>
            {
                if (
                    chromatogramTask.Workspace.CompareSettings(_workspace)
                    .HasChromatogramMassChange)
                {
                    return;
                }
                foreach (var analysisChromatograms in analyses)
                {
                    PeptideAnalysis peptideAnalysis;
                    _workspace.PeptideAnalyses.TryGetValue(
                        analysisChromatograms.PeptideAnalysisId, out peptideAnalysis);
                    if (peptideAnalysis == null ||
                        0 == peptideAnalysis.GetChromatogramRefCount())
                    {
                        continue;
                    }
                    var peptideFileAnalysis =
                        peptideAnalysis.GetFileAnalysis(
                            analysisChromatograms.PeptideFileAnalysisId);
                    if (peptideFileAnalysis == null)
                    {
                        continue;
                    }
                    peptideFileAnalysis.SetChromatograms(analysisChromatograms);
                }
            });
            if (!chromatogramTask.CanSave())
            {
                return;
            }
            using (_session = _workspace.OpenWriteSession())
            {
                // TODO(nicksh)
//                if (chromatogramTask.WorkspaceChange.MassVersion != _workspace.SavedWorkspaceChange.MassVersion)
//                {
//                    return;
//                }
                _session.BeginTransaction();
                foreach (AnalysisChromatograms analysis in analyses)
                {
                    if (!IsRunning())
                    {
                        return;
                    }
                    var dbPeptideFileAnalysis = _session.Get <DbPeptideFileAnalysis>(analysis.PeptideFileAnalysisId);
                    if (dbPeptideFileAnalysis == null)
                    {
                        continue;
                    }
                    if (analysis.MinCharge != dbPeptideFileAnalysis.PeptideAnalysis.MinCharge ||
                        analysis.MaxCharge != dbPeptideFileAnalysis.PeptideAnalysis.MaxCharge)
                    {
                        continue;
                    }
                    foreach (DbChromatogramSet dbChromatogramSet in _session.CreateCriteria(typeof(DbChromatogramSet))
                             .Add(Restrictions.Eq("PeptideFileAnalysis", dbPeptideFileAnalysis)).List())
                    {
                        foreach (DbChromatogram dbChromatogram in _session.CreateCriteria(typeof(DbChromatogram))
                                 .Add(Restrictions.Eq("ChromatogramSet", dbChromatogramSet)).List())
                        {
                            _session.Delete(dbChromatogram);
                        }
                        _session.Delete(dbChromatogramSet);
                    }
                    dbPeptideFileAnalysis.ChromatogramSet = null;
                    _session.Update(dbPeptideFileAnalysis);
                    _session.Flush();
                    dbPeptideFileAnalysis.ChromatogramSet = new DbChromatogramSet
                    {
                        PeptideFileAnalysis = dbPeptideFileAnalysis,
                        Times             = analysis.Times.ToArray(),
                        ScanIndexes       = analysis.ScanIndexes.ToArray(),
                        ChromatogramCount = analysis.Chromatograms.Count,
                    };
                    bool noPoints = false;
                    if (dbPeptideFileAnalysis.ChromatogramSet.Times.Length == 0)
                    {
                        noPoints = true;
                        dbPeptideFileAnalysis.ChromatogramSet.Times       = new double[] { 0 };
                        dbPeptideFileAnalysis.ChromatogramSet.ScanIndexes = new int[] { 0 };
                    }
                    _session.Save(dbPeptideFileAnalysis.ChromatogramSet);
                    foreach (Chromatogram chromatogram in analysis.Chromatograms)
                    {
                        DbChromatogram dbChromatogram = new DbChromatogram
                        {
                            ChromatogramSet    = dbPeptideFileAnalysis.ChromatogramSet,
                            MzKey              = chromatogram.MzKey,
                            ChromatogramPoints = chromatogram.Points,
                            MzRange            = chromatogram.MzRange,
                        };
                        if (noPoints)
                        {
                            dbChromatogram.ChromatogramPoints = new [] { new ChromatogramPoint(), };
                        }
                        _session.Save(dbChromatogram);
                    }
                    _session.Update(dbPeptideFileAnalysis);
                    _session.Save(new DbChangeLog(_workspace, dbPeptideFileAnalysis.PeptideAnalysis));
                }
                if (chromatogramTask.MsDataFile.IsBinaryDirty)
                {
                    chromatogramTask.MsDataFile.SaveBinary(_session);
                }
                chromatogramTask.UpdateLock(_session);
                _session.Transaction.Commit();
            }
        }
コード例 #5
0
 public Chromatogram(DbChromatogram dbChromatogram)
     : this()
 {
     MzMin = dbChromatogram.MzMin;
     MzMax = dbChromatogram.MzMax;
     ChromatogramPoints = ImmutableList.ValueOf(dbChromatogram.ChromatogramPoints);
 }
コード例 #6
0
 private void SaveChromatograms(ICollection<AnalysisChromatograms> analyses, MsDataFile msDataFile)
 {
     using (ISession session = workspace.OpenWriteSession())
     {
         ITransaction transaction = session.BeginTransaction();
         foreach (AnalysisChromatograms analysis in analyses)
         {
             var dbPeptideAnalysis = session.Get<DbPeptideFileAnalysis>(analysis.PeptideFileAnalysis.Id);
             if (dbPeptideAnalysis == null)
             {
                 continue;
             }
             dbPeptideAnalysis.Times = analysis.Times.ToArray();
             dbPeptideAnalysis.ScanIndexes = analysis.ScanIndexes.ToArray();
             dbPeptideAnalysis.HasChromatograms = true;
             session.Update(dbPeptideAnalysis);
             var dbChromatogramDict = dbPeptideAnalysis.GetChromatogramDict();
             foreach (Chromatogram chromatogram in analysis.Chromatograms)
             {
                 DbChromatogram dbChromatogram;
                 if (!dbChromatogramDict.TryGetValue(chromatogram.MzKey, out dbChromatogram))
                 {
                     dbChromatogram = new DbChromatogram
                                          {
                                              PeptideFileAnalysis = dbPeptideAnalysis,
                                              MzKey = chromatogram.MzKey,
                                          };
                 }
                 dbChromatogram.IntensitiesBytes = ArrayConverter.ToBytes(chromatogram.Intensities.ToArray());
                 dbChromatogram.PeakMzsBytes = ArrayConverter.ToBytes(chromatogram.PeakMzs.ToArray());
                 dbChromatogram.Mz = chromatogram.Mz;
                 session.SaveOrUpdate(dbChromatogram);
             }
         }
         if (msDataFile != null)
         {
             msDataFile.MsDataFileData.Save(session);
         }
         transaction.Commit();
     }
     foreach (var analysis in analyses)
     {
         Debug.Assert(_activePeptideFileAnalysisIds.Contains(analysis.PeptideFileAnalysis.Id.Value));
         analysis.PeptideFileAnalysis.HasChromatograms = true;
     }
 }