Skip to content

Instantly share code, notes, and snippets.

@Chubek
Last active April 16, 2023 14:28
Show Gist options
  • Save Chubek/cf634f200b33fef537bd8c2f04063d90 to your computer and use it in GitHub Desktop.
Save Chubek/cf634f200b33fef537bd8c2f04063d90 to your computer and use it in GitHub Desktop.
Encoding all 29 Genetics Table + Several Codon Frequency Tables for use in Assembly

Background

So, for the past several hours I have began a bioinformatics project that I suspect may end sooner than I expected, and that project is, a DNA to Protein translator and reverse-translator aptly titled TransGatacca. The main crux of the program is in x86-64 and Aarch64 Assembly languages. However it is desined to be callable from C and will also have bindings in Rust using global_asm! macro. There will also be Python bindings.

The aim of this software is speed, and speed alone, so I am trying to do as many micro-optimizations as possibly there can be. One of these venues is of course, the genetics table --- and later, codon frequency table. One needs to encode these tables in such way that they can be represented all inside one 64-bit register or memory address with zero overflow, and that the remain unique across all the possible permutations of the nucleotide triplets, and finally, they can be represented a contiguous series of memory blocks which end at an even memory address.

I devised the following ways to encode:

1- Nucleotide Triplet - Peptide Mapping for translation
2- Peptide - Nucleotide Triplet Mapping for reverse-translation
3- Codon Frequency Table for reverse-translation

... in such way to be easy for a 64bit CPU or memory address to handle. I technically have access to 128-bit-wide addresses in both archs, but I will hesitate to use them as I want my code to be easily modified to be runnable on 32-bit machines which do have 64-bit addresses.

Encoding Methodology

First, we do the following mapping of:

A (65) -> 0
C (67) -> 1
G (71) -> 3
T (84) -> 2

Using 3 & (nuc >> 1). It is possible to switch 2 with 3 and make them in order using two additional operations, that is 3 & ((nuc >> 1) ^ (nuc >> 2)) but that is only useful in case of complements. For now this shall suffice.

After that:

1- To encode triplets, we pack all 3 2-bit integers into a 6-bit intger (order of bits is not important, but the deocder must use the same order) and thus we will have a maximum of 64 different integers. We can create an array of 64, with each 6-bit index representing a peptide corresponding to that nucleotide triplet. We now have an array where arr[i] = byte value of peptide.

2- To encode peptides, we take all the possible triplets that we encoded before, which non-empty numbers can range from 1 to 10, and pack all those 6-bit integers that we got into an n * 6 bit integer, with n being the number of possible degenerate triplets for that peptide. We then shift the length of the possible triplets by 60. Finally, for example, for peptide F in table 33 we get:

Bit Num 63 62 61 60 ... 11 10 9 8 7 6 5 4 3 2 1 0
Bit 0 0 1 0 ... 1 0 1 0 1 0 1 0 1 0 0 1

We will then lay them an array of size 26, after we subtract 64 from peptide ('A' - 1). We now have an array where arr[n] = packed values.

3 - To encode codon frequency: By subtracting 64 from peptide, we are left with a 5-bit integer. We apply the following to the encoded triplet:

(nuc1 | (nuc3 << 1)) ^ nuc2

We now have a 3-bit integer which we can append to the end of pep - 64 by shifting the said value 3 to the left and OR'ing it with the 3-bit integer. We now can use this value to index the frequency. But how do we represent the frequency? Basically, we take the first two digits after the decimal point and atoi them (or just int(s.split(".")[-1][:2])). The maximum our index can be is 255 so we store everythng n an array of size 256, where arr[i] = freq.

The following files in this Gist are an implementation of this encoding. Files encoded_codons_freq.json, encoded_codons_table.json and encoded_reverse_codons_table.json are the resulting values. For frequeny, the most popular values have been chosen. The data is hard-coded into the Python files because it's simply superior to be able to portably transfer an entire file from hell and back hithereto eternity without having to transfer anything else alongside.

Please contact me on Discord at Chubak#7400 if you got any questions.

#!/bin/bash
exec_file="encode/encode_tables.py"
exec_scpt=`basename "$0"`
help() {
printf "\033[1;32mEncoder for TransGatacca\033[0m\n"
echo "Usage:"
echo "$exec_scpt --[COMMAND] SUBCOMMAND <args...> "
echo "COMMANDs:"
echo "--TABLE: Generate genetic tables encodings"
echo "--FREQ: Generate codon frequency encodings"
echo "SUBCOMMANDs:"
echo "json: Generate JSON files"
echo "carr: Generate C arrays"
echo "Args:"
echo "--TABLE: 2 files, one for each translate and reverse translate tables"
echo "--FREQ: 1 file, for either JSON or clists"
exit 1;
}
wrong_arg() {
printf "\033[1;31mWrong arguments passed\033[0m\n"
echo "Pass --help for help"
exit 1;
}
if [[ $1 == --TABLE* ]]; then
exec_file="encode/encode_tables.py"
if [[ "$#" != "4" ]]; then
wrong_arg
fi
elif [[ $1 == --FREQ* ]]; then
exec_file="encode/encode_cfreqs.py"
if [[ "$#" != "3" ]]; then
wrong_arg
fi
elif [[ $1 == --h* ]]; then
help
else
wrong_arg
fi
shift
$exec_file $@
#!/bin/python3
#############################################################################
# Copyright (c) 2023 Chubak Bidpaa #
# Permission is hereby granted, free of charge, to any person obtaining #
# a copy of this software and associated documentation files (the #
# "Software"), to deal in the Software without restriction, including #
# without limitation the rights to use, copy, modify, merge, publish, #
# distribute, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to #
# the following conditions: #
# The above copyright notice and this permission notice shall be #
# included in all copies or substantial portions of the Software. #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, #
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF #
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND #
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE #
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION #
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION #
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #
#############################################################################
# Encode codon frequencies for a 64bit-width register or memory address
# Please read ENCODING.md for more info
HSAPIENS = b"""
*,TAA,0.30
*,TAG,0.24
*,TGA,0.47
A,GCA,0.23
A,GCC,0.40
A,GCG,0.11
A,GCT,0.27
C,TGC,0.54
C,TGT,0.46
D,GAC,0.54
D,GAT,0.46
E,GAA,0.42
E,GAG,0.58
F,TTC,0.54
F,TTT,0.46
G,GGA,0.25
G,GGC,0.34
G,GGG,0.25
G,GGT,0.16
H,CAC,0.58
H,CAT,0.42
I,ATA,0.17
I,ATC,0.47
I,ATT,0.36
K,AAA,0.43
K,AAG,0.57
L,CTA,0.07
L,CTC,0.20
L,CTG,0.40
L,CTT,0.13
L,TTA,0.08
L,TTG,0.13
M,ATG,1.00
N,AAC,0.53
N,AAT,0.47
P,CCA,0.28
P,CCC,0.32
P,CCG,0.11
P,CCT,0.29
Q,CAA,0.27
Q,CAG,0.73
R,AGA,0.21
R,AGG,0.21
R,CGA,0.11
R,CGC,0.18
R,CGG,0.20
R,CGT,0.08
S,AGC,0.24
S,AGT,0.15
S,TCA,0.15
S,TCC,0.22
S,TCG,0.05
S,TCT,0.19
T,ACA,0.28
T,ACC,0.36
T,ACG,0.11
T,ACT,0.25
V,GTA,0.12
V,GTC,0.24
V,GTG,0.46
V,GTT,0.18
W,TGG,1.00
Y,TAC,0.56
Y,TAT,0.44
"""
BSUBTILIS = b"""
*,UAA,0.61
*,UAG,0.15
*,UGA,0.24
A,GCA,0.28
A,GCC,0.22
A,GCG,0.26
A,GCU,0.24
C,UGC,0.54
C,UGU,0.46
D,GAC,0.36
D,GAU,0.64
E,GAA,0.68
E,GAG,0.32
F,UUC,0.32
F,UUU,0.68
G,GGA,0.31
G,GGC,0.34
G,GGG,0.16
G,GGU,0.19
H,CAC,0.32
H,CAU,0.68
I,AUA,0.13
I,AUC,0.37
I,AUU,0.49
K,AAA,0.70
K,AAG,0.30
L,CUA,0.05
L,CUC,0.11
L,CUG,0.24
L,CUU,0.23
L,UUA,0.21
L,UUG,0.16
M,AUG,1.00
N,AAC,0.44
N,AAU,0.56
P,CCA,0.19
P,CCC,0.09
P,CCG,0.44
P,CCU,0.28
Q,CAA,0.52
Q,CAG,0.48
R,AGA,0.25
R,AGG,0.10
R,CGA,0.10
R,CGC,0.20
R,CGG,0.17
R,CGU,0.18
S,AGC,0.23
S,AGU,0.11
S,UCA,0.23
S,UCC,0.13
S,UCG,0.10
S,UCU,0.20
T,ACA,0.40
T,ACC,0.17
T,ACG,0.27
T,ACU,0.16
V,GUA,0.20
V,GUC,0.26
V,GUG,0.26
V,GUU,0.28
W,UGG,1.00
Y,UAC,0.35
Y,UAU,0.65
"""
CELEGANS = b"""
*,UAA,0.43
*,UAG,0.18
*,UGA,0.39
A,GCA,0.31
A,GCC,0.20
A,GCG,0.13
A,GCU,0.36
C,UGC,0.45
C,UGU,0.55
D,GAC,0.32
D,GAU,0.68
E,GAA,0.62
E,GAG,0.38
F,UUC,0.51
F,UUU,0.49
G,GGA,0.59
G,GGC,0.12
G,GGG,0.08
G,GGU,0.20
H,CAC,0.39
H,CAU,0.61
I,AUA,0.16
I,AUC,0.31
I,AUU,0.53
K,AAA,0.59
K,AAG,0.41
L,CUA,0.09
L,CUC,0.17
L,CUG,0.14
L,CUU,0.25
L,UUA,0.11
L,UUG,0.23
M,AUG,1.00
N,AAC,0.38
N,AAU,0.62
P,CCA,0.53
P,CCC,0.09
P,CCG,0.20
P,CCU,0.18
Q,CAA,0.66
Q,CAG,0.34
R,AGA,0.29
R,AGG,0.08
R,CGA,0.23
R,CGC,0.10
R,CGG,0.09
R,CGU,0.21
S,AGC,0.10
S,AGU,0.15
S,UCA,0.26
S,UCC,0.13
S,UCG,0.15
S,UCU,0.21
T,ACA,0.34
T,ACC,0.18
T,ACG,0.15
T,ACU,0.32
V,GUA,0.16
V,GUC,0.22
V,GUG,0.23
V,GUU,0.39
W,UGG,1.00
Y,UAC,0.44
Y,UAU,0.56
"""
DMELANOGASTER = b"""
*,UAA,0.41
*,UAG,0.33
*,UGA,0.25
A,GCA,0.17
A,GCC,0.45
A,GCG,0.19
A,GCU,0.19
C,UGC,0.71
C,UGU,0.29
D,GAC,0.47
D,GAU,0.53
E,GAA,0.33
E,GAG,0.67
F,UUC,0.62
F,UUU,0.38
G,GGA,0.29
G,GGC,0.43
G,GGG,0.07
G,GGU,0.21
H,CAC,0.60
H,CAU,0.40
I,AUA,0.19
I,AUC,0.47
I,AUU,0.34
K,AAA,0.30
K,AAG,0.70
L,CUA,0.09
L,CUC,0.15
L,CUG,0.43
L,CUU,0.10
L,UUA,0.05
L,UUG,0.18
M,AUG,1.00
N,AAC,0.56
N,AAU,0.44
P,CCA,0.25
P,CCC,0.33
P,CCG,0.29
P,CCU,0.13
Q,CAA,0.30
Q,CAG,0.70
R,AGA,0.09
R,AGG,0.11
R,CGA,0.15
R,CGC,0.33
R,CGG,0.15
R,CGU,0.16
S,AGC,0.25
S,AGU,0.14
S,UCA,0.09
S,UCC,0.24
S,UCG,0.20
S,UCU,0.08
T,ACA,0.20
T,ACC,0.38
T,ACG,0.26
T,ACU,0.17
V,GUA,0.11
V,GUC,0.24
V,GUG,0.47
V,GUU,0.19
W,UGG,1.00
Y,UAC,0.63
Y,UAU,0.37
"""
ECOLI = b"""
*,UAA,0.64
*,UAG,0.07
*,UGA,0.29
A,GCA,0.21
A,GCC,0.27
A,GCG,0.36
A,GCU,0.16
C,UGC,0.56
C,UGU,0.44
D,GAC,0.37
D,GAU,0.63
E,GAA,0.69
E,GAG,0.31
F,UUC,0.43
F,UUU,0.57
G,GGA,0.11
G,GGC,0.41
G,GGG,0.15
G,GGU,0.34
H,CAC,0.43
H,CAU,0.57
I,AUA,0.07
I,AUC,0.42
I,AUU,0.51
K,AAA,0.76
K,AAG,0.24
L,CUA,0.04
L,CUC,0.10
L,CUG,0.50
L,CUU,0.10
L,UUA,0.13
L,UUG,0.13
M,AUG,1.00
N,AAC,0.55
N,AAU,0.45
P,CCA,0.19
P,CCC,0.12
P,CCG,0.53
P,CCU,0.16
Q,CAA,0.35
Q,CAG,0.65
R,AGA,0.04
R,AGG,0.02
R,CGA,0.06
R,CGC,0.40
R,CGG,0.10
R,CGU,0.38
S,AGC,0.28
S,AGU,0.15
S,UCA,0.12
S,UCC,0.15
S,UCG,0.15
S,UCU,0.15
T,ACA,0.13
T,ACC,0.44
T,ACG,0.27
T,ACU,0.16
V,GUA,0.15
V,GUC,0.22
V,GUG,0.37
V,GUU,0.26
W,UGG,1.00
Y,UAC,0.43
Y,UAU,0.57
"""
GGALIUS = b"""
*,UAA,0.32
*,UAG,0.20
*,UGA,0.47
A,GCA,0.26
A,GCC,0.32
A,GCG,0.13
A,GCU,0.29
C,UGC,0.60
C,UGU,0.40
D,GAC,0.50
D,GAU,0.50
E,GAA,0.43
E,GAG,0.57
F,UUC,0.55
F,UUU,0.45
G,GGA,0.27
G,GGC,0.31
G,GGG,0.25
G,GGU,0.18
H,CAC,0.60
H,CAU,0.40
I,AUA,0.18
I,AUC,0.46
I,AUU,0.35
K,AAA,0.44
K,AAG,0.56
L,CUA,0.06
L,CUC,0.18
L,CUG,0.41
L,CUU,0.13
L,UUA,0.08
L,UUG,0.13
M,AUG,1.00
N,AAC,0.57
N,AAU,0.43
P,CCA,0.28
P,CCC,0.30
P,CCG,0.14
P,CCU,0.27
Q,CAA,0.27
Q,CAG,0.73
R,AGA,0.22
R,AGG,0.21
R,CGA,0.10
R,CGC,0.19
R,CGG,0.18
R,CGU,0.10
S,AGC,0.26
S,AGU,0.14
S,UCA,0.15
S,UCC,0.20
S,UCG,0.07
S,UCU,0.18
T,ACA,0.30
T,ACC,0.31
T,ACG,0.14
T,ACU,0.25
V,GUA,0.12
V,GUC,0.22
V,GUG,0.45
V,GUU,0.21
W,UGG,1.00
Y,UAC,0.60
Y,UAU,0.40
"""
MMUSCULUS = b"""
*,UAA,0.28
*,UAG,0.23
*,UGA,0.49
A,GCA,0.23
A,GCC,0.38
A,GCG,0.09
A,GCU,0.29
C,UGC,0.52
C,UGU,0.48
D,GAC,0.55
D,GAU,0.45
E,GAA,0.41
E,GAG,0.59
F,UUC,0.56
F,UUU,0.44
G,GGA,0.26
G,GGC,0.33
G,GGG,0.23
G,GGU,0.18
H,CAC,0.59
H,CAU,0.41
I,AUA,0.16
I,AUC,0.50
I,AUU,0.34
K,AAA,0.39
K,AAG,0.61
L,CUA,0.08
L,CUC,0.20
L,CUG,0.39
L,CUU,0.13
L,UUA,0.07
L,UUG,0.13
M,AUG,1.00
N,AAC,0.57
N,AAU,0.43
P,CCA,0.29
P,CCC,0.30
P,CCG,0.10
P,CCU,0.31
Q,CAA,0.26
Q,CAG,0.74
R,AGA,0.22
R,AGG,0.22
R,CGA,0.12
R,CGC,0.17
R,CGG,0.19
R,CGU,0.08
S,AGC,0.24
S,AGU,0.15
S,UCA,0.14
S,UCC,0.22
S,UCG,0.05
S,UCU,0.20
T,ACA,0.29
T,ACC,0.35
T,ACG,0.10
T,ACU,0.25
V,GUA,0.12
V,GUC,0.25
V,GUG,0.46
V,GUU,0.17
W,UGG,1.00
Y,UAC,0.57
Y,UAU,0.43
"""
MMUSCULUSDOMSETICUS = b"""
*,UAA,0.27
*,UAG,0.45
*,UGA,0.27
A,GCA,0.30
A,GCC,0.36
A,GCG,0.11
A,GCU,0.23
C,UGC,0.55
C,UGU,0.45
D,GAC,0.61
D,GAU,0.39
E,GAA,0.49
E,GAG,0.51
F,UUC,0.61
F,UUU,0.39
G,GGA,0.29
G,GGC,0.32
G,GGG,0.22
G,GGU,0.17
H,CAC,0.65
H,CAU,0.35
I,AUA,0.29
I,AUC,0.43
I,AUU,0.27
K,AAA,0.58
K,AAG,0.42
L,CUA,0.14
L,CUC,0.21
L,CUG,0.35
L,CUU,0.13
L,UUA,0.07
L,UUG,0.10
M,AUG,1.00
N,AAC,0.59
N,AAU,0.41
P,CCA,0.34
P,CCC,0.30
P,CCG,0.10
P,CCU,0.26
Q,CAA,0.24
Q,CAG,0.76
R,AGA,0.34
R,AGG,0.25
R,CGA,0.10
R,CGC,0.13
R,CGG,0.13
R,CGU,0.06
S,AGC,0.23
S,AGU,0.13
S,UCA,0.21
S,UCC,0.21
S,UCG,0.06
S,UCU,0.16
T,ACA,0.40
T,ACC,0.28
T,ACG,0.08
T,ACU,0.24
V,GUA,0.19
V,GUC,0.24
V,GUG,0.43
V,GUU,0.14
W,UGG,1.00
Y,UAC,0.59
Y,UAU,0.41
"""
SCEREVISIAE = b"""
*,UAA,0.47
*,UAG,0.23
*,UGA,0.30
A,GCA,0.29
A,GCC,0.22
A,GCG,0.11
A,GCU,0.38
C,UGC,0.37
C,UGU,0.63
D,GAC,0.35
D,GAU,0.65
E,GAA,0.70
E,GAG,0.30
F,UUC,0.41
F,UUU,0.59
G,GGA,0.22
G,GGC,0.19
G,GGG,0.12
G,GGU,0.47
H,CAC,0.36
H,CAU,0.64
I,AUA,0.27
I,AUC,0.26
I,AUU,0.46
K,AAA,0.58
K,AAG,0.42
L,CUA,0.14
L,CUC,0.06
L,CUG,0.11
L,CUU,0.13
L,UUA,0.28
L,UUG,0.29
M,AUG,1.00
N,AAC,0.41
N,AAU,0.59
P,CCA,0.42
P,CCC,0.15
P,CCG,0.12
P,CCU,0.31
Q,CAA,0.69
Q,CAG,0.31
R,AGA,0.48
R,AGG,0.21
R,CGA,0.07
R,CGC,0.06
R,CGG,0.04
R,CGU,0.14
S,AGC,0.11
S,AGU,0.16
S,UCA,0.21
S,UCC,0.16
S,UCG,0.10
S,UCU,0.26
T,ACA,0.30
T,ACC,0.22
T,ACG,0.14
T,ACU,0.35
V,GUA,0.21
V,GUC,0.21
V,GUG,0.19
V,GUU,0.39
W,UGG,1.00
Y,UAC,0.44
Y,UAU,0.56
"""
TABLES = {
"b_subtilis": BSUBTILIS,
"c_elegans": CELEGANS,
"d_melanogaster": DMELANOGASTER,
"e_coli": ECOLI,
"g_gallus": GGALIUS,
"h_sapiens": HSAPIENS,
"m_musculus": MMUSCULUS,
"m_musculus_domesticus": MMUSCULUSDOMSETICUS,
"s_cerevisiiae": SCEREVISIAE,
}
def execfn(fn: type):
freqs, codes = fn()
globals()["__ENCODED__"] = (freqs, codes)
return fn
@execfn
def encode_freqs(tables=TABLES) -> tuple[str, list[int]]:
encode_single_nuc = lambda x: 3 & (x >> 1)
tables_list = list(tables.keys())
encoded_freqs = [[0] * 256] * len(tables_list)
for species, csv in tables.items():
for l in csv.strip().split(b"\n"):
peptide, nuc_triplet, freq = l.split(b",")
peptide = peptide[0] - 65
nuc_triplet = [encode_single_nuc(b) for b in nuc_triplet]
indx = (peptide << 3) | (nuc_triplet[0] |
(nuc_triplet[2] << 1) ^ nuc_triplet[1])
freq = freq.split(b".")[-1][:2]
freq = 99 if freq == "00" else int(freq.decode())
encoded_freqs[tables_list.index(species)][indx] = freq
return encoded_freqs, tables_list
if __name__ == "__main__":
freqs, lut = globals()["__ENCODED__"]
import sys
import json
if len(sys.argv) < 2:
print("Arg number must be 2")
exit(1)
cmd, file_frq = sys.argv[1:3]
ffrq = open(file_frq, "w")
if cmd.startswith("c"):
print("FREQ = [", file=ffrq)
for freq in freqs:
print("[ ", ", ".join(map(str, freq)) + " ],", file=ffrq)
print("]", file=ffrq)
print("LUT = [ ", ", ".join(map(lambda x: f'"{x}"', lut)) + " ],", file=ffrq)
elif cmd.startswith("j"):
combined = {k: freqs[lut.index(k)] for k in lut}
ffrq.write(json.dumps(combined, indent=4))
else:
print('Wrong command')
ffrq.close()
exit(1)
#!/bin/python3
#############################################################################
# Copyright (c) 2023 Chubak Bidpaa #
# Permission is hereby granted, free of charge, to any person obtaining #
# a copy of this software and associated documentation files (the #
# "Software"), to deal in the Software without restriction, including #
# without limitation the rights to use, copy, modify, merge, publish, #
# distribute, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to #
# the following conditions: #
# The above copyright notice and this permission notice shall be #
# included in all copies or substantial portions of the Software. #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, #
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF #
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND #
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE #
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION #
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION #
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #
#############################################################################
# Encode codon tables for a 64bit-width register or memory address
# Please read ENCODING.md for more info
GENETIC_TABLE = {
"1": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG", b"TGA"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"2": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG", b"AGA", b"AGG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC"],
b"M": [b"ATA", b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"3": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"T": [b"CTT", b"CTC", b"CTA", b"CTG", b"ACT", b"ACC", b"ACA", b"ACG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC"],
b"M": [b"ATA", b"ATG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"ATT", b"ATC"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"4": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"5": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC", b"AGA", b"AGG"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC"],
b"M": [b"ATA", b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"6": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"Q": [b"TAA", b"TAG", b"CAA", b"CAG"],
b"C": [b"TGT", b"TGC"],
b"*": [b"TGA"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"TAA", b"TAG", b"CAA", b"CAG", b"GAA", b"GAG"]
},
"9": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC", b"AGA", b"AGG"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC", b"AAA"],
b"K": [b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"AAA", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"10": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC", b"TGA"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"11": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG", b"TGA"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"12": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"CTG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG", b"TGA"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"ATT", b"ATC", b"ATA"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"13": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC"],
b"M": [b"ATA", b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"G": [b"AGA", b"AGG", b"GGT", b"GGC", b"GGA", b"GGG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"14": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC", b"AGA", b"AGG"],
b"Y": [b"TAT", b"TAC", b"TAA"],
b"*": [b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC", b"AAA"],
b"K": [b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"AAA", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"15": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TGA"],
b"Q": [b"TAG", b"CAA", b"CAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"TAG", b"CAA", b"CAG", b"GAA", b"GAG"]
},
"16": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"TAG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TGA"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"TAG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT",
b"ATC", b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"21": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC", b"AGA", b"AGG"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC"],
b"M": [b"ATA", b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC", b"AAA"],
b"K": [b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"AAA", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"22": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"TAG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCG", b"AGT", b"AGC"],
b"*": [b"TCA", b"TAA", b"TGA"],
b"Y": [b"TAT", b"TAC"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"TAG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT",
b"ATC", b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"23": {
b"F": [b"TTT", b"TTC"],
b"*": [b"TTA", b"TAA", b"TAG", b"TGA"],
b"L": [b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC", b"ATA"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"24": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC", b"AGA"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG", b"AGG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"25": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"G": [b"TGA", b"GGT", b"GGC", b"GGA", b"GGG"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"26": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TAG", b"TGA"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGG"],
b"A": [b"CTG", b"GCT", b"GCC", b"GCA", b"GCG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"ATT", b"ATC", b"ATA"],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"27": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"Q": [b"TAA", b"TAG", b"CAA", b"CAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"TAA", b"TAG", b"CAA", b"CAG", b"GAA", b"GAG"]
},
"28": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"Q": [b"TAA", b"TAG", b"CAA", b"CAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"TAA", b"TAG", b"CAA", b"CAG", b"GAA", b"GAG"]
},
"29": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC", b"TAA", b"TAG"],
b"C": [b"TGT", b"TGC"],
b"*": [b"TGA"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"30": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"E": [b"TAA", b"TAG", b"GAA", b"GAG"],
b"C": [b"TGT", b"TGC"],
b"*": [b"TGA"],
b"W": [b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"TAA", b"TAG", b"GAA", b"GAG", b"CAA", b"CAG"]
},
"31": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"E": [b"TAA", b"TAG", b"GAA", b"GAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"TAA", b"TAG", b"GAA", b"GAG", b"CAA", b"CAG"]
},
"32": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC"],
b"Y": [b"TAT", b"TAC"],
b"*": [b"TAA", b"TGA"],
b"W": [b"TAG", b"TGG"],
b"C": [b"TGT", b"TGC"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG", b"AGA", b"AGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
},
"33": {
b"F": [b"TTT", b"TTC"],
b"L": [b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG"],
b"S": [b"TCT", b"TCC", b"TCA", b"TCG", b"AGT", b"AGC", b"AGA"],
b"Y": [b"TAT", b"TAC", b"TAA"],
b"*": [b"TAG"],
b"C": [b"TGT", b"TGC"],
b"W": [b"TGA", b"TGG"],
b"P": [b"CCT", b"CCC", b"CCA", b"CCG"],
b"H": [b"CAT", b"CAC"],
b"Q": [b"CAA", b"CAG"],
b"R": [b"CGT", b"CGC", b"CGA", b"CGG"],
b"I": [b"ATT", b"ATC", b"ATA"],
b"M": [b"ATG"],
b"T": [b"ACT", b"ACC", b"ACA", b"ACG"],
b"N": [b"AAT", b"AAC"],
b"K": [b"AAA", b"AAG", b"AGG"],
b"V": [b"GTT", b"GTC", b"GTA", b"GTG"],
b"A": [b"GCT", b"GCC", b"GCA", b"GCG"],
b"D": [b"GAT", b"GAC"],
b"E": [b"GAA", b"GAG"],
b"G": [b"GGT", b"GGC", b"GGA", b"GGG"],
b"X": [],
b"B": [b"AAT", b"AAC", b"GAT", b"GAC"],
b"J": [
b"TTA", b"TTG", b"CTT", b"CTC", b"CTA", b"CTG", b"ATT", b"ATC",
b"ATA"
],
b"Z": [b"CAA", b"CAG", b"GAA", b"GAG"]
}
}
__METHOD_DOC_COMM = {
"NucleotideEncodingMethod": "3 & (<nucleotide> >> 1)",
"NucleotideEncodingMapping": {
"A": 0,
"C": 1,
"T": 2,
"G": 3,
},
"NucleotidePackedMaxNbits": 7,
"NucleotidePackedMaxValue": 63,
"CorrespondingFile": "Github/chubek/TransGatacca/encoding/encode_tables.py",
}
__METHOD_DOC_NUC = {
**__METHOD_DOC_COMM,
"TripletPackingMethod": "(<nucletide_1> << 4) | (<nucletide_2> << 2) | <nucletide_3>",
"IndexingMethod": "ARRAY[<packed_nucleotide>] = <peptide>",
"PackedTripletExample": "MSB=01 B1=11 LSB=00 -> CGA"
}
__METHOD_DOC_PEP = {
**__METHOD_DOC_COMM,
"CodonPackingMethod": "foreach Nth <packed_triplet>: packed |= <packed_triplet> << (<pack_offset> inc by 6)",
"PackOffsetInitial": 4,
"PackOffsetMax": 54,
"PackMaxNbits": 54,
"MaxNumberOfCodons": 9,
"MinNumberOfCodons": 1,
"MaxNumberOfCodonsNBits": 4,
"CodonsNumEncodingMethod": "<packed_codons> | <number_of_codons>",
"IndexingMethod": "ARRAY[<ASCII_VAL(peptide) - 65>] = <packed_codons>",
"PackedCodonsExample": "MSB=001110 B1=111100 LSB=0010 -> (AGT, GGA, len=2)",
}
def execfn(fn: type):
nucs, peps = fn()
globals()["__ENCODED__"] = (nucs, peps)
return fn
@execfn
def encode_gtable(gtable=GENETIC_TABLE) -> tuple[dict[str, list[int]], dict[str, list[int]]]:
final_encoded_peps = {}
final_encoded_nucs = {}
def enc_nuc(nuc): return 3 & (nuc >> 1)
iss = []
for genetic_code, table in gtable.items():
final_encoded_nucs[genetic_code] = [0] * 64
final_encoded_peps[genetic_code] = [0] * 26
for peptide, nucleotide_triplets in table.items():
peptide_idx = ord(peptide) - 65
shl_amount = 4
for i, trip in enumerate(nucleotide_triplets):
indx = (enc_nuc(trip[0]) << 4) & 0xff
indx |= (enc_nuc(trip[1]) << 2) & 0xff
indx |= enc_nuc(trip[2])
final_encoded_nucs[genetic_code][indx] = ord(peptide)
final_encoded_peps[genetic_code][peptide_idx] |= (
indx << shl_amount)
shl_amount += 6
final_encoded_peps[genetic_code][peptide_idx] |= len(
nucleotide_triplets)
return final_encoded_nucs, final_encoded_peps
if __name__ == "__main__":
encd_nucs, encd_peps = globals()["__ENCODED__"]
import sys
import json
if len(sys.argv) < 4:
print("Arg number must be 3")
exit(1)
cmd, file_nuc, file_pep = sys.argv[1:4]
fnuc = open(file_nuc, "w")
fpep = open(file_pep, "w")
if cmd.startswith("c"):
print("{", file=fnuc)
print("{", file=fpep)
for i in range(37):
if str(i) in encd_nucs:
gtable_enc = encd_nucs[str(i)]
print(
"{", ", ".join(list(map(str, gtable_enc))), "},", file=fnuc)
gtable_enc = encd_peps[str(i)]
print(
"{", ", ".join(list(map(str, gtable_enc))), "},", file=fpep)
else:
print("ARR_ZERO_64,", file=fnuc)
print("ARR_ZERO_26,", file=fpep)
print("}", file=fnuc)
print("}", file=fpep)
elif cmd.startswith("j"):
encd_nucs["Method"] = __METHOD_DOC_NUC
encd_peps["Method"] = __METHOD_DOC_PEP
fnuc.write(json.dumps(encd_nucs, indent=4))
fpep.write(json.dumps(encd_peps, indent=4))
else:
print("Unknown command: " + cmd)
fnuc.close()
fpep.close()
exit(1)
fnuc.close()
fpep.close()
{
"b_subtilis": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"c_elegans": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"d_melanogaster": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"e_coli": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"g_gallus": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"h_sapiens": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"m_musculus": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"m_musculus_domesticus": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
"s_cerevisiiae": [
0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 63,
0, 0, 0, 35, 0, 0, 0, 65, 0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 41, 0, 0, 0, 59,
0, 0, 0, 0, 19, 0, 0, 0, 47, 0, 0, 0, 36, 0, 64, 0, 0, 26, 0, 27, 0, 0, 0,
46, 0, 0, 0, 47, 30, 0, 0, 23, 0, 58, 0, 0, 0, 0, 0, 42, 0, 0, 6, 28, 14, 0,
11, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 42, 0, 15, 0, 31, 0, 12, 0, 69, 0, 0, 0, 0, 0, 31, 0, 6, 0, 7,
0, 4, 0, 14, 0, 11, 0, 16, 0, 0, 0, 26, 0, 30, 0, 22, 0, 35, 0, 14, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
}
{
"1": [
234149732, 208798756, 46818, 2936611, 52994, 42658, 268236772, 17698,
533667, 36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572,
19714, 261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
217074948
],
"2": [
234149732, 208798756, 46818, 63754022, 52994, 42658, 268236772, 17698, 9378,
644784219401864, 3074, 470405525126, 11394, 1058, 0, 97801572, 19714,
131888612, 227262371430, 29627492, 0, 251193252, 48834, 0, 34338, 217074948
],
"3": [
234149732, 208798756, 46818, 53026, 52994, 42658, 268236772, 17698, 9378,
38448772, 3074, 44674, 11394, 1058, 0, 97801572, 19714, 261051151846,
227262371430, 497066880558504, 0, 251193252, 48834, 0, 34338, 217074948
],
"4": [
234149732, 208798756, 46818, 53026, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 19714,
261051151846, 227262371430, 29627492, 0, 251193252, 48834, 0, 34338,
217074948
],
"5": [
234149732, 208798756, 46818, 53026, 52994, 42658, 268236772, 17698, 9378,
644784219401864, 3074, 470405525126, 11394, 1058, 0, 97801572, 19714,
131888612, 1068952564569704, 29627492, 0, 251193252, 48834, 0, 34338,
217074948
],
"6": [
234149732, 208798756, 46818, 51171, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 80776708,
261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
889139006982
],
"9": [
234149732, 13363053605, 46818, 53026, 52994, 42658, 268236772, 17698,
533667, 36673581238365833, 49, 470405525126, 177, 1059, 0, 97801572, 19714,
131888612, 1068952564569704, 29627492, 0, 251193252, 48834, 0, 34338,
217074948
],
"10": [
234149732, 208798756, 2930403, 53026, 52994, 42658, 268236772, 17698,
533667, 36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572,
19714, 261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
217074948
],
"11": [
234149732, 208798756, 46818, 2936611, 52994, 42658, 268236772, 17698,
533667, 36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572,
19714, 261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
217074948
],
"12": [
234149732, 208798756, 46818, 2936611, 52994, 42658, 268236772, 17698,
533667, 573023905820296, 3074, 6549057157, 177, 1058, 0, 97801572, 19714,
261051151846, 14541583062631, 29627492, 0, 251193252, 753, 0, 34338,
217074948
],
"13": [
234149732, 208798756, 46818, 53026, 52994, 42658, 1098697817286, 17698,
9378, 644784219401864, 3074, 470405525126, 11394, 1058, 0, 97801572, 19714,
131888612, 227262371430, 29627492, 0, 251193252, 48834, 0, 34338, 217074948
],
"14": [
234149732, 13363053605, 46818, 50995, 52994, 42658, 268236772, 17698,
533667, 36673581238365833, 49, 470405525126, 177, 1059, 0, 97801572, 19714,
131888612, 1068952564569704, 29627492, 0, 251193252, 48834, 0, 2131491,
217074948
],
"15": [
234149732, 208798756, 46818, 63266, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 1262131,
261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
13892796981
],
"16": [
234149732, 208798756, 46818, 63266, 52994, 42658, 268236772, 17698, 533667,
2347109199254892170, 3074, 30105953087111, 177, 1058, 0, 97801572, 19714,
261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338, 217074948
],
"21": [
234149732, 13363053605, 46818, 53026, 52994, 42658, 268236772, 17698, 9378,
644784219401864, 49, 470405525126, 11394, 1059, 0, 97801572, 19714,
131888612, 1068952564569704, 29627492, 0, 251193252, 48834, 0, 34338,
217074948
],
"22": [
234149732, 208798756, 46818, 2934627, 52994, 42658, 268236772, 17698,
533667, 2347109199254892170, 3074, 30105953087111, 177, 1058, 0, 97801572,
19714, 261051151846, 3550975589, 29627492, 0, 251193252, 753, 0, 34338,
217074948
],
"23": [
234149732, 208798756, 46818, 186894246, 52994, 42658, 268236772, 17698,
533667, 573024706849464, 3074, 7350086325, 177, 1058, 0, 97801572, 19714,
261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338, 217074948
],
"24": [
234149732, 208798756, 46818, 53026, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 986115, 470405525126, 177, 1058, 0, 97801572, 19714,
131888612, 13421401904743, 29627492, 0, 251193252, 48834, 0, 34338,
217074948
],
"25": [
234149732, 208798756, 46818, 53026, 52994, 42658, 17167153861, 17698,
533667, 36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572,
19714, 261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
217074948
],
"26": [
14985583029, 208798756, 46818, 2936611, 52994, 42658, 268236772, 17698,
533667, 573023905820296, 3074, 6549057157, 177, 1058, 0, 97801572, 19714,
261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338, 217074948
],
"27": [
234149732, 208798756, 46818, 50978, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 80776708,
261051151846, 227262371430, 29627492, 0, 251193252, 48834, 0, 34338,
889139006982
],
"28": [
234149732, 208798756, 46818, 50978, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 80776708,
261051151846, 227262371430, 29627492, 0, 251193252, 48834, 0, 34338,
889139006982
],
"29": [
234149732, 208798756, 46818, 51171, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 19714,
261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 148932132,
217074948
],
"30": [
234149732, 208798756, 46818, 51171, 217091588, 42658, 268236772, 17698,
533667, 36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572,
19714, 261051151846, 227262371430, 29627492, 0, 251193252, 753, 0, 34338,
330929573382
],
"31": [
234149732, 208798756, 46818, 50978, 217091588, 42658, 268236772, 17698,
533667, 36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572,
19714, 261051151846, 227262371430, 29627492, 0, 251193252, 48834, 0, 34338,
330929573382
],
"32": [
234149732, 208798756, 46818, 63266, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 3074, 470405525126, 177, 1058, 0, 97801572, 19714,
261051151846, 227262371430, 29627492, 0, 251193252, 48690, 0, 34338,
217074948
],
"33": [
234149732, 208798756, 46818, 50995, 52994, 42658, 268236772, 17698, 533667,
36673581238365833, 986115, 470405525126, 177, 1058, 0, 97801572, 19714,
131888612, 13421401904743, 29627492, 0, 251193252, 48834, 0, 2131491,
217074948
],
"Method": {
"NucleotideEncodingMethod": "3 & (<nucleotide> >> 1)",
"NucleotideEncodingMapping": {
"A": 0,
"C": 1,
"T": 2,
"G": 3
},
"NucleotidePackedMaxNbits": 7,
"NucleotidePackedMaxValue": 63,
"CorrespondingFile": "Github/chubek/TransGatacca/encoding/encode_tables.py",
"CodonPackingMethod": "foreach Nth <packed_triplet>: packed |= <packed_triplet> << (<pack_offset> inc by 6)",
"PackOffsetInitial": 4,
"PackOffsetMax": 54,
"PackMaxNbits": 54,
"MaxNumberOfCodons": 9,
"MinNumberOfCodons": 1,
"MaxNumberOfCodonsNBits": 4,
"CodonsNumEncodingMethod": "<packed_codons> | <number_of_codons>",
"IndexingMethod": "ARRAY[<ASCII_VAL(peptide) - 65>] = <packed_codons>",
"PackedCodonsExample": "MSB=001110 B1=111100 LSB=0010 -> (AGT, GGA, len=2)"
}
}
{
"1": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"2": [
75, 66, 66, 75, 84, 84, 84, 84, 77, 74, 74, 77, 42, 83, 83, 42, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"3": [
75, 66, 66, 75, 84, 84, 84, 84, 77, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 84, 84, 84, 84, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"4": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"5": [
75, 66, 66, 75, 84, 84, 84, 84, 77, 74, 74, 77, 83, 83, 83, 83, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"6": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 90, 89, 89, 90, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"9": [
66, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 83, 83, 83, 83, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"10": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 67, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"11": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"12": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 83, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"13": [
75, 66, 66, 75, 84, 84, 84, 84, 77, 74, 74, 77, 71, 83, 83, 71, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"14": [
66, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 83, 83, 83, 83, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 89, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"15": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 90, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"16": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 74, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"21": [
66, 66, 66, 75, 84, 84, 84, 84, 77, 74, 74, 77, 83, 83, 83, 83, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"22": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 74, 42, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"23": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 42, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"24": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 83, 83, 83, 75, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"25": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 71, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"26": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 65, 82, 82, 82, 82, 42, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"27": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 90, 89, 89, 90, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"28": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 90, 89, 89, 90, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"29": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 89, 89, 89, 89, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"30": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 90, 89, 89, 90, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"31": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 90, 89, 89, 90, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"32": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 82, 83, 83, 82, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 42, 89, 89, 87, 83, 83,
83, 83, 74, 70, 70, 74, 42, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"33": [
75, 66, 66, 75, 84, 84, 84, 84, 74, 74, 74, 77, 83, 83, 83, 75, 90, 72, 72,
90, 80, 80, 80, 80, 74, 74, 74, 74, 82, 82, 82, 82, 89, 89, 89, 42, 83, 83,
83, 83, 74, 70, 70, 74, 87, 67, 67, 87, 90, 66, 66, 90, 65, 65, 65, 65, 86,
86, 86, 86, 71, 71, 71, 71
],
"Method": {
"NucleotideEncodingMethod": "3 & (<nucleotide> >> 1)",
"NucleotideEncodingMapping": {
"A": 0,
"C": 1,
"T": 2,
"G": 3
},
"NucleotidePackedMaxNbits": 7,
"NucleotidePackedMaxValue": 63,
"CorrespondingFile": "Github/chubek/TransGatacca/encoding/encode_tables.py",
"TripletPackingMethod": "(<nucletide_1> << 4) | (<nucletide_2> << 2) | <nucletide_3>",
"IndexingMethod": "ARRAY[<packed_nucleotide>] = <peptide>",
"PackedTripletExample": "MSB=01 B1=11 LSB=00 -> CGA"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment