[Python] Usate make?

Giovanni Marco Dall'Olio dalloliogm a gmail.com
Mar 24 Giu 2008 19:02:42 CEST


2008/6/24 Matteo Acerbi <matteo.acerbi a gmail.com>:
> On Tue, Jun 24, 2008 at 2:42 PM, Giovanni Marco Dall'Olio
>
> L'anno scorso io e una mia compagna di corso (ing. informatica,
> Bologna) lavorammo ad un progettino di elaborazione dati da
> microarray:

ciao!
Ma ha qualcosa a che fare con la specialistica in bioinfo, di bologna?
Io sono un ex-studente.


> Utilizzai Python per questo scopo unicamente per fare prima e lasciare
> del codice comunque decente a chi avrebbe potuto prendere in mano il
> progetto dopo di noi (temo nessuno :-) ).
>
> Forse usare Make avrebbe potuto favorire un approccio più dichiarativo
> e sopportare meglio eventuali incrementi successivi di complessità: al
> tempo avevo considerato l'ipotesi ma l'avevo poi scartata per fretta e
> per evitare di aggiungere un altro linguaggio all'insieme di
> competenze necessarie a comprendere cosa avessimo fatto. :-)

Il vantaggio di make é, essenzialmente, che se uno dei file di origine
cambia, lui se ne accorge e riesegue automaticamente tutti gli script
necessari a ricreare i risultati.
Per esempio: se ti rendi conto che i tuoi dati d'origine erano
sbagliati, o stai facendo delle prove, ti basta ridare make per rifare
tutto.

Inoltre dal punto di vista scientifico é opportuno avere una storia di
tutti i comandi e opzioni che hai dato (ci sono molti articoli in cui
gli autori non lo fanno), e poi realizzare questo con make o una
pipeline personalizzata non cambia molto.


> Avevo anche cercato di capire quali fossero modi più appropriati di
> affrontare questo problema (forse software tipo
> http://taverna.sourceforge.net/ ?), ma non provai minimamente a
> studiarli: il nostro programma doveva essere più rapido che
> flessibile, e adatto all'esecuzione batch (scartammo pregiudizialmente
> qualsiasi finestra :-) ).

taverna é un software piuttosto complesso, basicamente perché la
documentazione dei services esistenti é talmente scarna, che devi
avere una grossa conoscenza dei tool già disponibili per utilizzarlo.
Per esempio, devi sapere cosa é blast se vuoi fare un allineamento, o
sapere già cosa fa trfseq di emboss per utilizzarlo, o cose come
trans_seqfoot o biomart, o transfac. Loro ti danno una riga di 4 o 5
parole come documentazione! :)

Oppure, puoi crearti dei services personalizzati, ma devi metterti a
lavorare su XML, e a quel punto non so quanto la fatica di creare dei
web services e metterli su, progettare un file di descrizione del
protocollo in scufl, e testarlo mandando in giro i propri dati su
Internet possa essere conveniente rispetto al semplice uso di make.

Sicuramente nel futuro taverna sarà un software utilizzabile dai
principianti ma per adesso, mi sembra ci voglia ancora un po' di
testing.


> La mia esperienza nel mondo della bioinformatica è comunque terminata
> con quel progetto, per cui non ho idea di come realmente sia meglio
> fare queste cose (so solo che non trovo buoni motivi per usare Perl
> come pare vada ancora di moda :-) ).

Va bene stiamo scivolando sull'off-topic... non ti preoccupare, si
usano anche altri linguaggi, anzi se ti va di dare una mano su
biopython sei benvenuto :).


>> Ho sentito dire che si può anche usare anche distutils.core.setup (il tipico python setup.py), ma per il momento non ci ho guardato, preferisco capire make. Ci sono dei vantaggi ad usare questo modulo? Ci sono grosse differenze?
>
> Non conosco bene le distutils ma se la tua finalità non è quella di
> distribuire un pacchetto Python installabile ma piuttosto un albero di
> sorgenti io preferirei make, sia per lanciare i job che per compilare
> eventuali programmi C (o altro linguaggio compilato) da cui essi
> dipendono.

Basicamente anche distutils ti permette di creare delle regole, le
quali vanno a controllare l'esistenza di alcuni files, e se questi non
esistono o sono obsoleti, esegue i comandi indicati.
Il fatto é che la sintassi di make non é molto confortevole... mi
chiedevo appunto se fosse possibile fare qualcosa con i tool
disponibili con python e se ci fosse qualche strumento più recente da
provare.


>
> Mi interesserebbe sapere se altri hanno altre idee in proposito, però.
>
> Ciao,
> Matteo
>



-- 
-----------------------------------------------------------

My Blog on Bioinformatics (italian): http://bioinfoblog.it


Maggiori informazioni sulla lista Python