def test_protein_subsequence_does_not_overlap_substitution():
    # testing that we got the correct properties for case where "SIINFEKL" was
    # mutated into "SIINFEQL" and then sliced to keep just "FEQL"
    p = ProteinSequence(amino_acids="SIINFEQL",
                        contains_mutation=True,
                        mutation_start_idx=len("SIINFE"),
                        mutation_end_idx=len("SIINFEQ"),
                        ends_with_stop_codon=True,
                        frameshift=False,
                        translations=[])
    p2 = p.subsequence(0, len("SIIN"))
    eq_(p2.amino_acids, "SIIN")
    eq_(p2.contains_mutation, False)
    eq_(p2.contains_deletion, False)
    eq_(p2.frameshift, False)
    eq_(p2.ends_with_stop_codon, False)
    eq_(p2.num_mutant_amino_acids, 0)
    eq_(p2.mutant_amino_acids, "")
    eq_(len(p2), 4)
def test_protein_subsequence_does_not_overlap_deletion():
    # testing that we got correct properties for the case
    # where "SIINFEKL" was mutated into "SIINFEL" (by a deletion of "K")
    # and then we took the subsequence "SIINFE"
    p = ProteinSequence(amino_acids="SIINFEL",
                        contains_mutation=True,
                        mutation_start_idx=len("SIINFE"),
                        mutation_end_idx=len("SIINFE"),
                        ends_with_stop_codon=True,
                        frameshift=False,
                        translations=[])
    p2 = p.subsequence(None, len("SIINFE"))
    eq_(len(p2), 6)
    eq_(p2.amino_acids, "SIINFE")
    eq_(p2.contains_deletion, False)
    eq_(p2.contains_mutation, False)
    eq_(p2.frameshift, False)
    eq_(p2.ends_with_stop_codon, False)
    eq_(p2.mutant_amino_acids, "")
    eq_(p2.num_mutant_amino_acids, 0)