A mesura que la quantitat de dades en l’àrea de ciències de la vida i en altres àrees del coneixement augmenta exponencialment, sorgeix la necessitat d’estructurar i manejar sistemàticament la informació adquirida. Que les dades que manegem segueixin els principis FAIR és fonamental per a la correcta manipulació de les dades i de la seva traçabilitat al llarg del cicle de vida de la dada. A més, hi ha dos processos fonamentals, els quals estudiarem en els propers temes, que són l’escalabilitat i la reproductibilitat.
Tradicionalment, per tal de minimitzar el nombre de passos manuals que es duen a terme en una anàlisi, els processos s’han unit programàticament en els anomenats pipelines. Aquesta concatenació de processos normalment s’estructura en arxius (scripts). Aquest tipus d’automatització normalment comporta una elevada dependència en les versions del programari instal·lades i en l’arquitectura local de l’ordinador en el qual es processa.
Com segurament ja heu vist, llenguatges de programació com Python, bash, R, etc. executen el que s’anomenen paquets. Els paquets poden contenir programes que poden ser utilitzats per poder processar les dades a analitzar. Un paquet per si sol normalment no té tot el codi necessari per realitzar les seves funcions i en necessita d’altres per tal d’executar-les. D’aquesta manera es reutilitza codi, minimitzant el temps de desenvolupament d’un paquet i creant eines més robustes. Per poder gestionar les dependències que un paquet té sobre d’altres van aparèixer els gestors de paquets (apt, yum, Home Brew, pip…).
En el procés d’utilització i actualització dels paquets ens podem trobar amb diverses dificultats. Durant el desenvolupament d’un paquet és possible que una funció es vegi modificada, alterant les dades d’entrada o sortida, o eliminada en una versió més recent del paquet. En el moment en què diferents paquets depenen d’aquesta funció es poden produir problemes de compatibilitat i no és suficient saber que un paquet depèn d’un altre sinó també si depèn d’una versió en específic. L’actualització d’un paquet pot representar que un altre paquet ja no funcioni. Això comportaria la necessitat d’instal·lar dues versions diferents del mateix software, fet que moltes vegades no és possible. Una altra problemàtica associada a les versions dels paquets és la reproductibilitat de resultats en sistemes diferents. Dos ordinadors podrien tenir instal·lats els mateixos paquets i les seves dependències, però amb versions diferents, produint resultats diferents. En projectes multicèntrics de vegades cal executar els mateixos processos en cadascuna de les institucions implicades, amb la seguretat que no hi haurà variabilitat en els resultats a causa del processament de les dades.
Així, hem de controlar:
- La utilització dels mateixos paquets i de les seves dependències.
- La implementació en altres entorns computacionals, evitant que la configuració local alteri el resultat final.
Per mantenir una configuració estable i aplicable a diferents infraestructures computacionals, fonamentalment hi ha dues estratègies a seguir: la creació d’entorns fixos i la creació de contenidors.