예제 #1
0
        public clsHornTransform()
        {
            TransformParameters = new clsHornTransformParameters
            {
                IsotopeFitType           = enmIsotopeFitType.AREA,
                MaxCharge                = 10,
                MaxMW                    = 10000,
                MaxFit                   = 0.15,
                MinS2N                   = 5,
                DeleteIntensityThreshold = 1,
                MinIntensityForScore     = 1,
                O16O18Media              = false,
                //Charge carrier mass = [atomic mass of hydrogen (1.007825) - atomic mass of an electron (0.00054858)]
                CCMass = 1.00727638,
                NumPeaksForShoulder            = 1,
                CheckAllPatternsAgainstCharge1 = false,
                IsActualMonoMZUsed             = false,
                LeftFitStringencyFactor        = 1,
                RightFitStringencyFactor       = 1,
            };

            //_reportO18Plus2Da = false;
            DebugFlag = false;
        }
예제 #2
0
        public int RunDeconMSn(string[] args)
        {
            try
            {
                var strAppFolder        = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                var strSVMParamFilePath = Path.Combine(strAppFolder, "svm_params.xml");

                if (args.Length == 0)
                {
                    PrintUsage();
                    return(0);
                }

                var procRunner          = new clsProcRunner();
                var transformParameters = new clsHornTransformParameters();
                var dtaGenParameters    = new clsDTAGenerationParameters();
                var peakParameters      = new clsPeakProcessorParameters();

                var error = false;
                dtaGenParameters.SVMParamFile = strSVMParamFilePath;
                dtaGenParameters.CentroidMSn  = false;

                var sw = new Stopwatch();
                sw.Start();

                // First check for a parameter file defined using -P
                if (args.Length > 0)
                {
                    foreach (var currentArg in args)
                    {
                        if (!currentArg.StartsWith("-P") || currentArg.ToLower().StartsWith("-progress"))
                        {
                            continue;
                        }

                        var stringParamFile = currentArg.Substring(2);

                        Console.WriteLine("Reading Parameter File " + stringParamFile);

                        var rdr = new XmlTextReader(stringParamFile);

                        //Read each node in the tree.
                        while (rdr.Read())
                        {
                            switch (rdr.NodeType)
                            {
                            case XmlNodeType.Element:
                                if (string.Equals(rdr.Name, "PeakParameters", StringComparison.OrdinalIgnoreCase))
                                {
                                    peakParameters.LoadV1PeakParameters(rdr);
                                }
                                else if (string.Equals(rdr.Name, "HornTransformParameters", StringComparison.OrdinalIgnoreCase))
                                {
#pragma warning disable 618
                                    transformParameters.LoadV1HornTransformParameters(rdr);
#pragma warning restore 618
                                }
                                else if (string.Equals(rdr.Name, "DTAGenerationParameters", StringComparison.OrdinalIgnoreCase))
                                {
                                    dtaGenParameters.LoadV1DTAGenerationParameters(rdr);
                                }
                                break;

                            default:
                                break;
                            }
                        }

                        rdr.Close();
                    }
                }

                var filenameDefined     = false;
                var stringSpectraFormat = "ALL";

                if (args.Length == 0)
                {
                    PrintUsage();
                    return(0);
                }

                // Read the remaining parameters
                foreach (var arg in args)
                {
                    var currentArg = GetCommandLineArg(arg);

                    if (currentArg == "-?" || currentArg == "/?" || currentArg == "-help" || currentArg == "/help")
                    {
                        PrintUsage();
                        return(0);
                    }

                    if (currentArg.ToLower().StartsWith("-progress"))
                    {
                        dtaGenParameters.WriteProgressFile = true;
                        continue;
                    }

                    if (currentArg.ToLower().StartsWith("-centroid"))
                    {
                        dtaGenParameters.CentroidMSn = true;
                        continue;
                    }

                    if (!currentArg.StartsWith("-"))
                    {
                        // Treat the first non-switch parameter as the dataset to process
                        if (!filenameDefined)
                        {
                            procRunner.FileName = currentArg;
                            filenameDefined     = true;
                        }
                        else
                        {
                            Console.WriteLine("Ignoring extra argument " + currentArg);
                        }

                        continue;
                    }

                    if (currentArg.Length <= 1)
                    {
                        Console.WriteLine("Ignoring invalid argument " + currentArg);
                        continue;
                    }

                    switch (currentArg[1])
                    {
                    case 'I':
                        if (GetParamInt(currentArg, "Minimum ion count", out var minIonCount))
                        {
                            dtaGenParameters.MinIonCount = minIonCount;
                        }
                        else
                        {
                            error = true;
                        }
                        break;

                    case 'F':
                        if (GetParamInt(currentArg, "First scan", out var scanFirst))
                        {
                            dtaGenParameters.MinScan = scanFirst;
                        }
                        else
                        {
                            error = true;
                        }
                        break;

                    case 'L':
                        if (GetParamInt(currentArg, "Last scan", out var scanLast))
                        {
                            dtaGenParameters.MaxScan = scanLast;
                        }
                        else
                        {
                            error = true;
                        }
                        break;

                    case 'B':
                        if (GetParamDbl(currentArg, "Min mass", out var minMass))
                        {
                            dtaGenParameters.MinMass = minMass;
                        }
                        else
                        {
                            error = true;
                        }
                        break;

                    case 'T':
                        if (GetParamDbl(currentArg, "Max mass", out var maxMass))
                        {
                            dtaGenParameters.MaxMass = maxMass;
                        }
                        else
                        {
                            error = true;
                        }
                        break;

                    case 'C':
                        if (GetParamInt(currentArg, "Consider charge", out var considerCharge))
                        {
                            dtaGenParameters.ConsiderChargeValue = considerCharge;
                        }
                        else
                        {
                            error = true;
                        }
                        dtaGenParameters.ConsiderChargeValue = considerCharge;
                        break;

                    case 'S':
                        stringSpectraFormat = currentArg.Substring(2);
                        if (string.Equals(stringSpectraFormat, "ETD", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.SpectraType = SPECTRA_TYPE.ETD;
                        }
                        else if (string.Equals(stringSpectraFormat, "CID", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.SpectraType = SPECTRA_TYPE.CID;
                        }
                        else if (string.Equals(stringSpectraFormat, "HCD", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.SpectraType = SPECTRA_TYPE.HCD;
                        }
                        else
                        {
                            stringSpectraFormat          = "ALL";
                            dtaGenParameters.SpectraType = SPECTRA_TYPE.ALL;
                        }
                        break;

                    case 'X':
                        var outputFileFormat = currentArg.Substring(2);
                        if (string.Equals(outputFileFormat, "MGF", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.OutputType = OUTPUT_TYPE.MGF;
                        }
                        else if (string.Equals(outputFileFormat, "LOG", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.OutputType = OUTPUT_TYPE.LOG;
                        }
                        else if (string.Equals(outputFileFormat, "CDTA", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.OutputType = OUTPUT_TYPE.CDTA;
                        }
                        else if (string.Equals(outputFileFormat, "MZXML", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.OutputType = OUTPUT_TYPE.MZXML;
                        }
                        else if (string.Equals(outputFileFormat, "DTA", StringComparison.OrdinalIgnoreCase))
                        {
                            dtaGenParameters.OutputType = OUTPUT_TYPE.DTA;
                        }
                        else
                        {
                            PrintUsage();
                            error = true;
                        }
                        break;

                    case 'D':
                        var outputFolderPath = currentArg.Substring(2);
                        procRunner.OutputPathForDTACreation = outputFolderPath;
                        break;

                    case 'G':     // Used by Extract_msn; ignored by DeconMSn
                        break;

                    case 'M':     // Used by Extract_msn; ignored by DeconMSn
                        break;

                    case 'P':     // Already handled above
                        break;

                    default:
                        Console.WriteLine("Unrecognized argument: " + currentArg);
                        error = true;
                        break;
                    } // Switch

                    if (!error)
                    {
                        continue;
                    }

                    Console.WriteLine();
                    Console.WriteLine("For program syntax, run " + GetExeName() + " without any parameters");
                    System.Threading.Thread.Sleep(1500);
                    return(-1);
                }

                if (!filenameDefined)
                {
                    PrintUsage();
                    return(-1);
                }

                var filenameToProcess = procRunner.FileName;

                Console.WriteLine("Processing File {0}", filenameToProcess);
                Console.WriteLine();

                // Display the settings

                Console.WriteLine("Minimum Number of ions for valid MSn scan: {0}", dtaGenParameters.MinIonCount);

                Console.WriteLine("Scan Start: {0}", dtaGenParameters.MinScan);
                Console.WriteLine("Scan End: {0}", dtaGenParameters.MaxScan);

                Console.WriteLine("m/z Start: {0}", dtaGenParameters.MinMass);
                Console.WriteLine("m/z End: {0}", dtaGenParameters.MaxMass);

                if (dtaGenParameters.ConsiderChargeValue > 0)
                {
                    Console.WriteLine("-C enabled with {0}", dtaGenParameters.ConsiderChargeValue);
                }

                Console.WriteLine("Spectra to process: {0}", stringSpectraFormat);

                var outputTypeName = dtaGenParameters.OutputTypeName;
                Console.WriteLine("Output format: {0}", outputTypeName);

                Console.WriteLine("Create progress file: {0}", dtaGenParameters.WriteProgressFile);
                Console.WriteLine("Centroid profile mode MSn spectra: {0}", dtaGenParameters.CentroidMSn.ToString());
                Console.WriteLine();

                procRunner.HornTransformParameters = transformParameters;
                procRunner.PeakProcessorParameters = peakParameters;
                procRunner.DTAGenerationParameters = dtaGenParameters;

                procRunner.CreateDTAFile();

                sw.Stop();

                Console.WriteLine();
                Console.WriteLine("Done. Finished processing in {0:F1} seconds.", sw.Elapsed.TotalSeconds);

                System.Threading.Thread.Sleep(1500);
                return(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine();
                Console.WriteLine("Error processing: " + ex.Message);
                Console.WriteLine(PRISM.clsStackTraceFormatter.GetExceptionStackTraceMultiLine(ex));
                System.Threading.Thread.Sleep(2000);
                return(-1);
            }
        }