Your SlideShare is downloading. ×
Bioinformática com Rosalind utilizando Python
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Bioinformática com Rosalind utilizando Python

2,033
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.

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
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,033
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×