private static BreakendOrientation getMateOrientation(Variant variant) { switch (variant.getSv().getBreakend().getOrientation()) { case ES: return BreakendOrientation.SE; case SE: return BreakendOrientation.ES; default: return variant.getSv().getBreakend().getOrientation(); } }
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 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; }
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; }
if (variant.getSv() != null && variant.getSv().getBreakend() != null && variant.getSv().getBreakend().getMate() != null) { return getRegulatoryRegionOverlaps(variant.getSv().getBreakend().getMate().getChromosome(), Math.max(1, variant.getSv().getBreakend().getMate().getPosition())); } else { return overlapsRegulatoryRegion;
if (variant.getSv() != null && variant.getSv().getBreakend() != null && variant.getSv().getBreakend().getMate() != null) { return getRegulatoryRegionOverlaps(variant.getSv().getBreakend().getMate().getChromosome(), Math.max(1, variant.getSv().getBreakend().getMate().getPosition())); } else { return overlapsRegulatoryRegion;
mongoSv.put(SV_TYPE, sv.getType().toString()); if (sv.getBreakend() != null) { Document mongoBnd = new Document(); 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);
/** * Check if the structural variant information should be serialized. * * Checks if any field is non null, or the type is not COPY_NUMBER_GAIN nor COPY_NUMBER_LOSS * This two types are inferred from the Alternate * * @param sv StructuralVariation object * @return true if it should be serialized */ private boolean validSV(StructuralVariation sv) { if (sv == null) { return false; } else { StructuralVariantType type = sv.getType(); return type != null && !COPY_NUMBER_GAIN.equals(type) && !COPY_NUMBER_LOSS.equals(type) || sv.getCiStartLeft() != null || sv.getCiStartRight() != null || sv.getCiEndLeft() != null || sv.getCiEndRight() != null || sv.getLeftSvInsSeq() != null || sv.getRightSvInsSeq() != null || sv.getBreakend() != null; } }
ifNotNull(sv.getLeftSvInsSeq(), svBuilder::setLeftSvInsSeq); ifNotNull(sv.getType(), type -> svBuilder.setType(VariantProto.StructuralVariantType.valueOf(sv.getType().toString()))); if (sv.getBreakend() != null) { Breakend bnd = sv.getBreakend(); VariantProto.Breakend.Builder bndBuilder = VariantProto.Breakend.newBuilder(); ifNotNull(bnd.getInsSeq(), bndBuilder::setInsSeq);