Python 공부를 정리를 하지않고 하다보니 자꾸 까먹어서 여기다 정리를 해놓으려 한다.
Primer 를 Design 하다 보면 가장 많이 사용하게 되는 기능이 Reverse complement 서열을 갖고오는 것이다.
실제로 가장 많이 사용하는 사이트는 이것이지만, https://www.bioinformatics.org/sms/rev_comp.html
Reverse Complement
Reverse Complement converts a DNA sequence into its reverse, complement, or reverse-complement counterpart. You may want to work with the reverse-complement of a sequence if it contains an ORF on the reverse strand. [home]
www.bioinformatics.org
youtube 의 도움을 받아 (https://www.youtube.com/watch?v=t9C1g6ld-ng) Python 으로 코드를 짜보도록 하려한다.

Reverse complement 서열을 만들기 위해서는 먼저 서열을 상보적(Complement)인걸 만들고, 순서를 바꾸면 (Reverse)된다
def complement(DNA):
comp = {'A':'T', 'C':'G', 'G':'C', 'T':'A'}
compDNA = ''
for b in DNA :
compDNA += comp[b]
return compDNA
이를 위해 먼저 complement 함수를 제작 한다.
1번째 줄은 Def 기능을 이용해 complement 라는 함수를 제작 DNA 라 적힌 자리에 서열을 넣으면 된다.
2번째 줄은 comp라는 dictionary 을 생성한다. 이는 DNA의 각 염기를 그 상보적인 염기로 mapping 한다
- 'A' (아데닌)은 'T' (티민)과 상보적.
- 'C' (시토신)은 'G' (구아닌)과 상보적.
- 'G' (구아닌)은 'C' (시토신)과 상보적.
- 'T' (티민)은 'A' (아데닌)과 상보적.
3번째 줄 compDNA = ' '
이 줄은 빈 string(문자열) compDNA를 초기화한다. 이는 상보적인 DNA 서열을 저장하는 데 사용됩니다.
4번째 줄 for b in DNA 의 경우 loop를 돌리는 것인데 DNA 로 넣은 서열중 한개의 서열을 comp라는 dictionary에서 찾아 compDNA 에 넣는다는 의미이다.
이 떄 compDNA += comp[b] 의 의미는 compDNA = compDNA + comp[b]와 같다.
예를들어 아래와 같은 식으로 계속 추가되는 의미이며 concatenate이다.
s = "Hello"
s += " World"
# s is now "Hello World"
따라서 함수를 돌려보면 아래와 같이 상보적인 서열이 나오게 된다.

다음으로 reverse 함수를 만들어보자
def reverse(DNA):
return DNA[::-1]
이 함수는 더 간단하다.
이 줄은 입력된 DNA 문자열을 역순으로 뒤집어서 반환한다. 여기서 사용된 [::-1]은 파이썬의 문자열 (string) slicing 기법이다.
문자열 슬라이싱 [::-1] 설명
DNA[start:end:step] 형태로 슬라이싱이 이루어짐.
start와 end는 생략되었으므로 문자열의 시작부터 끝까지를 의미함.
step이 -1이므로 문자열을 끝에서부터 시작하여 역순으로 하나씩 가져옴.
따라서 실행해보면

위와같이 뒤집힌 서열이 나온다.
이제 이 둘을 합친 함수를 만들면,
def reverse_complement(DNA):
compDNA = complement(DNA)
revCompDNA = reverse(compDNA)
return revCompDNA
이는 우리가 넣은 DNA 서열을 먼저 상보적으로 바꾼 뒤 역으로 뒤집어 결국 우리가 원하는 reverse complement 서열을 만들 수 있다.

물론 이 복잡한 함수들도 biopython으로 한방에 할 수도 있기도 하다. 이는 다음기회에..
'WORK IN U.S.A > 파이썬(Python)' 카테고리의 다른 글
데이터프레임 dataframe 의 열 Column 이름 변경하기 (1) | 2024.08.02 |
---|---|
엑셀에서 사용하는 vlookup 기능 파이썬에서 활용하기 (1) | 2024.06.18 |