Biopython-PDB 모듈
Biopython은 Bio.PDB 모듈을 제공하여 폴리펩티드 구조를 조작합니다. PDB (Protein Data Bank)는 온라인에서 사용할 수있는 가장 큰 단백질 구조 리소스입니다. 그것은 단백질-단백질, 단백질 -DNA, 단백질 -RNA 복합체를 포함하여 많은 별개의 단백질 구조를 호스팅합니다.
PDB를로드하려면 아래 명령을 입력하십시오.
from Bio.PDB import *
단백질 구조 파일 형식
PDB는 단백질 구조를 세 가지 다른 형식으로 배포합니다.
- Biopython에서 지원하지 않는 XML 기반 파일 형식
- 특수 형식의 텍스트 파일 인 pdb 파일 형식
- PDBx / mmCIF 파일 형식
Protein Data Bank에서 배포하는 PDB 파일에는 모호하거나 구문 분석하기 어려운 형식 오류가 포함될 수 있습니다. Bio.PDB 모듈은 이러한 오류를 자동으로 처리하려고합니다.
Bio.PDB 모듈은 두 개의 서로 다른 파서를 구현합니다. 하나는 mmCIF 형식이고 두 번째는 pdb 형식입니다.
각 형식을 자세히 파싱하는 방법을 알아 보겠습니다.
mmCIF 파서
아래 명령을 사용하여 pdb 서버에서 mmCIF 형식의 예제 데이터베이스를 다운로드 해 보겠습니다.
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')
이렇게하면 서버에서 지정된 파일 (2fat.cif)을 다운로드하여 현재 작업 디렉터리에 저장합니다.
여기서 PDBList는 온라인 PDB FTP 서버에서 파일을 나열하고 다운로드하는 옵션을 제공합니다. retrieve_pdb_file 메소드는 확장자없이 다운로드 할 파일 이름이 필요합니다. retrieve_pdb_file에는 다운로드 디렉토리, pdir 및 파일 형식 file_format을 지정하는 옵션도 있습니다. 파일 형식의 가능한 값은 다음과 같습니다.
- "mmCif"(기본값, PDBx / mmCif 파일)
- "pdb"(PDB 형식)
- "xml"(PMDML / XML 형식)
- "mmtf"(고압축)
- "번들"(대형 구조를위한 PDB 형식 아카이브)
cif 파일을로드하려면 아래 지정된대로 Bio.MMCIF.MMCIFParser를 사용하십시오.
>>> parser = MMCIFParser(QUIET = True)
>>> data = parser.get_structure("2FAT", "2FAT.cif")
여기서 QUIET는 파일을 구문 분석하는 동안 경고를 표시하지 않습니다. get_structure will parse the file and return the structure with id as 2FAT (첫 번째 인수).
위의 명령을 실행 한 후 파일을 구문 분석하고 가능한 경우 가능한 경고를 인쇄합니다.
이제 아래 명령을 사용하여 구조를 확인하십시오.
>>> data
<Structure id = 2FAT>
To get the type, use type method as specified below,
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
파일을 성공적으로 구문 분석하고 단백질의 구조를 얻었습니다. 단백질 구조에 대한 세부 사항과이를 얻는 방법은 이후 장에서 배울 것입니다.
PDB 파서
아래 명령을 사용하여 pdb 서버에서 PDB 형식의 예제 데이터베이스를 다운로드 해 보겠습니다.
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')
그러면 서버에서 지정된 파일 (pdb2fat.ent)이 다운로드되어 현재 작업 디렉터리에 저장됩니다.
pdb 파일을로드하려면 아래 지정된대로 Bio.PDB.PDBParser를 사용하십시오.
>>> parser = PDBParser(PERMISSIVE = True, QUIET = True)
>>> data = parser.get_structure("2fat","pdb2fat.ent")
여기서 get_structure는 MMCIFParser와 유사합니다. PERMISSIVE 옵션은 가능한 한 유연하게 단백질 데이터를 구문 분석합니다.
이제 아래에 주어진 코드 스 니펫으로 구조와 유형을 확인하십시오.
>>> data
<Structure id = 2fat>
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
글쎄, 헤더 구조는 사전 정보를 저장합니다. 이를 수행하려면 아래 명령을 입력하십시오-
>>> print(data.header.keys()) dict_keys([
'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution',
'structure_reference', 'journal_reference', 'author', 'compound', 'source',
'keywords', 'journal'])
>>>
이름을 얻으려면 다음 코드를 사용하십시오.
>>> print(data.header["name"])
an anti-urokinase plasminogen activator receptor (upar) antibody: crystal
structure and binding epitope
>>>
아래 코드로 날짜와 해상도를 확인할 수도 있습니다.
>>> print(data.header["release_date"]) 2006-11-14
>>> print(data.header["resolution"]) 1.77
PDB 구조
PDB 구조는 두 개의 체인을 포함하는 단일 모델로 구성됩니다.
- 잔기 수를 포함하는 사슬 L
- 잔기 수를 포함하는 사슬 H
각 잔기는 (x, y, z) 좌표로 표시되는 3D 위치를 각각 갖는 여러 원자로 구성됩니다.
아래 섹션에서 원자의 구조를 자세히 알아 봅시다.
모델
Structure.get_models () 메서드는 모델에 대한 반복자를 반환합니다. 아래에 정의되어 있습니다-
>>> model = data.get_models()
>>> model
<generator object get_models at 0x103fa1c80>
>>> models = list(model)
>>> models [<Model id = 0>]
>>> type(models[0])
<class 'Bio.PDB.Model.Model'>
여기서 모델은 정확히 하나의 3D 형태를 설명합니다. 하나 이상의 체인을 포함합니다.
체인
Model.get_chain () 메서드는 체인에 대한 반복자를 반환합니다. 아래에 정의되어 있습니다-
>>> chains = list(models[0].get_chains())
>>> chains
[<Chain id = L>, <Chain id = H>]
>>> type(chains[0])
<class 'Bio.PDB.Chain.Chain'>
여기서 사슬은 적절한 폴리펩티드 구조, 즉 결합 된 잔기의 연속적인 서열을 설명합니다.
잔여
Chain.get_residues () 메서드는 잔류 물에 대한 반복자를 반환합니다. 아래에 정의되어 있습니다-
>>> residue = list(chains[0].get_residues())
>>> len(residue)
293
>>> residue1 = list(chains[1].get_residues())
>>> len(residue1)
311
음, 잔류 물은 아미노산에 속하는 원자를 보유하고 있습니다.
원자
Residue.get_atom ()은 아래 정의 된대로 원자에 대한 반복자를 반환합니다.
>>> atoms = list(residue[0].get_atoms())
>>> atoms
[<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]
원자는 원자의 3D 좌표를 보유하며 벡터라고합니다. 아래에 정의되어 있습니다.
>>> atoms[0].get_vector()
<Vector 18.49, 73.26, 44.16>
x, y 및 z 좌표 값을 나타냅니다.