![Page 1: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/1.jpg)
Bioinformática com Rosalind
Marcos CastroPUG Beach
Python User Group (PUG-PI)
![Page 2: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/2.jpg)
Bioinformática...
• Biólogos e programadores lendo a palavra “bioinformática” em Python:
![Page 3: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/3.jpg)
Sequências
![Page 4: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/4.jpg)
Validando sequências DNA/RNA
![Page 5: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/5.jpg)
Testando...
![Page 6: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/6.jpg)
• Rosalind é uma plataforma para o aprendizado de bioinformática através da resolução de problemas.
http://rosalind.info
![Page 7: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/7.jpg)
Lista de problemas
![Page 8: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/8.jpg)
Árvore de problemas
![Page 9: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/9.jpg)
Sugerir problemas
![Page 10: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/10.jpg)
Ranking
![Page 11: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/11.jpg)
Submissão de código
• No final da página de cada problema você encontrará:
![Page 12: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/12.jpg)
Submissão de código
![Page 13: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/13.jpg)
Se acertar o problema...
![Page 16: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/16.jpg)
Complementing a Strand of DNA
• Inverte a string• ‘A’ e ‘T’ são complementares um do outro
assim como ‘C’ e ‘G’.• Entrada: AAAACCCGGT– String invertida: TGGCCCAAAA
• Saída: ACCGGGTTTT
![Page 17: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/17.jpg)
Complementing a Strand of DNA• http://rosalind.info/problems/revc/
• “s” representa uma string• “l” representa uma lista• “d” representa um dicionário
![Page 18: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/18.jpg)
Counting Point Mutations
• Problema da classe de alinhamento.• Serão dadas duas strings de tamanhos iguais.• A Hamming distance entre duas strings “s” e
“t” é o número de símbolos correspondentes que são diferentes em “s” e “t”.
![Page 19: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/19.jpg)
Counting Point Mutations
• Exemplo:
• Resposta: 7
![Page 21: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/21.jpg)
Translating RNA into Protein
• Nesse problema é dada como entrada uma string RNA “s” correspondente a uma fita de mRNA.
• A saída é uma string proteína codificada a partir de “s”.
![Page 22: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/22.jpg)
Translating RNA into Protein
• Para resolver esse problema, o Rosalind fornece uma tabela de códons para mapear cada aminoácido.
![Page 23: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/23.jpg)
Translating RNA into Protein
![Page 24: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/24.jpg)
Translating RNA into Protein
• Resumindo: cada conjunto de 3 letras da string RNA corresponde a um aminoácido.
• Exemplo:• string RNA: AUGGCC• “AUG” corresponde a “M” na tabela.• “GCC” corresponde a “A” na tabela.
![Page 25: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/25.jpg)
Translating RNA into Protein • http://rosalind.info/problems/prot/
![Page 26: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/26.jpg)
Finding a Motif in DNA • http://rosalind.info/problems/subs/
• Nesse problema são dadas como entrada duas strings “s” e “t”.
• A saída são todas as posições em que “t” ocorre em “s”.
![Page 27: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/27.jpg)
Finding a Motif in DNA
• Exemplo de entrada:s = GATATATGCATATACTT
t = ATAT
• Saída: 2 4 10
![Page 28: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/28.jpg)
Finding a Motif in DNA
![Page 29: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/29.jpg)
Enumerating Gene Orders
• Problema da classe “Rearranjos de Genoma”.• Uma permutação de tamanho “n” é um
ordenamento dos inteiros positivos:– {1, 2, ..., n}
• A entrada é um inteiro n <= 7.• A saída é composta pelo número de
permutações seguido de uma lista de todas as permutações.
![Page 30: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/30.jpg)
Enumerating Gene Orders
• Exemplo de saída para n = 3:61 2 31 3 22 1 32 3 13 1 23 2 1
![Page 31: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/31.jpg)
Enumerating Gene Orders• http://rosalind.info/problems/perm/
• Construindo o código aos poucos...
• l = [1, 2, 3]
![Page 32: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/32.jpg)
Enumerating Gene Orders
• p = [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
![Page 33: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/33.jpg)
Enumerating Gene Orders
print(new_l) exibirá: (1, 2, 3) (1, 3, 2)
(2, 1, 3) e assim por diante...
![Page 34: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/34.jpg)
Enumerating Gene Orders
• A linha 10 exibe a quantidade de permutações.
![Page 35: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/35.jpg)
Enumerating Gene Orders
• Código final:
![Page 36: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/36.jpg)
Enumerating Gene Orders
• Execução:
![Page 37: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/37.jpg)
Finding a Shared Motif
• http://rosalind.info/problems/lcsm/
• Problema interessante onde o Rosalind fornece várias strings (cadeias de DNA) como entrada e quer como saída a maior substring comum a todas as strings fornecidas.
![Page 38: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/38.jpg)
Finding a Shared Motif
• Em um primeiro momento você poderá pensar em gerar todas as substrings possíveis de apenas uma das strings, armazenar elas numa lista e percorrer o restante das strings para saber qual é a substring comum e de maior tamanho.
• itertools.combinations() faz isso...
![Page 39: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/39.jpg)
Finding a Shared Motif
• Como gerar todas as substrigs de uma string?• Para a string “ABCD”:• “A”, “B”, “C”, “D”, “AB”, “AC”, “AD”, “BC”, “BD”,
“CD”, “ABC”, “ABD”, “ACD”, “BCD”, “ABCD”.• Fácil não é mesmo ?
![Page 40: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/40.jpg)
Finding a Shared Motif
• Para uma string de tamanho 4, serão geradas 15 substrings.
• Para uma string de tamanho 10, serão geradas 1023 substrings.
• Para uma string de tamanho 20 são geradas 1.048.575 substrings.
• E para uma string do caso de teste do Rosalind? Obs.: strings de tamanho 1000
![Page 41: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/41.jpg)
Ops...
![Page 42: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/42.jpg)
Finding a Shared Motif
• A exceção aconteceu porque eu tentei armazenar um número muito grande de elementos numa lista. Qual a solução?
a) Otimizar meu código b) Comprar mais memória RAM c) Mudar o algoritmo d) Implementar em Java (Haha)
![Page 43: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/43.jpg)
Finding a Shared Motif
• Solução trivial para o problema seria não guardar as substrings.
• A cada substring gerada você verifica nas outras strings. Isso resolve.
• Alguns casos de testes foram testados, o programa levou entre 5 a 8 segundos.
• Será que podemos melhorar isso?
![Page 44: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/44.jpg)
Finding a Shared Motif
• Uma possível otimização é não fazer verificação de uma determinada substring caso ela tenha tamanho menor do que a maior substring guardada até o momento.
• Para um determinado caso de teste, essa otimização diminuiu o tempo de 6.2 segundos para 3.7 segundos.
![Page 45: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/45.jpg)
Arquivos FASTA
• Formato FASTA é um arquivo baseado em texto para representar sequências genéticas onde os nucleotídeos ou aminoácidos são representados usando códigos de uma única letra.
• Linhas do arquivo que começam com “>” ou “;” representam comentários (descrição da sequência).
![Page 46: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/46.jpg)
Arquivos FASTA
![Page 47: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/47.jpg)
NCBI
• NCBI: National Center of Biotechnology Information
• http://www.ncbi.nlm.nih.gov/
• NCBI dentre outras funções, armazena dados da sequenciação de genomas.
![Page 48: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/48.jpg)
NCBI
![Page 49: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/49.jpg)
NCBI
![Page 50: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/50.jpg)
BLAST
• Basic Local Alignment Search Tool
• É a ferramenta de alinhamento mais utilizada atualmente.
• Alinha uma sequência de entrada contra uma base de dados desejada.
![Page 51: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/51.jpg)
BLAST
• Mais informações:– http://pt.slideshare.net/marlluslustosa/slides-blas
t
![Page 52: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/52.jpg)
K-mers
• Composição k-mer é uma coleção de todas as substrings k-mer de texto.
• Composição k-mer para TATGGGGTGC com k=3:
• {TAT, ATG, TGG, GGG, GGG, GGT, GTG, TGC}
![Page 53: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/53.jpg)
Grafos De Bruijn
• Reconstrução de strings• Como era feito: procura-se um caminho no
grafo que visita cada nó somente uma vez (caminho hamiltoniano).
• Problema: mais de um caminho encontrado.• Novo grafo desenvolvido: Grafo de Bruijn• O Grafo de Bruijn representa melhor uma
composição k-mer.
![Page 54: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/54.jpg)
Grafos De Bruijn
• O foco agora é nas arestas.
• Caminhos eulerianos: passa por uma aresta somente uma vez.
![Page 55: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/55.jpg)
Construção do Grafo De Bruijn
• Exemplo de sequência: TAATG com k = 3• Composição k-mer:– {TAA, AAT, ATG}
• {TAA, AAT, ATG} são as arestas do grafo.• Os nós são formados por prefixos e sufixos de
cada mer.• Prefixo de TAA: TA• Sufixo de TAA: AA
![Page 56: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/56.jpg)
Construção do Grafo De Bruijn
• Continuação... {TAA, AAT, ATG}
TAA AAT ATGTA ATAA TG
![Page 57: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/57.jpg)
Desafio
• String Reconstruction from Read-Pairs Problem– http://rosalind.info/problems/4i/ – Grafos De Bruijn– Caminhos eulerianos– Reconstrução de genomas
![Page 58: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/58.jpg)
Sugestões de estudo
• https://www.youtube.com/pycursos – Playlist Python para Bioinformatas
• Livro:
![Page 59: Bioinformática com Rosalind utilizando Python](https://reader033.vdocuments.mx/reader033/viewer/2022061601/55611f80d8b42aa06b8b4769/html5/thumbnails/59.jpg)
Fim
marcoscastro.mewww.facebook.com/groups/pugpi/
Obrigado!