기본 콘텐츠로 건너뛰기

PyMOL 명령어 정리: 논문·발표용 이미지 스크립트까지 한 번에

PyMOL 명령어 정리: 논문·발표용 이미지 스크립트까지 한 번에

지난 PyMOL 설치·마우스 조작 글에 대한 반응이 예상보다 컸습니다. 설치는 끝냈고 화면도 어느 정도 돌려봤는데, 그다음이 막막하다는 분들이 많았습니다. 커맨드 라인에 뭘 쳐야 할지 몰라 결국 캡처 화면만 들고 보고서를 쓰거나, 어디서 복사해온 스크립트를 그대로 붙여 넣었다가 에러 메시지만 보고 포기하는 경우입니다.

이번 글은 그 다음 단계, 즉 실제로 자주 쓰는 명령어와 논문·발표용 이미지를 뽑아내는 스크립트를 정리합니다. 다만 인터넷에 떠도는 PyMOL 스크립트 중에는 예전 버전 문법이거나, 애초에 존재하지 않는 세팅 이름이 섞여 있는 경우가 적지 않습니다. 그래서 이 글에 실린 모든 명령어는 PyMOL 공식 문서와 PyMOL Wiki를 기준으로 하나씩 확인한 뒤 실었습니다. 확인 과정에서 실제로 동작하지 않는 표현 3곳을 발견해 수정했고, 어떤 부분이 왜 틀렸는지는 별도로 짚어두었습니다.

1. 화면 제어 및 구조 불러오기

커맨드 라인은 화면 하단에 있습니다. 아래 명령어들은 세션을 시작할 때 거의 매번 쓰게 되는 기본기입니다.

  • PDB 구조 불러오기: fetch 1tup — 인터넷에서 해당 PDB ID의 구조를 바로 내려받아 표시합니다.
  • 배경색 변경: bg_color white — 논문·발표 자료는 흰 배경이 기본입니다.
  • 화면 정렬/초기화: orient — 구조 전체가 화면에 꽉 차도록 각도와 확대 비율을 자동으로 맞춥니다. zoom은 현재 각도를 유지한 채 확대 비율만 조정한다는 점에서 차이가 있습니다.
  • 특정 부위로 확대: zoom resi 150 — 150번 잔기를 중심으로 확대합니다. 도킹 부위나 특정 변이 위치를 자세히 볼 때 유용합니다.

2. 표시 방식과 컬러링

  • 리본형(2차 구조 강조): show cartoon
  • 막대형(원자·결합 강조): show sticks
  • 공간 채움형: show spheres
  • 표면형: show surface
  • 표시 끄기: hide lines — 불러온 직후 기본으로 표시되는 선(line) 형태를 끌 때 씁니다.
  • 색상 지정: color cyan, chain A — 특정 체인이나 선택 영역에만 색을 입힙니다.

리간드나 특정 분자를 원소별 고유색(탄소=회색, 산소=빨강, 질소=파랑 등 CPK 배색)으로 칠하고 싶을 때는 color atomtype이라는 명령어를 쓰는 경우를 종종 보는데, 이는 실제로 존재하지 않는 명령어입니다. PyMOL Wiki의 컬러링 문서에 따르면 이 기능은 util.cba* 계열 명령으로 처리합니다. 예를 들어 util.cbay ligand는 탄소를 노란색으로 두고 산소·질소 등 나머지 원소는 CPK 배색을 적용합니다. 탄소색은 그대로 두고 나머지 원소만 CPK로 칠하고 싶다면 util.cnc ligand를 씁니다.

3. 선택(Selection)과 수소결합 표시

  • 용매 제거: remove solvent — 구조 파일에 포함된 물 분자를 제거해 화면을 정리합니다.
  • 리간드만 선택: select ligand, organic
  • 특정 부위 근처 선택: select pocket, byres (all within 4.0 of ligand) — 리간드 기준 4.0Å 이내 잔기를 통째로(byres) 선택합니다.

수소결합 표시는 distance 명령에 mode=2 옵션을 주는 방식입니다.

distance hbonds, chain A, chain B, 3.2, mode=2

이 mode=2는 PyMOL 공식 문서에서 극성 접촉(polar contact)만 표시하도록 정의한 옵션이며, 내부적으로는 Kabsch와 Sander가 1983년 발표한 DSSP 이차구조 판정 알고리즘의 수소결합 판정 기준을 근사해서 사용합니다. 다만 PyMOL 개발진이 직접 밝힌 바에 따르면 이 기능은 정식으로 검증된 수소결합 판정 도구가 아니라 참고용 근사치이며, 특히 구조 파일에 수소 원자가 없으면 판정 정확도가 떨어질 수 있습니다. 결정구조 대부분은 수소가 생략되어 있으므로, 정밀하게 보고 싶다면 h_add 명령으로 수소를 먼저 추가한 뒤 거리 측정을 하는 것이 안전합니다.

4. 논문 제출용 고화질 렌더링 스크립트

흰 배경에 그림자 효과를 살려 고해상도로 저장하는 세팅입니다. 아래 값들은 모두 PyMOL 공식 세팅 문서에 등재된 실제 파라미터입니다.

# 1. 배경을 흰색으로
bg_color white

# 2. 물 분자 제거
remove solvent

# 3. 레이트레이싱 그림자/광원 설정
set ray_trace_mode, 1
set ray_shadows, 1
set ambient, 0.4
set direct, 0.5
set reflect, 0.2

# 4. PNG 저장 시 배경을 투명하게 하려면 opaque_background를 끈다
set ray_opaque_background, off

# 5. 고해상도 렌더링 후 저장
ray 3000, 2400
png my_protein_figure.png, dpi=300

배경 투명화는 transparent_viewport라는 세팅으로 안내되는 경우가 있는데, 이 이름의 세팅은 PyMOL에 존재하지 않습니다. 공식 문서 기준으로 배경 투명 PNG 저장은 ray_opaque_background를 off로 두는 방식이 맞습니다. 위 스크립트에는 이 부분을 수정해 반영했습니다.

5. 단백질-리간드 결합 부위 연출 스크립트

# 1. 단백질 전체는 회색 카툰으로
hide everything
show cartoon
color gray80, all

# 2. 리간드를 노란 스틱으로, 원소별 CPK 배색 적용
select my_ligand, organic
show sticks, my_ligand
util.cbay my_ligand

# 3. 리간드 주변 4.0Å 이내 잔기 선택 및 표시
select pocket, byres (all within 4.0 of my_ligand)
show sticks, pocket
util.cnc pocket

# 4. 수소결합 표시 (수소가 있는 구조에서 더 정확)
distance hbonds, my_ligand, pocket, 3.2, mode=2
set dash_width, 3.0
set dash_gap, 0.25

color atomtype을 util.cbay / util.cnc로 교체한 것 외에, color dash_yellow처럼 색상 이름 앞에 dash_가 붙는 표현도 정식 색상명이 아니어서 제거했습니다. 수소결합 dash 선의 색은 distance 객체를 만든 뒤 color yellow, hbonds 형태로 별도 지정하면 됩니다.

6. 정전기 표면(Electrostatic Surface) 시각화 — 사용 시 주의할 점

PyMOL은 GUI의 Action(A) → generate → vacuum electrostatics → protein contact potential (local) 메뉴로 표면 전하를 색으로 보여주는 기능을 제공합니다. 다만 이 경로는 GUI 메뉴 조작이며, 커맨드 라인 명령어 한 줄로 대체되는 기능이 아닙니다. "action -> electrostatic -> vacuum electrostatics"처럼 커맨드 라인 명령인 것처럼 안내되는 자료들이 있는데, 이는 메뉴 경로를 명령어로 오인한 표현입니다.

더 중요한 점은 따로 있습니다. PyMOL Wiki는 이 기능을 "quick-and-dirty", 즉 대략적인 정성적 참고용이라고 명시하고 있으며, 실제 논문에 싣는 정전기 표면 분석에는 적합하지 않다고 설명합니다. 전하를 단순 근접 거리 기준으로 뭉뚱그려 계산하는 방식이기 때문입니다. 발표 자료에서 "대략 이쪽이 양전하, 이쪽이 음전하"라는 느낌을 보여주는 용도로는 쓸 수 있지만, 논문 투고용 정전기 표면이 필요하다면 APBS(Adaptive Poisson-Boltzmann Solver) 플러그인을 별도로 설치해 계산하는 것이 정석입니다.

# 표면 생성 (전하 계산은 GUI의 Action > generate > vacuum electrostatics 메뉴 이용)
show surface

# 표면 투명도를 낮춰 내부 카툰 구조가 비치게 하기
set transparency, 0.3, all

cavity_search라는 세팅도 자주 함께 인용되지만 이 역시 실재하지 않는 이름입니다. 표면의 내부 빈 공간(cavity) 표시 방식을 조절하려면 set surface_cavity_mode, 1을 쓰거나, 작은 고립 영역을 제거하는 cavity_cull 값을 조정합니다.

명령어 요약표

목적 명령어 비고
구조 불러오기fetch 1tupPDB ID 기준
화면 정렬orient / zoomorient는 각도까지 재정렬
원소별 배색util.cbay / util.cnccolor atomtype은 존재하지 않음
수소결합 표시distance, mode=2수소 추가 후 사용 권장
배경 투명 PNGray_opaque_backgroundtransparent_viewport는 존재하지 않음
정전기 표면GUI: Action→generate→vacuum electrostatics정성적 참고용, 논문용은 APBS 필요
캐비티 표시surface_cavity_mode / cavity_cullcavity_search는 존재하지 않음

FAQ

Q1. mode=2로 표시된 수소결합을 그대로 논문에 인용해도 되나요?
권장하지 않습니다. PyMOL의 mode=2는 DSSP 판정 기준을 근사한 참고용 표시이며, 개발진 스스로도 엄밀한 검증 도구가 아니라고 밝히고 있습니다. 논문에 수소결합을 명시하려면 별도의 구조 분석 도구나 문헌 근거로 교차 확인하는 편이 안전합니다.

Q2. 정전기 표면을 GUI로 만들었는데 색이 이상하게 나옵니다.
vacuum electrostatics 기능은 원자 전하를 단순 근접 거리로 뭉뚱그려 계산하는 정성적 방식이라 구조에 따라 직관과 다른 색 분포가 나올 수 있습니다. 결과가 이상하다기보다는 애초에 정밀한 계산이 아니라는 점을 감안해야 하며, 정확한 분포가 필요하면 APBS 플러그인을 쓰는 것이 맞습니다.

Q3. 인터넷에서 복사한 PyMOL 스크립트가 에러를 냅니다. 왜 그런가요?
버전에 따라 일부 명령어의 문법이 바뀌었거나, 애초에 존재하지 않는 세팅 이름이 섞여 배포되는 경우가 있습니다. 에러가 나는 줄은 PyMOL 공식 문서(pymol.org/dokuwiki)나 PyMOL Wiki에서 명령어명을 직접 검색해 실재 여부부터 확인하는 것이 가장 빠릅니다.

참고문헌

  1. PyMOL 공식 문서, "command:distance" — mode=2(극성 접촉 표시) 옵션 정의: https://pymol.org/dokuwiki/doku.php?id=command:distance
  2. PyMOL Wiki, "Displaying Biochemical Properties" — mode=2의 DSSP(Kabsch & Sander, 1983) 기반 수소결합 판정 원리 및 한계: https://pymolwiki.org/index.php/Displaying_Biochemical_Properties
  3. PyMOL Wiki, "Advanced Coloring" — util.cba*, util.cnc 원소별 배색 명령어 설명: https://pymolwiki.org/index.php/Advanced_Coloring
  4. PyMOL 공식 문서, "setting:ray" — ray_shadows, ray_trace_mode 등 렌더링 세팅 목록: https://pymol.org/dokuwiki/doku.php?id=setting:ray
  5. PyMOL Wiki, "Png" — 배경 투명 PNG 저장 시 ray_opaque_background 세팅 사용법: https://wiki.pymol.org/index.php/Png
  6. PyMOL Wiki, "Protein contact potential" — vacuum electrostatics 기능의 정성적 성격과 APBS 대비 한계: https://pymolwiki.org/Protein_contact_potential
  7. PyMOL Wiki, "Surface cavity mode" — surface_cavity_mode 세팅을 통한 캐비티 표시 조절: https://wiki.pymol.org/index.php/Surface_cavity_mode

함께 읽으면 좋은 글

  • [PyMOL 설치부터 마우스 조작까지 다룬 이전 글] — 화면(카메라)이 도는 것과 분자 자체가 도는 것의 차이, Viewing/Editing 모드 전환을 다룬 글로, 이번 글은 그 뒤를 잇는 명령어 실전편입니다.

댓글

이 블로그의 인기 게시물

PyMOL 설치 방법부터 마우스 사용법까지 — AI 신약개발 시대 분자 시각화 입문 가이드

"AI가 신약을 설계해준다"는 말은 이제 뉴스 헤드라인이 아니라 실험실의 일상이 되었습니다. 알파폴드 같은 단백질 구조 예측 모델이 구조 데이터를 쏟아내면서, 그 결과물을 사람이 눈으로 확인하고 해석하는 능력은 오히려 더 중요해졌습니다. 그 확인 작업의 표준 도구가 바로 PyMOL입니다. 그런데 막상 PyMOL을 처음 켜본 분들의 반응은 대체로 비슷합니다. 마우스를 드래그했는데 분자가 움직이는 줄 알았더니 사실은 화면(카메라)이 돌아간 것이고, 어떤 때는 또 분자 자체가 진짜로 움직여서 구조가 깨진 것처럼 보이기도 합니다. 단축키를 몰라서 우왕좌왕하다가 그냥 캡처 화면만 들고 보고서를 쓰는 경우도 많습니다. 이 글에서는 컴퓨터 비전공자도 따라 할 수 있도록 PyMOL 설치부터, 가장 많이 헷갈리는 마우스 동작의 원리, 실전 사용법까지 순서대로 정리합니다. PyMOL이 AI 신약개발 시대에 필수가 된 이유 PyMOL은 단백질, 핵산, 저분자 화합물 같은 생체분자의 3차원 구조를 시각화하는 프로그램입니다. 단순히 "예쁜 그림"을 만드는 도구가 아니라, 결합 부위의 형태를 확인하고 화합물이 들어갈 공간을 가늠하고 변이가 일어난 자리를 짚어내는 분석 도구입니다. 요즘 AI 신약개발 파이프라인은 보통 이런 흐름을 따릅니다. AI 모델이 단백질 구조를 예측하거나 결합 후보 화합물을 제안하면, 연구자가 그 결과를 분자 시각화 프로그램으로 열어 타당성을 검토합니다. 예측이 그럴듯해 보이는지, 입체 장애는 없는지, 알려진 결합 부위와 일치하는지를 눈으로 확인하는 단계가 빠지지 않습니다. 그 검증 단계에 PyMOL이 사실상 업계 표준으로 쓰이고 있어서, 생물학이나 제약 전공자라면 코딩 경험이 없어도 PyMOL 사용법 정도는 익혀두는 편이 유리합니다. PyMOL 설치, 두 가지 무료 경로 중 나에게 맞는 것 고르기 PyMOL은 신기하게도 "무료"라는 말이 두 가지 다른 의미로 쓰입니다. 어떤 경로로 받느냐에 따...

CQA(Critical Quality Attribute)란 무엇인가: 바이오의약품 CMC에서 "관리해야 할 것"을 정하는 방식

CQA(Critical Quality Attribute)란 무엇인가: 바이오의약품 CMC에서 "관리해야 할 것"을 정하는 방식 시험 목록을 보다 보면 이런 의문이 듭니다. "이 시험은 왜 하는 거지?" SEC-HPLC로 Aggregation을 보고, CEX로 Charge Variant를 보고, ELISA로 HCP를 보는데, 정작 "왜 이 항목들을 관리해야 하는가"에 대한 답은 문서 어디에도 명확히 적혀 있지 않은 경우가 많습니다. 이 질문에 답하는 개념이 바로 CQA, Critical Quality Attribute입니다. 이전 글 RACI Matrix: 바이오·제약 CMC 조직에서 의사결정이 꼬이는 진짜 원인 에서는 "누가 결정하는가"를 다뤘다면, 이번 글은 그 결정의 대상, 즉 "무엇을 관리해야 하는가"를 다룹니다. CQA는 시험 항목을 나열한 표가 아니라, 제품 품질과 환자 안전을 연결하는 과학적 의사결정 체계입니다. CQA란 무엇인가 ICH Q8(R2)에서는 CQA를 이렇게 정의합니다. "제품이 요구되는 품질, 안전성, 유효성을 확보하기 위해 적절한 한계, 범위 또는 분포 내에서 관리되어야 하는 물리적, 화학적, 생물학적 또는 미생물학적 특성 또는 성질" 풀어 말하면 이렇습니다. CQA = 제품의 품질 특성 중, 변화가 생겼을 때 환자에게 미치는 영향을 고려해 반드시 관리해야 하는 핵심 특성 항체(mAb) 제품을 예로 들면, 하나의 분자 안에도 관리 가능한 특성이 수십 가지 존재합니다. 품질 특성 대표 시험 Primary structure Peptide mapping Aggregation SEC-HPLC Charge variant CEX-HPLC Glycosylation LC-MS Potency Cell-based assay Host Cell Protei...