Oggi vi parlo del progetto labnotebook, nato dalla necessità di compilare un laboratory notebook in maniera automatica, veloce e sistematica.
Per chi non lo sapesse, nei laboratori di ricerca è obbligatorio tenere traccia di tutto ciò che si fa tramite dei quaderni chiamati appunto “laboratory notebook”; la natura del lavoro di un bioinformatico però è molto diversa rispetto a quella di chi sta al bancone, di conseguenza anche le possibilità di tenere traccia di ciò che si è fatto lo è.
Molti conosceranno git o altri sistemi di controllo delle versioni, ovvero sistemi che permettono di avere una traccia di tutte le modifiche apportate ad un file, avendo uno storico. Per accedere a questo storico bisogna avere padronanza di questi sistemi, il che rende difficile (se non impossibile) la lettura di questi storici a chi non li usa.
Per questo motivo, ho deciso di creare un pacchetto di funzioni che permettono di trasformare questo storico in un file html, personabilizzabile, facile da esportare e condividere. Trovare questo pacchetto di funzioni in questa repo su github.
Per usufruire di queste funzioni è necessario che si abbia git installato, che il progetto su cui si lavori sia sotto il controllo di git e che i commit siano compilati in maniera esaustiva.
Struttura del notebook
Il notebook è così strutturato:
Come intestazione c’è il nome del notebook, seguito dalla data di creazione e dall’autore (preso dal config file di git),
Successivamente, per ogni data abbiamo l’elenco dei commit (quindi delle azioni svolte) con specificato il cosa si è fatto, lo sha del commit, eventualmente il file contenente l’elenco dei comandi eseguiti/analisi fatte, e l’elenco dei file modificati, con indicato se sono stati aggiunti (A), modificati (M), cancellati (D) o rinominati (R).
Un esempio lo potete trovare qui.
Creare un notebook
Per creare un notebook basterà essere nella cartella del progetto dove è situata la cartella .git/
e lanciare il comando createnotebook <nome_notebook>
.
Verrà chiesto se la cartella .labnotebook che verrà creata dovrà essere ignorata da git (quindi se va inserita dentro il file .gitignore); da quel momento la cartella .labnotebook sarà presente dove è situata quella .git.
All'interno della cartella troviamo vari file:
Il file config
Il file config contiene alcune impostazioni iniziali che si possono modificare all’occorrenza, stando attenti però a non compromettere la funzionalità delle funzioni di aggiornamento del notebook e di export del notebook.
Vediamo le voci contenute:
Aggiornare il notebook
Quando si vuole aggiornare il notebook (e consiglio di farlo spesso, e ora capirete il perchè), basta andare nella cartella del progetto dove è situata la cartella .labnotebook/
e digitare il comando updatenotebook
.
A questo punto verrà chiesta la conferma per aggiornare il notebook e partirà l’aggiornamento del notebook: se l’opzione SHOW_ANALYSIS_FILES sarà uguale a “no”, nulla accadraà e il notebook verrà aggiornato, altrimenti per ogni commit verrà richiesto quale dei file modificati sia il file di analisi (tra le varie opzioni c’è anche none, da selezionare se non sono state fatte analisi o non si vuole inserire alcun file).
Il file che viene aggiornato è .labnotebook/body.html.
Esportare il notebook in formato html
Nel momento in cui si decide di voler esportare il notebook, basterà essere sempre nella cartella contenente .labnotebook/
e digitare exportnotebook <nome_file.html>
.
Verrà richiesto se il file css indicato nel file config vada copiato nella head del file html (se si vuole condividere solo il file html) o se vada linkato nella head (se si vuole condividere sia il file html sia il file css).
A questo punto, il notebook è pronto per essere aperto con un browser, letto, sfogliato e analizzato.