Biopython
Motifs
MEME
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
MEME #
MEME는 DNA 혹은 Protein 염기서열의 그룹핑된 모티프 (Motif)를 탐색해주는 프로그램이다. 초창기에는 단순히 분석 프로그램의 분석을 진행했지만 현재는 다양한 데이터베이스 및 팩키지 형태로 강력한 기능을 제공하고 있다. 입력 서열로는 FASTA형식의 염기서열 혹은 단백질 서열을 입력하여 분석을 진행한다. 분석 결과는 아래와 같은 포맷으로 출력이 된다.
*****************************************************************
MEME - Motif discovery tool
*****************************************************************
MEME version 3.0 (Release date: 2004/08/18 09:07:01)
맨 처음의 프로그램의 이름, 버전 정보를 담은 헤드라인이 출력된다.
*****************************************************************
TRAINING SET
*****************************************************************
DATAFILE= INO_up800.s
ALPHABET= ACGT
Sequence name Weight Length Sequence name Weight Length
------------- ------ ------ ------------- ------ ------
CHO1 1.0000 800 CHO2 1.0000 800
FAS1 1.0000 800 FAS2 1.0000 800
ACC1 1.0000 800 INO1 1.0000 800
OPI3 1.0000 800
*******************************************************************
다음 블럭에서는 입력된 서열 정보를 보여준다. 각각의 서열 이름과 길이 서열 정보를 보여준다.
*******************************************************************
COMMAND LINE SUMMARY
*******************************************************************
This information can also be useful in the event you wish to report a problem with the MEME software.
command: meme -mod oops -dna -revcomp -nmotifs 2 -bfile yeast.nc.6.freq INO_up800.s
...
그 다음으로는 모티프 분석을 위해 입력한 코맨드(command line) 정보를 보여준다. 차후 재 실행시에 참고하면 된다.
************************************************************************
MOTIF 1 width = 12 sites = 7 llr = 95 E-value = 2.0e-001
********************************************************************
--------------------------------------------------------------------
Motif 1 Description
--------------------------------------------------------------------
Simplified A :::9:a::::3:
pos.-specific C ::a:9:11691a
probability G ::::1::94:4:
matrix T aa:1::9::11:
그 다음 영역에서는 각 찾은 모티프에 대한 세부 정보를 보여준다. 모티프의 길이. 찾은 사이트의 수 등 각 모티프 서열에 대한 기본 정보를 담고 있다.
Biopython Bio.Motifs를 이용한 MEME 파일 파씽 #
MEME 프로그램 수행 후 생성된 파일은 역시 biopython의 Biopython/Motifs 모듈을 통해서 파싱을 할 수 가 있다.
>>> from Bio import motifs
먼저 파일을 읽어어온다. open()
함수를 이용하여 파일핸들을 생성하고 생성된 핸들을 motifs.parse()
에 넣어주면 된다. 이 때 "meme"라는 인자를 넣어서 입력파일이 MEME 포맷인것을 명시해준다.
>>> handle = open("meme.dna.oops.txt")
>>> record = motifs.parse(handle, "meme")
>>> handle.close()
이제 파일에서 원하는 정보를 추출할 준비가 되었다. 먼저 버전 및 데이터 파일을 출력해보면 다음과 같다.
>>> record.version
'3.0'
>>> record.datafile
'INO_up800.s'
위에서도 언급했지만 입력 시 사용된 커맨드를 추출할 수도 있다.
>>> record.command
'meme -mod oops -dna -revcomp -nmotifs 2 -bfile yeast.nc.6.freq INO_up800.s'
>>> record.alphabet
IUPACUnambiguousDNA()
>>> record.sequences
['CHO1', 'CHO2', 'FAS1', 'FAS2', 'ACC1', 'INO1', 'OPI3']
다음으로는 각 레코드에 대한 정보 (즉, 각각의 모티프 서열)에 대한 정보를 추출할 수 있다. 파이썬의 기본함수 중 하나인 len()
함수를 이용하여 전체 레코드 서열의 크기를 확인한다.
>>> len(record)
2
또한 리스트의 인덱싱 기능을 이용할 수 있다. record[0]
과 같이 인덱싱을 사용하여 첫 번째 레코드(모티프 오브젝트)를 추출할 수 있다. 아래와 같이 motif
라는 변수에 저장된 모티프는 .consensus
, .degenerate_consensus
등 같은 다양한 메서드를 사용할 수 있다.
>>> motif = record[0]
>>> print(motif.consensus)
TTCACATGCCGC
>>> print(motif.degenerate_consensus)
TTCACATGSCNC
>>> motif.num_occurrences
7
>>> motif.length
12
>>> evalue = motif.evalue
>>> print("%3.1g" % evalue)
0.2
>>> motif.name
'Motif 1'
각 모티프에 대한 다양한 속성 정보도 추출해 볼 수 있는데 모티프의 길이, evalue, 이름 정보등을 이미 정의된 이름값을 통해서 추출하면 된다.
>>> motif = record['Motif 1']
위에서는 인덱싱을 사용하였지만 또 다른 방법으로 추출할 수 도 있다. 바로 딕셔너리(사전) 기능을 이용하면 된다. 사전에 이미 정의된 'Motif 1' 과 같이 해당 이름 값을 통해서도 추출하면 된다.
>>> len(motif.instances)
7
찾아진 서열 모티프 정보는 .instances라는 속성에 저장이 된다. 그러면 각 인스턴스에 해당하는 정보를 추출하면 된다. 추출 예제는 다음과 같다.
>>> motif.instances[0]
Instance('TTCACATGCCGC', IUPACUnambiguousDNA())
>>> motif.instances[0].motif_name
'Motif 1'
>>> motif.instances[0].sequence_name
'INO1'
>>> motif.instances[0].start
620
>>> motif.instances[0].strand
'-'
>>> motif.instances[0].length
12
>>> pvalue = motif.instances[0].pvalue
>>> print("%5.3g" % pvalue)
1.85e-08