Bioinformática com Rosalind
Marcos Castro
PUG Beach
Python User Group (PUG-PI)
Bioinformática...
• Biólogos e programadores lendo a palavra
“bioinformática” em Python:
Sequências
Validando sequências DNA/RNA
Testando...
• Rosalind é uma plataforma para o aprendizado
de bioinformática através da resolução de
problemas.
http://rosalind.info
Lista de problemas
Árvore de problemas
Sugerir problemas
Ranking
Submissão de código
• No final da página de cada problema você
encontrará:
Submissão de código
Se acertar o problema...
Counting DNA Nucleotides
• http://rosalind.info/problems/dna/
Transcribing DNA into RNA
• http://rosalind.info/problems/rna/
Complementing a Strand of DNA
• Inverte a string
• ‘A’ e ‘T’ são complementares um do outro
assim como ‘C’ e ‘G’.
• Entrad...
Complementing a Strand of DNA
• http://rosalind.info/problems/revc/
• “s” representa uma string
• “l” representa uma lista...
Counting Point Mutations
• Problema da classe de alinhamento.
• Serão dadas duas strings de tamanhos iguais.
• A Hamming d...
Counting Point Mutations
• Exemplo:
• Resposta: 7
Counting Point Mutations
• http://rosalind.info/problems/hamm/
Translating RNA into Protein
• Nesse problema é dada como entrada uma
string RNA “s” correspondente a uma fita de
mRNA.
• ...
Translating RNA into Protein
• Para resolver esse problema, o Rosalind
fornece uma tabela de códons para mapear
cada amino...
Translating RNA into Protein
Translating RNA into Protein
• Resumindo: cada conjunto de 3 letras da
string RNA corresponde a um aminoácido.
• Exemplo:
...
Translating RNA into Protein
• http://rosalind.info/problems/prot/
Finding a Motif in DNA
• http://rosalind.info/problems/subs/
• Nesse problema são dadas como entrada duas
strings “s” e “t...
Finding a Motif in DNA
• Exemplo de entrada:
s = GATATATGCATATACTT
t = ATAT
• Saída: 2 4 10
Finding a Motif in DNA
Enumerating Gene Orders
• Problema da classe “Rearranjos de Genoma”.
• Uma permutação de tamanho “n” é um
ordenamento dos ...
Enumerating Gene Orders
• Exemplo de saída para n = 3:
6
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
Enumerating Gene Orders
• http://rosalind.info/problems/perm/
• Construindo o código aos poucos...
• l = [1, 2, 3]
Enumerating Gene Orders
• p = [(1, 2, 3), (1, 3, 2), (2, 1, 3),
(2, 3, 1), (3, 1, 2), (3, 2, 1)]
Enumerating Gene Orders
print(new_l) exibirá: (1, 2, 3)
(1, 3, 2)
(2, 1, 3) e assim por diante...
Enumerating Gene Orders
• A linha 10 exibe a quantidade de permutações.
Enumerating Gene Orders
• Código final:
Enumerating Gene Orders
• Execução:
Finding a Shared Motif
• http://rosalind.info/problems/lcsm/
• Problema interessante onde o Rosalind
fornece várias string...
Finding a Shared Motif
• Em um primeiro momento você poderá
pensar em gerar todas as substrings possíveis
de apenas uma da...
Finding a Shared Motif
• Como gerar todas as substrigs de uma string?
• Para a string “ABCD”:
• “A”, “B”, “C”, “D”, “AB”, ...
Finding a Shared Motif
• Para uma string de tamanho 4, serão geradas
15 substrings.
• Para uma string de tamanho 10, serão...
Ops...
Finding a Shared Motif
• A exceção aconteceu porque eu tentei
armazenar um número muito grande de
elementos numa lista. Qu...
Finding a Shared Motif
• Solução trivial para o problema seria não
guardar as substrings.
• A cada substring gerada você v...
Finding a Shared Motif
• Uma possível otimização é não fazer
verificação de uma determinada substring
caso ela tenha taman...
Arquivos FASTA
• Formato FASTA é um arquivo baseado em
texto para representar sequências genéticas
onde os nucleotídeos ou...
Arquivos FASTA
NCBI
• NCBI: National Center of Biotechnology
Information
• http://www.ncbi.nlm.nih.gov/
• NCBI dentre outras funções, arm...
NCBI
NCBI
BLAST
• Basic Local Alignment Search Tool
• É a ferramenta de alinhamento mais utilizada
atualmente.
• Alinha uma sequênci...
BLAST
• Mais informações:
– http://pt.slideshare.net/marlluslustosa/slides-
blast
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:...
Grafos De Bruijn
• Reconstrução de strings
• Como era feito: procura-se um caminho no
grafo que visita cada nó somente uma...
Grafos De Bruijn
• O foco agora é nas arestas.
• Caminhos eulerianos: passa por uma aresta
somente uma vez.
Construção do Grafo De Bruijn
• Exemplo de sequência: TAATG com k = 3
• Composição k-mer:
– {TAA, AAT, ATG}
• {TAA, AAT, A...
Construção do Grafo De Bruijn
• Continuação... {TAA, AAT, ATG}
TAA AAT ATG
TA ATAA TG
Desafio
• String Reconstruction from Read-Pairs
Problem
– http://rosalind.info/problems/4i/
– Grafos De Bruijn
– Caminhos ...
Sugestões de estudo
• https://www.youtube.com/pycursos
– Playlist Python para Bioinformatas
• Livro:
Fim
marcoscastro.me
www.facebook.com/groups/pugpi/
Obrigado!
Upcoming SlideShare
Loading in …5
×

Bioinformática com Rosalind utilizando Python

3,023 views

Published on

Essa apresentação contempla a resolução de problemas de bioinformática utilizando a plataforma Rosalind e a linguagem de programação Python.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,023
On SlideShare
0
From Embeds
0
Number of Embeds
989
Actions
Shares
0
Downloads
49
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Bioinformática com Rosalind utilizando Python

  1. 1. Bioinformática com Rosalind Marcos Castro PUG Beach Python User Group (PUG-PI)
  2. 2. Bioinformática... • Biólogos e programadores lendo a palavra “bioinformática” em Python:
  3. 3. Sequências
  4. 4. Validando sequências DNA/RNA
  5. 5. Testando...
  6. 6. • Rosalind é uma plataforma para o aprendizado de bioinformática através da resolução de problemas. http://rosalind.info
  7. 7. Lista de problemas
  8. 8. Árvore de problemas
  9. 9. Sugerir problemas
  10. 10. Ranking
  11. 11. Submissão de código • No final da página de cada problema você encontrará:
  12. 12. Submissão de código
  13. 13. Se acertar o problema...
  14. 14. Counting DNA Nucleotides • http://rosalind.info/problems/dna/
  15. 15. Transcribing DNA into RNA • http://rosalind.info/problems/rna/
  16. 16. 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
  17. 17. Complementing a Strand of DNA • http://rosalind.info/problems/revc/ • “s” representa uma string • “l” representa uma lista • “d” representa um dicionário
  18. 18. 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”.
  19. 19. Counting Point Mutations • Exemplo: • Resposta: 7
  20. 20. Counting Point Mutations • http://rosalind.info/problems/hamm/
  21. 21. 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”.
  22. 22. Translating RNA into Protein • Para resolver esse problema, o Rosalind fornece uma tabela de códons para mapear cada aminoácido.
  23. 23. Translating RNA into Protein
  24. 24. 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.
  25. 25. Translating RNA into Protein • http://rosalind.info/problems/prot/
  26. 26. 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”.
  27. 27. Finding a Motif in DNA • Exemplo de entrada: s = GATATATGCATATACTT t = ATAT • Saída: 2 4 10
  28. 28. Finding a Motif in DNA
  29. 29. 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.
  30. 30. Enumerating Gene Orders • Exemplo de saída para n = 3: 6 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
  31. 31. Enumerating Gene Orders • http://rosalind.info/problems/perm/ • Construindo o código aos poucos... • l = [1, 2, 3]
  32. 32. Enumerating Gene Orders • p = [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
  33. 33. Enumerating Gene Orders print(new_l) exibirá: (1, 2, 3) (1, 3, 2) (2, 1, 3) e assim por diante...
  34. 34. Enumerating Gene Orders • A linha 10 exibe a quantidade de permutações.
  35. 35. Enumerating Gene Orders • Código final:
  36. 36. Enumerating Gene Orders • Execução:
  37. 37. 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.
  38. 38. 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...
  39. 39. 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 ?
  40. 40. 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
  41. 41. Ops...
  42. 42. 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)
  43. 43. 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?
  44. 44. 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.
  45. 45. 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).
  46. 46. Arquivos FASTA
  47. 47. 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.
  48. 48. NCBI
  49. 49. NCBI
  50. 50. 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.
  51. 51. BLAST • Mais informações: – http://pt.slideshare.net/marlluslustosa/slides- blast
  52. 52. 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}
  53. 53. 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.
  54. 54. Grafos De Bruijn • O foco agora é nas arestas. • Caminhos eulerianos: passa por uma aresta somente uma vez.
  55. 55. 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
  56. 56. Construção do Grafo De Bruijn • Continuação... {TAA, AAT, ATG} TAA AAT ATG TA ATAA TG
  57. 57. Desafio • String Reconstruction from Read-Pairs Problem – http://rosalind.info/problems/4i/ – Grafos De Bruijn – Caminhos eulerianos – Reconstrução de genomas
  58. 58. Sugestões de estudo • https://www.youtube.com/pycursos – Playlist Python para Bioinformatas • Livro:
  59. 59. Fim marcoscastro.me www.facebook.com/groups/pugpi/ Obrigado!

×