Dacă doriți să vizionați o introducere video de 2 minute la {rixpress}faceți clic pe imaginea de mai jos:

În august anul trecut am încercat să văd cum s -ar putea folosi NIX ca instrument de automatizare construit pentru conductele de știință a datelor, iar în martie anul acesta, am început să lucrez la un pachet R care să faciliteze configurarea unor astfel de conducte ușoare, despre care am discutat deja în postarea mea anterioară.
După câteva săptămâni de muncă, cred că asta {rixpress} este în etapa în care poate fi deja destul de util pentru mulți oameni. {rixpress} Vă ajută să vă configurați proiectele ca o conductă de pași complet reproductibili. {rixpress} este un pachet soră {rix} Și împreună fac ca adevărata reproductibilitate de calcul să fie mai ușor de realizat. {rix} Face ușor capturarea și reconstruirea mediului de calcul exact în care a fost executat codul și {rixpress} Vă ajută să vă îndepărtați de fluxurile de lucru bazate pe scripturi care pot fi dificil de executat și pot necesita o intervenție manuală.
Când am introdus prima dată {rixpress}a fost în esență o dovadă a conceptului. Ar putea gestiona o interacțiune de bază R și Python, dar a fost clar în etapele sale incipiente. De atunci am adăugat câteva caracteristici care cred că arată cu adevărat de ce utilizarea NIX ca motor de construcție de bază este o idee bună.
La fel ca pentru pachetul său soră {rix}Am făcut pasul pentru a trimite {rixpress} Pentru revizuirea de la egal la Ropensci. {rix} a beneficiat cu adevărat de recenzia de la Ropensci și cred că va fi la fel pentru {rixpress}.
Capabilitățile curente ale {rixpress}
Iată caracteristicile disponibile în prezent în {rixpress}:
-
O motivație cheie a fost simplificarea conductelor de construcție în care diferite etape ar putea necesita medii lingvistice diferite. Cu
{rixpress}aceasta este o caracteristică centrală: -
Definiți pașii în r (
rxp_r(),rxp_r_file()) sau piton (rxp_py(),rxp_py_file()) -
Important este că fiecare pas poate fi configurat pentru a rula în propriul mediu definit de Nix (de exemplu, utilizați
nix_env = "my-python-env.nix"pentru un pas de piton, saunix_env = "my-r-env.nix"pentru un pas r). Aceste medii pot fi generate folosind celălalt pachet,{rix}. -
Treceți date între pași R și Python.
{rixpress}gestionează serializarea, folosindreticulateÎn mod implicit, pentru conversia obiectului R/Python și permite, de asemenea, funcții personalizate pentru alte formate precum JSON sau fișiere specifice modelului. -
Construiți documente de quarto (sau R markdown) folosind
rxp_quarto()(şirxp_rmd()) Aceste documente pot accesa orice artefact (rxp_read("my_artifact")) din etapele precedente, indiferent de limbajul folosit pentru a -l genera. Redarea cvarto -ului poate apărea și în propriul mediu dedicat NIX. -
Fiecare pas într -un
{rixpress}Conducta este tratată ca o derivare a nix. Aceasta înseamnă că construiri ermetice, execuție cu sandbox și cache adresată de conținut, ceea ce duce la un grad ridicat de reproductibilitate (așa cum este de așteptat cu NIX). -
Pe măsură ce conductele cresc, vizualizarea este utilă.
rxp_ggdag()(folosind{ggdag}) șirxp_visnetwork()(folosind{visNetwork}) oferă o imagine de ansamblu vizuală a dependențelor.dag_for_ci()exportă DAG ca un{igraph}Format de fișier Dot, care poate fi apoi utilizat pentru vizualizarea bazată pe text pe CI. -
Există o documentație amplă și chiar o vinie care se deplasează cum să folosească
{cmdstanr}în cadrul unui{rixpress}conductă.{cmdstanr}Funcționează într -un mod specific, prin compilarea modelelor Stan la C ++, astfel încât acest lucru necesită o gestionare atentă a compilării și eșantionării modelului Stan în cadrul NIX Sandbox, demonstrând că instrumentele complexe pot fi integrate. -
Este posibil să se preia ieșiri din execuțiile anterioare ale conductelor.
{rixpress}Menține jurnalele de construire a timpului. Funcții de genulrxp_list_logs(),rxp_inspect(which_log = "...")șirxp_read("derivation_name", which_log = "...")Vă permite să accesați istoricul execuției conductei dvs. și să recuperați artefacte specifice.
O invitație pentru feedback
De ce să folosiți {rixpress} în loc de {ținte}?
{targets} este un pachet fantastic și principala sursă de inspirație a {rixpress}. Dacă nu aveți nevoie de conducte multilangive, atunci rulați {targets} În interiorul unui mediu NIX, așa cum este descris aici, este perfect valabil. Dar cred că asta {rixpress} își are locul dacă:
- Trebuie să utilizați mai multe limbi, deoarece nu aveți nevoie de codul Python adaptat pentru a lucra
{reticulate}, - Ești deja convins de Nix și de utilizare
{rix}, - Doriți să folosiți un instrument simplu de conducte, cu un domeniu mai mic.
