Search

Asymmetric unit ID (asym_id)

Table of Contents

들어가며..

PDB entry의 ENTITY들의 INSTANCE를 구분하기 위한 asym_id에 대해 모든 것을 파헤쳐보자.
PDB 파일 (.pdb) 또는 MMCIF (.cif) 파일을 다룰 때, asym_id는 간단해보이지만 실제로 꽤나 까다롭고 복잡한 ID system 이다.

Asym ID를 이해하는데 필요한 개념

이 글을 읽기 전에 Organizations of 3D Structures in PDB: entry, entity, instance, assembly 을 먼저 읽는 것을 추천한다. ENTRY, ENTITY, INSTANCE, ASSEMBLY에 대한 개념이 있어야 한다.

Asymmetric unit ID (asym id) 란?

어떤 PDB entry 안에 존재하는 ENTITY들의 INSTANCE를 구분하기 위한 ID 이다.
같은 ENTITY 안의 서로 다른 INSTANCE 뿐만 아니라, 서로 다른 ENTITY의 INSTANCE와도 구분할 수 있다.
예시: ENTITY 1의 INSTANCE asym id: A, C; ENTITY 2의 INSTANCE asym id: B, D
Polypeptide ENTITY / polynucleotide ENTITY의 INSTANCE일 경우, chain ID를 의미한다고 볼 수 있다.
그러나 asym id 자체는 chain id보다 좀 더 확장된 개념으로 polymer, ligand, water, solvent 등 여러 ENTITY의 INSTANCE들을 구분할 수 있다.
RCSB PDB에서 제공되는 mmcif 파일을 열어 확인해보면 두 가지 type의 asym id가 있다. 모두 INSTANCE를 구분하기 위해 만들어졌으나 약간의 차이로 인해 각종 parsing을 정말 까다롭고 어렵게 만든다..

Asym ID system의 두 가지 type

모든 MMCIF 파일에는 두 가지 asym_id system이 있다.
Two sets of chain IDs are found in each PDB entry - one assigned by the PDB (label_asym_id), usually beginning with the alphabet A, and the other selected by the author (auth_asym_id) at the time of deposition. Most commonly both these chain IDs are the same but in some instances they may differ - e.g., in PDB ID 2or1, the author assigned chain IDs for the protein chains in the entry are L and R, while the PDB assigned ones are C and D respectively. (link)

label_asym_id

정확하지는 않지만 (아마도) 모든 INSTANCE를 확실하게 구분하기 위한 asym_id 로 보인다.
RCSB 상의 어떤 프로그램에 의해 1~3자리의 alphanumeric character로 alphanumeric order 순서대로(!) 부여된다.
INSTANCE가 매우 많을 경우 1자리 이상의 알파벳, 숫자 등이 섞여 사용되는 것을 기억하자. 즉, A, B, C, … 등 1자리의 alphabet 부터 순서대로 할당되지만, 할당할 INSTANCE가 많아질 경우 AA, A1, AAA 등이 있을 수 있다.

auth_asym_id

author(저자)가 해당 ENTRY를 소개한 publication에서 언급한 asym_id 이며, alphabet 순서대로 부여되는 경우도 있고, 아닌 경우도 있다 (그냥 저자가 자기 맘대로 넣는다고 생각하고 알파벳 순서 아니라고 생각하는게 맘 편하다). 따라서 label_asym_id와 같은 경우도 있지만, 다른 경우가 매우 많다.
Small molecule INSTANCE의 경우 주의!
Small molecule entity의 INSTANCE들에 대해서는 두 asym_id가 부여되는 방식에 차이가 있다.
label_asym_id 는 각각 unique하게 부여된다.
auth_asym_id는 같은 assembly 안의 가장 가까운 (closest neighboring) macromolecule INSTANCE의 auth_asym_id 와 동일하게 부여받는 경우가 대다수다 (그렇지 않은 경우도 있다!).
→ 이런 이유 때문에 label_asym_idauth_asym_id가 1:1 mapping이 되지 않는다!
→ label 과 auth 사이 mapping을 어렵게 만드는 가장 큰 원인이다.
ENTITY의 여러 type과 그들의 INSTANCE의 asym_id 체계 총정리
(아마도) 아래의 정의대로 사용하는 것 같다.
Macromolecule
Polymer entity중 [”polypeptide(L)”, ”polypeptide(D)”, “polydeoxyribonucleotide”, “polyribonucleotide”, “polydeoxyribonucleotide/polyribonucleotide hybrid”] 에 해당하는 ENTITY를 macromolecule로 정의하는 것으로 보인다.
이들의 INSTANCE의 asym_id는
label_asym_id: unique하게 부여된다.
auth_asym_id: unique하게 부여된다.
Small molecule
Macromolecule이 아니고, saccharide도 아닌 ENTITY를 의미하는 것으로 보인다.
예를 들어, ligand, ion, drug, inhibitor, individual residue 등이 포함된다. 물 분자 등의 solvent 역할을 하는 것들도 asym_id 체계 상으로는 여기에 포함해도 무방한 것으로 보인다.
이들의 INSTANCE의 asym_id는
label_asym_id: unique하게 부여된다.
auth_asym_id: 같은 assembly를 구성하는 macromolecule instance의 asym_id를 동일하게 부여받는다.
Saccharides - 두 가지 case
monosaccharides
하나의 sugar molecule이 macromolecule (주로 polypeptide)에 공유결합되어 있을 경우, small molecule로 취급하여 같은 방식으로 asym_id가 부여된다.
label_asym_id: unique하게 부여된다.
auth_asym_id: 같은 assembly를 구성하는 macromolecule instance의 asym_id를 동일하게 부여받는다.
oligosaccharides
두 개 이상의 sugar molecule이 모인 oligosaccharide는 linear 또는 branched chain을 형성한다. 이들의 INSTANCE의 asym_id는
label_asym_id: unique하게 부여된다.
auth_asym_id: unique하게 부여된다.
6FUV 예시

둘 중 어떤 것을 사용해야 하는가?

Raw data로부터 parsing을 한다면 둘 다 사용할 필요가 있을 때가 있다.
하지만 이미 가공된 data에서 특정 chain에 대한 정보를 가져올 때는 주로 auth_asym_id 를 사용한 경우가 많지만, 항상 그런 것은 아니다.
Biopython을 통해 구조 parsing 을 할 때에는 asym_id system을 고를 수 있다.
from Bio.PDB.MMCIFParser import MMCIFParser # auth asym id (chain), auth residue id 사용 (default) parser = MMCIFParser(QUIET=True, auth_chains=True, auth_residues=True) # label asym id (chain), label residue id 사용 parser = MMCIFParser(QUIET=True, auth_chains=False, auth_residues=False)
Python
복사

Label asym_id Auth asym_id 매칭하는 방법

entity_id : label_asym_id
하나의 ENTITY는 여러 INSTANCE를 가질 수 있으므로, one-to-many 관계이다.
auth_asym_id : label_asym_id
일반적으로는 label_asym_idauth_asym_id 보다 small molecule INSTANCE의 경우 더 세밀하게 구분하므로, auth_asym_id : label_asym_id = one-to-many 관계이다.
다만, macromolecule INSTANCE의 경우만 따지면 one-to-one 일 것이다.
이 두 system을 match 하는 방법은 mmcif 파일의 _atom_site.label_asym_id_atom_site.auth_asym_id 의 각 row를 돌면서 matching 해주는 것이 최선으로 보인다. 일반적으로 one-to-one mapping이 아니라는 사실을 반드시… 명심하자.

Reference