public Chromatogram(DbChromatogram dbChromatogram) : this() { MzMin = dbChromatogram.MzMin; MzMax = dbChromatogram.MzMax; ChromatogramPoints = ImmutableList.ValueOf(dbChromatogram.ChromatogramPoints); }
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; } }
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(); } }
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(); } }
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; } }