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.