Pipeline cu mai multe limbi cu rixpress | R-BLOGGERS

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

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

Miniatură videoMiniatură video

Î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, sau nix_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, folosind reticulate Î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() (şi rxp_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}) și rxp_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 genul rxp_list_logs(), rxp_inspect(which_log = "...")și rxp_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.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.