Biopython - Mô-đun PDB
Biopython cung cấp mô-đun Bio.PDB để thao tác các cấu trúc polypeptide. PDB (Ngân hàng Dữ liệu Protein) là nguồn tài nguyên cấu trúc protein lớn nhất hiện có trên mạng. Nó chứa rất nhiều cấu trúc protein riêng biệt, bao gồm phức hợp protein-protein, protein-DNA, protein-RNA.
Để tải PDB, hãy nhập lệnh dưới đây:
from Bio.PDB import *
Định dạng tệp cấu trúc protein
PDB phân phối cấu trúc protein theo ba định dạng khác nhau -
- Định dạng tệp dựa trên XML không được Biopython hỗ trợ
- Định dạng tệp pdb, là một tệp văn bản được định dạng đặc biệt
- Định dạng tệp PDBx / mmCIF
Các tệp PDB do Ngân hàng Dữ liệu Protein phân phối có thể chứa các lỗi định dạng khiến chúng trở nên mơ hồ hoặc khó phân tích cú pháp. Mô-đun Bio.PDB cố gắng tự động xử lý các lỗi này.
Mô-đun Bio.PDB thực hiện hai trình phân tích cú pháp khác nhau, một là định dạng mmCIF và một là định dạng pdb.
Hãy để chúng tôi tìm hiểu cách phân tích cú pháp chi tiết từng định dạng -
Bộ phân tích cú pháp mmCIF
Hãy để chúng tôi tải xuống cơ sở dữ liệu mẫu ở định dạng mmCIF từ máy chủ pdb bằng lệnh dưới đây:
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')
Thao tác này sẽ tải xuống tệp được chỉ định (2fat.cif) từ máy chủ và lưu trữ trong thư mục làm việc hiện tại.
Tại đây, PDBList cung cấp các tùy chọn để liệt kê và tải xuống các tệp từ máy chủ PDB FTP trực tuyến. Phương thức get_pdb_file cần tên của tệp được tải xuống mà không có phần mở rộng. get_pdb_file cũng có tùy chọn để chỉ định thư mục tải xuống, pdir và định dạng của tệp, file_format. Các giá trị có thể có của định dạng tệp như sau:
- “MmCif” (mặc định, tệp PDBx / mmCif)
- “Pdb” (định dạng PDB)
- “Xml” (định dạng PMDML / XML)
- “Mmtf” (nén cao)
- "Gói" (kho lưu trữ được định dạng PDB cho cấu trúc lớn)
Để tải tệp cif, hãy sử dụng Bio.MMCIF.MMCIFParser như được chỉ định bên dưới -
>>> parser = MMCIFParser(QUIET = True)
>>> data = parser.get_structure("2FAT", "2FAT.cif")
Ở đây, QUIET loại bỏ cảnh báo trong quá trình phân tích cú pháp tệp. get_structure will parse the file and return the structure with id as 2FAT (đối số đầu tiên).
Sau khi chạy lệnh trên, nó sẽ phân tích cú pháp tệp và in cảnh báo có thể có, nếu có.
Bây giờ, hãy kiểm tra cấu trúc bằng lệnh dưới đây:
>>> data
<Structure id = 2FAT>
To get the type, use type method as specified below,
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Chúng tôi đã phân tích cú pháp thành công tệp và có cấu trúc của protein. Chúng ta sẽ tìm hiểu chi tiết về cấu trúc của protein và cách lấy nó trong chương sau.
PDB Parser
Hãy để chúng tôi tải xuống cơ sở dữ liệu mẫu ở định dạng PDB từ máy chủ pdb bằng lệnh dưới đây:
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')
Thao tác này sẽ tải xuống tệp được chỉ định (pdb2fat.ent) từ máy chủ và lưu trữ trong thư mục làm việc hiện tại.
Để tải tệp pdb, hãy sử dụng Bio.PDB.PDBParser như được chỉ định bên dưới -
>>> parser = PDBParser(PERMISSIVE = True, QUIET = True)
>>> data = parser.get_structure("2fat","pdb2fat.ent")
Ở đây, get_ architecture tương tự như MMCIFParser. Tùy chọn PERMISSIVE cố gắng phân tích cú pháp dữ liệu protein linh hoạt nhất có thể.
Bây giờ, hãy kiểm tra cấu trúc và loại của nó với đoạn mã được cung cấp bên dưới -
>>> data
<Structure id = 2fat>
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Vâng, cấu trúc tiêu đề lưu trữ thông tin từ điển. Để thực hiện việc này, hãy nhập lệnh dưới đây:
>>> print(data.header.keys()) dict_keys([
'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution',
'structure_reference', 'journal_reference', 'author', 'compound', 'source',
'keywords', 'journal'])
>>>
Để lấy tên, hãy sử dụng mã sau:
>>> print(data.header["name"])
an anti-urokinase plasminogen activator receptor (upar) antibody: crystal
structure and binding epitope
>>>
Bạn cũng có thể kiểm tra ngày tháng và độ phân giải bằng mã bên dưới -
>>> print(data.header["release_date"]) 2006-11-14
>>> print(data.header["resolution"]) 1.77
Cấu trúc PDB
Cấu trúc PDB bao gồm một mô hình duy nhất, chứa hai chuỗi.
- chuỗi L, chứa số lượng dư
- chuỗi H, chứa số dư
Mỗi phần dư bao gồm nhiều nguyên tử, mỗi nguyên tử có vị trí 3D được biểu thị bằng tọa độ (x, y, z).
Hãy cùng chúng tôi tìm hiểu cách nhận cấu trúc của nguyên tử một cách chi tiết trong phần dưới đây -
Mô hình
Phương thức Structure.get_models () trả về một trình lặp trên các mô hình. Nó được định nghĩa dưới đây -
>>> 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'>
Ở đây, Mô hình mô tả chính xác một cấu hình 3D. Nó chứa một hoặc nhiều chuỗi.
Chuỗi
Phương thức Model.get_chain () trả về một trình vòng lặp trên các chuỗi. Nó được định nghĩa dưới đây -
>>> chains = list(models[0].get_chains())
>>> chains
[<Chain id = L>, <Chain id = H>]
>>> type(chains[0])
<class 'Bio.PDB.Chain.Chain'>
Ở đây, Chuỗi mô tả một cấu trúc polypeptit thích hợp, tức là một chuỗi liên tiếp các gốc liên kết.
Phần còn lại
Phương thức Chain.get_residues () trả về một trình lặp trên các phần còn lại. Nó được định nghĩa dưới đây -
>>> residue = list(chains[0].get_residues())
>>> len(residue)
293
>>> residue1 = list(chains[1].get_residues())
>>> len(residue1)
311
Chà, Dư lượng giữ các nguyên tử thuộc về một axit amin.
Nguyên tử
Residue.get_atom () trả về một trình lặp trên các nguyên tử như được định nghĩa bên dưới:
>>> atoms = list(residue[0].get_atoms())
>>> atoms
[<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]
Một nguyên tử giữ tọa độ 3D của một nguyên tử và nó được gọi là Vector. Nó được định nghĩa dưới đây
>>> atoms[0].get_vector()
<Vector 18.49, 73.26, 44.16>
Nó đại diện cho các giá trị tọa độ x, y và z.