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);
Exemple #2
0
        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;
 }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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);
                }
            }
        }
Exemple #7
0
 internal static TruthForest Create([CanBeNull] string sampleName, [NotNull] IVcfHeader vcfHeader)
 => new TruthForest(sampleName, vcfHeader);
Exemple #8
0
 private TruthForest([CanBeNull] string sampleName, [NotNull] IVcfHeader vcfHeader)
 => _baseResult = new MutableWittyerResult(sampleName, true, vcfHeader);