SlideShare a Scribd company logo
1 of 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!

More Related Content

What's hot

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 embriologiaFelipe Beijamini
 
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 RNAFernando Mori Miyazawa
 
Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...
Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...
Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...Diogenes Freitas
 
Anotação molecular
Anotação molecularAnotação molecular
Anotação molecularUERGS
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinaisLuiz Henrique
 
Bioinformática e suas aplicações
Bioinformática e suas aplicaçõesBioinformática e suas aplicações
Bioinformática e suas aplicaçõesAlex Camargo
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasDelacyr Ferreira
 
Aula 01: Conceitos básicos de Estatística
Aula 01: Conceitos básicos de EstatísticaAula 01: Conceitos básicos de Estatística
Aula 01: Conceitos básicos de EstatísticaJosimar M. Rocha
 
áCidos nucléicos dna e rna
áCidos nucléicos   dna e rnaáCidos nucléicos   dna e rna
áCidos nucléicos dna e rnaSilvana Sanches
 
Acidos Nucléicos
Acidos NucléicosAcidos Nucléicos
Acidos Nucléicosemanuel
 
Breve Introdução Sobre Ressonância Magnética Nuclear
Breve Introdução Sobre Ressonância Magnética NuclearBreve Introdução Sobre Ressonância Magnética Nuclear
Breve Introdução Sobre Ressonância Magnética NuclearAlex Eduardo Ribeiro
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
calculo de incerteza de medição
calculo de incerteza de mediçãocalculo de incerteza de medição
calculo de incerteza de mediçãoEduardo Santos
 
Interação da Radiação com a Matéria I
Interação da Radiação com a Matéria IInteração da Radiação com a Matéria I
Interação da Radiação com a Matéria Iarianepenna
 
bioestatística - 1 parte
bioestatística - 1 partebioestatística - 1 parte
bioestatística - 1 parteRobson Odé
 
Ap5 - Critérios de validação dos testes sorológicos
Ap5 - Critérios de validação dos testes sorológicosAp5 - Critérios de validação dos testes sorológicos
Ap5 - Critérios de validação dos testes sorológicosLABIMUNO UFBA
 
Aula divisão celular
Aula divisão celularAula divisão celular
Aula divisão celularMarcia Bantim
 

What's hot (20)

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
 
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
 
Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...
Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...
Uma Proposta de identificação de Impressões Digitais empregando Redes Neurais...
 
Anotação molecular
Anotação molecularAnotação molecular
Anotação molecular
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinais
 
Bioinformática e suas aplicações
Bioinformática e suas aplicaçõesBioinformática e suas aplicações
Bioinformática e suas aplicações
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
Aula 01: Conceitos básicos de Estatística
Aula 01: Conceitos básicos de EstatísticaAula 01: Conceitos básicos de Estatística
Aula 01: Conceitos básicos de Estatística
 
áCidos nucléicos dna e rna
áCidos nucléicos   dna e rnaáCidos nucléicos   dna e rna
áCidos nucléicos dna e rna
 
Acidos Nucléicos
Acidos NucléicosAcidos Nucléicos
Acidos Nucléicos
 
Breve Introdução Sobre Ressonância Magnética Nuclear
Breve Introdução Sobre Ressonância Magnética NuclearBreve Introdução Sobre Ressonância Magnética Nuclear
Breve Introdução Sobre Ressonância Magnética Nuclear
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
calculo de incerteza de medição
calculo de incerteza de mediçãocalculo de incerteza de medição
calculo de incerteza de medição
 
Projeto Genoma
Projeto Genoma Projeto Genoma
Projeto Genoma
 
Interação da Radiação com a Matéria I
Interação da Radiação com a Matéria IInteração da Radiação com a Matéria I
Interação da Radiação com a Matéria I
 
Aula de rm prof. luis aguiar
Aula de rm   prof. luis aguiarAula de rm   prof. luis aguiar
Aula de rm prof. luis aguiar
 
Patologia geral
Patologia geralPatologia geral
Patologia geral
 
bioestatística - 1 parte
bioestatística - 1 partebioestatística - 1 parte
bioestatística - 1 parte
 
Ap5 - Critérios de validação dos testes sorológicos
Ap5 - Critérios de validação dos testes sorológicosAp5 - Critérios de validação dos testes sorológicos
Ap5 - Critérios de validação dos testes sorológicos
 
Aula divisão celular
Aula divisão celularAula divisão celular
Aula divisão celular
 

Viewers also liked

Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
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 GBSMarcos Castro
 
Testes em Bioinformática
Testes em BioinformáticaTestes em Bioinformática
Testes em Bioinformática4ALL Tests
 
Javascript (parte 3)
Javascript (parte 3)Javascript (parte 3)
Javascript (parte 3)Alex Camargo
 
Introdução a bioinformatica
Introdução a bioinformaticaIntrodução a bioinformatica
Introdução a bioinformaticaUERGS
 
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 StickersMarcos Castro
 
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 - 2015Julio Cesar Eiras Melanda
 
qt-project.org and Qt 5
qt-project.org and Qt 5qt-project.org and Qt 5
qt-project.org and Qt 5thiagomacieira
 
Aprendizagem Supervisionada I
Aprendizagem Supervisionada IAprendizagem Supervisionada I
Aprendizagem Supervisionada ILuís Nunes
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Marcos Castro
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
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)Marcos Castro
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais ArtificiaisMarcos Castro
 

Viewers also liked (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
 
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
 
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
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 

Similar to Bioinformática com Rosalind utilizando Python

Código de Huffman.pptx
Código de Huffman.pptxCódigo de Huffman.pptx
Código de Huffman.pptxRubemEslley
 
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 UFFBianca Caruso da Paixão
 
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 SorocabaFabio Akita
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Otávio Santana
 
Cryptography Oracle Attacks
Cryptography Oracle AttacksCryptography Oracle Attacks
Cryptography Oracle AttacksDiego Mariano
 
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/IPThiago Finardi
 
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ênciasFrancisco Prosdocimi
 
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)Lucas Secchim Ribeiro
 
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_christianAndressa Souza
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
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
 
Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)
Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)
Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)Marcos Santos
 

Similar to Bioinformática com Rosalind utilizando Python (20)

Big data
Big dataBig data
Big data
 
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
 
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]
 
Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)
Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)
Big, Open e Linked Data no caminho para a Web 3.0 (Web Semântica)
 
RNAseq Analysis
RNAseq AnalysisRNAseq Analysis
RNAseq Analysis
 

More from Marcos Castro

Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicasMarcos Castro
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Marcos Castro
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 

More from 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
 
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)
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 

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: