In [8]:
nuc = 'ACGT'
comp = 'TGCA'
complement = dict(zip(nuc,comp))
complement


Out[8]:
{'A': 'T', 'C': 'G', 'T': 'A', 'G': 'C'}

In [16]:
def rev_comp(s):
    return ''.join([complement[n] for n in reversed(s)])

In [17]:
rev_comp('GGGAGCAGCACTTT')


Out[17]:
'AAAGTGCTGCTCCC'

In [26]:
uniques = set()
count = 0
for a in nuc:
    for b in nuc:
        if a+b not in uniques:
            uniques.add(a+b)        
            uniques.add(rev_comp(a+b))        
            count += 1
print(count, uniques)


10 {'CC', 'TG', 'CA', 'CG', 'TC', 'TA', 'AA', 'AC', 'GC', 'AG', 'GG', 'TT', 'GA', 'CT', 'GT', 'AT'}

In [ ]:


In [29]:
uniques = set()
count = 0
for a in nuc:
    for b in nuc:
        for c in nuc:
            if a+b+c not in uniques:
                uniques.add(a+b+c)        
                uniques.add(rev_comp(a+b+c))        
                count += 1
print(count, uniques)


32 {'GAG', 'GTA', 'TCA', 'CGA', 'ATT', 'GAT', 'GTT', 'CGT', 'CCC', 'ATG', 'CAC', 'AAT', 'CAA', 'GGA', 'CAG', 'CTT', 'CCT', 'CGC', 'GTC', 'ATC', 'CGG', 'ATA', 'GAA', 'AAG', 'AAA', 'AAC', 'CAT', 'ACC', 'ACA', 'TAA', 'ACG', 'AGG', 'GAC', 'GCC', 'GTG', 'AGC', 'CCG', 'AGA', 'TTT', 'CTG', 'GCG', 'ACT', 'TTC', 'CCA', 'TTA', 'AGT', 'TTG', 'GCT', 'CTA', 'TAT', 'TGC', 'TGA', 'TGG', 'TAC', 'TCG', 'CTC', 'TCC', 'GGG', 'TAG', 'GGC', 'TGT', 'GGT', 'TCT', 'GCA'}

In [ ]:


In [31]:
uniques = set()
count = 0
for a in nuc:
    for b in nuc:
        for c in nuc:
            for d in nuc:
                if a+b+c+d not in uniques:
                    uniques.add(a+b+c+d)
                    uniques.add(rev_comp(a+b+c+d)) 
                    count += 1
print(count, uniques)


136 {'CAAG', 'CAAC', 'CAAA', 'TCAA', 'TTCG', 'TCAC', 'TTCA', 'TTCC', 'TCAG', 'CAAT', 'GGAA', 'TTCT', 'GTAA', 'TCAT', 'GCAG', 'CGTT', 'AAGT', 'CTCT', 'GGAT', 'CTAG', 'GCAA', 'TGAA', 'AAGG', 'CGTG', 'GAAC', 'CTCC', 'AAGC', 'CGTC', 'AAGA', 'CTCG', 'GGGC', 'TGTC', 'ACCC', 'GACA', 'GCAT', 'ACGA', 'AGGT', 'ACGC', 'GGTA', 'TGTA', 'ACGG', 'GGAC', 'GTAG', 'AGGG', 'AGGA', 'ACGT', 'AGGC', 'ATCG', 'GTCA', 'ATCC', 'ATCA', 'TGAG', 'TTGC', 'GTGC', 'CCAA', 'ATCT', 'TGAT', 'GAAA', 'CGAC', 'TCCG', 'GAAG', 'CGCT', 'TCCC', 'TCCA', 'GTAT', 'CCAG', 'CGCG', 'GCGA', 'TCCT', 'TGAC', 'CGCC', 'GTTA', 'CGCA', 'TACA', 'CTAT', 'GGGT', 'TATA', 'TATC', 'TACG', 'GTTC', 'CCGC', 'TTTC', 'AATT', 'TTTG', 'GGGG', 'TATT', 'TACT', 'CTAC', 'GGGA', 'CTAA', 'AATC', 'AATA', 'TTTT', 'AATG', 'ACAG', 'GAGT', 'GCTT', 'ACAC', 'ACAA', 'GCGG', 'GCTG', 'GAGG', 'ACAT', 'GAGA', 'GCTC', 'GAGC', 'GCTA', 'TGCC', 'TGCA', 'TGCG', 'CCCT', 'AGAC', 'CACT', 'AGAA', 'TAAA', 'AGAG', 'GTTG', 'CCCC', 'CCCA', 'CCTA', 'CCCG', 'TGCT', 'CATA', 'CACG', 'CATC', 'CACA', 'GTTT', 'CACC', 'AGAT', 'CGAT', 'TTGT', 'ATGC', 'GCGT', 'TTGA', 'CGAG', 'CGAA', 'TTGG', 'CTGC', 'TCGA', 'TAAG', 'GTCG', 'TAAC', 'CTCA', 'GCAC', 'CTGG', 'CTGA', 'GGTT', 'AACT', 'TAAT', 'AACC', 'GGTC', 'AACA', 'GTCC', 'AACG', 'GGTG', 'AGTT', 'ACTA', 'ACCG', 'ACTC', 'ACCA', 'GGAG', 'ATGT', 'ACTG', 'ATGA', 'CGTA', 'GACC', 'CTGT', 'AGTG', 'ACTT', 'AGTA', 'AGTC', 'AGCA', 'AGCC', 'TCTT', 'TGTG', 'GCCA', 'AGCG', 'ATTG', 'CCAC', 'ATAG', 'ATTC', 'ATTA', 'TCTG', 'GCGC', 'GTGG', 'TCTC', 'AGCT', 'TCTA', 'TGTT', 'TTAC', 'ATTT', 'CCAT', 'GAAT', 'CAGA', 'CTTT', 'CAGC', 'TTAT', 'TTAA', 'CAGG', 'TAGT', 'CATT', 'GATA', 'TTAG', 'CTTG', 'CTTA', 'CAGT', 'CTTC', 'TAGG', 'TAGA', 'TAGC', 'CGGC', 'CGGA', 'CGGG', 'AAAT', 'GGCT', 'AAAA', 'AAAC', 'AAAG', 'CGGT', 'GGCC', 'ATAT', 'GGCA', 'GGCG', 'TGGC', 'GATT', 'CCTT', 'TGGA', 'TATG', 'GTGA', 'CCTC', 'GATG', 'CCTG', 'CCGA', 'GATC', 'GTAC', 'CATG', 'GCCG', 'ATAA', 'TGGT', 'ATAC', 'GCCC', 'GACG', 'ACCT', 'CCGG', 'GTCT', 'TCGT', 'TGGG', 'GCCT', 'GTGT', 'GACT', 'TACC', 'TTTA', 'TCGC', 'CCGT', 'TCGG', 'ATGG'}

In [ ]:

Determine 3-mer signature from a sequence


In [ ]:

Calculate coverage stat for overlapping ACA or AAA


In [ ]:

Determine threshold for region cut-off

  • Using the Markov chain strategy, this may be just correlation = 0 because background trends will be accounted for

In [ ]: