package org.opencb.opencga.storage.core.variant.io; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.Test; import org.opencb.biodata.models.variant.StudyEntry; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.AlternateCoordinate; import org.opencb.opencga.storage.core.metadata.StudyConfiguration; import java.util.Collections; import java.util.List; import static org.junit.Assert.*; /** * Created by mh719 on 06/01/2017. */ public class VariantVcfDataWriterTest { 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 adjustedVariantStart_SecAlt_MNV() throws Exception { StudyConfiguration sc = new StudyConfiguration(1, "1"); VariantVcfDataWriter dw = new VariantVcfDataWriter(sc, null, null, null, null); Integer adjustStart = dw.adjustedVariantStart(createVariantSecAlt("1:123:A:C", "1:122:GG:CC")).getLeft(); assertEquals("Adjusted start position wrong", Integer.valueOf(122), adjustStart); } @Test public void adjustedVariantStart_SecAlt_INDEL() throws Exception { StudyConfiguration sc = new StudyConfiguration(1, "1"); VariantVcfDataWriter dw = new VariantVcfDataWriter(sc, null, null, null, null); Integer adjustStart = dw.adjustedVariantStart(createVariantSecAlt("1:123:A:C", "1:122:GG:-")).getLeft(); assertEquals("Adjusted start position wrong", Integer.valueOf(121), adjustStart); } @Test public void buildAlleles_SecAlt_INDEL() throws Exception { StudyConfiguration sc = new StudyConfiguration(1, "1"); VariantVcfDataWriter dw = new VariantVcfDataWriter(sc, null, null, null, null); Variant variant = createVariantSecAlt("1:123:A:C", "1:122:GGT:-"); List<String> alles = dw.buildAlleles(variant, new ImmutablePair<>(121, 124)); assertEquals("Missing alleles", 3, alles.size()); assertEquals("Ref allele not correctly adjusted", "NNAN", alles.get(0)); assertEquals("Ref allele not correctly adjusted", "NNCN", alles.get(1)); assertEquals("Ref allele not correctly adjusted", "N", alles.get(2)); } @Test public void buildAlleles_SecAlt_MNV() throws Exception { StudyConfiguration sc = new StudyConfiguration(1, "1"); VariantVcfDataWriter dw = new VariantVcfDataWriter(sc, null, null, null, null); Variant variant = createVariantSecAlt("1:123:A:C", "1:122:GG:TT"); List<String> alles = dw.buildAlleles(variant, new ImmutablePair<>(122, 123)); assertEquals("Missing alleles", 3, alles.size()); assertEquals("Ref allele not correctly adjusted", "NA", alles.get(0)); assertEquals("Ref allele not correctly adjusted", "NC", alles.get(1)); assertEquals("Ref allele not correctly adjusted", "TT", alles.get(2)); } }