/// <summary> /// trims all of the alternate alleles /// </summary> internal void TrimAlternateAlleles() { AlleleTrimmer.Trim(AlternateAlleles); }
/// <summary> /// assigns a variant type to the structural variant alternate allele /// </summary> public void AssignVariantType(VariantAlternateAllele altAllele, IAlleleTrimmer alleleTrimmer) { // sanity check: ignore unknown SV variant types if (_variantType == VariantType.unknown) { // the only thing we do for unknown SV types is to increment the begin if it has a symbolic allele if (altAllele.IsSymbolicAllele) { altAllele.Start++; } return; } var oldAltAllele = altAllele.AlternateAllele; var has1KgCnv = false; // add the copy number if applicable if (_variantType == VariantType.copy_number_variation) { has1KgCnv = altAllele.IsSymbolicAllele && _copyNumber == "?"; altAllele.CopyNumber = has1KgCnv ? ExtractCopyNumberFromAltAllele(oldAltAllele) : _copyNumber; } altAllele.IsStructuralVariant = true; altAllele.VepVariantType = _variantType; altAllele.NirvanaVariantType = _variantType; altAllele.AlternateAllele = has1KgCnv ? ExtractCnvSymbolicAllele(oldAltAllele) : _altAllele; // handle breakends if (_breakEnds?.Count > 0) { altAllele.BreakEnds = new List <BreakEnd>(); altAllele.BreakEnds.AddRange(_breakEnds); } // update the reference begin position // // NOTE: If any of the ALT alleles is a symbolic allele (an angle-bracketed // ID String “<ID>”) then the padding base is required and POS denotes // the coordinate of the base preceding the polymorphism. if (altAllele.IsSymbolicAllele) { altAllele.Start++; } else { // if the alt allele is not symbolic and its not a breakend, we call the regular trimmer if (_variantType != VariantType.translocation_breakend) { altAllele.AlternateAllele = oldAltAllele; alleleTrimmer.Trim(new List <VariantAlternateAllele> { altAllele }); } } // adjust the end coordinates after adjusted the begin if (_svEnd != null) { altAllele.End = (int)_svEnd; MaxEnd = Math.Max(MaxEnd, (int)_svEnd); } else if (_svLength != null) { altAllele.End = altAllele.Start + Math.Abs(_svLength.Value) - 1; MaxEnd = Math.Max(MaxEnd, (int)_svLength); } // set the VID altAllele.VariantId = _vid.Create(_renamer, _referenceName, altAllele); }