public static WittyerResult Create([NotNull] IVcfHeader vcfHeader, [NotNull] string sampleName, [NotNull] IReadOnlyList <IContigInfo> contigs, bool isTruth, [NotNull] IReadOnlyDictionary <WittyerType, IReadOnlyList <IWittyerVariant> > variants, [NotNull] IReadOnlyDictionary <WittyerType, IReadOnlyList <IWittyerBnd> > breakendPairsAndInsertions, [NotNull] IReadOnlyCollection <IVcfVariant> notAssessedVariants) => new WittyerResult(vcfHeader, sampleName, contigs, isTruth, variants, breakendPairsAndInsertions, notAssessedVariants);
internal static IEnumerable <IBasicMetaLine> MergeMetaLines([NotNull] this IVcfHeader truthHeader, [CanBeNull] string cmdLine, [NotNull] IVcfHeader queryHeader) { var truthMetaLines = truthHeader.ColumnMetaInfoLines; var queryMetaLines = queryHeader.ColumnMetaInfoLines; var altLines = MergeMetaInfoLines(truthMetaLines.AltLines, Alt, queryMetaLines.AltLines); var filterLines = MergeMetaInfoLines(truthMetaLines.FilterLines, Filter, queryMetaLines.FilterLines); var contigLines = MergeContigLines(queryMetaLines.ContigLines, truthMetaLines.ContigLines); var infoLines = MergeTypedMetaLines(truthMetaLines.InfoLines, Info, queryMetaLines.InfoLines); var sampleFormatLines = MergeTypedMetaLines(truthMetaLines.SampleFormatLines, SampleFormat, queryMetaLines.SampleFormatLines); var sampleMetaLines = MergeTypedMetaLines(truthMetaLines.SampleMetaLines, Meta, queryMetaLines.SampleMetaLines); var builder = VcfHeader.CreateBuilder(truthHeader.Version) .AddSampleColumn(DefaultTruthSampleName).AddSampleColumn(DefaultQuerySampleName); truthHeader.ReferenceGenome.DoOnSuccess(r => builder.SetReference(r)); foreach (var line in altLines.Concat(filterLines).Concat(contigLines).Concat(sampleMetaLines) .Concat(GenerateWittyerLines(infoLines, sampleFormatLines, cmdLine))) { yield return(line); } }
internal MutableWittyerResult([CanBeNull] string sampleName, bool isTruth, [NotNull] IVcfHeader vcfHeader) { // ReSharper disable once AssignNullToNotNullAttribute SampleName = sampleName ?? (isTruth ? SamplePair.Default.TruthSampleName : SamplePair.Default.QuerySampleName); IsTruth = isTruth; VcfHeader = vcfHeader; }
private WittyerResult([NotNull] IVcfHeader vcfHeader, [NotNull] string sampleName, [NotNull] IReadOnlyList <IContigInfo> contigs, bool isTruth, [NotNull] IReadOnlyDictionary <WittyerType, IReadOnlyList <IWittyerVariant> > variants, [NotNull] IReadOnlyDictionary <WittyerType, IReadOnlyList <IWittyerBnd> > breakendPairsAndInsertions, [NotNull] IReadOnlyCollection <IVcfVariant> notAssessedVariants) { VcfHeader = vcfHeader; SampleName = sampleName; Contigs = contigs; IsTruth = isTruth; Variants = variants; BreakendPairsAndInsertions = breakendPairsAndInsertions; NotAssessedVariants = notAssessedVariants; }
internal static IEnumerable <string> MergedWith([NotNull] this IVcfHeader truthHeader, [NotNull] IVcfHeader queryHeader, [NotNull] ISamplePair pair, [CanBeNull] string cmdLine) { var mergedMetaLines = truthHeader.MergeMetaLines(cmdLine, queryHeader); return(ToWittyBuilder() .AddSampleMetaInfo(truthHeader, pair, queryHeader, mergedMetaLines) .Build().ToStrings()); VcfHeader.Builder ToWittyBuilder() { var builder = VcfHeader.CreateBuilder(truthHeader.Version) .AddSampleColumn(DefaultTruthSampleName).AddSampleColumn(DefaultQuerySampleName); truthHeader.ReferenceGenome.DoOnSuccess(r => builder.SetReference(r)); return(builder); } }
internal static VcfHeader.Builder AddSampleMetaInfo([NotNull] this VcfHeader.Builder builder, [NotNull] IVcfHeader truthHeader, [CanBeNull] ISamplePair samplePair, [NotNull] IVcfHeader queryHeader, [NotNull] IEnumerable <IBasicMetaLine> mergedMetaLines) { // todo: for vcf 4.3, this has ids, so should be merged via AddSampleMetaInfo. // get rid of pedigree lines since we don't have all the sample columns //builder = truthHeader.PedigreeLines.Concat(queryHeader.PedigreeLines) // .Aggregate(builder, (acc, line) => acc.AddPedigreeLine(line)); var truth = samplePair?.TruthSampleName ?? truthHeader.SampleNames.FirstOrDefault(); var query = samplePair?.QuerySampleName ?? queryHeader.SampleNames.FirstOrDefault(); if (truth != query && truth != null) // only add sample lines that are not the same sample names otherwise, error out. { AddSampleLine(truth, DefaultTruthSampleName); AddSampleLine(query, DefaultQuerySampleName); } return(mergedMetaLines .Aggregate(builder, (acc, line) => acc.AddLine(line))); void AddSampleLine(string sampleName, string defaultSampleName) { if (sampleName == null) { return; } builder.AddOtherLine(MetaInfoLine.Create(OriginalSampleNameLineKey, defaultSampleName, sampleName)); var truthLine = truthHeader.ColumnMetaInfoLines.SampleLines .FirstOrException(l => sampleName.Equals(l.Value.Id)).GetOrNull()?.Value; if (truthLine != null) { builder.AddLine(truthLine); } } }
internal static TruthForest Create([CanBeNull] string sampleName, [NotNull] IVcfHeader vcfHeader) => new TruthForest(sampleName, vcfHeader);
private TruthForest([CanBeNull] string sampleName, [NotNull] IVcfHeader vcfHeader) => _baseResult = new MutableWittyerResult(sampleName, true, vcfHeader);