Bioinformática com Rosalind utilizando Python

mcastrosouza 4,920 views 59 slides Mar 22, 2014
Slide 1
Slide 1 of 59
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59

About This Presentation

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


Slide Content

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 AT AA 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!