public static bool CheckIfValid(string fileName) { IFileHeader rawHeader = null; // try to open the raw file header try { rawHeader = FileHeaderReaderFactory.ReadFile(fileName); } catch (Exception) { Log.Information("{File} is not a valid raw file", fileName); Console.WriteLine("{0} is not a valid raw file.", fileName); return(false); } // is it a real raw file? if (rawHeader.FileType == FileType.RawFile) { Log.Information("{File} is a valid raw file", fileName); Log.Information("Creation date: {Date}", rawHeader.CreationDate); Log.Information("File description: {Description}", rawHeader.FileDescription); return(true); } else { Log.Information("{File} is not a valid raw file", fileName); Console.WriteLine("{0} is not a valid raw file, continuing to next file.", fileName); return(false); } }
public static bool CheckIfFilePresentInQcCollection(string fileName, QcDataCollection qcDataCollection) { IFileHeader rawHeader = FileHeaderReaderFactory.ReadFile(fileName); if (qcDataCollection.QcData.Keys.Contains(rawHeader.CreationDate)) { return(true); } else { return(false); } }
public static void DoQc(QcParameters qcParameters) { QcDataCollection qcDataCollection; string dataDirectory = qcParameters.RawFileDirectory; string qcDirectory = qcParameters.QcDirectory; string qcSearchDataDirecotry = qcParameters.QcSearchDataDirectory; SearchParameters searchParameters = qcParameters.searchParameters; // our qc file string qcFile = Path.Combine(qcDirectory, "QC.xml"); // see if the file exists if (File.Exists(qcFile)) { // if so, open it try { qcDataCollection = XmlSerialization.ReadFromXmlFile <QcDataCollection>(qcFile); Log.Information("QC data file loaded successfully"); } catch (Exception e) { Log.Error(e, "Failed while loading QC data"); throw e; } } else { // if not, check if the directory exists if (!Directory.Exists(qcDirectory)) { Directory.CreateDirectory(qcDirectory); } qcDataCollection = new QcDataCollection(dataDirectory, qcDirectory); Log.Information("Appears to be a new QC directory. New QC data collection created."); } // get our list of new raw files. it is every raw file in the directory that is not listed in the qc data var fileList = Directory.GetFiles(dataDirectory, "*.*", SearchOption.TopDirectoryOnly) .Where(s => s.EndsWith(".raw", StringComparison.OrdinalIgnoreCase)).ToList(); if (fileList.Count() == 0) { Log.Error("No raw files found in {Directory}", dataDirectory); Console.WriteLine("{0} contains no raw files!", dataDirectory); Environment.Exit(1); } fileList.RemoveAll(s => qcDataCollection.ProcessedRawFiles.Contains(Path.GetFileName(s))); Log.Information("Raw files in QC queue: {Files}", fileList); if (fileList.Count() == 0) { Log.Information("No new files to QC"); Console.WriteLine("No new files in the directory to QC!"); Environment.Exit(0); } Console.WriteLine("{0} file(s) to process", fileList.Count()); foreach (string fileName in fileList) { Console.WriteLine("Processing {0}", fileName); IFileHeader rawHeader; // try to open the raw file header try { rawHeader = FileHeaderReaderFactory.ReadFile(fileName);; } catch (Exception) { Log.Information("{File} is not a valid raw file", fileName); Console.WriteLine("{0} is not a valid raw file, continuing to next file.", fileName); continue; } // is it a real raw file? if (rawHeader.FileType == FileType.RawFile) { Log.Information("{File} is a valid raw file", fileName); Log.Information("Creation date: {Date}", rawHeader.CreationDate); Log.Information("File description: {Description}", rawHeader.FileDescription); } else { Log.Information("{File} is not a valid raw file", fileName); Console.WriteLine("{0} is not a valid raw file, continuing to next file.", fileName); continue; } // okay, it is probably a real raw file, let's do the QC // check if the raw file already exists in the QC data with a different name if (qcDataCollection.QcData.Keys.Contains(rawHeader.CreationDate)) { Log.Information("A file with the same creation date and time as {File} already exists in the QC data", fileName); Console.WriteLine("{0} appears to already exist in the QC data with the name {1}. Skipping to next file.", fileName, qcDataCollection.QcData[rawHeader.CreationDate].RawFile); continue; } using (IRawDataPlus rawFile = RawFileReaderFactory.ReadFile(fileName)) { rawFile.SelectInstrument(Device.MS, 1); RawDataCollection rawData = new RawDataCollection(rawFile); rawData.ExtractAll(rawFile); /* * if (idpyPars?.QuantMods != null) * { * rawData.quantData.Quantify(rawData, rawFile, ) * } */ QcDataContainer newQcData = ProcessQcData(Data: qcDataCollection, rawData: rawData, rawFile: rawFile, qcDirectory: qcDirectory); if (searchParameters != null) { Search.WriteSearchMGF(qcParameters, rawData, rawFile, searchParameters.FixedScans); Search.RunSearch(qcParameters, rawData, rawFile); newQcData.ParseSearchResults(rawData, rawFile, qcParameters); /* * if (searchParameters.SearchAlgorithm == SearchAlgorithm.XTandem) * { * SearchQC.ParseXTandem(newQcData, qcParameters); * newQcData.IdentipyParameters = String.Format("\"Algorithm: X!Tandem; fmods: {0}; nmod: {1}; kmod: {2}; xmod: {3}; fastaDB: {4}; xtandemDirectory: {5}\"", * searchParameters.FixedMods, searchParameters.NMod, searchParameters.KMod, searchParameters.XMod, searchParameters.FastaDatabase, searchParameters.XTandemDirectory); * } * else * { * SearchQC.ParseIdentipy(newQcData, rawData, rawFile, qcParameters); * newQcData.IdentipyParameters = String.Format("\"Algorithm: IdentiPy; fmods: {0}; nmod: {1}; kmod: {2}; xmod: {3}; fastaDB: {4}; pythonExecutable: {5}; identipyScript: {6}\"", * searchParameters.FixedMods, searchParameters.NMod, searchParameters.KMod, searchParameters.XMod, searchParameters.FastaDatabase, searchParameters.PythonExecutable, searchParameters.IdentipyScript); * } */ } qcDataCollection.QcData.Add(rawFile.CreationDate, newQcData); qcDataCollection.ProcessedRawFiles.Add(Path.GetFileName(rawData.rawFileName)); qcDataCollection.WriteQcToTable(); } Log.Information("QC finished: {File}", fileName); } Log.Information("QC of all files completed"); Console.WriteLine("QC of all files completed!"); try { XmlSerialization.WriteToXmlFile <QcDataCollection>(qcFile, qcDataCollection); Log.Information("QC file saved successfully"); Console.WriteLine("QC file saved successfully"); } catch (Exception e) { Log.Error(e, "Failed during serialization of QC data"); throw e; } }