Last chance! 50% off DataCamp Premium
Sale ends in
Quest’anno al PyCon 2017, due keynote sono state tenute da persone della community scientifica di Python: il dott. Jake VanderPlas ha parlato del perché gli scienziati hanno abbracciato e dovrebbero abbracciare Python; la dott.ssa Kathryn Huff ha spiegato come la community Python può aiutare le comunità scientifiche e perché dovrebbe farlo. Insieme, questi due interventi offrono una visione olistica e coerente di come la ricerca scientifica e la programmazione in Python si completino a vicenda, perché molti scienziati oggi trarrebbero il massimo vantaggio adottando Python e perché e come la community Python possa supportare efficacemente la ricerca scientifica.

Jake VanderPlas è un astronomo presso l’eScience Institute dell’Università di Washington, a Seattle. È anche attivo nella più ampia community scientifica di Python, avendo contribuito a SciPy, scikit-learn e altair, tra gli altri pacchetti Python.
La maggior parte delle persone immagina gli astronomi alla base di giganteschi telescopi, con l’occhio puntato nelle lenti; tuttavia Jake ci ha assicurato che molti astronomi non hanno mai guardato attraverso un telescopio nella loro vita professionale, ma trascorrono gran parte del tempo di raccolta dati facendo query su database. Ma i database sono solo la punta dell’iceberg quando si parla delle competenze computazionali degli astronomi, rese necessarie dai compiti che affrontano, e Jake ha fornito diversi esempi illuminanti. Prendi la seguente visualizzazione del sistema esoplanetario TRAPPIST-1, per esempio:

È facile pensare che questa sia un’immagine fotorealistica, ma in realtà è un’interpretazione artistica: non sono i dati originali. L’esistenza del pianeta è stata dedotta da una stella che eclissa e attraverso la modellazione statistica di un sistema del genere sui dati seguenti e successivi (in forma di immagine, dati di Ethan Kruse):

Come sono state fatte tutte queste inferenze e analisi statistiche? In Python, naturalmente. E tramite una “modellazione statistica incredibilmente intricata del sistema”; inoltre, trovare questo tipo di sistemi, ci ha detto Jake, “si riduce a scrivere codice statistico in una pipeline di analisi dati intricata”.
Questo è uno dei numerosi progetti scientifici (in astronomia) che Jake ci ha mostrato e che utilizzano il linguaggio Python nelle loro pipeline di elaborazione e analisi dei dati. Vale la pena notare che tutti questi progetti non solo sono scritti in un linguaggio open source, ma hanno anche il loro codice su GitHub, per esempio, Kepler e JWST, quest’ultimo impegnato a scoprire gas nelle atmosfere di altri pianeti per fiutare la composizione chimica di pianeti attorno ad altre stelle, al fine di trovare firme chimiche di altre forme di vita — questi progetti sono in Python, ospitati su GitHub e usano i notebook Jupyter, tra gli altri strumenti.
Potrebbe essere un aneddoto, cioè una manciata di progetti in Python che sono eccezioni piuttosto che la norma? Be’, non in astronomia. Jake ha condotto un’analisi che dimostra come le pubblicazioni che usano Python siano aumentate costantemente:

Guarda quella hockey stick di Python! Dunque abbiamo appurato che gli scienziati usano Python sempre di più, ma perché lo usano?
Jake ha chiesto: “Perché Python è uno strumento così efficace nella scienza?”
Python come collante: storicamente, molti scienziati operativi hanno avuto pipeline di dati goffe, complesse e fondamentalmente assurde per passare dall’esperimento e/o dai dati a risultati comunicabili, coinvolgendo query su database, comandi da riga di comando, l’uso di software specializzati o proprietari, fino agli strumenti di visualizzazione dei dati. Jake VanderPlas ha citato Dave Beazley anche perché Dave l’ha detto bene:
“Gli scienziati... lavorano con un’ampia varietà di sistemi che vanno da codici di simulazione, pacchetti di analisi dati, database, strumenti di visualizzazione e software fatti in casa — ciascuno dei quali presenta all’utente un insieme diverso di interfacce e formati di file. Di conseguenza, uno scienziato può passare un bel po’ di tempo semplicemente cercando di far funzionare tutti questi componenti insieme in qualche modo...”
E Python può interoperare con la maggior parte degli strumenti che vorresti mai usare nella ricerca scientifica: fa da legante, è un collante. Come ha detto Jake, Python viene usato per “tenere insieme il guazzabuglio di strumenti con cui le persone lavorano; la sintassi di alto livello di Python avvolge queste librerie C/Fortran di basso livello”.
Un altro motivo per cui i ricercatori si sono riversati su Python (e perché chi non l’ha fatto “dovrebbe”) è che
SciPy) disponibile come moduli di terze parti.Le “batterie incluse” ti permettono di fare web scraping, lanciare server web, lavorare con filesystem e database, leggere JSON e molto altro!
I moduli di “terze parti” sono dove le cose si fanno davvero interessanti. Gli esempi includono, ma non si limitano affatto a:
Come ha detto Jake, “se hai un problema da risolvere, molto probabilmente troverai una libreria che ti aiuta ed è probabilmente su GitHub!”

Python è relativamente facile da scrivere, soprattutto rispetto a linguaggi come C. Come ha detto Jake, “In Python, in particolare se arrivi, per esempio, da C, scrivi ciò che vuoi che accada e accade; è un po’ come scrivere pseudo-codice eseguibile”.
Ha anche citato Perry Greenfield, che ha detto: “Python è un linguaggio molto potente per gli sviluppatori, ma è anche accessibile agli astronomi. Far usare gli stessi strumenti a queste due classi di persone, credo, offre un enorme vantaggio che non sempre viene notato o menzionato”.
Grazie a strumenti come IPython e i notebook Jupyter, ad esempio, c’è una splendida opportunità per una programmazione dinamica e un’analisi dati esplorativa e iterativa al volo. Questo si traduce in una barriera d’ingresso bassa perché la programmazione scientifica è di per sé non lineare ed esplorativa. Jake ha fatto notare che alcuni potrebbero lamentarsi o pensare che questi strumenti siano lenti, ma ai fini della ricerca scientifica è la velocità di sviluppo la chiave, non la velocità di esecuzione, rendendo questi strumenti ideali.
Il software open source ha un ethos ben allineato alla necessaria apertura della ricerca scientifica (in realtà, forse più di gran parte della ricerca scientifica). Torneremo su questo in più dettaglio parlando del keynote di Katy Huff, ma la scienza non avviene solo negli articoli pubblicati: la scienza avviene nel risultato e nelle istruzioni/protocolli e nella capacità di riprodurre il risultato; è esattamente ciò che lo sviluppo software open source cerca di fare. Jake ha fornito la seguente citazione da Buckheit e Donoho (1995, parafrasando Jon Claerbout)
Un articolo su un risultato computazionale è pubblicità, non scienza. La vera scienza è l’intero ambiente software, il codice e i dati che hanno prodotto il risultato.” — Buckheit e Donoho, 1995
Ciò che il software open source e l’ethos dell’ecosistema Python (scientifico e non) offrono è un quadro che, si spera, ci aiuterà a uscire dalla crisi di riproducibilità scientifica: “risolvere la riproducibilità riguarda la scienza aperta” e la natura collaborativa, peer-reviewed e pubblicabile su GitHub della ricerca scientifica nell’ecosistema Python è fondamentale per questa apertura nella scienza. Se voglio vedere come sono state rilevate le onde gravitazionali (previste da Einstein) nel 2016, mi basta andare al repository LIGO qui. Oppure, se sei uno dei tanti astronomi che usano il pacchetto Astropy per la loro ricerca, puoi trovare il codice e la community che lo produce qui e il fatto che sia così aperto è una conseguenza diretta della sua community che modella l’ethos open source e open science trovato nella più ampia community Python. Dai un’occhiata alla tabella su ciò che, secondo Jake (adattato da Perry Greenfield), la comunità astronomica ha imparato dalla community Python:

“Sono qui per incanalare il vostro potere a mio vantaggio”, ha detto la dott.ssa Kathryn Huff alla community di PyCon, e ha poi fornito un argomento convincente su come e perché la grande community di programmazione Python possa aiutare la scienza a salvare il mondo. Il suo keynote ha offerto un’argomentazione dettagliata e appassionata sul perché lo sviluppo open source, in generale, e Python, in particolare, si siano rivelati così efficaci nel calcolo scientifico e nella ricerca scientifica nel suo complesso. È andato oltre e ha mostrato una moltitudine di luoghi in cui la community di programmazione e sviluppo Python può mettere a frutto le proprie competenze per aiutare la comunità scientifica e salvare il mondo. Se pensi che l’acqua sia un tema serio per l’umanità, o la salute o l’energia, Kathryn aveva progetti e repository GitHub con issue aperte pronte per essere affrontate. Ha fornito dozzine di esempi di progetti e pacchetti open con issue a cui potresti contribuire.
Kathryn (Katy) è un’ingegnera nucleare, collaboratrice di lunga data della community SciPy, coinvolta nel Journal of Open Source Software e dedica molto del suo tempo a The Hacker Within e alle Software e Data Carpentries, che aiutano gli scienziati a migliorare nell’uso dei computer e a fare scoperte, contribuendo a migliorare la riproducibilità e la facilità con cui gli scienziati usano i computer.
La missione di Katy è migliorare il modo in cui l’energia nucleare viene prodotta; e qual è il suo strumento preferito? Python! Prima di addentrarsi nei molti modi in cui la community Python può aiutare la comunità della ricerca scientifica, Katy ha fornito un argomento solido sul perché ciò sia davvero necessario. Katy ha citato R. K. Merton (1945) nel descrivere la scienza come richiedente rigorosa, strutturata verifica da parte della community (un’ottima definizione operativa di come appare lo scetticismo organizzato); sono qualità indiscutibili della community open source di Python.

Katy ha sottolineato l’importanza di questo quando ha elencato i principi fondamentali della scienza e ha chiarito che lo sviluppo di software open source ha fatto meglio di qualsiasi altra community nel mantenere questi principi sin dall’epoca pitagorica (VI secolo a.C.). Questi principi fondamentali della scienza sono:
I computer “dovrebbero” aiutare gli scienziati a fare quanto segue:

Qual è, quindi, la sfida nel far usare a più scienziati software open source come Python in modo che i computer possano aiutarli?
Da qui l’appello alle armi di Katy alla community Python:
“Vorrei coinvolgerti”.
E questo mobilitare è un altro motivo per cui gli scienziati attivi nella ricerca dovrebbero usare Python: c’è una vasta community di programmatori open source a loro disposizione. Katy, come detto, è coinvolta in un altro approccio, ovvero lavorare per formare gli scienziati nell’uso dei computer per il loro lavoro. Esistono diversi programmi del genere. Consiglio a tutti gli scienziati di dare un’occhiata a Software Carpentry e Data Carpentry per vedere se possono aiutare il tuo gruppo, dipartimento o università (risposta: se computi, molto probabilmente sì).
Quindi, come suggerisce la dott.ssa Katy Huff che i programmatori possano aiutare? In quattro semplici passi:
“Python è un linguaggio molto potente per gli sviluppatori, ma è anche accessibile ai [gli scienziati]. Far usare gli stessi strumenti a queste due classi di persone, credo, offre un enorme vantaggio che non sempre viene notato o menzionato”.
Se hai pensieri, risposte e/o riflessioni, contattami pure su Twitter: @hugobowne.

blog
Abid Ali Awan
10 min
blog
Tim Lu
12 min

blog
Abid Ali Awan
15 min