Skip to content

Biopython TRANSFAC #
Find similar titles

Structured data

Category
Programming

TRANSFAC #

TRANSFAC은 DNA 바인딩 프로파일 및 그에 대한 유전서열의 바인딩 사이트를 메뉴얼로 정리한 Transcription factors 데이터베이스이다. 현재 이 데이터베이스가 가장 잘 정리되어 있으며, 광범위하게 사용되고 있기에 간략히 언급하고자 한다.

기본적인 TRANSFAC포맷은 다음과 같다. 먼저 ID가 보여지고 그 다음에 각 서열의 포지션에 따라 발생 빈도를 나타내는 아래의 형식으로 정의되어 있다.

ID  motif1
P0      A      C      G      T
01      1      2      2      0      S
02      2      1      2      0      R
03      3      0      1      1      A
04      0      5      0      0      C
05      5      0      0      0      A
06      0      0      4      1      G
07      0      1      4      0      G
08      0      0      0      5      T
09      0      0      5      0      G
10      0      1      2      2      K
11      0      2      0      3      Y
12      1      0      3      1      G
//

위의 포맷에서는 12개의 염기서열을 가진 서열 빈도 메트릭스이다. 일반적으로 TRANSFAC 포맷에서는 다수의 모티프를 가지고 있기 때문에 아래와 같이 표현한다.

VV  EXAMPLE January 15, 2013
XX
//
ID  motif1
P0      A      C      G      T
01      1      2      2      0      S
02      2      1      2      0      R
03      3      0      1      1      A
...
11      0      2      0      3      Y
12      1      0      3      1      G
//
ID  motif2
P0      A      C      G      T
01      2      1      2      0      R
02      1      2      2      0      S
...
09      0      0      0      5      T
10      0      2      0      3      Y
//

위의 예제 파일에서는 맨 오른쪽에 ambiguous한 서열을 표현해주고 있다.

Biopython에서는 위의 데이터 파일을 읽어 들여 파싱할 수 있다.

먼저 준비된 데이터 파일(위의 내용이 저장된)의 파일 핸들을 오픈한다. open() 함수를 이용하여 아래와 같이 읽어 들인 후 motifs.parse(파일핸들, '포맷') 함수를 사용한다. 여기서는 파일 포맷을 "TRANSFAC"으로 지정하였다.

>>> handle = open("transfac.dat")
>>> record = motifs.parse(handle, "TRANSFAC")
>>> handle.close()

앞의 예제에서 간략히 데이터가 쓰여진 버전을 확인해 보는 예제이다. 위에서 정의된 record객체에서 필요한 정보를 뽑을 수 있으며 해당 내용은 dir() 함수를 통해서 확인할 수 있다.

>>> record.version
'EXAMPLE January 15, 2013'

위의 예제에서 알 수 있듯 Biopython에서는 parse는 다수의 레코르들 반환한다. 단수 레코드일 경우에는 read를 사용한다. 읽어들인 데이터가 복수개로 리스트 형태로 저장되어 있기 때문에 리스트의 슬라이스[] 기능을 이용하여 정보를 추출할 수 있다. 여기서는 [0]이므로 첫 번째 데이터이다. 해당 모티프의 consensus서열을 출력하기 위해서 degenerate_consensus를 사용하면 된다. 기타 다양한 정보는 해쉬 즉 딕셔너리 정보에서 추출할 수 있다.

>>> motif = record[0]
>>> motif.degenerate_consensus # Using the Bio.motifs.Motif method
Seq('SRACAGGTGKYG', IUPACAmbiguousDNA())
>>> motif['ID'] # Using motif as a dictionary
'motif1'

해쉬 즉 딕셔너리에서 추출할 수 있는 정보는 다음과 같다. 각 두자리의 약자가 키값이 된다.

AC  Accession number
AS  Accession numbers, secondary
BA  Statistical basis
BF  Binding factors
BS  Factor binding sites underlying the matrix
CC  Comments
CO  Copyright notice
DE  Short factor description
DR  External databases
DT  Date created/updated
HC  Subfamilies
HP  Superfamilies
ID  Identifier
NA  Name of the binding factor
OC  Taxonomic classification
OS  Species/Taxon
OV  Older version
PV  Preferred version
TY  Type
XX  Empty line; these are not stored in the Record.

마찬가지로 또한 레퍼런스 정보를 보관하고 있는데 해당 정보의 키는 다음과 같다.

RN  Reference number
RA  Reference authors
RL  Reference data
RT  Reference title
RX  PubMed ID

레코드를 출력하면 다음과 같이 해당 정보가 전부 출력된다.

>>> print(record)
VV  EXAMPLE January 15, 2013
XX
//
ID  motif1
XX
P0      A      C      G      T
01      1      2      2      0      S
02      2      1      2      0      R
03      3      0      1      1      A
04      0      5      0      0      C
05      5      0      0      0      A
06      0      0      4      1      G
07      0      1      4      0      G
08      0      0      0      5      T
09      0      0      5      0      G
10      0      1      2      2      K
11      0      2      0      3      Y
12      1      0      3      1      G
XX
//
ID  motif2
XX
P0      A      C      G      T
01      2      1      2      0      R
02      1      2      2      0      S
03      0      5      0      0      C
04      3      0      1      1      A
05      0      0      4      1      G
06      5      0      0      0      A
07      0      1      4      0      G
08      0      0      5      0      G
09      0      0      0      5      T
10      0      2      0      3      Y
XX
//

최종적으로 읽어들인 파일을 다시 파일로 쓸 수도 있다. 먼저 해당 데이터를 저장하기위해서 str() 함수를 이용하여 텍스트 형식으로 변환한다. 그후 일반적인 파이썬의 파일 저장 형태로 사용하면 된다.

>>> text = str(record)
>>> handle = open("mytransfacfile.dat", 'w')
>>> handle.write(text)
>>> handle.close()

Suggested Pages #

0.0.1_20140628_0