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
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