vuoi
o PayPal
tutte le volte che vuoi
IF (THEN) ELSE
In Python si utilizzano le parole chiave if ed else per determinare le regioni di codice condizionale
If N%2==1: 5
print “N dispari”
elif N==0:
print “N uguale a zero”
else:
print “N pari”
il ramo else è opzionale, non sempre è necessario entrambe le istruzioni if ed else si concludono
con i due punti esattamente come nelle funzioni, il codice appartenente all'if è denotato
dall'indentazione. Lo stesso vale per l'else.
L'istruzione elif consente di aggiungere ulteriori condizioni al codice elif funziona come if , quindi la
porzione ci codice associata viene eseguita se è verificato il predicato Tuttavia, un elif viene
considerato se e solo se le precedenti condizioni non sono verificate (altrimenti viene ignorato) Si
possono utilizzare tutti gli elif che si desidera
Cicli for
Molto spesso, nei nostri programmi, dobbiamo ripetere un blocco di istruzioni più volte In
particolare, effettuare un numero ben preciso di ripetizioni Questo ruolo è svolto in Python
dall'istruzione for Un ciclo for scorre uno per uno gli elementi di una lista. Ogni elemento viene
assegnato a una variabile e poi viene eseguita una porzione di codice
for i in lista_elementi:
# porzione di codice
Questo codice va letto "per ogni elemento i contenuto in lista_elementi fai…"
Cicli while
I cicli for sono fatti per eseguire un numero definito di volte una certa azione. Tuttavia, in alcune
situazioni, potremmo desiderare di rimanere in un loop infinito I cicli while funzionano proprio in
questa maniera: finché la condizione è verificata rimaniamo nel ciclo. Altrimenti, usciamo Anche
while richiede l'indentazione per il codice da ripetere all'infinito
Sia i cicli for che i cicli while possono essere interrotti in qualunque momento usando l'istruzione
break
Sia i cicli for che i cicli while possono saltare una iterazione in qualunque momento usando
l'istruzione continue
Aprire file di testo
In python per leggere un file di testo si usa la funzione open() 6
fd = open("nome_del_file.txt")
Con questa istruzione otteniamo un "descrittore di file" chiamato fd: è una nuova variabile che
contiene il riferimento al file "nome_del_file.txt" Possiamo chiudere il file con il comando
fd.close()
Possiamo ottenere una lista di tutte le linee di testo contenute nel file con il metodo readlines()
del descrittore.
fd = open("esempio.txt")
linee = fd.readlines()
Possiamo poi usare un ciclo for sulla lista delle linee per elaborarle una per una (ad esempio,
stamparle con print)
fd = open("esempio.txt")
linee = fd.readlines()
for linea in linee:
print linea
Le operazioni che abbiamo appena visto sono così comuni che python mette a disposizione una
sintassi molto compatta (con with) per eseguirle
Prestate attenzione all'indentazione di with: significa che in tutto il blocco indentato il file è aperto.
Dopo la parte indentata per with, il file viene automaticamente chiuso e non può più essere letto (a
meno di non riaprirlo)
Salvare file di testo
Simmetricamente alla lettura, esiste una sintassi per scrivere su un file di testo Nella open,
dobbiamo specificare l'argomento aggiuntivo "w" (i.e., write) Usiamo il metodo .write() del
descrittore per scrivere sul file le stringhe Ogni stringa deve terminare con \n, che è il codice per il
ritorno a capo
NumPy
NumPy è un package di python per il calcolo scientifico (si installa a parte) è utilissimo perché
fornisce funzionalità matematiche avanzate, liste potenziate (array), generatori di numeri casuali,
trasformate di Fourier, funzioni statistiche, e via elencando è molto ben integrato con altre librerie
potenti come SciPy e matplotlib (che vedremo in seguito)
MEDIA E DEVIAZIONE STANDARD
Con NumPy possiamo calcolare media e deviazione standard di una lista (di numeri) con le
funzioni
average() e std() 7
Entrambe le funzioni ritornano un messaggio di warning e un valore speciale nan ("not a
number") se vengono calcolate su una lista vuota
Array
L'array è la struttura dati principale di NumPy Rappresenta un'estensione del concetto di lista
numerica (omogenea, tutti dati dello stesso tipo) caratterizzata da funzionalità matematiche
avanzate Per creare un array basta creare una lista e convertirla con la funzione array() Gli array
supportano operazioni vettoriali: ad es., possiamo raddoppiare tutti i valori degli elementi di un
array semplicemente moltiplicandolo per 2 (diverso dalle liste!)
Esistono funzioni NumPy che creano direttamente degli array numerici
Gli array di NumPy supportano operatori vettoriali (ovvero applicate in automatico su tutti i valori)
per le principali funzioni matematiche, anche combinate tra loro
• sum(), len(), min(), max(), average() e std() supportano gli array
Diversamente dalle liste, la somma di due array non rappresenta più la loro concatenazione, bensì
la somma dei loro elementi (somma vettoriale)
Molti operatori sugli array sono vettoriali, ovvero applicano l'operazione
tra gli elementi dei due array
Matrici
Una funzionalità importante degli array sono le matrici, ovvero array nidificati 8
NumPy mette a disposizione molteplici funzionalità per manipolare matrici
create con gli array. Ad esempio, l'attributo.T dà accesso alla trasposta
della matrice
print A.ndim conoscere le dimensioni della matrice
print A.shape conoscere quanti elementi ci sono su ogni dimensione della
matrice
A.reshape((3,2)) "rimodellare" il numero di righe e colonne di una matrice, a patto
che il numero di elementi rimanga uguale
3 righe e 2 colonne
A.dot(B) moltiplicazione di due matrici A e B o prodotto matrice vettore
cross(A,B) Prodotto vettoriale
Leggere un file strutturato
Molto spesso capita di dover analizzare un file di testo contenente dei dati organizzati in qualche
maniera (magari prodotti da qualche strumento) Ad es., i cosidetti CSV e TSV ovvero,
rispettivamente, dei files in cui i valori sono separati da virgole o caratteri di tabulazione.
Dato che si tratta di una procedura molto frequente, NumPy mette a disposizione una funzione
loadtxt()
Dopo questa chiamata, la variabile "valori" contiene una matrice con i dati. A ogni riga della matrice
corrisponde a una riga del file. Le colonne della matrice corrispondono ai diversi valori su ogni riga,
che nel file erano separati da tabulazioni o virgole
Salvare i dati
A volte vogliamo fare il procedimento inverso, ovvero salvare in un file dei dati prodotti dai nostri
algoritmi Simmetricamente a loadtxt(), NumPy mette a disposizione una funzione
savetxt("nomedelfile.tsv", valori) Questa funzione crea un nuovo file (o sovrascrive uno
precedente) chiamato "nomedelfile.tsv", in cui vengono scritti i dati contenuti nella lista o matrice
"valori", strutturati mediante dei caratteri di tabulazione
Matplotlib
Spesso, al termine di una analisi numerica, siamo interessati a visualizzare graficamente i
risultati per poterli interpretare più facilmente Esiste una libreria di creazione di grafici molto
potente per python chiamata matplotlib (si installa a parte) 9
Possiamo assegnare un'etichetta agli assi x e y mediante le funzioni xlabel() e ylabel() e
possiamo inoltre mettere un titolo
con la funzione title()
Dopo aver specificato i valori sulle
x e sulle y, possiamo usare un
argomento aggiuntivo che dice a
matplotlib come plottare la curva e
con quale colore Possiamo inoltre mostrare una legenda dei
plot Si fa specificando l'argomento "label" ad
ogni plot e chiamando la funzione legend()
prima di plottare La legenda riporta
automaticamente il nome, il tipo e il colore della
curva
R
R è un linguaggio di programmazione e un ambiente di sviluppo specifico per l'analisi statistica
dei dati Creato da due statistici: un canadese (R. Gentleman) e un neozelandese (R. Ihaka) .R è
interpretato, ha tipizzazione dinamica, è fondamentalmente imperativo ed è espandibile con un
vasto numero di moduli aggiuntivi raccolti in un repository chiamato CRAN - "Comprehensive R
Archive Network". Esiste un progetto specifico chiamato Bioconductor che raccoglie un'ampia
libreria di tools per la bioinformatica e la genomica high-throughput
Similmente a quanto visto con Python+IDLE, faremo uso di una IDE anche per il linguaggio R e La
IDE che useremo è RStudio che si presenta suddiviso in una console dove è possibile dialogare
direttamente con l’interprete R, un riquadro editor dove possimo scrivere i nostri file sorgente e
lanciane l’esecuzione previa selezione e tramite il tasto Run. Il riquadro Environment mostra tutti
gli elementi (e.g., variabili, liste, matrici) contenuti nella memoria corrente, Il tab History riassume
tutti i comandi dati all'interprete fino a quel momento. Infine il riquadro in basso a destra riassume i
Files nella directory corrente, consente di creare Plots, elenca i Packages disponibili, fornisce un 10
Help in linea e visualizzare
contenuti web locali (Viewer)
La directory corrente
I file che creiamo con
RStudio, ma anche i
comandi che forniamo,
vengono salvati nella
directory corrente Per sapere
in quale directory stiamo
lavorando usiamo il
comando getwd().
Utilizziamo il comando q()
("quit") per uscire da R
usando questo comando, vengono creati due files chiamati .Rdata e .Rhistory che,
rispettivamente, contengono i dati e i comandi dati in questa sessione di lavoro in questo modo,
alla prossima apertura di R, possiamo riprendere il lavoro fatto R chiederà conferma di salvare il
lavoro fatto: rispondete "y" (yes) se volete farlo
Per conoscere i files contenuti nella directory corrente utilizziamo dir()
Per settare una nuova directory corrente a nostra scelta, utilizziamo il comando
setwd("percorso"), dove l'argomento è la nuova directory da utilizzare per lavorare
alternativamente possiamo utilizzare l’opzione contenuta nella barra del menu(Session choose
directoty)
L'interprete R
L'interprete R funziona in maniera molto simile a Python ad esempio, possiamo fargli valutare delle
espressioni basate sui classici operatori aritmetici (+, -, *, /) ( Attenzione: l'elevamento a potenza
è ^ e non **). Molte funzioni matematiche avanzate sono nativamente supportate e non
richiedono l'importazione di librerie aggiuntive (ad es., radice quadrata, funzioni trigonometriche,
logaritmi, esponenziali) anche le costanti più importanti sono subito disponibili (ad es., pi per il
pigreco) . R consente al programmatore di creare nuove funzioni
L'assegnamento in R
Diversamente da Python, in