package org.nextprot.api.commons.bio.variation.prot.impl.format;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.nextprot.api.commons.bio.AminoAcidCode;
import org.nextprot.api.commons.bio.variation.prot.ParsingMode;
import org.nextprot.api.commons.bio.variation.prot.SequenceVariation;
import org.nextprot.api.commons.bio.variation.prot.impl.seqchange.Frameshift;
import org.nextprot.api.commons.bio.variation.prot.seqchange.SequenceChange;
import java.text.ParseException;
public class SequenceVariantHGVSParseFrameshiftTest {
SequenceVariantHGVSFormat format = new SequenceVariantHGVSFormat();
@Test
public void testParseFrameshift() throws Exception {
SequenceVariation pm = format.parse("p.M682Afs*2");
Assert.assertEquals(AminoAcidCode.METHIONINE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(682, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(SequenceChange.Type.FRAMESHIFT, pm.getSequenceChange().getType());
Assert.assertEquals(AminoAcidCode.ALANINE, ((Frameshift.Change)pm.getSequenceChange().getValue()).getChangedAminoAcid());
Assert.assertEquals(2, ((Frameshift.Change)pm.getSequenceChange().getValue()).getNewTerminationPosition());
}
@Test
public void testParseFrameshiftCode3() throws Exception {
SequenceVariation pm = format.parse("p.Met682AlafsTer2");
Assert.assertEquals(AminoAcidCode.METHIONINE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(682, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(SequenceChange.Type.FRAMESHIFT, pm.getSequenceChange().getType());
Assert.assertEquals(AminoAcidCode.ALANINE, ((Frameshift.Change)pm.getSequenceChange().getValue()).getChangedAminoAcid());
Assert.assertEquals(2, ((Frameshift.Change)pm.getSequenceChange().getValue()).getNewTerminationPosition());
}
@Ignore
@Test
public void testParseAANonStandardFrameshift() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
SequenceVariation pm = format.parse("p.S1476fs*>9");
Assert.assertEquals(AminoAcidCode.SERINE, pm.getVaryingSequence().getFirstAminoAcid());
Assert.assertEquals(1476, pm.getVaryingSequence().getFirstAminoAcidPos());
Assert.assertEquals(SequenceChange.Type.FRAMESHIFT, pm.getSequenceChange().getType());
Assert.assertEquals(9, pm.getSequenceChange().getValue());
}
@Test(expected = ParseException.class)
public void testParseFs1ShouldFailed() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
format.parse("p.Met682AlafsTer1");
}
@Ignore
@Test
public void testParseAAFsFix() throws Exception {
format = new SequenceVariantHGVSFormat(ParsingMode.PERMISSIVE);
format.parse("p.E61fs");
}
@Test
public void testParseFrameshiftsVariants() throws ParseException {
String[] variants = new String[]{
"p.Gly173Serfs*19",
"p.Glu23Valfs*17",
"p.Tyr186Phefs*6",
"p.Gly2281Alafs*31",
"p.Ala1711Profs*76",
"p.Tyr2660Phefs*43",
"p.Thr1852Hisfs*28",
"p.Ser1982Argfs*22",
"p.Gln167Profs*21",
"p.Lys427Glyfs*4",
"p.Asn860Ilefs*14",
"p.Gln1756Profs*74",
"p.Ile848Serfs*21",
"p.Ser1982Argfs*22",
"p.Ala382Profs*23",
"p.Glu407Glyfs*43",
"p.Glu513Glyfs*12",
"p.Gly820Alafs*3",
"p.Cys64Glyfs*16",
"p.Arg18Leufs*12",
"p.Gly261Trpfs*7",
"p.Gly2313Alafs*31",
"p.Ala165Metfs*24"};
for (String variant : variants) {
format.parse(variant);
}
}
}