Programing/Python programming

Python - Sequence 소수성 및 제한효소 인지부분 자르기

sosal 2015. 4. 29. 12:30
반응형

 

/*

 http://sosal.kr/
 * made by so_Sal
 */

 


Python 간단한 실습강의에서 나왔던 연습문제들을 소개하고자 합니다.

 

exercise1:

연속적으로 Hydrophobic한 아미노산(Amino acid)이 연속적으로 나오는지를 판별하는 프로그램을 구현한다.

 

exercise2:

제한효소가 있는 부위를 잘라서 line별로 출력하라.

 

 

 

 

 

exercise1.

입력된 Sequence가 Hydrophobic인지 검사하라.

- 다음 7개의 아미노산 FILAPVM은 Hydrophobic한 아미노산이다.

- 이 아미노산들이 연속적으로 나온다면 Hydrophobic이라고 한다.

- 연속적으로 7개 이상의 Hydrophobic한 아미노산이 나오면 Strong hydrophobic signal을 출력한다.

- 연속적으로 3개 이상의 Hydrophobic한 아미노산이 나오면 Weak Hydrophobic signal을 출력한다.

- 연속적으로 3개 이상의 Hydrophobic한 아미노산이 나오지 않으면 No Hydrophobic signal을 출력한다.

import re

sequence = input("Sequence: ")
if re.search(r"[FILAPVM]{7}", sequence):
print("Strong Hydrophobic signal")
elif re.search(r"[FILAPVM]{5}",sequence):
print("Weak Hydrophobic signal")
else:
print("No hydrophobic signal")

 

 

 

r"" 은 regular expression을 나타내는 방식입니다.

r""안에 다양한 regular expression이 들어갈 수 있는데,

대괄호: [character_set]는 character set에 포함되는 단 하나의 글자라도 있는지를 말하며 {7}은 7번 반복을 뜻합니다.

[character_set]{7}은 character_set에 포함되는 글자들이 7개 반복된다는 뜻입니다.

 

따라서 re.search(r"[FILAPVM]{7}, sequence) 라는 함수는

sequence라는 변수에 FILAPVM 7개의 글자중에 단 하나라도 포함되는 부분이 7개가 반복되냐는 뜻입니다.

 

따라서 7개가 반복되는 경우 re.search(r"[FILAPVM]{7}, sequence)를 만족하게 되고

3개가 반복되는 경우 re.search(r"[FILAPVM]{3}, sequence)를 만족하게 되므로 위의 연습 문제를 해결할 수 있습니다.

 

 

 

 

 

exercise2.

입력된 sequence에서 EcoRI를 감지하고 해당 제한효소 부위를 잘라 출력하라.

- EcoRI는 GAATTC 라는 서열을 잘라주는 제한효소다.

- ~GAATTC~라는 서열을  ~GAAT와 TC~ 두 서열로 자른다.

- EcoRI로 인지되는 모든 서열을 잘라라

 

import re
restriction = "GAATTC"
sequence = input("Sequence: ")
print("input sequence is ",sequence)

while(1):
match = re.search(restriction,sequence)
if match==None:
break
print(match.start(),": ", sequence[0:match.start()+4])
sequence = sequence[match.start()+4:]
print(sequence)