Ejemplo n.º 1
0
        private static IDictionary <long, IDictionary <long, PeptideFileAnalysisData> > QueryFileAnalyses(ISession session, IdPredicate peptideAnalysisIds)
        {
            var    peptideFileAnalyses = new List <DbPeptideFileAnalysis>();
            string selectFileAnalyses  = "FROM " + typeof(DbPeptideFileAnalysis) + " T WHERE " + peptideAnalysisIds.GetSql("T.PeptideAnalysis");

            session.CreateQuery(selectFileAnalyses).List(peptideFileAnalyses);

            IDictionary <long, IList <PeptideFileAnalysisData.Peak> > allPeaks = QueryPeaks(session, peptideAnalysisIds);
            var result = new Dictionary <long, IDictionary <long, PeptideFileAnalysisData> >();

            foreach (var peptideFileAnalysis in peptideFileAnalyses)
            {
                IDictionary <long, PeptideFileAnalysisData> dict;
                if (!result.TryGetValue(peptideFileAnalysis.PeptideAnalysis.GetId(), out dict))
                {
                    dict = new Dictionary <long, PeptideFileAnalysisData>();
                    result.Add(peptideFileAnalysis.PeptideAnalysis.GetId(), dict);
                }
                IList <PeptideFileAnalysisData.Peak> peaks;
                allPeaks.TryGetValue(peptideFileAnalysis.GetId(), out peaks);
                dict.Add(peptideFileAnalysis.Id.GetValueOrDefault(), new PeptideFileAnalysisData(peptideFileAnalysis, peaks ?? new PeptideFileAnalysisData.Peak[0]));
            }
            return(result);
        }
Ejemplo n.º 2
0
        private static IDictionary <long, IList <PeptideFileAnalysisData.Peak> > QueryPeaks(ISession session,
                                                                                            IdPredicate peptideAnalysisIds)
        {
            var    result = new Dictionary <long, IList <PeptideFileAnalysisData.Peak> >();
            long?  peptideFileAnalysisId = null;
            var    peaks       = new List <PeptideFileAnalysisData.Peak>();
            string selectPeaks = "SELECT T.PeptideFileAnalysis.Id, StartTime, EndTime, Area FROM " + typeof(DbPeak) + " T"
                                 + "\nWHERE " + peptideAnalysisIds.GetSql("T.PeptideFileAnalysis.PeptideAnalysis.Id")
                                 + "\nORDER BY T.PeptideFileAnalysis.Id, T.PeakIndex";
            var query = session.CreateQuery(selectPeaks);

            foreach (var row in query.List <object[]>())
            {
                if (!Equals(row[0], peptideFileAnalysisId))
                {
                    if (null != peptideFileAnalysisId)
                    {
                        result.Add(peptideFileAnalysisId.Value, ImmutableList.ValueOf(peaks));
                        peaks.Clear();
                    }
                    peptideFileAnalysisId = (long)row[0];
                }
                peaks.Add(new PeptideFileAnalysisData.Peak
                {
                    StartTime = Convert.ToDouble(row[1]),
                    EndTime   = Convert.ToDouble(row[2]),
                    Area      = Convert.ToDouble(row[3]),
                });
            }
            if (null != peptideFileAnalysisId)
            {
                result.Add(peptideFileAnalysisId.Value, peaks);
            }
            return(result);
        }
Ejemplo n.º 3
0
        public static Dictionary <long, PeptideAnalysisData> Query(ISession session, IdPredicate peptideAnalysisIds, IdPredicate chromatogramsToSnapshot)
        {
            if (peptideAnalysisIds.AlwaysFalse)
            {
                return(new Dictionary <long, PeptideAnalysisData>());
            }
            string selectAnalyses  = "FROM " + typeof(DbPeptideAnalysis) + " T WHERE " + peptideAnalysisIds.GetSql("T.Id");
            var    query           = session.CreateQuery(selectAnalyses);
            var    peptideAnalyses = new List <DbPeptideAnalysis>();

            query.List(peptideAnalyses);
            var peptideAnalysisSnapshots = peptideAnalyses.ToDictionary(a => a.Id.GetValueOrDefault(), a => new PeptideAnalysisData(a));

            foreach (var entry in QueryFileAnalyses(session, peptideAnalysisIds))
            {
                PeptideAnalysisData snapshot;
                if (!peptideAnalysisSnapshots.TryGetValue(entry.Key, out snapshot))
                {
                    Trace.TraceWarning("DbPeptideAnalysis with Id {0} not found", entry.Key);
                    continue;
                }
                peptideAnalysisSnapshots[entry.Key] =
                    snapshot.SetFileAnalyses(ImmutableSortedList.FromValues(entry.Value));
            }

            if (!chromatogramsToSnapshot.AlwaysFalse)
            {
                var chromatogramSetsByFileAnalysisId = QueryChromatogramSets(session, chromatogramsToSnapshot);
                var peptideIds          = peptideAnalysisSnapshots.Values.Select(snapshot => snapshot.PeptideId).ToArray();
                var psmTimesByPeptideId = LoadPsmTimesByPeptideAndFile(session, peptideIds);
                foreach (var entry in peptideAnalysisSnapshots.ToArray())
                {
                    if (!chromatogramsToSnapshot.Matches(entry.Key))
                    {
                        continue;
                    }
                    var peptideAnalysisData = entry.Value;
                    IDictionary <long, PsmTimes> psmTimesByDataFileId;
                    psmTimesByPeptideId.TryGetValue(entry.Value.PeptideId, out psmTimesByDataFileId);
                    var fileAnalysisEntries = entry.Value.FileAnalyses.ToArray();
                    for (int i = 0; i < fileAnalysisEntries.Length; i++)
                    {
                        var pair         = fileAnalysisEntries[i];
                        var fileAnalysis = pair.Value;
                        ChromatogramSetData chromatogramSetData;
                        if (chromatogramSetsByFileAnalysisId.TryGetValue(pair.Key, out chromatogramSetData))
                        {
                            fileAnalysis = fileAnalysis.SetChromatogramSet(chromatogramSetData);
                        }
                        if (null != psmTimesByDataFileId)
                        {
                            PsmTimes psmTimes;
                            if (psmTimesByDataFileId.TryGetValue(pair.Value.MsDataFileId, out psmTimes))
                            {
                                fileAnalysis = fileAnalysis.SetPsmTimes(psmTimes);
                            }
                        }
                        fileAnalysisEntries[i] = new KeyValuePair <long, PeptideFileAnalysisData>(pair.Key, fileAnalysis);
                    }
                    peptideAnalysisData = peptideAnalysisData
                                          .SetFileAnalyses(ImmutableSortedList.FromValues(fileAnalysisEntries), true);
                    peptideAnalysisSnapshots[entry.Key] = peptideAnalysisData;
                }
            }
            return(peptideAnalysisSnapshots);
        }
Ejemplo n.º 4
0
        private static IDictionary <long, ChromatogramSetData> QueryChromatogramSets(ISession session, IdPredicate peptideAnalysisIds)
        {
            string selectChromatogramSets = "FROM " + typeof(DbChromatogramSet) + " T WHERE " + peptideAnalysisIds.GetSql("T.PeptideFileAnalysis.PeptideAnalysis.Id");
            string selectChromatograms    = "FROM " + typeof(DbChromatogram) + " T WHERE " + peptideAnalysisIds.GetSql("T.ChromatogramSet.PeptideFileAnalysis.PeptideAnalysis.Id");
            var    chromatograms          = session.CreateQuery(selectChromatograms).List <DbChromatogram>()
                                            .ToLookup(dbChromatogram => dbChromatogram.ChromatogramSet.GetId());
            var chromatogramSets = session.CreateQuery(selectChromatogramSets)
                                   .List <DbChromatogramSet>()
                                   .ToDictionary(dbChromatogramSet => dbChromatogramSet.PeptideFileAnalysis.GetId(),
                                                 dbChromatogramSet =>
                                                 new ChromatogramSetData(dbChromatogramSet, chromatograms[dbChromatogramSet.GetId()]));

            return(chromatogramSets);
        }
Ejemplo n.º 5
0
        public static Dictionary<long, PeptideAnalysisData> Query(ISession session, IdPredicate peptideAnalysisIds, IdPredicate chromatogramsToSnapshot)
        {
            if (peptideAnalysisIds.AlwaysFalse)
            {
                return new Dictionary<long, PeptideAnalysisData>();
            }
            string selectAnalyses = "FROM " + typeof (DbPeptideAnalysis) + " T WHERE " + peptideAnalysisIds.GetSql("T.Id");
            var query = session.CreateQuery(selectAnalyses);
            var peptideAnalyses = new List<DbPeptideAnalysis>();
            query.List(peptideAnalyses);
            var peptideAnalysisSnapshots = peptideAnalyses.ToDictionary(a=>a.Id.GetValueOrDefault(), a=>new PeptideAnalysisData(a));
            foreach (var entry in QueryFileAnalyses(session, peptideAnalysisIds))
            {
                PeptideAnalysisData snapshot;
                if (!peptideAnalysisSnapshots.TryGetValue(entry.Key, out snapshot))
                {
                    Trace.TraceWarning("DbPeptideAnalysis with Id {0} not found", entry.Key);
                    continue;
                }
                peptideAnalysisSnapshots[entry.Key] =
                    snapshot.SetFileAnalyses(ImmutableSortedList.FromValues(entry.Value));
            }

            if (!chromatogramsToSnapshot.AlwaysFalse)
            {
                var chromatogramSetsByFileAnalysisId = QueryChromatogramSets(session, chromatogramsToSnapshot);
                var peptideIds = peptideAnalysisSnapshots.Values.Select(snapshot => snapshot.PeptideId).ToArray();
                var psmTimesByPeptideId = LoadPsmTimesByPeptideAndFile(session, peptideIds);
                foreach (var entry in peptideAnalysisSnapshots.ToArray())
                {
                    if (!chromatogramsToSnapshot.Matches(entry.Key))
                    {
                        continue;
                    }
                    var peptideAnalysisData = entry.Value;
                    IDictionary<long, PsmTimes> psmTimesByDataFileId;
                    psmTimesByPeptideId.TryGetValue(entry.Value.PeptideId, out psmTimesByDataFileId);
                    var fileAnalysisEntries = entry.Value.FileAnalyses.ToArray();
                    for (int i = 0; i < fileAnalysisEntries.Length; i++)
                    {
                        var pair = fileAnalysisEntries[i];
                        var fileAnalysis = pair.Value;
                        ChromatogramSetData chromatogramSetData;
                        if (chromatogramSetsByFileAnalysisId.TryGetValue(pair.Key, out chromatogramSetData))
                        {
                            fileAnalysis = fileAnalysis.SetChromatogramSet(chromatogramSetData);
                        }
                        if (null != psmTimesByDataFileId)
                        {
                            PsmTimes psmTimes;
                            if (psmTimesByDataFileId.TryGetValue(pair.Value.MsDataFileId, out psmTimes))
                            {
                                fileAnalysis = fileAnalysis.SetPsmTimes(psmTimes);
                            }
                        }
                        fileAnalysisEntries[i] = new KeyValuePair<long, PeptideFileAnalysisData>(pair.Key, fileAnalysis);
                    }
                    peptideAnalysisData = peptideAnalysisData
                        .SetFileAnalyses(ImmutableSortedList.FromValues(fileAnalysisEntries), true);
                    peptideAnalysisSnapshots[entry.Key] = peptideAnalysisData;
                }
            }
            return peptideAnalysisSnapshots;
        }
Ejemplo n.º 6
0
 private static IDictionary<long, IList<PeptideFileAnalysisData.Peak>> QueryPeaks(ISession session,
     IdPredicate peptideAnalysisIds)
 {
     var result = new Dictionary<long, IList<PeptideFileAnalysisData.Peak>>();
     long? peptideFileAnalysisId = null;
     var peaks = new List<PeptideFileAnalysisData.Peak>();
     string selectPeaks = "SELECT T.PeptideFileAnalysis.Id, StartTime, EndTime, Area FROM " + typeof(DbPeak) + " T"
         +"\nWHERE " + peptideAnalysisIds.GetSql("T.PeptideFileAnalysis.PeptideAnalysis.Id")
         +"\nORDER BY T.PeptideFileAnalysis.Id, T.PeakIndex";
     var query = session.CreateQuery(selectPeaks);
     foreach (var row in query.List<object[]>())
     {
         if (!Equals(row[0], peptideFileAnalysisId))
         {
             if (null != peptideFileAnalysisId)
             {
                 result.Add(peptideFileAnalysisId.Value, ImmutableList.ValueOf(peaks));
                 peaks.Clear();
             }
             peptideFileAnalysisId = (long) row[0];
         }
         peaks.Add(new PeptideFileAnalysisData.Peak
                       {
                           StartTime = Convert.ToDouble(row[1]),
                           EndTime = Convert.ToDouble(row[2]),
                           Area = Convert.ToDouble(row[3]),
                       });
     }
     if (null != peptideFileAnalysisId)
     {
         result.Add(peptideFileAnalysisId.Value, peaks);
     }
     return result;
 }
Ejemplo n.º 7
0
        private static IDictionary<long, IDictionary<long, PeptideFileAnalysisData>> QueryFileAnalyses(ISession session, IdPredicate peptideAnalysisIds)
        {
            var peptideFileAnalyses = new List<DbPeptideFileAnalysis>();
            string selectFileAnalyses = "FROM " + typeof(DbPeptideFileAnalysis) + " T WHERE " + peptideAnalysisIds.GetSql("T.PeptideAnalysis");
            session.CreateQuery(selectFileAnalyses).List(peptideFileAnalyses);

            IDictionary<long, IList<PeptideFileAnalysisData.Peak>> allPeaks = QueryPeaks(session, peptideAnalysisIds);
            var result = new Dictionary<long, IDictionary<long, PeptideFileAnalysisData>>();
            foreach (var peptideFileAnalysis in peptideFileAnalyses)
            {
                IDictionary<long, PeptideFileAnalysisData> dict;
                if (!result.TryGetValue(peptideFileAnalysis.PeptideAnalysis.GetId(), out dict))
                {
                    dict = new Dictionary<long, PeptideFileAnalysisData>();
                    result.Add(peptideFileAnalysis.PeptideAnalysis.GetId(), dict);
                }
                IList<PeptideFileAnalysisData.Peak> peaks;
                allPeaks.TryGetValue(peptideFileAnalysis.GetId(), out peaks);
                dict.Add(peptideFileAnalysis.Id.GetValueOrDefault(), new PeptideFileAnalysisData(peptideFileAnalysis, peaks ?? new PeptideFileAnalysisData.Peak[0]));
            }
            return result;
        }
Ejemplo n.º 8
0
 private static IDictionary<long, ChromatogramSetData> QueryChromatogramSets(ISession session, IdPredicate peptideAnalysisIds)
 {
     string selectChromatogramSets = "FROM " + typeof(DbChromatogramSet) + " T WHERE " + peptideAnalysisIds.GetSql("T.PeptideFileAnalysis.PeptideAnalysis.Id");
     string selectChromatograms = "FROM " + typeof(DbChromatogram) + " T WHERE " + peptideAnalysisIds.GetSql("T.ChromatogramSet.PeptideFileAnalysis.PeptideAnalysis.Id");
     var chromatograms = session.CreateQuery(selectChromatograms).List<DbChromatogram>()
         .ToLookup(dbChromatogram => dbChromatogram.ChromatogramSet.GetId());
     var chromatogramSets = session.CreateQuery(selectChromatogramSets)
         .List<DbChromatogramSet>()
         .ToDictionary(dbChromatogramSet => dbChromatogramSet.PeptideFileAnalysis.GetId(),
                       dbChromatogramSet =>
                       new ChromatogramSetData(dbChromatogramSet, chromatograms[dbChromatogramSet.GetId()]));
     return chromatogramSets;
 }