Activity for Multiple Sequence Alignment

Introduction

본 실습에서는 단백질 서열을 수집하고, Multiple Sequence Alignment (MSA)를 수행하여
서열 간의 보존 영역(conserved region)과 가변 영역(variable region)을 분석한다.

Multiple sequence alignment 수행

실습 디렉토리 구성

  • 실습 디렉토리 생성
    • 디렉토리 이름: msa
  • 결과 확인: msa 디렉토리 생성

유전자의 단백질 서열 획득

  • 인간 amylase 단백질의 서열 정보를 확인한다.
  • https://www.ncbi.nlm.nih.gov/protein/178585
  • FASTA format 형식의 서열을 복사한다.
  • msa/amylase.fasta 파일을 생성하고, 복사한 내용을 붙여 넣고 저장한다.
  • 결과 확인: msa/amylase.fasta 파일 생성

진화적으로 연관된 단백질 서열 정보 획득

  • NCBI 데이터베이스에서 amylase와 진화적으로 관련된 서열을 수집한다.
  • BLAST를 이용하여 유사 서열 검색
    • Protein BLAST 선택
    • FASTA format 서열 입력
    • Database: Reference proteins (refseq_protein) 선택
    • ‘BLAST’ 버튼 선택
    • 수 분 소요
    • 결과 확인
  • 실습에 사용할 상동 유전자의 단백질 서열 선택 및 다운로드
    • MSA 결과 시각화의 편의를 위해 5-10개의 서열만 선택
    • “select all” 선택을 해제한 후 개별 선택
    • 서로 다른 sequence identity (Per. ident) 값을 가지는 서열 선택
    • “Download” 버튼 클릭
      • “fasta(cluster)” 선택 혹은 “fasta(aligned clusters)” 선택
    • 다운로드 경로를 기록
  • 다운로드 파일 복사
    • 다운로드 파일을 msa 디렉토리로 복사
  • 결과 확인: msa/seqdump.txt 파일 생성

Query 서열 추가

  • Query 서열을 다운로드한 sequence 파일에 추가한다.
  • msa/seqdump.txt 파일의 가장 상단에, msa/amylase.fasta 파일의 서열을 추가한다.

Multiple sequence alignment using Clustal Omega

  • Multiple sequence alignment를 수행한다.
  • msa/msa.ipynb 노트북 생성
  • 아래 명령을 code cel에 입력하고 실행
!clustalo -i seqdump.txt -o amylase_aln.txt
  • 결과 확인: msa/amylase_aln.txt 파일 생성

Multiple sequence alignment 결과 확인

MSA 결과 확인

  • 아래 코드를 이용하여 MSA 결과를 확인한다.
from Bio import AlignIO

alignment = AlignIO.read(open("amylase_aln.txt"), "fasta")
print("Alignment length %i" % alignment.get_alignment_length())

for record in alignment:
	print(record.seq + " " + record.id)

보존 영역 및 가변 영역 탐색

  • 각 위치(position)에서 아미노산의 분포를 계산한다.
  • 이를 통해 보존된 영역과 변이가 많은 영역을 파악한다.
m = len(alignment)
n = len(alignment[0].seq)

records = []
for i in range(n):
    cnt = {}
    for j in range(m):
        c = alignment[j].seq[i]
        if c not in cnt:
            cnt[c] = 1
        else:
            cnt[c] += 1
    records.append(cnt)
    print(i+1, ' '.join(['%s:%d'%(c, cnt[c]) for c in cnt]))       

가변 영역 시각화

  • 각 위치에서 관찰되는 서로 다른 아미노산의 개수를 시각화한다.
# Count alphabets at each position
import seaborn as sns
import matplotlib.pyplot as plt

cs = [len(e) for e in records]

sns.lineplot(x=range(len(cs)), y=cs)
plt.xlabel("Position")
plt.ylabel("Number of amino acids")
plt.show()

생각해볼 문제

  • 다양한 아미노산이 존재하는 위치가 있는지 확인하라.
  • 해당 위치에서 발견되는 아미노산들의 물리화학적 성질(예: 극성, 전하, 크기)을 비교하라.
  • 성질이 유사하다면 그 이유를 설명하라.
  • 성질이 서로 다른 아미노산이 존재한다면 그 이유를 설명하라.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top