1. k-mers란 무엇인가? 

K-mers란  K (숫자) 개의 염기단위로 Genome의 염기서열을 읽는 것이다. 



위의 그림은 3-mer에 대한 예시이다. 위의 그림에서 초록색 박스는 3-mer로 시퀀스를 어떻게 읽을 수 있는지 보여준다. 
1번째 3-mer: ATT
2번째 3-mer:TTG
3번째 3-mer :TGA
이렇게 3개 염기의 단위로 위의 지놈시퀀스를 읽어서 정보를 이용할 수있다. 

2. k-mer를 파이썬 스크립트로 구현

아주 간단한 파이썬스크립트를 이용해서 k-mer를 구현해 보자.

1
2
3
4
5
6
7
def Bring_kmers(Seq,nKmer):
    nFinalStart = len(Seq)-nKmer
    Kmers = []
    for nStart in range(0,nFinalStart):
        KmerSeq = Seq[nStart:(nStart+nKmer)]
        Kmers.append(KmerSeq)
    return Kmers

위처럼 Bring_kmers라는 함수,method를 붙여넣기 한후 위의 예제에서의 sequence를 넣어서 3-mer로 읽을 수 있는지 확인해 보자.


A = 'ATTGATTGTC'
print(Bring_kmers(A,3))

위와 같이 A라고 시퀀스를 정의한 후 "3"-mer를 의미한는 3을 함수에 넣으면,
아래와 같은 결과를 얻을 수 있다.

['ATT''TTG''TGA''GAT''ATT''TTG''TGT']
 
cs


3-mer로 잘 읽어 지는 것을 확인 할 수 있다! 그렇다면 5-mer는 어떻게 출력이 될까? 직접 해보길 바란다. 

3. k-mer 가 실제로 어디에 쓰이는가?

예를들어서, Chip-Seq을 하게 되면 peak이라고 하는 read가 집중적으로 쌓여있는 부분을 알 수 있다. 이 지역이 transcription factor 가 붙는 region으로 생각을 하게 된다. 이 지역은 보통 200-300bp로 나오는데, 사실 transcription factor가 진짜 붙는 site 자체의 길이는 이보다 훨씬 짧다. 10bp 이내라고 할 수 있다. 그렇다면 그 짧은 시퀀스를 어떻게 알아낼 수 있을까? 

 transcription factor가 붙는 여러 region들이 공통적으로 10bp내의 짧은 시퀀스를 갖고 있으면 되지않을까? 
  
이때 여러 peak들을 kmer로 읽은후 서로 k-mer sequence를 비교하여 
어디에 transcription factor가 붙는지 정확한 sequence를 예측할 수 있다.