private Variant parseBreakendPair(VariantContext variantContext, VariantContext variantContext1) { // Get Variant object for the first BND Variant variant = converter.convert(variantContext); // Set mate position variant.getSv().getBreakend().getMate().setChromosome(variantContext1.getContig()); variant.getSv().getBreakend().getMate().setPosition(variantContext1.getStart()); // Check the second BND does have CIPOS List ciposValue = variantContext1.getAttributeAsList(CIPOS); if (!ciposValue.isEmpty()) { // Get CIPOS from second BND String ciposString = StringUtils.join(ciposValue, VCFConstants.INFO_FIELD_ARRAY_SEPARATOR); // Set CIPOS string of the sencond BND as part of the file INFO field in the first BND Map<String, String> attributesMap = variant.getStudies().get(0).getFiles().get(0).getAttributes(); attributesMap.put(MATE_CIPOS, ciposString); // CIPOS of the second breakend List ciposParts = variantContext1.getAttributeAsList(CIPOS); variant.getSv() .getBreakend() .getMate() .setCiPositionLeft(variantContext1.getStart() + Integer.valueOf((String) ciposParts.get(0))); variant.getSv() .getBreakend() .getMate() .setCiPositionRight(variantContext1.getStart() + Integer.valueOf((String) ciposParts.get(1))); // If not, it's a precise call, just position is stored (above) } return variant; }
public static Variant getMateBreakend(Variant variant) { // Check variant does have a mate if (variant.getSv() != null && variant.getSv().getBreakend() != null && variant.getSv().getBreakend().getMate() != null) { Variant mate = new Variant(variant.getSv().getBreakend().getMate().getChromosome(), variant.getSv().getBreakend().getMate().getPosition(), null, null); mate.setType(VariantType.BREAKEND); mate.setSv(getMateStructuralVariation(variant)); return mate; } else { return null; } }
private static StructuralVariation getMateStructuralVariation(Variant variant) { StructuralVariation structuralVariation = new StructuralVariation(); // Check whether mate has CIPOS if (variant.getSv().getBreakend().getMate().getCiPositionLeft() != null && variant.getSv().getBreakend().getMate().getCiPositionRight() != null) { structuralVariation.setCiStartLeft(variant.getSv().getBreakend().getMate().getCiPositionLeft()); structuralVariation.setCiStartRight(variant.getSv().getBreakend().getMate().getCiPositionRight()); } Breakend breakend = new Breakend(new BreakendMate(variant.getChromosome(), variant.getStart(), variant.getSv().getCiStartLeft() != null ? variant.getSv().getCiStartLeft() : null, variant.getSv().getCiStartRight() != null ? variant.getSv().getCiStartRight() : null), getMateOrientation(variant), null); structuralVariation.setBreakend(breakend); return structuralVariation; }
putNotNull(mongoBnd, SV_BND_ORIENTATION, sv.getBreakend().getOrientation().toString()); putNotNull(mongoBnd, SV_BND_INS_SEQ, sv.getBreakend().getInsSeq()); if (sv.getBreakend().getMate() != null) { Document mongoBndMate = new Document(); putNotNull(mongoBndMate, SV_BND_MATE_CHR, sv.getBreakend().getMate().getChromosome()); putNotNull(mongoBndMate, SV_BND_MATE_POS, sv.getBreakend().getMate().getPosition()); putNotNull(mongoBndMate, SV_BND_MATE_CI_POS_L, sv.getBreakend().getMate().getCiPositionLeft()); putNotNull(mongoBndMate, SV_BND_MATE_CI_POS_R, sv.getBreakend().getMate().getCiPositionRight()); mongoBnd.append(SV_BND_MATE, mongoBndMate);
ifNotNull(bnd.getInsSeq(), bndBuilder::setInsSeq); if (bnd.getMate() != null) { VariantProto.BreakendMate.Builder bndMateBuilder = VariantProto.BreakendMate.newBuilder(); ifNotNull(bnd.getMate().getChromosome(), bndMateBuilder::setChromosome); ifNotNull(bnd.getMate().getPosition(), bndMateBuilder::setPosition); ifNotNull(bnd.getMate().getCiPositionLeft(), bndMateBuilder::setCiPositionLeft); ifNotNull(bnd.getMate().getCiPositionRight(), bndMateBuilder::setCiPositionRight); bndBuilder.setMate(bndMateBuilder);