Esercitazione1 - Centro di Bioinformatica Molecolare

Metodi Informatici per la Biologia Esercitazione della Lezione 1 Riepilogo della lezione precedente Abbiamo visto come si assegnano valori a variabili, e gli operatori matematici più comuni. Abbiamo visto come Python fornisce molte funzioni, organizzate in librerie che vanno importate nel programma quando ce n’è bisogno. Abbiamo visto come lanciare la shell interattiva ed eseguire programmi. Rivediamo alcuni punti chiave sulle variabili: >>> ciccio = 42
>>> print ciccio
42
>>> # non è possibile usare come nome della variabile una
>>> # parola riservata di Python
>>> print = 42
File "<stdin>", line 1
print = 42
^
SyntaxError: invalid syntax
>>>
>>> # non è possibile usare una variabile prima di averle
>>> # assegnato un valore
>>> print pippo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'pippo' is not defined
>>>
>>> # la stessa variabile può cambiare valore
>>> # attenzione: il nuovo valore sovrascrive quello vecchio
>>> ciccio = 5
>>> ciccio = 10
>>> print ciccio
10
>>> # una variabile può assumere il valore di un’altra
>>> ciccio = 10
>>> pippo = ciccio
>>> print pippo
10
>>> # ma attenzione alla direzione
>>> ciccio = 10
>>> ciccio = pippo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'pippo' is not defined
>>>
>>>
>>>
>>>
>>>
7
>>>
>>>
>>>
>>>
4
# il risultato di un’operazione può essere messo
# in una variabile
ciccio = 2+5
print ciccio
# si possono fare operazioni fra numeri e variabili
ciccio = 2
pippo = ciccio*2
print pippo
Iniziamo a familiarizzare con Python. Ripassiamo quanto visto la scorsa volta. Lanciate l’interprete interattivo: in MacOS, aprite un terminal e scrivete python (e invio); in Windows, cliccate Start -­‐> All programs -­‐> Python27 -­‐> Python (command line). Si aprirà la shell interattiva, che scriverà il prompt (>>>) ed è pronta per ricevere ed eseguire un comando. Ora provate: -­‐ assegnate dei valori a due variabili, e sommatele -­‐ assegnate dei valori a tre variabili, e calcolate il prodotto della terza variabile con la somma delle prime due -­‐ create due variabile contenenti numeri interi e divideteli fra di loro; ora create due variabili con gli stessi numeri ma in versione decimale, e osservate come cambia il risultato della loro divisione -­‐ assegnate dei valori a tre variabili, e calcolatene la media (attenzione: usate numeri decimali) -­‐ assegnate dei valori a tre variabili, calcolatene la somma, e verificate se questa somma è pari o dispari usando l’operatore resto % -­‐ assegnate dei valori a sei variabili, calcolate la media dei primi tre e la media degli altri 3, e calcolate il rapporto fra le medie -­‐ assegnate un valore a una variabile, importate math, e calcolatene radice quadrata, logaritmo in base e, in base 10, in base 2 -­‐ generate degli errori e vedete che succede: dividete un numero per 0; scrivete male il nome di una variabile; scrivete una numero negativo e fatene la radice; usate una variabile che non è stata ancora definita -­‐ vi viene in mente un esempio di errore logico? -­‐ fatevi scrivere le funzioni fornite dalla libreria math; sceglietene uno che non abbiamo usato finora, e fatevi scrivere cosa fa e provate a usarlo Esercizi. Vediamo gli esercizi della Lezione 1: 1. Volume di una cellula batterica Il diametro medio di un batterio è 2 μm. Se il batterio fosse una sfera perfetta, quale sarebbe il suo volume? Ricordate che il valore di pi-­‐greco è disponibile nel modulo math 2. Idrolisi dell’ATP L’idrolisi di un legame fosfodiesterico di una molecola di ATP, rilasciando ADP e un fosfato organico, libera un’energia libera di Gibbs standard (ΔG0) pari a 30.5 kJ/mole. Il valore della ΔG dipende dalle concentrazioni di ATP, ADP e fosfato, con la seguente relazione: ΔG = ΔG0 + RT * ln([ADP]*[Pi]/[ATP]) dove R è la costante dei gas (0.00831 J/mol) e T la temperatura (310.15 K). Se la concentrazione di ATP nel cervello è 2.6 mM, quella di ADP è 0.7 mM, e quella di Pi è 2.7 mM, calcolare la ΔG. 3. Crescita esponenziale In condizioni ottimali, un singolo E.coli si divide in 20 minuti. Se le condizioni rimangono ottimali, quanti batteri si hanno dopo 6 ore? 4. Distanza fra due atomi Vogliamo calcolare la distanza fra due atomi, uno donatore e uno accettore di legame idrogeno, visti in una struttura cristallografica di una proteina. Un punto nello spazio cartesiano è definito dalle sue coordinate cartesiane x, y e z. La distanza fra due punti, uno avente coordinate (x1, y1, z1) e l’altro (x2, y2, z2) è data da: ! !1, !2 =
!1 − !2
! + !1 − !2
!
+ !1 − !2 ! Le coordinate dei due atomi sono (0.1,0,-­‐0.7) e (0.5,-­‐1,2.7). Ricordate che il modulo math fornisce metodi per le potenze (pow) e la radice quadrata (sqrt). Soluzioni Esercizio 1 >>> from math import pi, pow
>>> diametro_cellula = 2
>>> raggio_cellula = diametro_cellula / 2.0
>>> volume_cellula = (4.0/3.0) * pi * pow(raggio_cellula,3)
>>> print volume_cellula
4.18879020479
>>> print round(volume_cellula,2)
4.19
Esercizio 2 >>> from math import log
>>> ATP = 2.6
>>> ADP = 0.7
>>> Pi = 2.7
>>> R = 0.00831
>>> T = 310.15
>>> deltaG0 = -30.5
>>> deltaG = deltaG0 + R * T * log(ADP * Pi / ATP)
>>> print round(deltaG,2)
-31.32
Esercizio 3 >>> import math
>>> tempo_divisione = 20
>>> ore_totali = 6
>>> min_in_ora = 60
>>> min_totali = min_in_ora * ore_totali
>>> print min_totali
360
>>> numero_divisioni = min_totali / tempo_divisione
>>> print numero_divisioni
18
>>> numero_cellule = math.pow(2,numero_divisioni)
>>> print numero_cellule
262144.0
Esercizio 4 >>> from math import pow, sqrt
>>> x1 = 0.1; y1 = 0.0; z1 = -0.7
>>> x2 = 0.5; y2 = -1.0 ; z2 = 2.7
>>> dist_y = y1 - y2
>>> dist_x = x1 - x2
>>> dist_z = z1 - z2
>>> dist = pow(dist_x,2) + pow(dist_y,2) + pow(dist_z,2)
>>> dist = sqrt(dist)
>>> print round(dist,2)
3.57