base - azevedolab.net

Transcrição

base - azevedolab.net
www.python.org
1
© 2016 Dr. Walter F. de Azevedo Jr.
000000000000000000000000000000000000000
000000000000000000000000000000000000000
000000000000111111111110001100000000000
000000000001111111111111111111000000001
000000000111111111111111111111111000000
000000000111111111111111111111111000000
000000000011111111111111111111100000000
000000001111111111111111111111111000000
000011111111111111111111111111111000000
001111111111111111111111111111110000000
111111111111111111111111111110000000000
111111111111111111111111111110000000000
000011111111111111111111111111111110000
001111111111111111111111111111111111000
011111111111111111111111111111111111000
001111111111111111111111111111111111100
000000011111111111111111111111111111110
000000001111111111111111111111111111110
000000000001111111111111111111111111110
000000000000011111111111111111111111110
000000000000000111111111111111111111000
000000000000000000000000001111000000000
000000000000000000000000000000000000000
000000000000000000000000000000000000000
000000000000000000000000000000000000000
Cristalografia de Proteínas
www.python.org
3. Interpretação do padrão de
difração de raios X. A figura
abaixo é o registro da difração de
raios X de um cristal. Os raios X
interagem com o cristal, o que
produz um padrão de difração. A
análise
desta
informação
possibilita a resolução de estrutura
3D.
Etapas para resolução da
estrutura
3D
de
macromoléculas biológicas
por cristalografia
2. Coleta de dados de difração de raios X no LNLS.
Os cristais apresentam um arranjo ordenado de
moléculas, como uma pilha de tijolos ordenados. Na
analogia, cada tijolo representa uma molécula. As
distâncias entre os átomos são da ordem de 1 Å (0,1 nm
ou 10-10 m), usando-se raios X (com comprimento de
onda da ordem de Å ) teremos difração.
1. Cristalização. Nesta
etapa a macromolécula é
trazida a um estado de
supersaturação
que
favorece a formação de
cristais,
como
os
mostrados acima. Os
cristais de moléculas
biológicas normalmente
apresentam dimensões
inferiores a 1 mm de
comprimento em cada
aresta.
5. Análise. A partir da estrutura
resolvida procedemos à análise,
onde relaciona-se a estrutura 3D à
sua função biológica.
4. Resolução da estrutura.
A partir da análise do
padrão de difração é
possível gerar mapas de
densidade eletrônica (à
direita). A interpretação de
tais mapas gera a estrutura
3D de molécula.
2
Protein Data Bank
www.python.org
Vimos nas aulas anteriores como usar o Python para acessar informações relativas às
coordenadas atômicas armazenadas em arquivos no formato PDB. Hoje veremos
como ler as informações adicionais armazenadas no arquivo PDB. Informações como
autores, identificação da macromolécula entre outras. Abaixo temos as linhas iniciais
de um arquivo PDB. As colunas dentro do retângulo vermelho trazem palavras-chaves.
HEADER
TITLE
TITLE
COMPND
COMPND
COMPND
COMPND
COMPND
COMPND
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
KEYWDS
KEYWDS
EXPDTA
AUTHOR
AUTHOR
TRANSFERASE
22-MAY-04
1WE2
CRYSTAL STRUCTURE OF SHIKIMATE KINASE FROM MYCOBACTERIUM
2 TUBERCULOSIS IN COMPLEX WITH MGADP AND SHIKIMIC ACID
MOL_ID: 1;
2 MOLECULE: SHIKIMATE KINASE;
3 CHAIN: A;
4 SYNONYM: SK;
5 EC: 2.7.1.71;
6 ENGINEERED: YES
MOL_ID: 1;
2 ORGANISM_SCIENTIFIC: MYCOBACTERIUM TUBERCULOSIS;
3 ORGANISM_TAXID: 1773;
4 GENE: AROK;
5 EXPRESSION_SYSTEM: ESCHERICHIA COLI BL21(DE3);
6 EXPRESSION_SYSTEM_TAXID: 469008;
7 EXPRESSION_SYSTEM_STRAIN: BL21(DE3);
8 EXPRESSION_SYSTEM_VECTOR_TYPE: PLASMID;
9 EXPRESSION_SYSTEM_PLASMID: PET-23A
SHIKIMATE PATHWAY, SHIKIMATE KINASE, X-RAY CRYSTALLOGRAPHY,
2 SYNCHROTRON, DRUG DESIGN, TRANSFERASE
X-RAY DIFFRACTION
J.H.PEREIRA,J.S.DE OLIVEIRA,F.CANDURI,M.V.DIAS,M.S.PALMA,
2 L.A.BASSO,D.S.SANTOS,W.F.DE AZEVEDO JR.
3
Programa read_header.py
www.python.org
O programa read_header.py lê o cabeçalho do arquivo PDB e mostra as informações
na tela. A situação é similar à leitura de coordenadas que iniciam com “ATOM “ ou
“HETATM”. A diferença é que a palavra-chave será “HEADER”. Se contarmos o
número de caracteres da string “HEADER”, vemos que temos 6 caracteres. Assim, o
loop de leitura irá procurar por line[0:6].
HEADER
TITLE
TITLE
COMPND
COMPND
COMPND
COMPND
COMPND
COMPND
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
SOURCE
KEYWDS
KEYWDS
EXPDTA
AUTHOR
AUTHOR
TRANSFERASE
22-MAY-04
1WE2
CRYSTAL STRUCTURE OF SHIKIMATE KINASE FROM MYCOBACTERIUM
2 TUBERCULOSIS IN COMPLEX WITH MGADP AND SHIKIMIC ACID
MOL_ID: 1;
2 MOLECULE: SHIKIMATE KINASE;
3 CHAIN: A;
4 SYNONYM: SK;
5 EC: 2.7.1.71;
6 ENGINEERED: YES
MOL_ID: 1;
2 ORGANISM_SCIENTIFIC: MYCOBACTERIUM TUBERCULOSIS;
3 ORGANISM_TAXID: 1773;
4 GENE: AROK;
5 EXPRESSION_SYSTEM: ESCHERICHIA COLI BL21(DE3);
6 EXPRESSION_SYSTEM_TAXID: 469008;
7 EXPRESSION_SYSTEM_STRAIN: BL21(DE3);
8 EXPRESSION_SYSTEM_VECTOR_TYPE: PLASMID;
9 EXPRESSION_SYSTEM_PLASMID: PET-23A
SHIKIMATE PATHWAY, SHIKIMATE KINASE, X-RAY CRYSTALLOGRAPHY,
2 SYNCHROTRON, DRUG DESIGN, TRANSFERASE
X-RAY DIFFRACTION
J.H.PEREIRA,J.S.DE OLIVEIRA,F.CANDURI,M.V.DIAS,M.S.PALMA,
2 L.A.BASSO,D.S.SANTOS,W.F.DE AZEVEDO JR.
4
Programa read_header.py
www.python.org
Como podemos ver no código abaixo, com sete linhas de código resolvemos o
problema. O loop de leitura seleciona a string a ser buscada na linha, no caso
“HEADER”.
pdbFileIn = input("\nType the PDB file name => ")
fo = open(pdbFileIn,"r")
pdb = fo.readlines()
for line in pdb:
if line[0:6] == "HEADER":
print(line, end="")
fo.close()
Abaixo temos o resultado de rodarmos o código com entrada 1WE2.
Type the PDB file name => 1we2.pdb
HEADER TRANSFERASE 22-MAY-04 1WE2
5
Programa read_xtal.py
www.python.org
O programa read_xtal.py lê as informações sobre as condições de cristalização. Essas
informações estão armazenadas nas linhas que seguem as palavras-chaves
“REMARK 280 CRYSTALLIZATION CONDITIONS”. Temos que ter em mente que para
mostrar as informações, necessitamos que as linhas seguintes sejam mostradas. Não
é só “pescar” a string “REMARK 280 CRYSTALLIZATION CONDITIONS”, temos que
usar um elif para mostrar as linhas seguintes. Assim, testa-se a presença da string
“REMARK 280 CRYSTALLIZATION CONDITIONS” e depois testamos se a string
“REMARK 280” está presente. Para garantir que a condição de elif só seja verdadeira
depois de passarmos a primeira vez na condição de “REMARK 280
CRYSTALLIZATION CONDITIONS”, lançaremos mão de uma variável booleana,
também conhecida como variável lógica. Uma variável booleana assume valores True
ou False. No programa read_xtal.py o valor lógico será atribuído à variável
boolean_var.
REMARK 280 CRYSTALLIZATION CONDITIONS: NA-HEPES, MAGNESIUM CHOLORIDE, PEG
REMARK 280 3350, ADENOSINE-5'-DIPHOSPHATE, SHIKIMIC ACID, PH 7.50, VAPOR
REMARK 280 DIFFUSION, HANGING DROP, TEMPERATURE 293K
6
Programa read_xtal.py
www.python.org
Veja que inicialmente atribuímos a string a ser procurada à variável my_string, para
facilitar a procura. Outro aspecto a ser destacado, usando-se tal recurso, podemos
acessar o tamanho da string a ser buscada com len(my_string), o que facilita o
fatiamento da string, não precisamos ficar contando caracteres, o len(my_string) faz
isto para gente.
pdbFileIn = input("\nType the PDB file name => ")
fo = open(pdbFileIn,"r")
pdb = fo.readlines()
my_string = "REMARK 280 CRYSTALLIZATION CONDITIONS"
len_my_string = len(my_string)
boolean_var = False
for line in pdb:
if line[0:len_my_string] == my_string:
print(line,end="")
boolean_var = True
elif line[0:10] == my_string[0:10] and boolean_var:
print(line,end="")
fo.close()
7
Programa read_xtal.py
www.python.org
Agora vamos à variável booleana, atribuímos False à variável boolean_var, assim
garantimos uma forma de monitorar a primeira vez que achamos a string “REMARK
280 CRYSTALLIZATION CONDITIONS”. Veja que o valor da variável booleana muda
quando a condição if line[0:len_my_string] == my_string: for satisfeita.
pdbFileIn = input("\nType the PDB file name => ")
fo = open(pdbFileIn,"r")
pdb = fo.readlines()
my_string = "REMARK 280 CRYSTALLIZATION CONDITIONS"
len_my_string = len(my_string)
boolean_var = False
for line in pdb:
if line[0:len_my_string] == my_string:
print(line,end="")
boolean_var = True
elif line[0:10] == my_string[0:10] and boolean_var:
print(line,end="")
fo.close()
8
Programa read_xtal.py
www.python.org
No loop de leitura testamos se temos a primeira string, aquela atribuída à variável
my_string, em seguida mostramos a linha na tela. Depois, como já passamos pelo
primeiro if, mudamos o estado da variável booleana para True. Agora nas próximas
linhas do arquivo pdb, ao chegarmos no elif, caso tenhamos a string “REMARK 280 “ a
linha será mostrada.
pdbFileIn = input("\nType the PDB file name => ")
fo = open(pdbFileIn,"r")
pdb = fo.readlines()
my_string = "REMARK 280 CRYSTALLIZATION CONDITIONS"
len_my_string = len(my_string)
boolean_var = False
for line in pdb:
if line[0:len_my_string] == my_string:
print(line,end="")
boolean_var = True
elif line[0:10] == my_string[0:10] and boolean_var:
print(line,end="")
fo.close()
9
Programa read_xtal.py
www.python.org
Abaixo temos os resultados para o arquivo 1we2.pdb.
Type the PDB file name => 1we2.pdb
REMARK 280 CRYSTALLIZATION CONDITIONS: NA-HEPES, MAGNESIUM CHOLORIDE, PEG
REMARK 280 3350, ADENOSINE-5'-DIPHOSPHATE, SHIKIMIC ACID, PH 7.50, VAPOR
REMARK 280 DIFFUSION, HANGING DROP, TEMPERATURE 293K
10
Proteingo.net
www.proteingo.net
O projeto proteingo.net visa o uso de ferramentas computacionais gratuitas para o
estudo de proteínas. No prédio 12 temos diversos “proteinmons” que devem ser
capturados com um leitor de QR. Aqueles arquivos PDB relacionados com os
proteinmons devem ser analisados com o programa read_xtal.py. Façam uma tabela
com as condições de cristalização de cada proteinmon. Abaixo temos um modelo da
tabela a ser entregue até o dia 3/10/2016 na forma de arquivo Word. Pode acontecer
de ter arquivos onde as condições de cristalização não foram disponibilizadas pelo
PDB, neste caso coloque ND (não determinada).
Código de Acesso PDB
Condições de Cristalização
1WE2
CRYSTALLIZATION CONDITIONS: NAHEPES, MAGNESIUM CHOLORIDE, PEG
3350, ADENOSINE-5'-DIPHOSPHATE,
SHIKIMIC ACID, PH 7.50, VAPOR
DIFFUSION, HANGING DROP,
TEMPERATURE 293K
.....
11
GenBank
www.python.org
O GenBank é uma base de dados de sequências de genes, como destacado na sua
página de entrada. Toda informação está armazenada de forma organizada e de
acesso aberto no GenBank. O acesso pode ser feito no site:
http://www.ncbi.nlm.nih.gov/genbank/
12
GenBank
www.python.org
Vamos ilustrar um exemplo com a consulta de sequência de bases do genoma do
Mycobacterium tuberculosis. No campo indicado abaixo, selecionamos “Genome”.
13
GenBank
www.python.org
Depois digitamos Mycobacterium tuberculosis no campo indicado abaixo e
pressionamos “Search”.
14
GenBank
www.python.org
O resultado da nossa busca está mostrado abaixo. Na parte em destaque temos o
dendrograma, que mostra a proximidade entre os genomas depositados com o do
Mycobacterium tuberculosis. Nosso foco é o depósito identificado como H37Rv.
15
GenBank
www.python.org
Abaixo, na mesma página, temos informação sobre os genomas que apresentam a
identificação Mycobacterium tuberculosis, pode haver mais de um, como abaixo, pois
foram sequenciadas diferentes cepas da bactéria. Vamos olhar os detalhes da tabela
abaixo.
16
GenBank
www.python.org
A tabela abaixo traz informações sobre o o tamanho dos genomas (em MegaBases,
ou seja 106 bases) de Mycobacterium tuberculosis, bem como disponibilidade do
genoma, a porcentagem de bases CG no genoma, o número de genes identificados e
proteínas.
17
GenBank
www.python.org
Outra informação, a página destaca as publicações relacionadas com os genomas
descritos. Abaixo temos 3 artigos em destaque.
18
GenBank
www.python.org
Clicando no genoma indicado abaixo, teremos detalhamento das informações
específicas do genoma clicado.
19
GenBank
www.python.org
Podemos acessar o arquivo FASTA com a sequência completa do genoma, clicando
na opção FASTA, mostrada abaixo.
20
GenBank
www.python.org
Abaixo temos a sequência de bases de todo genoma do Mycobacterium tuberculosis.
21
GenBank
www.python.org
Podemos salvá-la e manipulá-la com o editor de texto, clicamos na opção Send to,
indicada abaixo.
22
GenBank
www.python.org
Ao clicarmos teremos as opções mostradas abaixo, clicamos no File.
23
GenBank
www.python.org
Podemos escolher o formato e clicar na opção de criar o arquivo de saída, indicado
abaixo.
24
GenBank
www.python.org
Teremos o download do arquivo fasta com a sequência completa do genoma de
Mycobacterium tuberculosis, como indicado abaixo. O nome do arquivo baixado é
sequence.fasta.
25
Programa: readGenome.py
www.python.org
Read Genome
Programa: readGenome.py
Resumo
Programa para a leitura da sequência de bases de um genoma armazenado
num arquivo FASTA. Após a leitura, será mostrada na tela as seguintes
informações: Identificador do FASTA , Número de Adeninas, Número de Timinas,
Número de Citosinas, Número de Guaninas, Número de bases não identificadas,
Número de Citosinas e Guaninas, Número de Adeninas e Timinas, Porcentagem
de Citosinas e Guaninas, Porcentagem de Adeninas e Timinas, Porcentagem de
bases não identificadas, Número total de bases lidas, Número de bases não
identificadas.
26
Programa: readGenome.py
www.python.org
Os resultados esperados para o arquivo sequence.fasta são os seguintes:
Resultado da contagem de bases do arquivo: sequence.fasta
Identificador do fasta: >gi|57116681|ref|NC_000962.2| Mycobacterium tuberculosis H37Rv chromosome, complete genome
Número de Adeninas: 758565
Número de Timinas: 758379
Número de Citosinas: 1449985
Número de Guaninas: 1444603
Número de bases não identificadas: 0
Número de Citosinas e Guaninas: 2894588
Número de Adeninas e Timinas: 1516944
Porcentagem de Citosinas e Guaninas: 65.6141222595688
Porcentagem de Adeninas e Timinas: 34.3858777404312
Porcentagem de bases não identificadas 0
Número total de bases lidas 4411532
27
Referências
www.python.org
-BRESSERT, Eli. SciPy and NumPy. Sebastopol: O’Reilly Media, Inc., 2013. 56 p.
-DAWSON, Michael. Python Programming, for the absolute beginner. 3ed. Boston: Course Technology, 2010. 455 p.
-HETLAND, Magnus Lie. Python Algorithms. Mastering Basic Algorithms in the Python Language. Nova York: Springer
Science+Business Media LLC, 2010. 316 p.
-IDRIS, Ivan. NumPy 1.5. An action-packed guide dor the easy-to-use, high performance, Python based free open source
NumPy mathematical library using real-world examples. Beginner’s Guide. Birmingham: Packt Publishing Ltd., 2011. 212 p.
-KIUSALAAS, Jaan. Numerical Methods in Engineering with Python. 2ed. Nova York: Cambridge University Press, 2010. 422
p.
-LANDAU, Rubin H. A First Course in Scientific Computing: Symbolic, Graphic, and Numeric Modeling Using Maple, Java,
Mathematica, and Fortran90. Princeton: Princeton University Press, 2005. 481p.
-LANDAU, Rubin H., PÁEZ, Manuel José, BORDEIANU, Cristian C. A Survey of Computational Physics. Introductory
Computational Physics. Princeton: Princeton University Press, 2008. 658 p.
-LUTZ, Mark. Programming Python. 4ed. Sebastopol: O’Reilly Media, Inc., 2010. 1584 p.
-MODEL, Mitchell L. Bioinformatics Programming Using Python. Sebastopol: O’Reilly Media, Inc., 2011. 1584 p.
-TOSI, Sandro. Matplotlib for Python Developers. Birmingham: Packt Publishing Ltd., 2009. 293 p.
Última atualização: 25 de setembro de 2016.
28

Documentos relacionados

print() - azevedolab.net

print() - azevedolab.net Um arquivo PDB tem basicamente dois tipos de informação. A primeira, indicada pelo início da linha com as palavras-chaves REMARK, HEADER, TITLE, CRYST1 e COMPND entre outras. São comentários sobre ...

Leia mais