/// <summary> /// Validate that wittyer settings are properly formatted. /// </summary> /// <param name="wittyerSettings">Settings to validate.</param> /// <exception cref="ConstraintException"></exception> public static void ValidateSettings([NotNull] IWittyerSettings wittyerSettings) { foreach (var variantType in wittyerSettings.InputSpecs.Keys) { var inputSpec = wittyerSettings.InputSpecs[variantType]; VerifyBins(inputSpec, variantType); } void VerifyBins(InputSpec inputSpec, WittyerType variantType) { var bins = inputSpec.BinSizes; if (bins.Select(sizeSkipTuple => sizeSkipTuple.size).Distinct().Count() != bins.Count) { throw new ConstraintException($"Duplicate bin sizes for variant type {variantType}."); } if (bins.Any() && bins.All(sizeSkipTuple => sizeSkipTuple.skip)) { throw new ConstraintException($"All bins marked as skipped for variant type {variantType}."); } } }
public static ITry <GeneralStats> GenerateJson(IWittyerSettings settings, [NotNull] IEnumerable <(ISamplePair sampleName, IWittyerResult query, IWittyerResult truth)> results,