protected virtual void SetupLogging() { string loggingFolder; if (string.IsNullOrEmpty(ExecutorParameters.OutputFolderBase)) { loggingFolder = RunUtilities.GetDatasetParentFolder(DatasetPath); } else { loggingFolder = Path.Combine(ExecutorParameters.OutputFolderBase, "Logs"); } try { if (!Directory.Exists(loggingFolder)) { Directory.CreateDirectory(loggingFolder); } } catch (Exception ex) { throw new System.IO.IOException("Trying to set up logging folder but there was a critical error. Details:\n\n" + ex.Message, ex); } _loggingFileName = Path.Combine(loggingFolder, RunUtilities.GetDatasetName(DatasetPath) + "_log.txt"); }
protected void SetupAlignment() { string alignmentFolder; if (string.IsNullOrEmpty(ExecutorParameters.OutputFolderBase)) { alignmentFolder = Path.Combine(RunUtilities.GetDatasetParentFolder(DatasetPath), "AlignmentInfo"); } else { alignmentFolder = Path.Combine(ExecutorParameters.OutputFolderBase, "AlignmentInfo"); } if (!Directory.Exists(alignmentFolder)) { Directory.CreateDirectory(alignmentFolder); } _alignmentFolder = alignmentFolder; }
protected override string GetOutputFileName() { string resultsFolder; if (string.IsNullOrEmpty(ExecutorParameters.OutputFolderBase)) { resultsFolder = RunUtilities.GetDatasetParentFolder(DatasetPath); } else { resultsFolder = Path.Combine(ExecutorParameters.OutputFolderBase, "IqResults"); } if (!Directory.Exists(resultsFolder)) { Directory.CreateDirectory(resultsFolder); } return(Path.Combine(resultsFolder, Run.DatasetName + "_quant.txt")); }
public new void InitializeWorkflow() { _resultsFolder = string.IsNullOrEmpty(ExecutorParameters.OutputFolderBase) ? RunUtilities.GetDatasetParentFolder(DatasetPath) : GetResultsFolder(ExecutorParameters.OutputFolderBase); MassTagsForTargetedAlignment = GetMassTagTargets(GetTargetFilePathForIqAlignment()); var targetsFilePathIsEmpty = (String.IsNullOrEmpty(ExecutorParameters.TargetsFilePath)); var currentTargetsFilePath = targetsFilePathIsEmpty ? TryFindTargetsForCurrentDataset() : ExecutorParameters.TargetsFilePath; Targets = CreateTargets(ExecutorParameters.TargetType, currentTargetsFilePath); if (ExecutorParameters.TargetType == Globals.TargetType.LcmsFeature) { UpdateTargetMissingInfo(); } if (_workflowParameters == null) { _workflowParameters = WorkflowParameters.CreateParameters(ExecutorParameters.WorkflowParameterFile); _workflowParameters.LoadParameters(ExecutorParameters.WorkflowParameterFile); } if (ExecutorParameters.TargetedAlignmentIsPerformed) { if (string.IsNullOrEmpty(ExecutorParameters.TargetedAlignmentWorkflowParameterFile)) { throw new FileNotFoundException( "Cannot initialize workflow. TargetedAlignment is requested but TargetedAlignmentWorkflowParameter file is not found. Check path for the 'TargetedAlignmentWorkflowParameterFile' "); } TargetedAlignmentWorkflowParameters = new TargetedAlignerWorkflowParameters(); TargetedAlignmentWorkflowParameters.LoadParameters(ExecutorParameters.TargetedAlignmentWorkflowParameterFile); } TargetedWorkflow = TargetedWorkflow.CreateWorkflow(_workflowParameters); }
public void InitializeWorkflow() { if (string.IsNullOrEmpty(ExecutorParameters.OutputFolderBase)) { _resultsFolder = RunUtilities.GetDatasetParentFolder(DatasetPath); } else { _resultsFolder = GetResultsFolder(ExecutorParameters.OutputFolderBase); } if (ExecutorParameters.TargetedAlignmentIsPerformed) { MassTagsForTargetedAlignment = GetMassTagTargets(GetTargetFilePathForIqAlignment()); } var targetsFilePathIsEmpty = (String.IsNullOrEmpty(ExecutorParameters.TargetsFilePath)); string currentTargetsFilePath; if (targetsFilePathIsEmpty) { currentTargetsFilePath = TryFindTargetsForCurrentDataset(); //check for a _targets file specifically associated with dataset } else { currentTargetsFilePath = ExecutorParameters.TargetsFilePath; } Targets = CreateTargets(ExecutorParameters.TargetType, currentTargetsFilePath); Check.Ensure(Targets != null && Targets.TargetList.Count > 0, "Target massTags is empty (or all peptides contain unknown modifications). Check the path to the massTag data file."); IqLogger.Log.Info("Total targets loaded= " + Targets.TargetList.Count); if (ExecutorParameters.TargetType == Globals.TargetType.LcmsFeature) { UpdateTargetMissingInfo(); } if (TargetedWorkflow == null) { if (_workflowParameters == null) { _workflowParameters = WorkflowParameters.CreateParameters(ExecutorParameters.WorkflowParameterFile); _workflowParameters.LoadParameters(ExecutorParameters.WorkflowParameterFile); } TargetedWorkflow = TargetedWorkflow.CreateWorkflow(_workflowParameters); } else { _workflowParameters = TargetedWorkflow.WorkflowParameters; } if (ExecutorParameters.TargetedAlignmentIsPerformed) { if (string.IsNullOrEmpty(ExecutorParameters.TargetedAlignmentWorkflowParameterFile)) { throw new FileNotFoundException( "Cannot initialize workflow. TargetedAlignment is requested but TargetedAlignmentWorkflowParameter file is not found. Check path for the 'TargetedAlignmentWorkflowParameterFile' "); } TargetedAlignmentWorkflowParameters = new TargetedAlignerWorkflowParameters(); TargetedAlignmentWorkflowParameters.LoadParameters(ExecutorParameters.TargetedAlignmentWorkflowParameterFile); } }
static int Main(string[] args) { var options = new IqConsoleOptions(); var datasetList = new List <string>(); if (!CommandLine.Parser.Default.ParseArguments(args, options)) { return(-1); } var inputFile = options.InputFile; var inputFileIsAListOfDatasets = inputFile.ToLower().EndsWith(".txt"); if (inputFileIsAListOfDatasets) { using (var reader = new StreamReader(inputFile)) { while (reader.Peek() != -1) { var datsetName = reader.ReadLine(); datasetList.Add(datsetName); } } } else { datasetList.Add(options.InputFile); } var numDatasets = datasetList.Count; var datasetCounter = 0; foreach (var dataset in datasetList) { datasetCounter++; var datasetNameContainsPath = dataset.Contains(@"\"); string currentDatasetPath; if (datasetNameContainsPath) { currentDatasetPath = dataset; } else { if (string.IsNullOrEmpty(options.TemporaryWorkingFolder)) { IqLogger.Log.Fatal("Trying to grab .raw file from DMS, but no temporary working folder was declared. Use option -f. "); break; } if (string.IsNullOrEmpty(options.OutputFolder)) { options.OutputFolder = options.TemporaryWorkingFolder; } var datasetutil = new DatasetUtilities(); //TODO: figure out how to do this while supporting other file types currentDatasetPath = Path.Combine(datasetutil.GetDatasetPath(dataset), dataset + ".raw"); if (currentDatasetPath.ToLower().Contains("purged")) { currentDatasetPath = Path.Combine(datasetutil.GetDatasetPathArchived(dataset), dataset + ".raw"); } } if (!File.Exists(currentDatasetPath)) { IqLogger.Log.Fatal("!!!!!!!!! Dataset not found! Dataset path = " + currentDatasetPath); return(-2); } if (string.IsNullOrEmpty(options.OutputFolder)) { options.OutputFolder = RunUtilities.GetDatasetParentFolder(currentDatasetPath); } var executorParameters = GetExecutorParameters(options); IqLogger.Log.Info("IQ analyzing dataset " + datasetCounter + " of " + numDatasets + ". Dataset = " + dataset); if (options.UseOldIq) { TargetedWorkflowExecutor executor = new BasicTargetedWorkflowExecutor(executorParameters, currentDatasetPath); //executor.Targets.TargetList = executor.Targets.TargetList.Take(10).ToList(); executor.MsgfFdrScoreCutoff = 0.1; executor.Execute(); } else { var run = new RunFactory().CreateRun(currentDatasetPath); var executor = new IqExecutor(executorParameters, run); executor.LoadAndInitializeTargets(executorParameters.TargetsFilePath); executor.SetupMassAndNetAlignment(); executor.DoAlignment(); foreach (var iqTarget in executor.Targets) { TargetedWorkflowParameters workflowParameters = new O16O18WorkflowParameters(); if (iqTarget.ElutionTimeTheor > 0.7 || iqTarget.ElutionTimeTheor < 0.15) { //TODO: remove the hard-coded value workflowParameters.ChromNETTolerance = 0.1; } else { //TODO: remove the hard-coded value workflowParameters.ChromNETTolerance = 0.025; } if (run.MassAlignmentInfo != null && run.MassAlignmentInfo.StdevPpmShiftData > 0) { workflowParameters.ChromGenTolerance = run.MassAlignmentInfo.StdevPpmShiftData * 3; } //define workflows for parentTarget and childTargets // Note: this is currently hard-coded to user O16O18IqWorkflow var parentWorkflow = new ChromPeakDeciderIqWorkflow(run, workflowParameters); var childWorkflow = new O16O18IqWorkflow(run, workflowParameters); var workflowAssigner = new IqWorkflowAssigner(); workflowAssigner.AssignWorkflowToParent(parentWorkflow, iqTarget); workflowAssigner.AssignWorkflowToChildren(childWorkflow, iqTarget); } executor.Execute(); run.Dispose(); } } return(0); }