1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
package seq
import (
"regexp"
"testing"
)
type codonTableTest struct {
table int
nt string
aa string
frame int
trim bool
clean bool
allowUnknownCodon bool
markInitCodonAsM bool
}
var codonTableTests []codonTableTest
func init() {
re := regexp.MustCompile(`\r?\n|\s`)
codonTableTests = make([]codonTableTest, 0, 10)
// https://www.ncbi.nlm.nih.gov/nuccore/AB021961.1
codonTableTests = append(codonTableTests,
codonTableTest{
table: 1,
nt: re.ReplaceAllString(`atgactgccatggaggagtcacagtcggatatcagcctcgagctccctctgagccaggag
acattttcaggcttatggaaactacttcctccagaagatatcctgccatcacctcactgc
atggacgatctgttgctgccccaggatgttgaggagttttttgaaggcccaagtgaagcc
ctccgagtgtcaggagctcctgcagcacaggaccctgtcaccgagacccctgggccagtg
gcccctgccccagccactccatggcccctgtcatcttttgtcccttctcaaaaaacttac
cagggcaactatggcttccacctgggcttcctgcagtctgggacagccaagtctgttatg
tgcacgtactctcctcccctcaataagctattctgccagctggcgaagacgtgccctgtg
cagttgtgggtcagcgccacacctccagctgggagccgtgtccgcgccatggccatctac
aagaagtcacagcacatgacggaggtcgtgagacgctgcccccaccatgagcgctgctcc
gatggtgatggcctggctcctccccagcatcgtatccgggtggaaggaaatttgtatccc
gagtatctggaagacaggcagacttttcgccacagcgtggtggtaccttatgagccaccc
gaggccggctctgagtataccaccatccactacaagtacatgtgtaatagctcctgcatg
gggggcatgaaccgccgacctatccttaccatcatcacactggaagactccagtgggaac
cttctgggacgggacagctttgaggttcgtgtttgtgcctgccctgggagagaccgccgt
acagaagaagaaaatttccgcaaaaaggaagtcctttgccctgaactgcccccagggagc
gcaaagagagcgctgcccacctgcacaagcgcctctcccccgcaaaagaaaaaaccactt
gatggagagtatttcaccctcaagatccgcgggcgtaaacgcttcgagatgttccgggag
ctgaatgaggccttagagttaaaggatgcccatgctacagaggagtctggagacagcagg
gctcactccagctacctgaagaccaagaagggccagtctacttcccgccataaaaaaaca
atggtcaagaaagtggggcctgactcagactga`, ""),
aa: re.ReplaceAllString(`MTAMEESQSDISLELPLSQETFSGLWKLLPPEDILPSPHCMDDL
LLPQDVEEFFEGPSEALRVSGAPAAQDPVTETPGPVAPAPATPWPLSSFVPSQKTYQG
NYGFHLGFLQSGTAKSVMCTYSPPLNKLFCQLAKTCPVQLWVSATPPAGSRVRAMAIY
KKSQHMTEVVRRCPHHERCSDGDGLAPPQHRIRVEGNLYPEYLEDRQTFRHSVVVPYE
PPEAGSEYTTIHYKYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRDSFEVRVCACPG
RDRRTEEENFRKKEVLCPELPPGSAKRALPTCTSASPPQKKKPLDGEYFTLKIRGRKR
FEMFRELNEALELKDAHATEESGDSRAHSSYLKTKKGQSTSRHKKTMVKKVGPDSD`, ""),
frame: 1,
trim: true,
clean: false,
})
// ORF25 from https://www.ncbi.nlm.nih.gov/nuccore/AJ245616.1
codonTableTests = append(codonTableTests,
codonTableTest{
table: 11,
nt: re.ReplaceAllString(`atggaggaacaagcatggcgagaagtcctcgaacgtttagctcga
attgaaacaaagttagataactatgaaacagttcgagataaagcagaacgagcgctccta
atagctcaatcaaatgcgaaacttatagaaaaaatggaagctaataataagtgggcttgg
ggctttatgcttactcttgccgtaactgttattggttatttattcactaaaattagattc
tga`, ""),
aa: re.ReplaceAllString(`MEEQAWREVLERLARIETKLDNYETVRDKAERALLIAQSNAKLI
EKMEANNKWAWGFMLTLAVTVIGYLFTKIRF`, ""),
frame: 1,
trim: true,
clean: false,
})
codonTableTests = append(codonTableTests,
codonTableTest{
table: 11,
nt: re.ReplaceAllString(`tcagaatctaattttagtgaataaataaccaataacagttacggcaagagtaagcataaa
gccccaagcccacttattattagcttccattttttctataagtttcgcatttgattgagc
tattaggagcgctcgttctgctttatctcgaactgtttcatagttatctaactttgtttc
aattcgagctaaacgttcgaggacttctcgccatgcttgttcctccat`, ""),
aa: re.ReplaceAllString(`MEEQAWREVLERLARIETKLDNYETVRDKAERALLIAQSNAKLI
EKMEANNKWAWGFMLTLAVTVIGYLFTKIRF`, ""),
frame: -1,
trim: true,
clean: false,
})
codonTableTests = append(codonTableTests,
codonTableTest{
table: 11,
nt: re.ReplaceAllString(`tcagaatctaattttagtgaataaataaccaataacagttacggcaagagtaagcataaa
gccccaagcccacttattattagcttccattttttctataagtttcgcatttgattgagc
tattaggagcgctcgttctgctttatctcgaactgtttcatagttatctaactttgtttc
aattcgagctaaacgttcgaggacttctcgccatgcttgttcctccatc`, ""),
aa: re.ReplaceAllString(`MEEQAWREVLERLARIETKLDNYETVRDKAERALLIAQSNAKLI
EKMEANNKWAWGFMLTLAVTVIGYLFTKIRF`, ""),
frame: -2,
trim: true,
clean: false,
})
codonTableTests = append(codonTableTests,
codonTableTest{
table: 11,
nt: re.ReplaceAllString(`tcagaatctaattttagtgaataaataaccaataacagttacggcaagagtaagcataaa
gccccaagcccacttattattagcttccattttttctataagtttcgcatttgattgagc
tattaggagcgctcgttctgctttatctcgaactgtttcatagttatctaactttgtttc
aattcgagctaaacgttcgaggacttctcgccatgcttgttcctccatcc`, ""),
aa: re.ReplaceAllString(`MEEQAWREVLERLARIETKLDNYETVRDKAERALLIAQSNAKLI
EKMEANNKWAWGFMLTLAVTVIGYLFTKIRF`, ""),
frame: -3,
trim: true,
clean: false,
})
codonTableTests = append(codonTableTests,
codonTableTest{
table: 11,
nt: re.ReplaceAllString(`atNgaggaacaagcatggcgagaagtcctcgaacgtttagctcga
attgaaacaaagttagataactatgaaacagttcgagataaagcagaacgagcgctccta
atagctcaatcaaatgcgaaacttatagaaaaaatggaagctaataataagtgggcttgg
ggctttatgcttactcttgccgtaactgttattggttatttattcactaaaattagattc
tga`, ""),
aa: re.ReplaceAllString(`XEEQAWREVLERLARIETKLDNYETVRDKAERALLIAQSNAKLI
EKMEANNKWAWGFMLTLAVTVIGYLFTKIRF*`, ""),
frame: 1,
trim: false,
clean: false,
allowUnknownCodon: true,
})
}
func TestCodonTableStranslation(t *testing.T) {
var aa []byte
var err error
for i, test := range codonTableTests {
aa, err = CodonTables[test.table].Translate([]byte(test.nt), test.frame, test.trim, test.clean, test.allowUnknownCodon, test.markInitCodonAsM)
if err != nil {
t.Errorf("test %d err: %s", i, err)
}
if len(aa) != len(test.aa) {
t.Errorf("test %d err: len unequal, answer: %d, result: %d", i, len(aa), len(test.aa))
}
if string(aa) != test.aa {
t.Errorf("test %d err: result not right", i)
}
}
}
|