In [1]:
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# Use this generator (and this seed) everywhere so your numbers are reproducible.
rng = np.random.default_rng(540)
In [5]:
dna=rng.choice(["A", "T", "C", "G"], 10000)
dna[:10]
Out[5]:
array(['A', 'G', 'T', 'C', 'G', 'A', 'G', 'G', 'C', 'C'], dtype='<U1')
In [48]:
s="".join(dna[:10])
s
Out[48]:
'AGTCGAGGCC'
In [13]:
k=3
for i in range(10-k+1):
    char=[]
    for j in range(k):
        char.append(s[i+j])
        print(char)
['A']
['A', 'G']
['A', 'G', 'T']
['G']
['G', 'T']
['G', 'T', 'C']
['T']
['T', 'C']
['T', 'C', 'G']
['C']
['C', 'G']
['C', 'G', 'A']
['G']
['G', 'A']
['G', 'A', 'G']
['A']
['A', 'G']
['A', 'G', 'G']
['G']
['G', 'G']
['G', 'G', 'C']
['G']
['G', 'C']
['G', 'C', 'C']
In [16]:
k=3
my_dict={}
for i in range(10-k+1):
    char=[]
    for j in range(k):
        char.append(s[i+j])
    tup="".join(char)
    print(tup)
AGT
GTC
TCG
CGA
GAG
AGG
GGC
GCC
In [17]:
k=3
my_dict={}
for i in range(10-k+1):
    char=[]
    for j in range(k):
        char.append(s[i+j])
    tup="".join(char)
    if tup in my_dict:
        my_dict[tup]+=1
    else:
        my_dict[tup]=1
my_dict
    
Out[17]:
{'AGT': 1,
 'GTC': 1,
 'TCG': 1,
 'CGA': 1,
 'GAG': 1,
 'AGG': 1,
 'GGC': 1,
 'GCC': 1}
In [42]:
def ktuples(s, k):
    my_dict={}
    for i in range(len(s)-k+1):
        char=[]
        for j in range(k):
            char.append(s[i+j])
        tup="".join(char)
        if tup in my_dict:
            my_dict[tup]+=1
        else:
            my_dict[tup]=1
    return(my_dict)
In [53]:
results=ktuples("CAGACAAAAC", k=3)
results
Out[53]:
{'CAG': 1, 'AGA': 1, 'GAC': 1, 'ACA': 1, 'CAA': 1, 'AAA': 2, 'AAC': 1}
In [54]:
for tup in sorted(results):
    print(f" {tup}: {results[tup]}")
 AAA: 2
 AAC: 1
 ACA: 1
 AGA: 1
 CAA: 1
 CAG: 1
 GAC: 1
In [55]:
s="".join(dna)
results=ktuples(s, k=3)
results
Out[55]:
{'AGT': 159,
 'GTC': 154,
 'TCG': 165,
 'CGA': 167,
 'GAG': 147,
 'AGG': 159,
 'GGC': 166,
 'GCC': 148,
 'CCC': 146,
 'CCA': 168,
 'CAC': 167,
 'ACG': 156,
 'CGG': 138,
 'GGA': 159,
 'GAT': 161,
 'ATA': 180,
 'TAG': 173,
 'AGC': 155,
 'GCT': 155,
 'CTG': 168,
 'TGT': 171,
 'TCA': 136,
 'CAG': 140,
 'ATG': 144,
 'TGG': 141,
 'GAC': 165,
 'AGA': 136,
 'GAA': 149,
 'AAC': 156,
 'ACC': 171,
 'CCG': 155,
 'GGT': 113,
 'GTA': 142,
 'TAA': 138,
 'AAT': 156,
 'ATT': 166,
 'TTA': 154,
 'TAC': 162,
 'CAA': 173,
 'ACA': 153,
 'GGG': 142,
 'GCA': 178,
 'ACT': 170,
 'GTT': 172,
 'GTG': 145,
 'TGA': 160,
 'TTG': 174,
 'TGC': 159,
 'CAT': 155,
 'TAT': 160,
 'TCC': 147,
 'AAA': 153,
 'CTT': 161,
 'CCT': 143,
 'CGT': 170,
 'TTC': 170,
 'CTA': 157,
 'GCG': 155,
 'AAG': 148,
 'TTT': 143,
 'ATC': 142,
 'TCT': 172,
 'CGC': 156,
 'CTC': 154}
In [56]:
for tup in sorted(results):
    print(f" {tup}: {results[tup]}")
 AAA: 153
 AAC: 156
 AAG: 148
 AAT: 156
 ACA: 153
 ACC: 171
 ACG: 156
 ACT: 170
 AGA: 136
 AGC: 155
 AGG: 159
 AGT: 159
 ATA: 180
 ATC: 142
 ATG: 144
 ATT: 166
 CAA: 173
 CAC: 167
 CAG: 140
 CAT: 155
 CCA: 168
 CCC: 146
 CCG: 155
 CCT: 143
 CGA: 167
 CGC: 156
 CGG: 138
 CGT: 170
 CTA: 157
 CTC: 154
 CTG: 168
 CTT: 161
 GAA: 149
 GAC: 165
 GAG: 147
 GAT: 161
 GCA: 178
 GCC: 148
 GCG: 155
 GCT: 155
 GGA: 159
 GGC: 166
 GGG: 142
 GGT: 113
 GTA: 142
 GTC: 154
 GTG: 145
 GTT: 172
 TAA: 138
 TAC: 162
 TAG: 173
 TAT: 160
 TCA: 136
 TCC: 147
 TCG: 165
 TCT: 172
 TGA: 160
 TGC: 159
 TGG: 141
 TGT: 171
 TTA: 154
 TTC: 170
 TTG: 174
 TTT: 143
In [ ]: