internal static IWittyerVariant Create([NotNull] IVcfVariant baseVariant, string sample, double percentageDistance, uint basepairDistance, IReadOnlyList <uint> bins, WittyerVariantType svType) { if (svType == WittyerVariantType.Invalid) { throw new InvalidDataException( $"Invalid {VcfConstants.SvTypeKey} in variant: \n{baseVariant}\nNot sure why you got here though. Check with a witty.er developer!"); } var end = baseVariant.Position + baseVariant.GetSvLength(); var baseInterval = BedInterval.Create(baseVariant.Position, end); var borderInterval = baseVariant.Position.CalculateBorderInterval(baseInterval, baseVariant.ParseCi(WittyerConstants.Cipos), percentageDistance, basepairDistance); // wittyerVariant should all have end border, it's a matter of how to find it, // either END key in INFO field, sort out through SVLEN or other ways, details can be defined in FindEndBorder() later var endInterval = (end - 1).CalculateBorderInterval(baseInterval, baseVariant.ParseCi(WittyerConstants.Ciend), percentageDistance, basepairDistance); var posContigAndInterval = ContigAndInterval.Create(baseVariant.Contig, borderInterval.Start, borderInterval.Stop + 1); var endContigAndInterval = ContigAndInterval.Create(baseVariant.Contig, endInterval.Start, endInterval.Stop + 1); return(Create(baseVariant, baseInterval, svType, posContigAndInterval, Winner.Create(svType, baseInterval, bins), new List <OverlapAnnotation>(), WittyerSample.CreateOverall(baseVariant, sample, svType == WittyerVariantType.CopyNumberReference), endContigAndInterval)); }
internal static WittyerVariantInternal Create([NotNull] IVcfVariant baseVariant, IInterval <uint> baseInterval, WittyerVariantType svType, IContigAndInterval startInterval, Winner win, List <OverlapAnnotation> overlapInfo, IWittyerSample sample, IContigAndInterval endInterval) => new WittyerVariantInternal(baseVariant, baseInterval, svType, startInterval, win, overlapInfo, sample, endInterval);
private WittyerBndInternal([NotNull] IVcfVariant baseVariant, IInterval <uint> posInterval, Winner win, IContigAndInterval endInterval, List <OverlapAnnotation> overlapInfo, IWittyerSample sample, IVcfVariant endOriginalVariant, WittyerVariantType svType) { Contig = baseVariant.Contig; _posInterval = posInterval; EndInterval = endInterval; OverlapInfo = overlapInfo; Sample = sample; OriginalVariant = baseVariant; EndOriginalVariant = endOriginalVariant; Win = win; VariantType = svType; }
private WittyerVariantInternal([NotNull] IVcfVariant baseVariant, IInterval <uint> baseInterval, WittyerVariantType svType, IContigAndInterval posInterval, Winner win, List <OverlapAnnotation> overlapInfo, IWittyerSample sample, IContigAndInterval endInterval) { OriginalVariant = baseVariant; Contig = baseVariant.Contig; VariantType = svType; Win = win; OverlapInfo = overlapInfo; Sample = sample; _baseInterval = baseInterval; PosInterval = posInterval; EndInterval = endInterval; }
internal static IWittyerBnd Create([NotNull] IVcfVariant baseVariant, IInterval <uint> posInterval, Winner win, IContigAndInterval endInterval, List <OverlapAnnotation> overlapInfo, IWittyerSample sample, IVcfVariant endOriginalVariant, WittyerVariantType svType) => new WittyerBndInternal(baseVariant, posInterval, win, endInterval, overlapInfo, sample, endOriginalVariant, svType);