/** * @deprecated Use {@link #setSecondaryAlternates(List)} */ @Deprecated public void setSecondaryAlternatesAlleles(List<String> value) { List<AlternateCoordinate> secondaryAlternatesMap = null; if (value != null) { secondaryAlternatesMap = new ArrayList<>(value.size()); for (String secondaryAlternate : value) { secondaryAlternatesMap.add(new AlternateCoordinate(null, null, null, null, secondaryAlternate, VariantType.SNV)); } } impl.setSecondaryAlternates(secondaryAlternatesMap); }
public static AlternateCoordinate getAlternateCoordinate(String s) { String[] split = s.split(ALTERNATE_COORDINATE_SEPARATOR, 5); int idx = split[4].lastIndexOf(ALTERNATE_COORDINATE_SEPARATOR); String alternate = split[4].substring(0, idx); VariantType type = VariantType.valueOf(split[4].substring(idx + 1)); return new AlternateCoordinate( split[0], Integer.parseInt(split[1]), Integer.parseInt(split[2]), split[3], alternate, type ); }
.map(a -> new AlternateCoordinate(chromosome, null, null, null, a, null)) .collect(Collectors.toList()); StudyEntry entry = new StudyEntry(metadata.getId(), secondaryAlternatesMap, Arrays.asList(format.split(":")));
public List<AlternateCoordinate> getSecondaryAlternates(String chromosome, VariantKeyFields alternate, List<VariantKeyFields> reorderedKeyFields) { List<AlternateCoordinate> secondaryAlternates = new ArrayList<>(reorderedKeyFields.size()); for (VariantKeyFields keyFields : reorderedKeyFields) { if (!keyFields.equals(alternate)) { secondaryAlternates.add(new AlternateCoordinate( chromosome, keyFields.getStart(), keyFields.getEnd(), keyFields.getReference(), keyFields.getAlternate(), VariantBuilder.inferType(keyFields.getReference(), keyFields.getAlternate()) )); } } return secondaryAlternates; }
private List<AlternateCoordinate> getAlternateCoordinates(List<VariantProto.AlternateCoordinate> alts) { List<AlternateCoordinate> alternateCoordinates = new ArrayList<>(alts.size()); if (!alts.isEmpty()) { for (VariantProto.AlternateCoordinate alt : alts) { String secAltRef; if (alt.getReference().isEmpty()) { secAltRef = null; } else if (alt.getReference().equals(VariantToProtoVcfRecord.EMPTY_SECONDARY_REFERENCE)) { secAltRef = ""; } else { secAltRef = alt.getReference(); } AlternateCoordinate alternateCoordinate = new AlternateCoordinate( alt.getChromosome().isEmpty() ? null : alt.getChromosome(), alt.getStart() == 0 ? null : alt.getStart(), alt.getEnd() == 0 ? null : alt.getEnd(), secAltRef, alt.getAlternate(), getVariantType(alt.getType())); alternateCoordinates.add(alternateCoordinate); } } return alternateCoordinates; }
AlternateCoordinate mainAlternate = new AlternateCoordinate( variant.getChromosome(), variant.getStart(), variant.getEnd(), variant.getReference(), variant.getAlternate(), variant.getType());
public static AlternateCoordinate convertToAlternateCoordinate(Document alternateDocument) { VariantType variantType = null; String type = (String) alternateDocument.get(ALTERNATES_TYPE); if (type != null && !type.isEmpty()) { variantType = VariantType.valueOf(type); } return new AlternateCoordinate( (String) alternateDocument.get(ALTERNATES_CHR), (Integer) alternateDocument.get(ALTERNATES_START), (Integer) alternateDocument.get(ALTERNATES_END), (String) alternateDocument.get(ALTERNATES_REF), (String) alternateDocument.get(ALTERNATES_ALT), variantType); }
@Test public void testGetAlternateCoordinate() { Assert.assertEquals(new AlternateCoordinate("1", 10035, 10035, "A", "<NON_REF>", VariantType.NO_VARIATION), HBaseToStudyEntryConverter.getAlternateCoordinate("1:10035:10035:A:<NON_REF>:NO_VARIATION")); Assert.assertEquals(new AlternateCoordinate("1", 10035, 10035, "A", "<DUP:TANDEM>", VariantType.DUPLICATION), HBaseToStudyEntryConverter.getAlternateCoordinate("1:10035:10035:A:<DUP:TANDEM>:DUPLICATION")); Assert.assertEquals(new AlternateCoordinate("1", 10035, 10035, "A", "A]chr1:1234]", VariantType.BREAKEND), HBaseToStudyEntryConverter.getAlternateCoordinate("1:10035:10035:A:A]chr1:1234]:BREAKEND")); }
@Test public void resolveSameVariantWithSecAltInsertion() throws Exception { Variant a = getVariant("2:10048155:-:AT", "PASS", "220", "1/2"); Variant b = getVariant("2:10048155:ATATATATATAT:-", "PASS", "220", "2/1"); a.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate("2", b.getStart(), b.getEnd(), b.getReference(), b.getAlternate(), INDEL)); b.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate("2", a.getStart(), a.getEnd(), a.getReference(), a.getAlternate(), INDEL)); List<Variant> resolved = new ArrayList<>(new VariantLocalConflictResolver().resolveConflicts(Arrays.asList(a, b))); System.out.println("a.toString() = " + a.toString()); System.out.println("b.getStudies().get(0).getSecondaryAlternates().get(0).toString() = " + b.getStudies().get(0).getSecondaryAlternates().get(0).toString()); assertEquals(1, resolved.size()); assertEquals(1, resolved.get(0).getStudies().get(0).getSecondaryAlternates().size()); assertEquals("1/2", resolved.get(0).getStudies().get(0).getSamplesData().get(0).get(0)); }
List<AlternateCoordinate> secondaryAlternates = new ArrayList<>(alternates.size() - 1); for (int i = 1; i < alternates.size(); i++) { secondaryAlternates.add(new AlternateCoordinate(chromosome, start, end, reference, alternates.get(i), inferType(reference, alternates.get(i))));
public static Variant getVariant(String var) { Variant v = new Variant(var); StudyEntry sb = new StudyEntry("1", "1"); String call = v.getStart() + ":" + v.getReference() + ":" + v.getAlternate() + ":" + 0; sb.setFiles(Collections.singletonList(new FileEntry("1", "", new HashMap<>()))); v.setStudies(Collections.singletonList(sb)); if (v.getAlternate().contains(",")) { String[] alternates = v.getAlternate().split(","); v.setAlternate(alternates[0]); for (int i = 1; i < alternates.length; i++) { v.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate(null, null, null, null, alternates[i], null)); } } return v; }
@Test public void testFillGapsConflictingFilesNonRef() throws Exception { StudyConfiguration studyConfiguration = load(new QueryOptions(), Arrays.asList( getResourceUri("gaps2/file1.genome.vcf"), getResourceUri("gaps2/file2.genome.vcf"))); checkConflictingFiles(studyConfiguration); VariantDBAdaptor dbAdaptor = variantStorageEngine.getDBAdaptor(); Variant variantMulti = dbAdaptor.get(new Query(VariantQueryParam.ID.key(), "1:10035:A:G"), null).first(); assertEquals("0/0", variantMulti.getStudies().get(0).getSampleData("s1", "GT")); assertEquals(new AlternateCoordinate("1", 10035, 10035, "A", "<*>", VariantType.NO_VARIATION), variantMulti.getStudies().get(0).getSecondaryAlternates().get(0)); assertEquals("4,0,1", variantMulti.getStudies().get(0).getSampleData("s1", "AD")); assertEquals("0/1", variantMulti.getStudies().get(0).getSampleData("s2", "GT")); assertEquals("13,23,0", variantMulti.getStudies().get(0).getSampleData("s2", "AD")); }
@Test public void resolveSameVariantWithSecAlt() throws Exception { Variant a = getVariant("2:10048155:TCTTTTTTTT:AC", "PASS", "220", "1/2"); Variant b = getVariant("2:10048155:TCTTTTTTTT:-", "PASS", "220", "2/1"); a.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate("2", b.getStart(), b.getEnd(), b.getReference(), b.getAlternate(), INDEL)); a.getStudies().get(0).getFiles().get(0).setCall("10048155:TTCTTTTTTTT:TAC,T:0"); b.getStudies().get(0).getSecondaryAlternates().add(new AlternateCoordinate("2", a.getStart(), a.getEnd(), a.getReference(), a.getAlternate(), INDEL)); b.getStudies().get(0).getFiles().get(0).setCall("10048155:TTCTTTTTTTT:TAC,T:1"); Collection<Variant> resolved = new VariantLocalConflictResolver().resolveConflicts(Arrays.asList(a, b)); assertEquals(1, resolved.size()); }
se.setSamplesPosition(asMap("S1", 0)); se.setSamplesData(Collections.singletonList(Arrays.asList("1/2", "LowGQXHetDel"))); se.getSecondaryAlternates().add(new AlternateCoordinate(null, null, 328, "CTT", "CTTTC", INDEL)); addAttribute(v1, FILTER, "LowGQXHetDel");
private Variant createVariantSecAlt(String varString, String secAlt) { Variant secAltVar = new Variant(secAlt); Variant variant = new Variant(varString); StudyEntry se = new StudyEntry("1"); AlternateCoordinate ac = new AlternateCoordinate( secAltVar.getChromosome(), secAltVar.getStart(), secAltVar.getEnd(), secAltVar.getReference(), secAltVar.getAlternate(), secAltVar.getType()); se.setSecondaryAlternates(Collections.singletonList(ac)); variant.setStudies(Collections.singletonList(se)); return variant; }
@Test public void resolve_INS_SNP_SEC_ALT() throws Exception { Variant a = getVariant("1:100:-:GGTTG", "PASS", "390", "1/2"); Variant b = getVariant("1:100:G:-", "PASS", "390", "0/0"); Variant c = getVariant("1:102:-:AGGA", "PASS", "390", "0/1"); b.setType(NO_VARIATION); a.getStudies().get(0).getSecondaryAlternates().add( new AlternateCoordinate(c.getChromosome(), c.getStart(), c.getEnd(), c.getReference(), c.getAlternate(), INDEL)); a.getStudies().get(0).getFiles().get(0).setCall("100:TT:GGTTGTT,TTAGGA:0"); b.getStudies().get(0).getFiles().get(0).setCall("100:TT:GGTTGTT,TTAGGA:0"); c.getStudies().get(0).getFiles().get(0).setCall("100:TT:GGTTGTT,TTAGGA:1"); Collection<Variant> resolved = new VariantLocalConflictResolver().resolveConflicts(Arrays.asList(a, b, c)); assertEquals(2, resolved.size()); }
@Override public AlternateCoordinate build() { try { AlternateCoordinate record = new AlternateCoordinate(); record.chromosome = fieldSetFlags()[0] ? this.chromosome : (java.lang.String) defaultValue(fields()[0]); record.start = fieldSetFlags()[1] ? this.start : (java.lang.Integer) defaultValue(fields()[1]); record.end = fieldSetFlags()[2] ? this.end : (java.lang.Integer) defaultValue(fields()[2]); record.reference = fieldSetFlags()[3] ? this.reference : (java.lang.String) defaultValue(fields()[3]); record.alternate = fieldSetFlags()[4] ? this.alternate : (java.lang.String) defaultValue(fields()[4]); record.type = fieldSetFlags()[5] ? this.type : (org.opencb.biodata.models.variant.avro.VariantType) defaultValue(fields()[5]); return record; } catch (Exception e) { throw new org.apache.avro.AvroRuntimeException(e); } } }
@Test public void resolve_DEL_DEL_SEC_ALT() throws Exception { Variant a = getVariant("1:100:-:GG", "PASS", "390", "1/2"); Variant b = getVariant("1:100:-:GG", "PASS", "390", "1/2"); Variant c = getVariant("1:100:-:GA", "PASS", "390", "1/2"); // mix with a Variant d = getVariant("1:100:-:GT", "PASS", "390", "1/2"); // mix with b a.getStudies().get(0).getSecondaryAlternates().add( new AlternateCoordinate(c.getChromosome(), c.getStart(), c.getEnd(), c.getReference(), c.getAlternate(), INDEL)); c.getStudies().get(0).getSecondaryAlternates().add( new AlternateCoordinate(a.getChromosome(), a.getStart(), a.getEnd(), a.getReference(), a.getAlternate(), INDEL)); b.getStudies().get(0).getSecondaryAlternates().add( new AlternateCoordinate(d.getChromosome(), d.getStart(), d.getEnd(), d.getReference(), d.getAlternate(), INDEL)); d.getStudies().get(0).getSecondaryAlternates().add( new AlternateCoordinate(b.getChromosome(), b.getStart(), b.getEnd(), b.getReference(), b.getAlternate(), INDEL)); Collection<Variant> resolved = new VariantLocalConflictResolver().resolveConflicts(Arrays.asList(a, b, c, d)); System.out.println("resolved = " + resolved); assertEquals(1, resolved.size()); }
/** * Get the variant as Alternate Coordinate. * * At this point, we don't care if the Alternate is SNP or SNV. * In case that the variant is SV, recalculate the type, just in case the size has changed. * * @param variant Variant * @return Variant as AlternateCoordinate */ public static AlternateCoordinate getMainAlternate(Variant variant) { VariantType type; switch (variant.getType()) { case SNP: type = VariantType.SNV; break; case MNP: type = VariantType.MNV; break; case SV: type = VariantBuilder.inferType(variant.getReference(), variant.getAlternate()); break; default: type = variant.getType(); } return new AlternateCoordinate(variant.getChromosome(), variant.getStart(), variant.getEnd(), variant.getReference(), variant.getAlternate(), type); }
private static AlternateCoordinate copyAlt(Variant var, AlternateCoordinate orig) { AlternateCoordinate copy = new AlternateCoordinate(); copy.setChromosome(orig.getChromosome() == null ? var.getChromosome() : orig.getChromosome()); copy.setStart(orig.getStart() == null ? var.getStart() : orig.getStart()); copy.setEnd(orig.getEnd() == null ? var.getEnd() : orig.getEnd()); copy.setReference(orig.getReference() == null ? var.getReference() : orig.getReference()); copy.setAlternate(orig.getAlternate() == null ? var.getAlternate() : orig.getAlternate()); copy.setType(orig.getType() == null ? var.getType() : orig.getType()); return copy; }