示例#1
0
                internal static IWittyerSettings ParsePrivate(string[] args)
                {
                    var parameters  = new WittyerParameters();
                    var ndeskParser = new NdeskOptionParser(parameters, args);
                    var unparsed    = ndeskParser.UnparsedArgs;

                    if (unparsed.Count > 0)
                    {
                        Console.WriteLine("Warning: Unparsed args: " + string.Join(" ", unparsed));
                    }

                    if (parameters._isDisplayVersion.Argument)
                    {
                        Console.WriteLine($"witty.er {CurrentVersion}");
                        Console.WriteLine(parameters.AdditionalHelpHeader);
                        Environment.Exit(0);
                    }

                    if (parameters._configFile.IsArgumentAssigned)
                    {
                        if (parameters._configOptions.Any(x => x.IsArgumentAssigned))
                        {
                            Console.Error.WriteLine(
                                "Config file argument cannot be used in combination with arguments for bin sizes, basepair distance, " +
                                "percent distance, included filters, excluded filters, variant types, or include bed. Exiting.");
                            Environment.Exit(1);
                        }

                        var fi = parameters._configFile.Argument;
                        if (!fi.ExistsNow())
                        {
                            Console.WriteLine(
                                $"Config file {fi.FullName} did not exist! Generating default config file in its place. Rerun with exactly same command line and it will work this time.");
                            File.WriteAllText(fi.FullName, InputSpec.GenerateDefaultInputSpecs(
                                                  parameters.Mode == EvaluationMode.CrossTypeAndSimpleCounting).SerializeToString());
                            Environment.Exit(0);
                        }

                        var configText = File.ReadAllText(parameters._configFile.Argument.FullName);
                        if (string.IsNullOrWhiteSpace(configText))
                        {
                            Console.Error.WriteLine("Bad Config file passed in at " + fi.FullName);
                            Environment.Exit(1);
                        }

                        parameters.InputSpecs = JsonConvert
                                                .DeserializeObject <IEnumerable <InputSpec> >(configText, InputSpecConverter.Create())
                                                .ToImmutableDictionary(x => x.VariantType, x => x);
                    }
                    else
                    {
                        var generatedSpecs = InputSpec.GenerateCustomInputSpecs(
                            parameters.Mode != EvaluationMode.CrossTypeAndSimpleCounting,
                            parameters._variantTypes.Argument, parameters._binSizes.Argument,
                            parameters._basepairDistance.Argument, parameters._percentDistance.Argument,
                            parameters._excludedFilters.Argument,
                            parameters._includedFilters.Argument, parameters._bedFile.Argument);

                        if (!parameters._basepairDistance.IsArgumentAssigned) // keep default
                        {
                            generatedSpecs = generatedSpecs.Select(i =>
                                                                   i.VariantType == WittyerType.Insertion
                                    ? InputSpec.Create(i.VariantType, i.BinSizes, DefaultInsertionSpec.BasepairDistance,
                                                       i.PercentDistance, i.ExcludedFilters, i.IncludedFilters, i.IncludedRegions)
                                    : i);
                        }
                        parameters.InputSpecs = generatedSpecs.ToImmutableDictionary(s => s.VariantType, s => s);
                    }

                    if (parameters.Mode == EvaluationMode.CrossTypeAndSimpleCounting &&
                        parameters.InputSpecs.Keys.Any(s => s.IsCopyNumberVariant))
                    {
                        Console.WriteLine(
                            $"Warning: {WittyerType.CopyNumberGain} and/or {WittyerType.CopyNumberLoss}" +
                            $" setting given when using {EvaluationMode.CrossTypeAndSimpleCounting}" +
                            " mode!  This setting will be ignored.");
                    }

                    ValidateRequiredParameters(parameters._inputVcf);
                    ValidateRequiredParameters(parameters._truthVcf);
                    return(parameters);
                }
示例#2
0
 public static IWittyerSettings Parse(string[] args) => WittyerParameters.ParsePrivate(args);