A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 5.

Apresentações semelhantes


Apresentação em tema: "Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 5."— Transcrição da apresentação:

1 Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 5

2 Ludwig Krippahl, Na aula de hoje... Trabalho prático 1 Cálculo do ponto isoeléctrico de proteínas. Como planear um programa Exemplo do trabalho 1 de 06/07

3 Ludwig Krippahl, Proteínas

4 Ludwig Krippahl, Problema Proteínas Sequência de aminoácidos

5 Ludwig Krippahl, Problema Ponto isoeléctrico Dois grupos protonáveis pKa=10 pKa=2

6 Ludwig Krippahl, Problema Ponto isoeléctrico Henderson-Hasselbalch

7 Ludwig Krippahl, Problema Ponto isoeléctrico pH=0, carga +1 pKa=10 pKa=2 +1 0

8 Ludwig Krippahl, Problema Ponto isoeléctrico pH=2, carga +0.5 pKa=10 pKa=

9 Ludwig Krippahl, Problema Ponto isoeléctrico pH=7, carga 0 pKa=10 pKa=2 +1

10 Ludwig Krippahl, Problema Ponto isoeléctrico pH=10, carga -0.5 pKa=10 pKa=2 +0.5

11 Ludwig Krippahl, Problema Ponto isoeléctrico pH=12, carga -1 pKa=10 pKa=2 0

12 Ludwig Krippahl, Problema Proteínas

13 Ludwig Krippahl, Problema Proteínas

14 Ludwig Krippahl, Problema Proteínas +1

15 Ludwig Krippahl, Problema Proteínas

16 Ludwig Krippahl, Ficheiro pKas.txt CodigoCOOHNH3C.L.Carga(Desp) A C D E F V W Y

17 Ludwig Krippahl, Simplificação Estrutura Campo... Só sequência

18 Ludwig Krippahl, Simplificação Calcular a carga a cada pH considerando: NH3 do primeiro da sequência Tem carga 0 desprotonado COOH do último da sequência Tem carga -1 desprotonado Cadeias laterais dos intermédios Ler a carga na tabela

19 Ludwig Krippahl, Cargas em função do pH

20 Ludwig Krippahl, Ficheiro seqs.txt > UniProt/Swiss-Prot|P00273|DESR_DESGI Desulforedoxin ANEGDVYKCELCGQVVKVLEEGGGTLVCCGEDMVKQ >UniProt/Swiss-Prot|P14073|FER_BUTME Ferredoxin AYKITDECIACGSCADQCPVEAISEGSIYEIDEALCTDCGACADQCPVEAIVPED >UniProt/Swiss-Prot|Q46495|DESR_DESBR Desulfoferrodoxin MPERLQVYKCEVCGNIVEVLNGGIGELVCCNQDMKLMSENTVDAAKEKHVPVIEKIDGGY KVKVGAVAHPMEEKHYIQWIELLADDKCYTQFLKPGQAPEAVFLIEAAKVVAREYCNIHG HWKAEN >UniProt/Swiss-Prot|P14393|GLB_APLJU Globin ALSAADAGLLAQSWAPVFANSDANGASFLVALFTQFPESANFFNDFKGKSLADIQASPKL RDVSSRIFARLNEFVSNAADAGKMGSMLQQFATEHAGFGVGSAQFQNVRSMFPGFVASLS APAADAAWNSLFGLIISALQSAGK >UniProt/TrEMBL|Q4VSD1|Q4VSD1_9HIV1 Protease SSCSFPQITLWQRTLVTVKIGGQLKEALLDTGADDTVLEDINLPGKWKPRMIGGIGGFIK VKQYDQILIEICGKKAIGTVLVGPTPVNIIGRNMLTQIGCTLNFPISPI

21 Ludwig Krippahl, Ler sequências de proteínas. O formato FASTA é um formato de texto para guardar sequências. As linhas começadas por > identificam a molécula (proteína, RNA, ou DNA): >UniProt/Swiss-Prot|P00273|DE....

22 Ludwig Krippahl, Ler sequências de proteínas. O formato FASTA é um formato de texto para guardar sequências. As restantes linhas contêm a sequência: ALSAADAGLLAQSWAPVFANSDANGASF... RDVSSRIFARLNEFVSNAADAGKMGSML... APAADAAWNSLFGLIISALQSAGK

23 Ludwig Krippahl, Ler sequências de proteínas. O formato FASTA é um formato de texto para guardar sequências. Como no máximo este formato usa 80 caracteres por linha a sequência pode estar partida em várias linhas. ALSAADAGLLAQSWAPVFANSDANGASF... RDVSSRIFARLNEFVSNAADAGKMGSML... APAADAAWNSLFGLIISALQSAGK

24 Ludwig Krippahl, Ler sequências de proteínas. Função [nomes,seqs]=lefasta(nome) Lê o ficheiro cujo nome é fornecido e devolve uma lista de estruturas. Devolva duas tabelas de strings com os nomes (identificadores) e as sequências.

25 Ludwig Krippahl, Ler sequências de proteínas. function [nomes,seqs]=lefasta(nome) id=fopen(nome,r); nomes=""; seqs=""; seq=''; (Ciclo de leitura do ficheiro) fclose(id); endfunction Abre o ficheiro e guarda o identificador

26 Ludwig Krippahl, Ler sequências de proteínas. function [nomes,seqs]=lefasta(nome) id=fopen(nome); nomes=""; seqs=""; seq=''; (Ciclo de leitura do ficheiro) fclose(id); endfunction Cria tabelas vazias Sequência inicial vazia

27 Ludwig Krippahl, Ler sequências de proteínas. function [nomes,seqs]=lefasta(nome) id=fopen(nome); nomes=""; seqs=""; seq=''; (Ciclo de leitura do ficheiro) fclose(id); endfunction Depois de ler o ficheiro, fecha e termina a função

28 Ludwig Krippahl, Ler sequências de proteínas. while !feof(id) s=fgetl(id); if strcmp(s(1),'>') if !strcmp(seq,""') nomes=[nomes;nome]; seqs=[seqs;seq]; endif nome=s; seq=""; else seq=[seq,s]; endif endwhile Ciclo enquanto o ficheiro não chegou ao fim.

29 Ludwig Krippahl, Ler sequências de proteínas. while !feof(id) s=fgetl(id); if strcmp(s(1),'>') if !strcmp(seq,""') nomes=[nomes;nome]; seqs=[seqs;seq]; endif nome=s; seq=""; else seq=[seq,s]; endif endwhile Lê uma linha e compara o primeiro caracter com > (quer dizer que encontrou uma proteína nova)

30 Ludwig Krippahl, Ler sequências de proteínas. while !feof(id) s=fgetl(id); if strcmp(s(1),'>') if !strcmp(seq,""') nomes=[nomes;nome]; seqs=[seqs;seq]; endif nome=s; seq=""; else seq=[seq,s]; endif endwhile Se há uma sequência guardada acrescenta à tabela (nomes e seqs) É por isto que a sequência seq começa vazia

31 Ludwig Krippahl, Ler sequências de proteínas. while !feof(id) s=fgetl(id); if strcmp(s(1),'>') if !strcmp(seq,""') nomes=[nomes;nome]; seqs=[seqs;seq]; endif nome=s; seq=""; else seq=[seq,s]; endif endwhile Quando encontra nova proteína guarda o identificador da proteína e limpa a sequência.

32 Ludwig Krippahl, Ler sequências de proteínas. while !feof(id) s=fgetl(id); if strcmp(s(1),'>') if !strcmp(seq,""') nomes=[nomes;nome]; seqs=[seqs;seq]; endif nome=s; seq=""; else seq=[seq,s]; endif endwhile Se não é uma proteína nova então é outra linha da sequência, para juntar à sequência lida até agora

33 Ludwig Krippahl, Ler sequências de proteínas. endwhile if !strcmp(seq,"") nomes=[nomes;nome]; seqs=[seqs;seq]; endif fclose(id); endfunction No final do ciclo acrescentar a última proteína lida, se houver

34 Ludwig Krippahl, Avaliação Concepção: 4 valores Explicar muito resumidamente cada função Função: soma Argumentos: dois valores numéricos (a,b) Valor devolvido: a soma dos argumentos Funcionamento: Soma os valores e devolve o resultado No funcionamento indicar que outras funções usa (das que implementaram)

35 Ludwig Krippahl, Avaliação Concepção: 4 valores Implementação: 10 valores Copy-paste das funções todas, na integra: function endfuntion function endfunction

36 Ludwig Krippahl, Avaliação Concepção: 4 valores Implementação: 10 valores Testes: 3 valores Listagem dos testes que fizeram. É importante testar cada função individualmente, senão pode ser difícil encontrar erros...

37 Ludwig Krippahl, Avaliação Concepção: 4 valores Implementação: 10 valores Testes: 3 valores Avaliação e crítica: 3 valores Sugestões para melhorias ou vulnerabilidades do código Por exemplo, quando implementámos a função umelem tinha a limitação de assumir elementos com uma só letra.

38 Ludwig Krippahl, Exemplo (Trabalho 1 de 06/07) Calcular concentrações de equilíbrio para um sistema de reacções químicas. A função recebe: CH 3 COOH H + + CH 3 COO - H 2 O H + + OH - Concentrações iniciais Constantes

39 Ludwig Krippahl, Objectivo Calcular concentrações de equilíbrio para um sistema de reacções químicas. A função devolve: Concentrações de equilíbrio

40 Ludwig Krippahl, Objectivo Exemplo: octave:7> mat=['CH3COOH = H+ + CH3COO-';'H2O = H+ + OH-']; octave:8> eks=[1.78e-5,1.8e-16]; octave:9> esps=['CH3COOH';'H+';'CH3COO-';'H2O';'OH-']; octave:10> cis=[0.01,0,0,55.346,0]; octave:11> res=sistema(mat,esps,eks,cis,1e-8) res = e e e e e-09

41 Ludwig Krippahl, Concepção O trabalho pode ser dividido em duas partes autónomas: Parte A: Interpretar o texto das reacções para um formato conveniente Parte B: Calcular as concentrações e equilíbrio Estas partes podem ser implementadas e testadas de forma independente.

42 Ludwig Krippahl, Concepção Parte A: Interpretar o texto das reacções para um formato conveniente Problema: o que é o formato conveniente? Resposta: é o que der jeito para a parte B. O melhor é começar pela B.

43 Ludwig Krippahl, Concepção Parte B: Calcular as concentrações e equilíbrio. B1: calcular o equilíbrio de uma reacção. B2: usar B1 para calcular para todas

44 Ludwig Krippahl, Equilíbrio de uma reacção Calcular o valor o zero de uma função 2A + B 2D

45 Ludwig Krippahl, Equilíbrio de uma reacção Calcular o valor o zero de uma função Precisamos: Coeficientes de estequiometria (um vector) Concentrações iniciais (um vector) Constante de equilibrio.

46 Ludwig Krippahl, Equilíbrio de várias reacções Calcular o equilíbrio de uma Alterar concentrações Fazer o mesmo na próxima, até percorrer todas Repetir até que não mude nada (dentro de uma precisão)

47 Ludwig Krippahl, Equilíbrio de várias reacções Iterar o equilíbrio de cada uma até ficar tudo na mesma. Precisamos: Coeficientes de estequiometria (matriz) Concentrações iniciais (um vector) Constantes de equilibrio (um vector).

48 Ludwig Krippahl, Concepção Parte B: Calcular as concentrações e equilíbrio Precisa de matriz com coeficientes de estequiometria. Parte A: Interpretar o texto das reacções para um formato conveniente Quer dizer, converter numa matriz com os coeficientes de estequiometria.

49 Ludwig Krippahl, Concepção Identificar tarefas separáveis. Onde podemos partir o problema Identificar dependências. O que é que uma parte precisa da outra Fazer e refazer Se ficamos encravados não ter medo de voltar atrás para fazer melhor... Eficiência Por exemplo, ler ficheiros é lento. Ler só uma vez se possível.

50 Ludwig Krippahl, Dúvidas


Carregar ppt "Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 5."

Apresentações semelhantes


Anúncios Google