public VariantBuilder setCiStart(int left, int right) { initSv(); sv.setCiStartLeft(left); sv.setCiStartRight(right); return this; }
private void parseStart(String start, String variantString) { if (StringUtils.contains(start, '<')) { String[] split = start.split("<", -1); if (split.length != 3) { throw new IllegalArgumentException("Error parsing start from variant " + variantString + ". Expected 3 fields separated by '<'. " + "Format: \"" + VARIANT_STRING_FORMAT + "\""); } initSv(); if (!split[0].isEmpty()) { sv.setCiStartLeft(Integer.parseInt(split[0])); } setStart(Integer.parseInt(split[1])); if (!split[2].isEmpty()) { sv.setCiStartRight(Integer.parseInt(split[2])); } } else { setStart(Integer.parseInt(start)); } }
String[] parts = value.split(","); sv.setCiStartLeft(start + Integer.parseInt(parts[0])); sv.setCiStartRight(start + Integer.parseInt(parts[1])); break; case CIEND_INFO:
structuralVariation.setCiStartRight(variant.getStart()); structuralVariation.setCiEndLeft(variant.getEnd()); structuralVariation.setCiEndRight(variant.getEnd());
List<String> insSeq = getDefault(mongoSv, SV_INS_SEQ, Arrays.asList(null, null)); sv.setCiStartLeft(ciStart.get(0)); sv.setCiStartRight(ciStart.get(1)); sv.setCiEndLeft(ciEnd.get(0)); sv.setCiEndRight(ciEnd.get(1));
@Deprecated public static StructuralVariation getStructuralVariation(Variant variant, StructuralVariantType tandemDuplication) { int[] impreciseStart = getImpreciseStart(variant); int[] impreciseEnd = getImpreciseEnd(variant); String[] svInsSeq = getSvInsSeq(variant); StructuralVariation sv = new StructuralVariation(); sv.setCiStartLeft(impreciseStart[0]); sv.setCiStartRight(impreciseStart[1]); sv.setCiEndLeft(impreciseEnd[0]); sv.setCiEndRight(impreciseEnd[1]); sv.setLeftSvInsSeq(svInsSeq[0]); sv.setRightSvInsSeq(svInsSeq[1]); // If it's not a tandem duplication, this will set the type to null sv.setType(tandemDuplication); // Will properly set the type if it's a CNV if (variant.getType().equals(VariantType.CNV)) { Integer copyNumber = getCopyNumberFromAlternate(variant.getAlternate()); if (copyNumber != null) { sv.setCopyNumber(copyNumber); sv.setType(getCNVSubtype(copyNumber)); } } return sv; }
@Test public void bnd() { // INS Variant v = new Variant("1:1000:A:A[3:123["); String id = converter.buildId(v); assertEquals(" 1: 1000:A:A[3_123[::::", id); Variant v2 = converter.buildVariant(id, 999, "A", "A[3:123["); System.out.println("v.toJson() = " + v.toJson()); System.out.println("v2.toJson() = " + v2.toJson()); assertEquals(v, v2); v.getSv().setCiStartLeft(999); v.getSv().setCiStartRight(1010); assertEquals(" 1: 1000:A:A[3_123[:999:1010::", converter.buildId(v)); assertEquals(v, converter.buildVariant(converter.buildId(v), 999, "A", "A[3:123[")); } }
@Test public void insertion() { // INS Variant v = new Variant("1:1000:-:AAAAA...TTTT"); assertEquals(" 1: 1000::<INS>_AAAAA_TTTT::::", converter.buildId(v)); assertEquals(v, converter.buildVariant(converter.buildId(v), 999, "", "<INS>_AAAAA_TTTT")); v.getSv().setCiStartLeft(999); v.getSv().setCiStartRight(1010); assertEquals(" 1: 1000::<INS>_AAAAA_TTTT:999:1010::", converter.buildId(v)); assertEquals(v, converter.buildVariant(converter.buildId(v), 999, "", "<INS>_AAAAA_TTTT")); }
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; }
private Variant newVariant(Variant variant, VariantKeyFields keyFields, StructuralVariation sv) { Variant normalizedVariant = new Variant(variant.getChromosome(), keyFields.getStart(), keyFields.getEnd(), keyFields.getReference(), keyFields.getAlternate()) .setId(variant.getId()) .setNames(variant.getNames()) .setStrand(variant.getStrand()); if (sv != null) { if (normalizedVariant.getSv() != null) { // CI positions may change during the normalization. Update them. normalizedVariant.getSv().setCiStartLeft(sv.getCiStartLeft()); normalizedVariant.getSv().setCiStartRight(sv.getCiStartRight()); normalizedVariant.getSv().setCiEndLeft(sv.getCiEndLeft()); normalizedVariant.getSv().setCiEndRight(sv.getCiEndRight()); } else { normalizedVariant.setSv(sv); } // Variant will never have CopyNumber, because the Alternate is normalized from <CNxx> to <CNV> normalizedVariant.getSv().setCopyNumber(keyFields.getCopyNumber()); normalizedVariant.getSv().setType(VariantBuilder.getCNVSubtype(keyFields.getCopyNumber())); } return normalizedVariant; // normalizedVariant.setAnnotation(variant.getAnnotation()); // if (isSymbolic(variant)) { // StructuralVariation sv = getStructuralVariation(normalizedVariant, keyFields, null); // normalizedVariant.setSv(sv); // } }
@Test public void cnv() { // CNV Variant v = new Variant("1", 1000, 2000, "A", "<CN5>"); assertEquals(" 1: 1000:A:<CN5>", converter.buildId(v)); assertEquals(v, converter.buildVariant(converter.buildId(v), 2000, "A", "<CN5>")); v.getSv().setCiStartLeft(999); v.getSv().setCiStartRight(1010); assertEquals(" 1: 1000:A:<CN5>:999:1010::", converter.buildId(v)); assertEquals(v, converter.buildVariant(converter.buildId(v), 2000, "A", "<CN5>")); v.getSv().setCiEndLeft(1999); v.getSv().setCiEndRight(2010); assertEquals(" 1: 1000:A:<CN5>:999:1010:1999:2010", converter.buildId(v)); assertEquals(v, converter.buildVariant(converter.buildId(v), 2000, "A", "<CN5>")); }