2013-01-24 10 views
18

Io corro esperimenti su un modello, con un flusso di lavoro come questo:Come organizzare una serie di esperimenti scientifici che utilizzano Git

  • Io lavoro in un modello (un software in Python)
  • cambio alcuni parametri ed eseguire un esperimento
  • Quindi, memorizzerò i risultati dell'esperimento (come un sottaceto).
  • Quindi analizzerò i risultati (in salamoia) utilizzando un altro software (quaderni IPython).

Sto usando Git and Scientific Reproducibility come guida, dove i risultati di un esperimento sono memorizzati in una tabella lungo l'hash del commit. Vorrei invece memorizzare i risultati in una directory, nominando le directory come hash.

Pensando al controllo di versione, vorrei isolare lo code e lo analysis. Ad esempio, un cambiamento di colore in una trama in un notebook IPython in analysis non dovrebbe cambiare nulla in code

L'approccio che sto pensando:

Una struttura di directory in questo modo:

model 
- code 
- simulation_results 
    - a83bc4 
    - 23e900 
    - etc 
- analysis 

e diversi repository Git per code e analysis, lasciando simulation_results di Git.

Eventuali commenti? Una soluzione migliore? Grazie.

+0

Quali numeri esadecimali in simulazione_risultati dovrebbero significare? (Suppongo che siano degli ID commit, ma mi manca qualche contesto.) –

+0

I sottomoduli sono un buon approccio. Ho modificato e dettagliato la mia risposta. – VonC

+0

Ciao Josef, Sì, in effetti i numeri esadecimali sono ID di commit. – Victor

risposta

4

Questo sembra il suono e la struttura sarebbe una buona misura per l'utilizzo di git submodules, model diventando un repo git genitore.

In questo modo, si collegheranno insieme code e analysis SHA1 all'interno del repository model.

Ciò significa che è possibile creare la directory all'interno del privato (cioè non sotto controllo di versione) annuario model/simulation_results sulla base del SHA1 di model repo (il "padre" pronti contro termine): che SHA1 collega la SHA1 di entrambi project e analysis sottomoduli, il che significa è possibile riprodurre l'esperimento esattamente (in base al contenuto esatto di entrambi project e analysis).