Biopython - moduł PDB
Biopython dostarcza moduł Bio.PDB do manipulacji strukturami polipeptydowymi. PDB (Protein Data Bank) jest największym źródłem informacji o strukturze białek dostępnym online. Zawiera wiele różnych struktur białkowych, w tym kompleksy białko-białko, białko-DNA, białko-RNA.
Aby załadować PDB, wpisz poniższe polecenie -
from Bio.PDB import *
Formaty plików struktury białek
PDB rozprowadza struktury białkowe w trzech różnych formatach -
- Format pliku oparty na XML, który nie jest obsługiwany przez Biopython
- Format pliku pdb, który jest specjalnie sformatowanym plikiem tekstowym
- Format plików PDBx / mmCIF
Pliki PDB dystrybuowane przez Protein Data Bank mogą zawierać błędy formatowania, które powodują, że są niejednoznaczne lub trudne do przeanalizowania. Moduł Bio.PDB próbuje automatycznie radzić sobie z tymi błędami.
Moduł Bio.PDB implementuje dwa różne parsery, jeden w formacie mmCIF, a drugi w formacie pdb.
Nauczmy się szczegółowo analizować każdy z formatów -
Parser mmCIF
Pobierzmy przykładową bazę danych w formacie mmCIF z serwera pdb za pomocą poniższego polecenia -
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')
Spowoduje to pobranie określonego pliku (2fat.cif) z serwera i zapisanie go w bieżącym katalogu roboczym.
Tutaj PDBList zapewnia opcje wyświetlania i pobierania plików z internetowego serwera FTP PDB. metoda retrieve_pdb_file wymaga nazwy pliku do pobrania bez rozszerzenia. retrieve_pdb_file ma również opcję określenia katalogu pobierania, katalogu pdir i formatu pliku, format_pliku. Możliwe wartości formatu pliku są następujące -
- „MmCif” (domyślnie, plik PDBx / mmCif)
- „Pdb” (format PDB)
- „Xml” (format PMDML / XML)
- „Mmtf” (mocno skompresowany)
- „Pakiet” (archiwum w formacie PDB dla dużych struktur)
Aby załadować plik cif, użyj Bio.MMCIF.MMCIFParser, jak określono poniżej -
>>> parser = MMCIFParser(QUIET = True)
>>> data = parser.get_structure("2FAT", "2FAT.cif")
Tutaj QUIET pomija ostrzeżenie podczas analizowania pliku. get_structure will parse the file and return the structure with id as 2FAT (pierwszy argument).
Po uruchomieniu powyższego polecenia analizuje plik i wyświetla ewentualne ostrzeżenie, jeśli jest dostępne.
Teraz sprawdź strukturę za pomocą poniższego polecenia -
>>> data
<Structure id = 2FAT>
To get the type, use type method as specified below,
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Pomyślnie przeanalizowaliśmy plik i uzyskaliśmy strukturę białka. Dowiemy się szczegółów struktury białka i jak ją uzyskać w następnym rozdziale.
Parser PDB
Pobierzmy przykładową bazę danych w formacie PDB z serwera pdb za pomocą poniższego polecenia -
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')
Spowoduje to pobranie określonego pliku (pdb2fat.ent) z serwera i zapisanie go w bieżącym katalogu roboczym.
Aby załadować plik pdb, użyj Bio.PDB.PDBParser, jak określono poniżej -
>>> parser = PDBParser(PERMISSIVE = True, QUIET = True)
>>> data = parser.get_structure("2fat","pdb2fat.ent")
Tutaj get_structure jest podobne do MMCIFParser. PERMISSIVE spróbuj przeanalizować dane białka tak elastycznie, jak to możliwe.
Teraz sprawdź strukturę i jej typ za pomocą fragmentu kodu podanego poniżej -
>>> data
<Structure id = 2fat>
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Cóż, struktura nagłówka przechowuje informacje ze słownika. Aby to zrobić, wpisz poniższe polecenie -
>>> print(data.header.keys()) dict_keys([
'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution',
'structure_reference', 'journal_reference', 'author', 'compound', 'source',
'keywords', 'journal'])
>>>
Aby uzyskać nazwę, użyj następującego kodu -
>>> print(data.header["name"])
an anti-urokinase plasminogen activator receptor (upar) antibody: crystal
structure and binding epitope
>>>
Możesz również sprawdzić datę i rozdzielczość za pomocą poniższego kodu -
>>> print(data.header["release_date"]) 2006-11-14
>>> print(data.header["resolution"]) 1.77
Struktura PDB
Struktura PDB składa się z jednego modelu zawierającego dwa łańcuchy.
- łańcuch L, zawierający szereg reszt
- łańcuch H, zawierający szereg reszt
Każda reszta składa się z wielu atomów, z których każdy ma pozycję 3D reprezentowaną przez współrzędne (x, y, z).
Nauczmy się szczegółowo, jak uzyskać strukturę atomu w poniższej sekcji -
Model
Metoda Structure.get_models () zwraca iterator po modelach. Jest zdefiniowany poniżej -
>>> 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'>
Tutaj Model opisuje dokładnie jedną konformację 3D. Zawiera jeden lub więcej łańcuchów.
Łańcuch
Metoda Model.get_chain () zwraca iterator po łańcuchach. Jest zdefiniowany poniżej -
>>> chains = list(models[0].get_chains())
>>> chains
[<Chain id = L>, <Chain id = H>]
>>> type(chains[0])
<class 'Bio.PDB.Chain.Chain'>
Tutaj Chain opisuje właściwą strukturę polipeptydu, tj. Kolejną sekwencję związanych reszt.
Pozostałość
Metoda Chain.get_residues () zwraca iterator po resztach. Jest zdefiniowany poniżej -
>>> residue = list(chains[0].get_residues())
>>> len(residue)
293
>>> residue1 = list(chains[1].get_residues())
>>> len(residue1)
311
Cóż, Reszta zawiera atomy należące do aminokwasu.
Atomy
Residue.get_atom () zwraca iterator po atomach, jak zdefiniowano poniżej -
>>> atoms = list(residue[0].get_atoms())
>>> atoms
[<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]
Atom zawiera współrzędną 3D atomu i nazywa się go wektorem. Jest zdefiniowany poniżej
>>> atoms[0].get_vector()
<Vector 18.49, 73.26, 44.16>
Reprezentuje wartości współrzędnych x, y i z.