Biopython - Módulo PDB
Biopython fornece módulo Bio.PDB para manipular estruturas polipeptídicas. O PDB (Protein Data Bank) é o maior recurso de estrutura de proteínas disponível online. Ele hospeda muitas estruturas de proteínas distintas, incluindo complexos proteína-proteína, proteína-DNA, proteína-RNA.
Para carregar o PDB, digite o comando abaixo -
from Bio.PDB import *
Formatos de arquivo de estrutura de proteína
O PDB distribui estruturas de proteínas em três formatos diferentes -
- O formato de arquivo baseado em XML que não é compatível com Biopython
- O formato de arquivo pdb, que é um arquivo de texto especialmente formatado
- Formato de arquivos PDBx / mmCIF
Os arquivos PDB distribuídos pelo Protein Data Bank podem conter erros de formatação que os tornam ambíguos ou difíceis de analisar. O módulo Bio.PDB tenta lidar com esses erros automaticamente.
O módulo Bio.PDB implementa dois analisadores diferentes, um no formato mmCIF e o segundo no formato pdb.
Vamos aprender como analisar cada formato em detalhes -
Analisador mmCIF
Vamos baixar um exemplo de banco de dados no formato mmCIF do servidor PDB usando o comando abaixo -
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'mmCif')
Isso fará o download do arquivo especificado (2fat.cif) do servidor e o armazenará no diretório de trabalho atual.
Aqui, o PDBList fornece opções para listar e baixar arquivos do servidor FTP PDB online. O método retrieve_pdb_file precisa do nome do arquivo a ser baixado sem extensão. retrieve_pdb_file também tem a opção de especificar o diretório de download, pdir e o formato do arquivo, file_format. Os valores possíveis de formato de arquivo são os seguintes -
- “MmCif” (padrão, arquivo PDBx / mmCif)
- “Pdb” (formato PDB)
- “Xml” (formato PMDML / XML)
- “Mmtf” (altamente comprimido)
- “Pacote” (arquivo formatado PDB para estrutura grande)
Para carregar um arquivo cif, use Bio.MMCIF.MMCIFParser conforme especificado abaixo -
>>> parser = MMCIFParser(QUIET = True)
>>> data = parser.get_structure("2FAT", "2FAT.cif")
Aqui, QUIET suprime o aviso durante a análise do arquivo. get_structure will parse the file and return the structure with id as 2FAT (primeiro argumento).
Depois de executar o comando acima, ele analisa o arquivo e imprime um possível aviso, se disponível.
Agora, verifique a estrutura usando o comando abaixo -
>>> data
<Structure id = 2FAT>
To get the type, use type method as specified below,
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Analisamos o arquivo com sucesso e obtivemos a estrutura da proteína. Aprenderemos os detalhes da estrutura da proteína e como obtê-la no capítulo posterior.
PDB Parser
Vamos baixar um exemplo de banco de dados no formato PDB do servidor PDB usando o comando abaixo -
>>> pdbl = PDBList()
>>> pdbl.retrieve_pdb_file('2FAT', pdir = '.', file_format = 'pdb')
Isso irá baixar o arquivo especificado (pdb2fat.ent) do servidor e armazená-lo no diretório de trabalho atual.
Para carregar um arquivo pdb, use Bio.PDB.PDBParser conforme especificado abaixo -
>>> parser = PDBParser(PERMISSIVE = True, QUIET = True)
>>> data = parser.get_structure("2fat","pdb2fat.ent")
Aqui, get_structure é semelhante a MMCIFParser. A opção PERMISSIVA tenta analisar os dados da proteína da forma mais flexível possível.
Agora, verifique a estrutura e seu tipo com o trecho de código fornecido abaixo -
>>> data
<Structure id = 2fat>
>>> print(type(data))
<class 'Bio.PDB.Structure.Structure'>
Bem, a estrutura do cabeçalho armazena as informações do dicionário. Para fazer isso, digite o comando abaixo -
>>> print(data.header.keys()) dict_keys([
'name', 'head', 'deposition_date', 'release_date', 'structure_method', 'resolution',
'structure_reference', 'journal_reference', 'author', 'compound', 'source',
'keywords', 'journal'])
>>>
Para obter o nome, use o seguinte código -
>>> print(data.header["name"])
an anti-urokinase plasminogen activator receptor (upar) antibody: crystal
structure and binding epitope
>>>
Você também pode verificar a data e resolução com o código abaixo -
>>> print(data.header["release_date"]) 2006-11-14
>>> print(data.header["resolution"]) 1.77
Estrutura PDB
A estrutura do PDB é composta por um único modelo, contendo duas cadeias.
- cadeia L, contendo número de resíduos
- cadeia H, contendo número de resíduos
Cada resíduo é composto de vários átomos, cada um com uma posição 3D representada por coordenadas (x, y, z).
Vamos aprender como obter a estrutura do átomo em detalhes na seção abaixo -
Modelo
O método Structure.get_models () retorna um iterador sobre os modelos. É definido abaixo -
>>> 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'>
Aqui, um modelo descreve exatamente uma conformação 3D. Ele contém uma ou mais cadeias.
Cadeia
O método Model.get_chain () retorna um iterador nas cadeias. É definido abaixo -
>>> chains = list(models[0].get_chains())
>>> chains
[<Chain id = L>, <Chain id = H>]
>>> type(chains[0])
<class 'Bio.PDB.Chain.Chain'>
Aqui, Cadeia descreve uma estrutura polipeptídica apropriada, isto é, uma sequência consecutiva de resíduos ligados.
Resíduo
O método Chain.get_residues () retorna um iterador sobre os resíduos. É definido abaixo -
>>> residue = list(chains[0].get_residues())
>>> len(residue)
293
>>> residue1 = list(chains[1].get_residues())
>>> len(residue1)
311
Bem, o resíduo contém os átomos que pertencem a um aminoácido.
Átomos
O Residue.get_atom () retorna um iterador sobre os átomos conforme definido abaixo -
>>> atoms = list(residue[0].get_atoms())
>>> atoms
[<Atom N>, <Atom CA>, <Atom C>, <Atom Ov, <Atom CB>, <Atom CG>, <Atom OD1>, <Atom OD2>]
Um átomo contém a coordenada 3D de um átomo e é chamado de Vetor. É definido abaixo
>>> atoms[0].get_vector()
<Vector 18.49, 73.26, 44.16>
Ele representa os valores das coordenadas x, y e z.