Search
Duplicate

biotite.structure 사용법

PDB 파일을 읽고, 단백질 구조의 geometry를 다루는 것을 도와주는 biotite.structure 패키지의 사용법을 정리합니다.

Installation

$ conda install -c conda-forge biotite
Bash
복사

Quickstart

주요 import

import biotite.structure as struc from biotite.structure.io.pdb import PDBFile
Python
복사

PDB 파일 읽고 구조 불러오기 PDBFile.read , get_structure

pdb = PDBFile.read('my_pdb_file.pdb') # Get AtomArray (or structure) of the first model structure = pdb.get_structure(model=1)
Python
복사
PDBFile.read 메서드는 PDBFile object를 반환한다. PDBFile object는 말 그대로 PDB 파일이 가진 정보들을 다 담고 있다고 보면 되는데, 유용한 메서드들은 아래와 같다.
1.
pdb.get_structure() :
a.
model : int (optional) → 모델 번호를 주면 이에 해당하는 모델의 AtomArray만 리턴한다. 없으면 모든 모델 정보가 있는 AtomArrayStack이 리턴된다.
2.
pdb.get_model_count() : PDB 파일 내에 담겨 있는 model의 개수를 리턴한다.
3.
pdb.write(file) : 해당 PDBFile object 내의 정보를 PDB 포맷으로 저장한다.

구조에 존재하는 chain ID 확인하기 struc.get_chains(atom_array)

struc.get_chains(structure)
Python
복사
예시 출력
array(['R', 'S', 'T', 'X', 'Y', 'Z', 'B', 'F', 'G', 'I', 'J', 'K', 'M', 'N', 'O', 'P', 'Q', 'U', 'V', 'W', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 'A', 'C', 'D', 'E', 'H', 'L'], dtype='<U4')
Python
복사

원하는 chain만 선택하기

Backbone dihedral 각도 얻기 struc.dihedral_backbone(atom_array)

ϕ\phi (phi) : CiNi+1Cαi+1Ci+1C_i - N_{i+1} - C_{\alpha_{i+1}} - C_{i+1}
ψ\psi (psi) : NiCαiCiNi+1N_i - C_{\alpha_i}-C_i-N_{i+1}
ω\omega (omega) : CαiCiNi+1Cαi+1C_{\alpha_i}-C_i-N_{i+1}-C_{\alpha_i+1}
phi, psi, omega = struc.dihedral_backbone(structure) # Each phi, psi and omega has shape (N,), # where N is the number of residues in the structure # Aggregation `np.vstack([phi, psi, omega]).T` may be useful.
Python
복사
각도 값은 ππ-\pi \sim \pi 사이의 값으로 리턴된다.

Backbone 원자(N, Ca, C)만 취하기 struc.filter_backbone(atom_array)

backbone_mask = struc.filter_backbone(structure) # [True, True, True, False, ..] backbone = structure[backbone_mask]
Python
복사

3개의 원자로 결합각 구하기 struc.index_angle(atom_array, indices)

indices = np.array([ [0, 1, 2], # N - Ca - C [1, 2, 3], # Ca - C - N [2, 3, 4], # C - N - Ca [3, 4, 5], # N - Ca - C ... ]) angles = struc.index_angle(backbone, indices)
Python
복사
Parameters
atom_array : AtomArray of shape=(n, 3) or AtomArrayStack of shape=(m, n, 3)
indices : ndarray, shape=(k, 3)
Returns
angle : ndarray, shape=(k,) or shape=(m, k)

4개의 원자로 dihedral 구하기 struc.index_dihedral(atom_array, indices)