Un regolare processo la­vo­ra­ti­vo in team è d’im­por­tan­za fon­da­men­ta­le in molti settori. I tool di co­mu­ni­ca­zio­ne e per l’or­ga­niz­za­zio­ne e la gestione delle fasi la­vo­ra­ti­ve e dei dati di progetto sono diventati pra­ti­ca­men­te in­di­spen­sa­bi­li. Esistono diverse ap­pli­ca­zio­ni per la scienza e la si­mu­la­zio­ne dei dati che cercano di sod­di­sfa­re queste esigenze. La soluzione basata sul web di Notebook Jupyter crea ad esempio un continuo ponte tra codice di programma e testo espli­ca­ti­vo, con­sen­ten­do all’utente di scambiare e creare in tempo reale codici, equazioni, vi­sua­liz­za­zio­ni ecc., incluse le in­for­ma­zio­ni espli­ca­ti­ve. Cosa c’è dietro all’ap­pli­ca­zio­ne open source svi­lup­pa­ta e gestita dal Progetto Jupyter?

Che cos’è Notebook Jupyter?

Notebook Jupyter è un’ap­pli­ca­zio­ne basata sul modello client-server dell’or­ga­niz­za­zio­ne no profit Progetto Jupyter fondata nel 2015. Permette la creazione e la con­di­vi­sio­ne di documenti web nel formato JSON, che seguono uno schema e una lista ordinata di celle input/output. Queste celle offrono tra l’altro spazio per codici, testi in markdown, formule ma­te­ma­ti­che ed equazioni o contenuti mul­ti­me­dia­li (rich media).

L’ela­bo­ra­zio­ne funziona su un’ap­pli­ca­zio­ne client basata sul web che si avvia con un browser standard. Basta che sul sistema sia in­stal­la­to e venga eseguito anche il server del Notebook Jupyter. I documenti Jupyter creati si possono esportare come documenti HTML, PDF, Markdown o Python o in al­ter­na­ti­va si possono con­di­vi­de­re con altri utenti tramite e-mail, Dropbox, GitHub o il proprio Notebook Jupyter.

N.B.

Il nome del progetto “Jupyter” deriva dai tre linguaggi di pro­gram­ma­zio­ne di base, Julia, Python e R.

I due com­po­nen­ti centrali di Notebook Jupyter sono un set di diversi kernel (in­ter­pre­ti) e la dashboard. I kernel sono piccoli programmi che elaborano richieste (“request”) spe­ci­fi­che nel lin­guag­gio e rea­gi­sco­no con relative risposte. Un kernel standard è IPython, un in­ter­pre­te della riga di comando che permette di lavorare con Python. Oltre 50 kernel for­ni­sco­no supporto per altri linguaggi come C++, R, Julia, Ruby, Ja­va­Script, Cof­fee­Script, PHP o Java. La dashboard serve da una parte come in­ter­fac­cia di gestione per i singoli kernel e dall’altra come centrale per la creazione di nuovi documenti Notebook o per aprire progetti già esistenti. Notebook Jupyter è di­spo­ni­bi­le gra­tui­ta­men­te per tutti gli utenti grazie a una licenza BSD mo­di­fi­ca­ta.

Come si dif­fe­ren­zia Notebook Jupyter da Ju­py­te­rHub e Ju­py­ter­Lab?

Notebook Jupyter non è l’unica offerta open source del Progetto Jupyter: con Ju­py­te­rHub e Ju­py­ter­Lab il team di sviluppo offre altri due servizi stret­ta­men­te connessi all’ambiente del codice in­te­rat­ti­vo.

Ju­py­te­rHub è un server mul­tiu­ten­te che include un proxy, il quale collega tra loro diverse istanze di Notebook Jupyter. Esso può essere ospitato nel cloud o sul proprio hardware e permette l’utilizzo di un ambiente Notebook comune. L’am­mi­ni­stra­to­re del server gestisce a pia­ci­men­to l’accesso comune ai singoli documenti (è im­ple­men­ta­bi­le un metodo di au­ten­ti­ca­zio­ne), mentre i singoli utenti si possono con­cen­tra­re sui propri compiti. In­for­ma­zio­ni det­ta­glia­te sull’in­stal­la­zio­ne e l’hosting di Ju­py­te­rHub sono offerte dal Re­po­si­to­ry di GitHub della soluzione mul­tiu­ten­te.

Ju­py­ter­Lab è il suc­ces­so­re ufficiale di Notebook Jupyter. Esso dovrebbe so­sti­tui­re il programma di base nel lungo termine. In confronto a quest’ultimo Ju­py­ter­Lab offre infatti più opzioni per la per­so­na­liz­za­zio­ne e l’in­te­ra­zio­ne ed è ancora più semplice da ampliare. Oltre a editor di testo, terminali e altri com­po­nen­ti che si aprono e vengono vi­sua­liz­za­ti in parallelo con i documenti di Notebook, l’in­ter­fac­cia utente com­ple­ta­men­te ri­di­se­gna­ta include anche col­le­ga­men­ti a Google Drive e ad altri servizi cloud, voci di menu ag­giun­ti­ve e scor­cia­to­ie da tastiera per lavorare con l’ambiente di codice in modo ancora più agevole.

Per quali scopi è adatto Notebook Jupyter?

Notebook Jupyter mette a di­spo­si­zio­ne un ambiente perfetto fatto su misura per le esigenze e il flusso di lavoro di scienza e si­mu­la­zio­ne dei dati. In una sola istanza gli utenti possono scrivere, do­cu­men­ta­re ed eseguire codici, vi­sua­liz­za­re dati, eseguire calcoli ed esaminare i risultati cor­ri­spon­den­ti. In par­ti­co­la­re durante la fase di prototipo possono trarre beneficio dal fatto che ciascun codice può essere ospitato in celle in­di­pen­den­ti: così è possibile testare in­di­vi­dual­men­te specifici blocchi di codici. Grazie ai numerosi kernel ag­giun­ti­vi Jupyter non si limita a Python per quanto riguarda il lin­guag­gio di pro­gram­ma­zio­ne e ciò significa più fles­si­bi­li­tà al momento della codifica e dell’analisi.

Tra gli scopi d’utilizzo più im­por­tan­ti di Notebook Jupyter si possono men­zio­na­re:

  • Pulizia dei dati: dif­fe­ren­zia­zio­ne tra dati im­por­tan­ti e meno im­por­tan­ti nell’analisi dei big data
  • Mo­del­liz­za­zio­ne sta­ti­sti­ca: metodo ma­te­ma­ti­co per de­ter­mi­na­re la stimata pro­ba­bi­li­tà di di­stri­bu­zio­ne di una de­ter­mi­na­ta ca­rat­te­ri­sti­ca
  • Creazione e training di modelli di machine learning: progetto, pro­gram­ma­zio­ne e training di modelli basati sul machine learning
  • Vi­sua­liz­za­zio­ne dati: rap­pre­sen­ta­zio­ne grafica di dati per spiegare modelli, tendenze, di­pen­den­ze ecc.

Come funziona Notebook Jupyter?

Per uti­liz­za­re Notebook Jupyter occorre in­nan­zi­tut­to in­stal­la­re l’ap­pli­ca­zio­ne client e server dall’ambiente di codice sul proprio sistema (o in al­ter­na­ti­va nel cloud). L’unica con­di­zio­ne è che sia in­stal­la­ta anche una versione attuale di Python. È per questo motivo che il team di Jupyter consiglia il download della Anaconda Di­stri­bu­tion, che include sia Notebook Jupyter che Python, nonché altri pacchetti software per la scienza dei dati, il calcolo scien­ti­fi­co e altro. Al termine dell’in­stal­la­zio­ne il server Notebook si avvia tramite la riga di comando e suc­ces­si­va­men­te viene ri­chia­ma­to dalla dashboard nel browser scelto tramite l’URL 'http://localhost:8888'.

A questo punto l’utente crea una nuova cartella nella directory di Notebook Jupyter, apre l’editor di testo integrato e il terminale o crea un nuovo progetto Jupyter. Ogni nuovo progetto creato contiene ini­zial­men­te un unico campo di input vuoto. Sulla barra del menu si possono inserire nuovi campi, si possono importare bi­blio­te­che o collocare widget (elementi in­te­rat­ti­vi). Inoltre la barra offre tasti per l’ese­cu­zio­ne e l’in­ter­ru­zio­ne di codici finiti, per salvare o esportare l’intero documento e per scegliere il kernel di base.

Consiglio

Sulla homepage ufficiale di Jupyter c’è la pos­si­bi­li­tà di testare Notebook Jupyter senza in­stal­lar­lo.

Riassunto dei vantaggi di Notebook Jupyter

Notebook Jupyter è la soluzione ideale per chi vuole scrivere script e testarli in tempo reale, vi­sua­liz­za­re dati o fare complessi calcoli ma­te­ma­ti­ci. I risultati si possono esportare con pochi clic in diversi formati o essere inviati di­ret­ta­men­te per e-mail. Gli utenti dei servizi mul­tiu­ten­te di Ju­py­te­rHub possono lavorare ad­di­rit­tu­ra insieme ai “Notebook” per poter portare avanti il progetto in team. Dato che Jupyter è scritto in Python, gli spe­cia­li­sti di Python hanno anche un ulteriore vantaggio nell’utilizzo di questa ap­pli­ca­zio­ne open source. Tuttavia grazie ai diversi in­ter­pre­ti per altri linguaggi è possibile anche co­di­fi­ca­re senza problemi linguaggi come C++, PHP o Java.

Riassunto dei vantaggi di Notebook Jupyter:

  • Open source (licenza BSD mo­di­fi­ca­ta)
  • Uti­liz­za­bi­le gra­tui­ta­men­te
  • Basato su browser
  • Livecode
  • Diverse opzioni per esportare e con­di­vi­de­re i risultati
  • Gestione delle versioni
  • Pos­si­bi­li­tà di col­la­bo­ra­zio­ne con altri (Ju­py­te­rHub)
  • Oltre 50 linguaggi di pro­gram­ma­zio­ne sup­por­ta­ti
Vai al menu prin­ci­pa­le