int indexOfDifference; char braket = '['; switch (breakend.getOrientation()) { case SS: braket = ']'; newAlternate = (StringUtils.isEmpty(breakend.getInsSeq()) ? "." : breakend.getInsSeq()) + braket + breakend.getMate().getChromosome() + ':' + breakend.getMate().getPosition() + braket; break; + breakend.getMate().getChromosome() + ':' + breakend.getMate().getPosition() + braket + (StringUtils.isEmpty(breakend.getInsSeq()) ? "." : breakend.getInsSeq()); break; default: throw new IllegalStateException("Unknown breakend orientation " + breakend.getOrientation());
return new Breakend(new BreakendMate(chromosome, start, null, null), type, insSeq); } else { throw breakendParseException(alternate);
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; }
Breakend bnd = new Breakend(); bnd.setOrientation(BreakendOrientation.valueOf(mongoBnd.getString(SV_BND_ORIENTATION))); bnd.setInsSeq(mongoBnd.getString(SV_BND_INS_SEQ)); Document mongoBndMate = mongoBnd.get(SV_BND_MATE, Document.class); if (mongoBndMate != null) { mate.setCiPositionLeft(mongoBndMate.getInteger(SV_BND_MATE_CI_POS_L)); mate.setCiPositionRight(mongoBndMate.getInteger(SV_BND_MATE_CI_POS_R)); bnd.setMate(mate);
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; } }
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);
@Override public Breakend build() { try { Breakend record = new Breakend(); record.mate = fieldSetFlags()[0] ? this.mate : (org.opencb.biodata.models.variant.avro.BreakendMate) defaultValue(fields()[0]); record.orientation = fieldSetFlags()[1] ? this.orientation : (org.opencb.biodata.models.variant.avro.BreakendOrientation) defaultValue(fields()[1]); record.insSeq = fieldSetFlags()[2] ? this.insSeq : (java.lang.String) defaultValue(fields()[2]); return record; } catch (Exception e) { throw new org.apache.avro.AvroRuntimeException(e); } } }
Breakend bnd = sv.getBreakend(); VariantProto.Breakend.Builder bndBuilder = VariantProto.Breakend.newBuilder(); 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); ifNotNull(bnd.getOrientation(), type -> bndBuilder.setOrientation(VariantProto.BreakendOrientation.valueOf(type.toString())));