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)); }
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); }
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)); }
public bool IsRejected(MsDataFile msDataFile) { return(_rejectedMsDataFileIds.Contains(msDataFile.Id)); }
public void RejectMsDataFile(MsDataFile msDataFile) { _rejectedMsDataFileIds.Add(msDataFile.Id); }
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())); } }
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(), }); }