Ejemplo n.º 1
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.º 2
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;
        }