Biopython - PDB Modülü
Biopython, polipeptit yapılarını manipüle etmek için Bio.PDB modülü sağlar. PDB (Protein Veri Bankası), çevrimiçi olarak mevcut en büyük protein yapısı kaynağıdır. Protein-protein, protein-DNA, protein-RNA kompleksleri dahil birçok farklı protein yapısına ev sahipliği yapar.
PDB'yi yüklemek için aşağıdaki komutu yazın -
from Bio.PDB import *
Protein Yapısı Dosya Biçimleri
PDB, protein yapılarını üç farklı formatta dağıtır -
- Biopython tarafından desteklenmeyen XML tabanlı dosya biçimi
- Özel olarak biçimlendirilmiş bir metin dosyası olan pdb dosya biçimi
- PDBx / mmCIF dosya biçimi
Protein Veri Bankası tarafından dağıtılan PDB dosyaları, belirsiz veya ayrıştırılmalarını zorlaştıran biçimlendirme hataları içerebilir. Bio.PDB modülü bu hatalarla otomatik olarak ilgilenmeye çalışır.
Bio.PDB modülü, biri mmCIF formatı ve ikincisi pdb formatı olmak üzere iki farklı ayrıştırıcı uygular.
Biçimlerin her birini ayrıntılı olarak nasıl ayrıştıracağımızı öğrenelim -
mmCIF Ayrıştırıcı
Aşağıdaki komutu kullanarak pdb sunucusundan mmCIF formatında örnek bir veritabanı indirelim -
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')
Bu, belirtilen dosyayı (2fat.cif) sunucudan indirecek ve mevcut çalışma dizininde saklayacaktır.
Burada, PDBList, dosyaları çevrimiçi PDB FTP sunucusundan listelemek ve indirmek için seçenekler sunar. retrieve_pdb_file yöntemi, uzantı olmadan indirilecek dosyanın adına ihtiyaç duyar. retrieve_pdb_file ayrıca indirme dizinini, pdir ve dosyanın biçimini, file_format'ı belirtme seçeneğine de sahiptir. Dosya formatının olası değerleri aşağıdaki gibidir -
- "MmCif" (varsayılan, PDBx / mmCif dosyası)
- "Pdb" (PDB biçimi)
- "Xml" (PMDML / XML biçimi)
- "Mmtf" (yüksek oranda sıkıştırılmış)
- "Paket" (büyük yapı için PDB formatlı arşiv)
Bir cif dosyası yüklemek için Bio.MMCIF.MMCIFParser'ı aşağıda belirtildiği gibi kullanın -
>>> parser = MMCIFParser(QUIET = True)
>>> data = parser.get_structure("2FAT", "2FAT.cif")
Burada, QUIET, dosyayı ayrıştırırken uyarıyı bastırır. get_structure will parse the file and return the structure with id as 2FAT (ilk argüman).
Yukarıdaki komutu çalıştırdıktan sonra, dosyayı ayrıştırır ve varsa olası uyarıyı yazdırır.
Şimdi, aşağıdaki komutu kullanarak yapıyı kontrol edin -
>>> data
<Structure id = 2FAT>
To get the type, use type method as specified below,
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Dosyayı başarıyla çözümledik ve proteinin yapısını aldık. Protein yapısının ayrıntılarını ve onu nasıl elde edeceğimizi sonraki bölümde öğreneceğiz.
PDB Ayrıştırıcı
Aşağıdaki komutu kullanarak pdb sunucusundan PDB formatında örnek bir veritabanı indirelim -
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')
Bu, belirtilen dosyayı (pdb2fat.ent) sunucudan indirecek ve mevcut çalışma dizininde saklayacaktır.
Bir pdb dosyası yüklemek için, Bio.PDB.PDBParser'ı aşağıda belirtildiği gibi kullanın -
>>> parser = PDBParser(PERMISSIVE = True, QUIET = True)
>>> data = parser.get_structure("2fat","pdb2fat.ent")
Burada get_structure, MMCIFParser'a benzer. PERMISSIVE seçeneği, protein verilerini mümkün olduğunca esnek şekilde ayrıştırmaya çalışın.
Şimdi, yapıyı ve türünü aşağıda verilen kod parçacığı ile kontrol edin -
>>> data
<Structure id = 2fat>
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Başlık yapısı sözlük bilgilerini saklar. Bunu gerçekleştirmek için aşağıdaki komutu yazın -
>>> print(data.header.keys()) dict_keys([
'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution',
'structure_reference', 'journal_reference', 'author', 'compound', 'source',
'keywords', 'journal'])
>>>
İsmi almak için aşağıdaki kodu kullanın -
>>> print(data.header["name"])
an anti-urokinase plasminogen activator receptor (upar) antibody: crystal
structure and binding epitope
>>>
Aşağıdaki kodla tarihi ve çözünürlüğü de kontrol edebilirsiniz -
>>> print(data.header["release_date"]) 2006-11-14
>>> print(data.header["resolution"]) 1.77
PDB Yapısı
PDB yapısı, iki zincir içeren tek bir modelden oluşur.
- kalıntı sayısı içeren zincir L
- kalıntı sayısı içeren zincir H
Her kalıntı, her biri (x, y, z) koordinatlarıyla temsil edilen bir 3B konuma sahip olan birden fazla atomdan oluşur.
Atomun yapısını nasıl elde edeceğimizi aşağıdaki bölümde detaylı olarak öğrenelim -
Modeli
Structure.get_models () yöntemi, modeller üzerinde bir yineleyici döndürür. Aşağıda tanımlanmıştır -
>>> 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'>
Burada, bir Model tam olarak bir 3B konformasyonu tanımlar. Bir veya daha fazla zincir içerir.
Zincir
Model.get_chain () yöntemi, zincirler üzerinde bir yineleyici döndürür. Aşağıda tanımlanmıştır -
>>> chains = list(models[0].get_chains())
>>> chains
[<Chain id = L>, <Chain id = H>]
>>> type(chains[0])
<class 'Bio.PDB.Chain.Chain'>
Burada Zincir, uygun bir polipeptit yapısını, yani ardışık bir bağlı kalıntı dizisini tarif eder.
Kalıntı
Chain.get_residues () yöntemi, kalıntılar üzerinde bir yineleyici döndürür. Aşağıda tanımlanmıştır -
>>> residue = list(chains[0].get_residues())
>>> len(residue)
293
>>> residue1 = list(chains[1].get_residues())
>>> len(residue1)
311
Rezidü, bir amino aside ait atomları tutar.
Atomlar
Residue.get_atom (), aşağıda tanımlandığı gibi atomlar üzerinde bir yineleyici döndürür -
>>> atoms = list(residue[0].get_atoms())
>>> atoms
[<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]
Bir atom, bir atomun 3B koordinatını tutar ve buna Vektör adı verilir. Aşağıda tanımlanmıştır
>>> atoms[0].get_vector()
<Vector 18.49, 73.26, 44.16>
X, y ve z koordinat değerlerini temsil eder.