200 likes | 342 Views
Aula Prática. Ivan G. Costa Filho Eduardo G. Gusmão igcf@cin.ufpe.br egg@cin.ufpe.br Centro de Informática Universidade Federal de Pernambuco. Tópicos. GHMM Biblioteca implementando HMMS. Python Linguagem script com varias funcionalidades para trabalhar com dados numéricos.
E N D
Aula Prática Ivan G. Costa Filho Eduardo G. Gusmão igcf@cin.ufpe.bregg@cin.ufpe.br Centro de InformáticaUniversidade Federal de Pernambuco
Tópicos • GHMM • Biblioteca implementando HMMS. • Python • Linguagem script com varias funcionalidades para trabalhar com dados numéricos. • Exercício • Criar uma HMM implementado o Casino Desonesto.
GHMM (www.ghmm.org) • Biblioteca em C • implementação eficiente dos algoritmos. • Ligação em python • Uso da ferramenta usando um ambiente de script. • Funcionalidades • HMMs com distribuições contínuas ou discretas • Formato de saida/entrada em XML • Algoritmos foward, Baum-Welch, Viterbi, … • Extensões: Pair-hmms, hmm não homogêneas, …
GHMM (www.ghmm.org) • Contratempo • Instalação só disponível para Unix • Guia para Instalação • http://www.cin.ufpe.br/~igcf/Metabolites/scripts/hmm/readme.txt
Como usar? • Executar python e digitar • > from ghmm import * • > help(ghmm) • Documentação GHMM • http://ghmm.sourceforge.net/documentation.html • Documentação Python • http://www.python.org/doc/current/
Exemplo de HMM Casino Desonesto Σ = {1, 2} (1 for Heads and 2Tails) Q = {F,B} – F for Fair & B for Biased coin.
Criando o Casino Desonesto > sigma = IntegerRange(1,3) # defining sigma > A = [[0.9, 0.1], [0.1, 0.9]] # transition matrix > #emission probabilities > efair = [0.5, 0.5] > eloaded = [3.0/4, 1.0/4] > B = [efair, eloaded] > pi = [0.5, 0.5] #initial state probability > #start a new hmmm > m = HMMFromMatrices(sigma, DiscreteDistribution(sigma), A, B, pi) > print m
Gerando dados • Podemos usar o modelo para gerar novos dados • > # sample data • > obs_seq = m.sampleSingle(1000) • E aplicar o algoritmo de Viterbi • > # estimate viterbi • > m.viterbi(obs_seq)
Estimando Parâmetros • > # re-train model with generated data • > m.baumWelch(obs_seq) • > print m • Como são os parâmetros finais? • Que tal gerar sequência menor? • O que acontece com os parâmetros?
Por fim … Posterior > # posterior distribution > post = m.posterior(obs_seq) > print post
Por fim … Posterior Poderiamos gerar um gráfico …
Projeto • Para ser feito individualmente. • Entrega no dia 12/05/2011. • Implementar uma HMM para o problema de reconhecimento de Ilhas CpGs. • Escrever relatório detalhando as etapas e resultados. • Dados www.cin.ufpe.br/~igcf/tabc/cpgs.zip
Ilhas CpG • Cerca de 70% das regiões promotoras humanas contém ilhas CpG. • Definição simples: Pelo menos 200bp com f(CG) > 50% e f(CpG) > 60%
Arquivos de Leitura Fasta • Primeira linha – dados da sequência (separados por |) • Segunda linha – sequência (ilhas CpGs em maiuscula) • Exemplo • Pode-se utilizar Biopython • http://www.cin.ufpe.br/~igcf/tabc/SeqIO.py • my_seq = SeqIO.read("contig1.fasta", "fasta")
1. Construindo o Modelo • Criar o Modelo de Markov que melhor se adapta ao problema das ilhas CpG. • Definir os estados e o alfabeto no qual se pretende trabalhar. • Definir as probabilidades de transição (matriz A) e emissão (matriz E) iniciais.
2. Estimando os Parâmetros • Forma 1 – Forma Supervisionada (Máxima Verossimilhança) • Forma 2 – Forma Não-Supervisionada (Baum-Welch) • Utilizar os arquivos contig1 e contig2 para estimar os parâmetros.
3. Avaliando o Modelo • Utilizar o algoritmo Viterbi para estimar o melhor caminho. • Utilizar o arquivo contig3 como conjunto de teste. • Calcular a Matriz • de Confusão • sequencia - cgcatgcatcACGTCGAcgatcat • viterbi - nnnnnnnnnniiiiiiiinnnnnn
3. Avaliando o Modelo • Plotar gráfico da probabilidade posterior + saída do Viterbi + anotação. • MatplotLib: http://matplotlib.sourceforge.net/
4. Relatório • Detalhes dos modelos criados: transições, emissões, probabilidades iniciais. • Detalhes da implementação dos Modelos. • Resultados: matrizes de confusão e gráficos da probabilidade posterior. • Discussão dos Resultados.
Material • Ver o capitulo 3 R Durbin, Sean R Eddy, A Krogh, Biological Sequence Analysis : Probabilistic Models of Proteins and Nucleic Acids, Cambridge University Press. • Exercício de ilhas CpGs inspirados em Dongsup Kim at Korea Advanced Institute of Science and Technology