package org.nextprot.api.commons.bio.variation.prot.impl.format;
import org.junit.Assert;
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.SequenceVariationImpl;
import org.nextprot.api.commons.bio.variation.prot.seqchange.SequenceChange;
import org.nextprot.api.commons.bio.variation.prot.seqchange.SequenceChangeHGVSFormat;
import java.util.Collection;
public class SequenceVariantHGVSFormatterTest {
SequenceVariantHGVSFormat format = new SequenceVariantHGVSFormat();
@Test
public void testConstrFormat() throws Exception {
Collection<SequenceChange.Type> types = format.getAvailableChangeTypes();
Assert.assertEquals(8, types.size());
}
@Test
public void testGetFormat() throws Exception {
SequenceChangeHGVSFormat fmt = format.getSequenceChangeFormat(SequenceChange.Type.SUBSTITUTION);
Assert.assertTrue(fmt.matchesWithMode("p.R54C", ParsingMode.STRICT));
}
@Test
public void testFormatSubstitution() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.ARGININE, 54).thenSubstituteWith(AminoAcidCode.CYSTEINE).build();
Assert.assertEquals("p.R54C", format.format(pm));
}
@Test
public void testFormatSubstitutionWithStop() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.GLUTAMIC_ACID, 31).thenSubstituteWith(AminoAcidCode.STOP).build();
Assert.assertEquals("p.E31*", format.format(pm));
}
@Test
public void testFormatAADeletion() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.LYSINE, 73).thenDelete().build();
Assert.assertEquals("p.K73del", format.format(pm));
}
@Test
public void testFormatRangeDeletion() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.LYSINE, 487, AminoAcidCode.LEUCINE, 498).thenDelete().build();
Assert.assertEquals("p.K487_L498del", format.format(pm));
}
@Test
public void testFormatFrameshift() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.METHIONINE, 682).thenFrameshift(AminoAcidCode.ALANINE, 2).build();
Assert.assertEquals("p.M682Afs*2", format.format(pm));
}
@Test
public void testFormatDeletion1AaAndInsertion1() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.THREONINE, 399).thenDeleteAndInsert(AminoAcidCode.LEUCINE).build();
Assert.assertEquals("p.T399delinsL", format.format(pm));
}
@Test
public void testFormatDeletionMultiAasAndInsertion1() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.LEUCINE, 330, AminoAcidCode.ALANINE, 331).thenDeleteAndInsert(AminoAcidCode.PHENYLALANINE).build();
Assert.assertEquals("p.L330_A331delinsF", format.format(pm));
}
@Test
public void testFormatDeletionMultiAndInsertionMulti() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.ASPARTIC_ACID, 419, AminoAcidCode.ARGININE, 420).thenDeleteAndInsert(AminoAcidCode.SERINE, AminoAcidCode.SERINE, AminoAcidCode.ASPARTIC_ACID, AminoAcidCode.GLYCINE).build();
Assert.assertEquals("p.D419_R420delinsSSDG", format.format(pm));
}
@Test
public void testFormatSubstitutionCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.ARGININE, 54).thenSubstituteWith(AminoAcidCode.CYSTEINE).build();
Assert.assertEquals("p.Arg54Cys", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatAADeletionCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.LYSINE, 73).thenDelete().build();
Assert.assertEquals("p.Lys73del", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatRangeDeletionCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.LYSINE, 487, AminoAcidCode.LEUCINE, 498).thenDelete().build();
Assert.assertEquals("p.Lys487_Leu498del", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatFrameshiftCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.METHIONINE, 682).thenFrameshift(AminoAcidCode.ALANINE, 2).build();
Assert.assertEquals("p.Met682AlafsTer2", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatDeletion1AaAndInsertion1Code3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.THREONINE, 399).thenDeleteAndInsert(AminoAcidCode.LEUCINE).build();
Assert.assertEquals("p.Thr399delinsLeu", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatDeletionMultiAasAndInsertion1Code3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.LEUCINE, 330, AminoAcidCode.ALANINE, 331).thenDeleteAndInsert(AminoAcidCode.PHENYLALANINE).build();
Assert.assertEquals("p.Leu330_Ala331delinsPhe", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatDeletionMultiAndInsertionMultiCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.ASPARTIC_ACID, 419, AminoAcidCode.ARGININE, 420).thenDeleteAndInsert(AminoAcidCode.SERINE, AminoAcidCode.SERINE, AminoAcidCode.ASPARTIC_ACID, AminoAcidCode.GLYCINE).build();
Assert.assertEquals("p.Asp419_Arg420delinsSerSerAspGly", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatSubstitutionFixCode1() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.STOP, 104).thenSubstituteWith(AminoAcidCode.GLUTAMIC_ACID).build();
Assert.assertEquals("p.*104E", format.format(pm));
}
@Test
public void testFormatSubstitutionFixCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.STOP, 104).thenSubstituteWith(AminoAcidCode.GLUTAMIC_ACID).build();
Assert.assertEquals("p.Ter104Glu", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatInsertionCode1() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.CYSTEINE, 136, AminoAcidCode.ALANINE, 137).thenInsert(AminoAcidCode.GLYCINE, AminoAcidCode.METHIONINE).build();
Assert.assertEquals("p.C136_A137insGM", format.format(pm));
}
@Test
public void testFormatInsertionCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.CYSTEINE, 136, AminoAcidCode.ALANINE, 137).thenInsert(AminoAcidCode.GLYCINE, AminoAcidCode.METHIONINE).build();
Assert.assertEquals("p.Cys136_Ala137insGlyMet", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatDuplicationSimpleCode1() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.CYSTEINE, 76).thenDuplicate().build();
Assert.assertEquals("p.C76dup", format.format(pm, AminoAcidCode.CodeType.ONE_LETTER));
}
@Test
public void testFormatDuplicationSimpleCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.CYSTEINE, 76).thenDuplicate().build();
Assert.assertEquals("p.Cys76dup", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatDuplicationCode1() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.CYSTEINE, 76, AminoAcidCode.GLUTAMIC_ACID, 79).thenDuplicate().build();
Assert.assertEquals("p.C76_E79dup", format.format(pm, AminoAcidCode.CodeType.ONE_LETTER));
}
@Test
public void testFormatDuplicationCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcidRange(AminoAcidCode.CYSTEINE, 76, AminoAcidCode.GLUTAMIC_ACID, 79).thenDuplicate().build();
Assert.assertEquals("p.Cys76_Glu79dup", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatInitiationExtensionCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.METHIONINE, 1)
.thenInitiationExtension(-12, AminoAcidCode.VALINE).build();
Assert.assertEquals("p.Met1Valext-12", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
@Test
public void testFormatExtensionCode3() throws Exception {
SequenceVariation pm = new SequenceVariationImpl.FluentBuilding().selectAminoAcid(AminoAcidCode.STOP, 110)
.thenTerminationExtension(17, AminoAcidCode.GLUTAMINE).build();
Assert.assertEquals("p.Ter110Glnext*17", format.format(pm, AminoAcidCode.CodeType.THREE_LETTER));
}
}