Exemplo n.º 1
0
        public RegressionWithOutliers RegressTimes(MsDataFile target, out IList <String> modifiedPeptideSequences)
        {
            var targetDict  = target.GetRetentionTimesByModifiedSequence();
            var myTimes     = new List <double>();
            var targetTimes = new List <double>();

            modifiedPeptideSequences = new List <string>();
            using (var myEnumerator = GetRetentionTimesByModifiedSequence().GetEnumerator())
            {
                using (var targetEnumerator = target.GetRetentionTimesByModifiedSequence().GetEnumerator())
                {
                    bool bContinue = myEnumerator.MoveNext() && targetEnumerator.MoveNext();
                    while (bContinue)
                    {
                        int compare = targetDict.KeyComparer.Compare(myEnumerator.Current.Key, targetEnumerator.Current.Key);
                        if (compare == 0)
                        {
                            myTimes.Add(myEnumerator.Current.Value);
                            targetTimes.Add(targetEnumerator.Current.Value);
                            modifiedPeptideSequences.Add(myEnumerator.Current.Key);
                            bContinue = myEnumerator.MoveNext() && targetEnumerator.MoveNext();
                        }
                        else if (compare < 0)
                        {
                            bContinue = myEnumerator.MoveNext();
                        }
                        else
                        {
                            bContinue = targetEnumerator.MoveNext();
                        }
                    }
                }
            }
            return(new RegressionWithOutliers(myTimes, targetTimes));
        }
Exemplo n.º 2
0
        public RetentionTimeAlignment GetRetentionTimeAlignment(MsDataFile other)
        {
            var key            = new RetentionTimeAlignments.AlignmentKey(Id, other.Id);
            var alignmentValue = Workspace.RetentionTimeAlignments.GetAlignment(key);

            if (null != alignmentValue)
            {
                return(alignmentValue);
            }
            RetentionTimeAlignment result;
            IList <string>         regressedPeptides;
            var regressionWithOutliers = RegressTimes(other, out regressedPeptides);
            var refined = regressionWithOutliers.Refine();

            if (refined != null)
            {
                result = new RetentionTimeAlignment(refined.Slope, refined.Intercept);
            }
            else
            {
                result = RetentionTimeAlignment.Invalid;
            }
            Workspace.RetentionTimeAlignments.AddAlignment(key, result);
            return(result);
        }
Exemplo n.º 3
0
        private static KeyValuePair <double, double> DecideChromatogramStartEndTime(MsDataFile msDataFile, ILookup <long, double> psmTimesByDataFileId)
        {
            var workspace            = msDataFile.Workspace;
            var chromTimeAroundMs2Id = workspace.GetChromTimeAroundMs2Id();
            var timesInThisFile      = psmTimesByDataFileId[msDataFile.Id].ToArray();

            if (timesInThisFile.Length > 0)
            {
                return(new KeyValuePair <double, double>(timesInThisFile.Min() - chromTimeAroundMs2Id,
                                                         timesInThisFile.Max() + chromTimeAroundMs2Id));
            }
            var alignedTimes = new List <double>();

            foreach (var grouping in psmTimesByDataFileId)
            {
                MsDataFile otherFile;
                if (!workspace.MsDataFiles.TryGetValue(grouping.Key, out otherFile))
                {
                    continue;
                }
                var alignment = otherFile.GetRetentionTimeAlignment(msDataFile);
                if (alignment.IsInvalid)
                {
                    continue;
                }
                alignedTimes.Add(alignment.GetTargetTime(grouping.Min()));
                alignedTimes.Add(alignment.GetTargetTime(grouping.Max()));
            }
            if (alignedTimes.Count > 0)
            {
                return(new KeyValuePair <double, double>(alignedTimes.Min() - chromTimeAroundMs2Id,
                                                         alignedTimes.Max() + chromTimeAroundMs2Id));
            }
            var extraTime = workspace.GetExtraChromTimeWithoutMs2Id();
            var minTime   = psmTimesByDataFileId.SelectMany(grouping => grouping).Min();
            var maxTime   = psmTimesByDataFileId.SelectMany(grouping => grouping).Max();

            return(new KeyValuePair <double, double>(minTime - chromTimeAroundMs2Id - extraTime, maxTime + chromTimeAroundMs2Id + extraTime));
        }
Exemplo n.º 4
0
 public bool IsRejected(MsDataFile msDataFile)
 {
     return(_rejectedMsDataFileIds.Contains(msDataFile.Id));
 }
Exemplo n.º 5
0
 public void RejectMsDataFile(MsDataFile msDataFile)
 {
     _rejectedMsDataFileIds.Add(msDataFile.Id);
 }
Exemplo n.º 6
0
        public static PeptideFileAnalysis EnsurePeptideFileAnalysis(PeptideAnalysis peptideAnalysis, MsDataFile msDataFile)
        {
            var workspace = peptideAnalysis.Workspace;

            using (var session = workspace.OpenSession())
            {
                var criteria = session.CreateCriteria(typeof(DbPeptideFileAnalysis))
                               .Add(Restrictions.Eq("PeptideAnalysis", session.Load <DbPeptideAnalysis>(peptideAnalysis.Id)))
                               .Add(Restrictions.Eq("MsDataFile", session.Load <DbMsDataFile>(msDataFile.Id)));
                var dbPeptideAnalysis = (DbPeptideFileAnalysis)criteria.UniqueResult();
                if (dbPeptideAnalysis != null)
                {
                    return(GetPeptideFileAnalysis(peptideAnalysis, dbPeptideAnalysis));
                }
            }
            if (!msDataFile.HasTimes())
            {
                return(null);
            }
            using (var session = workspace.OpenWriteSession())
            {
                var dbPeptideAnalysis     = session.Load <DbPeptideAnalysis>(peptideAnalysis.Id);
                var psmTimesByDataFileId  = dbPeptideAnalysis.Peptide.PsmTimesByDataFileId(session);
                var dbPeptideFileAnalysis = CreatePeptideFileAnalysis(session, msDataFile, dbPeptideAnalysis, psmTimesByDataFileId);
                if (dbPeptideFileAnalysis == null)
                {
                    return(null);
                }

                session.BeginTransaction();
                session.Save(dbPeptideFileAnalysis);
                dbPeptideAnalysis.FileAnalysisCount++;
                session.Update(dbPeptideAnalysis);
                session.Save(new DbChangeLog(peptideAnalysis));
                session.Transaction.Commit();
                workspace.ChromatogramGenerator.SetRequeryPending();
                workspace.DatabasePoller.LoadAndMergeChanges(null);
                return(workspace.PeptideAnalyses.FindByKey(dbPeptideAnalysis.GetId())
                       .FileAnalyses.FindByKey(dbPeptideFileAnalysis.GetId()));
            }
        }
Exemplo n.º 7
0
        public static DbPeptideFileAnalysis CreatePeptideFileAnalysis(ISession session, MsDataFile msDataFile, DbPeptideAnalysis dbPeptideAnalysis, ILookup <long, double> psmTimesByDataFileId)
        {
            var dbMsDataFile = session.Load <DbMsDataFile>(msDataFile.Id);
            var startEndTime = DecideChromatogramStartEndTime(msDataFile, psmTimesByDataFileId);

            return(new DbPeptideFileAnalysis
            {
                ChromatogramStartTime = startEndTime.Key,
                ChromatogramEndTime = startEndTime.Value,
                MsDataFile = dbMsDataFile,
                PeptideAnalysis = dbPeptideAnalysis,
                AutoFindPeak = true,
                PsmCount = psmTimesByDataFileId[msDataFile.Id].Count(),
            });
        }