SlideShare uma empresa Scribd logo
1 de 59
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’.
• Entrada: AAAACCCGGT
– String invertida: TGGCCCAAAA
• Saída: ACCGGGTTTT
Complementing a Strand of DNA
• http://rosalind.info/problems/revc/
• “s” representa uma string
• “l” representa uma lista
• “d” representa um dicionário
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”.
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.
• A saída é uma string proteína codificada a
partir de “s”.
Translating RNA into Protein
• Para resolver esse problema, o Rosalind
fornece uma tabela de códons para mapear
cada aminoácido.
Translating RNA into Protein
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.
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”.
• A saída são todas as posições em que “t”
ocorre em “s”.
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 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.
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 strings (cadeias de DNA) como
entrada e quer como saída a maior substring
comum a todas as strings fornecidas.
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...
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 ?
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
Ops...
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)
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?
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.
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).
Arquivos FASTA
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.
NCBI
NCBI
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.
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:
• {TAT, ATG, TGG, GGG, GGG, GGT, GTG, TGC}
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.
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, 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
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 eulerianos
– Reconstrução de genomas
Sugestões de estudo
• https://www.youtube.com/pycursos
– Playlist Python para Bioinformatas
• Livro:
Fim
marcoscastro.me
www.facebook.com/groups/pugpi/
Obrigado!

Mais conteúdo relacionado

Mais procurados

Nucleotideos - acidos nucleicos
Nucleotideos - acidos nucleicosNucleotideos - acidos nucleicos
Nucleotideos - acidos nucleicos
Carls Tavares
 
Crescimento e renovação celular
Crescimento e renovação celularCrescimento e renovação celular
Crescimento e renovação celular
Cecilferreira
 
Dna, rna e síntese proteíca
Dna, rna e síntese proteícaDna, rna e síntese proteíca
Dna, rna e síntese proteíca
LarissaComparini
 
técnicas moleculares no tratamento do câncer
técnicas moleculares no tratamento do câncertécnicas moleculares no tratamento do câncer
técnicas moleculares no tratamento do câncer
Alison Regis
 

Mais procurados (20)

Aula 11 - Ácidos nucleicos - DNA e RNA
Aula 11 - Ácidos nucleicos - DNA e RNAAula 11 - Ácidos nucleicos - DNA e RNA
Aula 11 - Ácidos nucleicos - DNA e RNA
 
O Sangue
O SangueO Sangue
O Sangue
 
Dna
DnaDna
Dna
 
Nucleotideos - acidos nucleicos
Nucleotideos - acidos nucleicosNucleotideos - acidos nucleicos
Nucleotideos - acidos nucleicos
 
Estrutura do gene
Estrutura do geneEstrutura do gene
Estrutura do gene
 
Grafos De Bruijn para identificação de variações genéticas usando GBS
Grafos De Bruijn para identificação de variações genéticas usando GBSGrafos De Bruijn para identificação de variações genéticas usando GBS
Grafos De Bruijn para identificação de variações genéticas usando GBS
 
duplicação do dna e rna
duplicação do dna  e rnaduplicação do dna  e rna
duplicação do dna e rna
 
Cromatina e cromossoma
Cromatina e cromossomaCromatina e cromossoma
Cromatina e cromossoma
 
Barramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de ComputadoresBarramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de Computadores
 
Aula sobre Tabela Hash
Aula sobre Tabela HashAula sobre Tabela Hash
Aula sobre Tabela Hash
 
Dna
DnaDna
Dna
 
DNA
DNADNA
DNA
 
Replicação dna marília
Replicação dna   maríliaReplicação dna   marília
Replicação dna marília
 
Crescimento e renovação celular
Crescimento e renovação celularCrescimento e renovação celular
Crescimento e renovação celular
 
Bacterias
BacteriasBacterias
Bacterias
 
Alterações cromossomiais meiose não disjunção cromossomial
Alterações cromossomiais meiose não disjunção cromossomialAlterações cromossomiais meiose não disjunção cromossomial
Alterações cromossomiais meiose não disjunção cromossomial
 
Dna, rna e síntese proteíca
Dna, rna e síntese proteícaDna, rna e síntese proteíca
Dna, rna e síntese proteíca
 
Aula 1 e 2 introduçao a embriologia
Aula 1 e 2 introduçao a embriologiaAula 1 e 2 introduçao a embriologia
Aula 1 e 2 introduçao a embriologia
 
técnicas moleculares no tratamento do câncer
técnicas moleculares no tratamento do câncertécnicas moleculares no tratamento do câncer
técnicas moleculares no tratamento do câncer
 
Endereçamento de memória
Endereçamento de memóriaEndereçamento de memória
Endereçamento de memória
 

Destaque

Introdução a bioinformatica
Introdução a bioinformaticaIntrodução a bioinformatica
Introdução a bioinformatica
UERGS
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada I
Luís Nunes
 

Destaque (20)

Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com Biopython
 
Bioinformática e suas aplicações
Bioinformática e suas aplicaçõesBioinformática e suas aplicações
Bioinformática e suas aplicações
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Testes em Bioinformática
Testes em BioinformáticaTestes em Bioinformática
Testes em Bioinformática
 
Javascript (parte 3)
Javascript (parte 3)Javascript (parte 3)
Javascript (parte 3)
 
Introdução a bioinformatica
Introdução a bioinformaticaIntrodução a bioinformatica
Introdução a bioinformatica
 
Velvet assembler
Velvet assemblerVelvet assembler
Velvet assembler
 
Computação com DNA - Modelo baseado em Stickers
Computação com DNA - Modelo baseado em StickersComputação com DNA - Modelo baseado em Stickers
Computação com DNA - Modelo baseado em Stickers
 
Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015Apresentação Python e Games - Python Brasil 11 - 2015
Apresentação Python e Games - Python Brasil 11 - 2015
 
qt-project.org and Qt 5
qt-project.org and Qt 5qt-project.org and Qt 5
qt-project.org and Qt 5
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada I
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
IDE Falcon C++
IDE Falcon C++IDE Falcon C++
IDE Falcon C++
 
Qt Apresentação
Qt ApresentaçãoQt Apresentação
Qt Apresentação
 

Semelhante a Bioinformática com Rosalind utilizando Python

Bioinformática arquivo de dados
Bioinformática arquivo de dadosBioinformática arquivo de dados
Bioinformática arquivo de dados
UERGS
 
Anotação molecular
Anotação molecularAnotação molecular
Anotação molecular
UERGS
 
Aula estrutura e_replicacao_do_dna_christian
Aula estrutura e_replicacao_do_dna_christianAula estrutura e_replicacao_do_dna_christian
Aula estrutura e_replicacao_do_dna_christian
Andressa Souza
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
JogosUnisinos
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
Milena Rebouças
 

Semelhante a Bioinformática com Rosalind utilizando Python (20)

Big data
Big dataBig data
Big data
 
Bioinformática arquivo de dados
Bioinformática arquivo de dadosBioinformática arquivo de dados
Bioinformática arquivo de dados
 
TWP37 Revisão Listas
TWP37 Revisão ListasTWP37 Revisão Listas
TWP37 Revisão Listas
 
Código de Huffman.pptx
Código de Huffman.pptxCódigo de Huffman.pptx
Código de Huffman.pptx
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFF
 
Ruby & GCs (versão 2.1.2) - VI Secot UFScar Sorocaba
Ruby & GCs (versão 2.1.2) - VI Secot UFScar SorocabaRuby & GCs (versão 2.1.2) - VI Secot UFScar Sorocaba
Ruby & GCs (versão 2.1.2) - VI Secot UFScar Sorocaba
 
Minicurso 2013
Minicurso 2013Minicurso 2013
Minicurso 2013
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]
 
Arq orgcom (1)
Arq orgcom (1)Arq orgcom (1)
Arq orgcom (1)
 
ArqOrgCom.ppt
ArqOrgCom.pptArqOrgCom.ppt
ArqOrgCom.ppt
 
Cryptography Oracle Attacks
Cryptography Oracle AttacksCryptography Oracle Attacks
Cryptography Oracle Attacks
 
Introdução ao no sql e mongodb
Introdução ao no sql e mongodbIntrodução ao no sql e mongodb
Introdução ao no sql e mongodb
 
Anotação molecular
Anotação molecularAnotação molecular
Anotação molecular
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IP
 
Montagem de Genomas
Montagem de GenomasMontagem de Genomas
Montagem de Genomas
 
Aula 2 - encontrando similaridades de sequências
Aula 2  - encontrando similaridades de sequênciasAula 2  - encontrando similaridades de sequências
Aula 2 - encontrando similaridades de sequências
 
PCR Quantitativa - Lucas Secchim Ribeiro (PGMicro UFMG 2015-1)
PCR Quantitativa - Lucas Secchim Ribeiro (PGMicro UFMG 2015-1)PCR Quantitativa - Lucas Secchim Ribeiro (PGMicro UFMG 2015-1)
PCR Quantitativa - Lucas Secchim Ribeiro (PGMicro UFMG 2015-1)
 
Aula estrutura e_replicacao_do_dna_christian
Aula estrutura e_replicacao_do_dna_christianAula estrutura e_replicacao_do_dna_christian
Aula estrutura e_replicacao_do_dna_christian
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
 

Mais de Marcos Castro

Mais de Marcos Castro (20)

Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Python - Set
Python - SetPython - Set
Python - Set
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Binary heap
Binary heapBinary heap
Binary heap
 
Fila de prioridades
Fila de prioridadesFila de prioridades
Fila de prioridades
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicas
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)
 

Último

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Bioinformática com Rosalind utilizando Python

  • 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:
  • 6. • Rosalind é uma plataforma para o aprendizado de bioinformática através da resolução de problemas. http://rosalind.info
  • 11. Submissão de código • No final da página de cada problema você encontrará:
  • 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.
  • 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:
  • 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
  • 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).
  • 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: