Esempio n. 1
0
        public void OnExportAllGlobalResults(string fileLocation)
        {
            IProgress <int> progress = new Progress <int>(ReportGlobalWorkflowProgress);

            LipidGroupSearchResultWriter.OutputResults(LipidGroupSearchResultList, fileLocation, Path.GetFileName(RawFilePath), progress);
            progress.Report(0);
        }
Esempio n. 2
0
        public void RunTraining(string rawDirectoryPath, string targetFilePath, string decoyFilePath, double hcdError = 30, double cidError = 500)
        {
            // Read target file
            var targetReader = new LipidMapsDbReader <Lipid>();
            var targets      = targetReader.ReadFile(new FileInfo(targetFilePath));

            // Read decoy file
            var decoyReader = new LipidMapsDbReader <Lipid>();
            var decoys      = decoyReader.ReadFile(new FileInfo(decoyFilePath));

            var files = Directory.GetFiles(rawDirectoryPath);

            foreach (var rawFilePath in files.Where(file => file.EndsWith(".raw")))
            {
                // create output paths
                var rawFileName       = Path.GetFileName(rawFilePath);
                var datasetPath       = Path.GetDirectoryName(rawFilePath);
                var datasetName       = Path.GetFileNameWithoutExtension(rawFilePath);
                var targetResultsPath = Path.Combine(datasetPath, string.Format("{0}_target.tsv", datasetName));
                var decoyResultsPath  = Path.Combine(datasetPath, string.Format("{0}_decoy.tsv", datasetName));

                // Run liquid global workflow
                var globalWorkflow = new GlobalWorkflow(rawFilePath);
                var targetResults  = globalWorkflow.RunGlobalWorkflow(targets, hcdError, cidError);
                var decoyResults   = globalWorkflow.RunGlobalWorkflow(decoys, hcdError, cidError);

                // Output results
                LipidGroupSearchResultWriter.OutputResults(targetResults, targetResultsPath, rawFileName);
                LipidGroupSearchResultWriter.OutputResults(decoyResults, decoyResultsPath, rawFileName);

                // Assure that the source data file is closed
                globalWorkflow.LcMsRun.Close();
            }
        }
Esempio n. 3
0
        public void OnExportGlobalResults(string fileLocation)
        {
            IProgress <int> progress        = new Progress <int>(ReportGlobalWorkflowProgress);
            var             resultsToExport = LipidGroupSearchResultList.Where(x => x.ShouldExport).ToList();

            LipidGroupSearchResultWriter.OutputResults(resultsToExport, fileLocation, Path.GetFileName(RawFilePath), progress);
            progress.Report(0);
        }
Esempio n. 4
0
        /// <summary>
        /// Main functionality for running the LIQUID workflow and outputting the results
        /// </summary>
        /// <param name="targetsFilePath"></param>
        /// <param name="outputFileName"></param>
        /// <param name="datasetNamesList"></param>
        private void RunWorkflowAndOutput(string targetsFilePath, string outputFileName, List <string> datasetNamesList)
        {
            var targetsFileInfo = new FileInfo(targetsFilePath);
            var lipidReader     = new LipidMapsDbReader <Lipid>();
            var lipidList       = lipidReader.ReadFile(targetsFileInfo);
            var headerWritten   = false;

            foreach (var datasetName in datasetNamesList)
            {
                var rawFileName = datasetName + ".raw";

                var rawFilePath = Path.Combine(@"D:\Data\Liquid\Original", rawFileName);


                Console.WriteLine(DateTime.Now + ": Processing " + datasetName);

                if (File.Exists(rawFilePath))
                {
                    Console.WriteLine(DateTime.Now + ": Dataset already exists");
                }
                else
                {
                    Console.WriteLine(DateTime.Now + ": Dataset does not exist locally, so we will go get it");

                    // Lookup in DMS via Mage
                    var dmsFolder         = DmsDatasetFinder.FindLocationOfDataset(datasetName);
                    var dmsDirectoryInfo  = new DirectoryInfo(dmsFolder);
                    var fullPathToDmsFile = Path.Combine(dmsDirectoryInfo.FullName, rawFileName);

                    // Copy Locally
                    // TODO: Handle files that are on MyEMSL
                    Console.WriteLine(DateTime.Now + ": Copying dataset from " + dmsDirectoryInfo.FullName);
                    File.Copy(fullPathToDmsFile, rawFilePath);
                    Console.WriteLine(DateTime.Now + ": Copy complete");
                }

                // Setup workflow
                var globalWorkflow = new GlobalWorkflow(rawFilePath);

                // Run workflow
                var lipidGroupSearchResults = globalWorkflow.RunGlobalWorkflow(lipidList, 30, 500);

                if (!headerWritten)
                {
                    LipidGroupSearchResultWriter.OutputResults(lipidGroupSearchResults, outputFileName, rawFileName, null, true, true);
                    headerWritten = true;
                }
                else
                {
                    LipidGroupSearchResultWriter.OutputResults(lipidGroupSearchResults, outputFileName, rawFileName, null, true, false);
                }

                // Assure that the source data file is closed
                globalWorkflow.LcMsRun.Close();
            }
        }
Esempio n. 5
0
        public void RunTrainingOnFileList(
            string fileListPath,
            string posTargetFilePath,
            string posDecoyFilePath,
            string negTargetFilePath,
            string negDecoyFilePath,
            double hcdError = 30,
            double cidError = 500)
        {
            // Read positive target file
            var posTargetReader = new LipidMapsDbReader <Lipid>();
            var posTargets      = posTargetReader.ReadFile(new FileInfo(posTargetFilePath));

            // Read positive decoy file
            var posDecoyReader = new LipidMapsDbReader <Lipid>();
            var posDecoys      = posDecoyReader.ReadFile(new FileInfo(posDecoyFilePath));

            // Read positive target file
            var negTargetReader = new LipidMapsDbReader <Lipid>();
            var negTargets      = negTargetReader.ReadFile(new FileInfo(negTargetFilePath));

            // Read positive decoy file
            var negDecoyReader = new LipidMapsDbReader <Lipid>();
            var negDecoys      = negDecoyReader.ReadFile(new FileInfo(negDecoyFilePath));

            var outputDirectory = Path.GetDirectoryName(fileListPath);
            var errorFile       = Path.Combine(outputDirectory, "failedDatasets.txt");

            foreach (var datasetName in File.ReadLines(fileListPath))
            {
                if (datasetName.StartsWith("//"))
                {
                    continue;
                }

                try
                {
                    // create output paths
                    var rawFilePath       = GetRawFilePath(outputDirectory, datasetName);
                    var rawFileName       = Path.GetFileName(rawFilePath);
                    var targetResultsPath = Path.Combine(outputDirectory, string.Format("{0}_target.tsv", datasetName));
                    var decoyResultsPath  = Path.Combine(outputDirectory, string.Format("{0}_decoy.tsv", datasetName));

                    IEnumerable <Lipid> targets;
                    IEnumerable <Lipid> decoys;

                    // Select targets and decoys
                    var lowerCaseName = datasetName.ToLower();
                    if (lowerCaseName.Contains("pos"))
                    {
                        targets = posTargets;
                        decoys  = posDecoys;
                    }
                    else
                    {
                        targets = negTargets;
                        decoys  = negDecoys;
                    }

                    // Run liquid global workflow
                    var globalWorkflow = new GlobalWorkflow(rawFilePath);
                    var targetResults  = GetBestResultPerSpectrum(globalWorkflow.RunGlobalWorkflow(targets, hcdError, cidError));
                    var decoyResults   = GetBestResultPerSpectrum(globalWorkflow.RunGlobalWorkflow(decoys, hcdError, cidError));

                    // Output results
                    LipidGroupSearchResultWriter.OutputResults(targetResults, targetResultsPath, rawFileName);
                    LipidGroupSearchResultWriter.OutputResults(decoyResults, decoyResultsPath, rawFileName);

                    // Assure that the source data file is closed
                    globalWorkflow.LcMsRun.Close();
                }
                catch (Exception)
                {
                    Console.WriteLine("ERROR: Could not process dataset {0}.", datasetName);
                    using (var streamWriter = new StreamWriter(errorFile, true))
                    {
                        streamWriter.WriteLine(datasetName);
                    }
                }
            }
        }