public void TestSearching() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); var sw = new System.Diagnostics.Stopwatch(); sw.Start(); const string dbFile = @"\\proto-2\UnitTest_Files\InformedProteomics_TestFiles\MSPathFinderT\Short.fasta"; if (!File.Exists(dbFile)) { Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, dbFile); } var db = new FastaDatabase(dbFile); var searchableDb = new SearchableDatabase(db); //const string pattern = "NSGSHFCGGSLINSQWVVSAAH"; const string pattern = "FPTDDDDK"; var position = searchableDb.Search(pattern); Assert.True(position >= 0); Console.WriteLine("Position: {0}", position); Console.WriteLine("Matched indices: {0}", string.Join(",", searchableDb.FindAllMatchedSequenceIndices(pattern))); Console.WriteLine("Protein indices: {0}", string.Join(",", searchableDb.FindAllMatchedSequenceIndices(pattern).Select(i => db.GetOneBasedPositionInProtein(i)))); sw.Stop(); Console.WriteLine(@"{0:f4} sec", sw.Elapsed.TotalSeconds); }
public void TestTagMatching() { var methodName = MethodBase.GetCurrentMethod().Name; TestUtils.ShowStarting(methodName); // Parse sequence tags const string dataSet = @"H:\Research\QCShew_TopDown\Production\QC_Shew_Intact_26Sep14_Bane_C2Column3"; const int minTagLength = 8; var tagFileName = MassSpecDataReaderFactory.ChangeExtension(dataSet, ".seqtag"); if (!File.Exists(tagFileName)) { Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, tagFileName); } var tagParser = new SequenceTagParser(tagFileName, minTagLength); // Parse raw file var rawFileName = MassSpecDataReaderFactory.ChangeExtension(dataSet, ".raw"); if (!File.Exists(rawFileName)) { Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, rawFileName); } var run = PbfLcMsRun.GetLcMsRun(rawFileName); // Parse ID file const string resultFilePath = @"H:\Research\QCShew_TopDown\Production\M1_V092\QC_Shew_Intact_26Sep14_Bane_C2Column3_IcTda.tsv"; if (!File.Exists(resultFilePath)) { Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, resultFilePath); } var resultParser = new MsPathFinderParser(resultFilePath); const double qValueThreshold = 0.01; var idList = resultParser.GetIdWithQValuesNoLargerThan(qValueThreshold); var idFlag = new bool[run.MaxLcScan + 1]; foreach (var id in idList) idFlag[id.Scan] = true; const string fastaFilePath = @"H:\Research\QCShew_TopDown\Production\ID_002216_235ACCEA.fasta"; if (!File.Exists(fastaFilePath)) { Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, fastaFilePath); } // const string fastaFilePath = @"H:\Research\QCShew_TopDown\Production\ID_002216_235ACCEA.icsfldecoy.fasta"; var fastaDb = new FastaDatabase(fastaFilePath); var searchableDb = new SearchableDatabase(fastaDb); var numMs2Spectra = 0; var numSpectraWithTag = 0; var numSpectraWithMatchingTag = 0; var numSpectraWithMatchedTagNoId = 0; foreach (var ms2ScanNum in run.GetScanNumbers(2)) { ++numMs2Spectra; var tags = tagParser.GetSequenceTags(ms2ScanNum); if (tags != null) { ++numSpectraWithTag; foreach (var tag in tags) { if (searchableDb.Search(tag.Sequence) >= 0) { //Console.WriteLine(tag.Sequence); ++numSpectraWithMatchingTag; if (!idFlag[ms2ScanNum]) ++numSpectraWithMatchedTagNoId; break; } } } } Console.WriteLine("Tag length: {0}", minTagLength); Console.WriteLine("NumMs2Spectra: {0}", numMs2Spectra); Console.WriteLine("NumMs2SpectraWithTags: {0} ({1})", numSpectraWithTag, numSpectraWithTag/(float)numMs2Spectra); Console.WriteLine("NumMs2SpectraWithMatchingTags: {0} ({1})", numSpectraWithMatchingTag, numSpectraWithMatchingTag/(float)numMs2Spectra); Console.WriteLine("NumMs2SpectraWithMatchingTagsWithNoId: {0} ({1})", numSpectraWithMatchedTagNoId, numSpectraWithMatchedTagNoId / (float)numMs2Spectra); }