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.