Pharmaverse și Containers | R-bloggeri

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

(Acest articol a fost publicat pentru prima dată pe blogul pharmaverseși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.


Optimizarea blogului nostru Pharmaverse: reducerea timpului de publicare cu containere

În calitate de colaborator activ al blogului pharmaverse, am apreciat întotdeauna oportunitatea de a împărtăși noi perspective și instrumente comunității noastre. Blogul pharmaverse are câteva caracteristici interesante pentru publicare. Deși procesul de publicare a blogului a fost eficient, mă întrebam dacă există o modalitate de a ne optimiza fluxurile de lucru. În prezent, canalul CI/CD pentru publicarea blogului a durat de obicei aproximativ 17 minute pentru a implementa o nouă postare. Containerele sunt întotdeauna răscolite ca soluții. Din păcate, nu eram sigur cum să creez un nou container/imagine pentru a-mi satisface nevoile și m-am bazat pe unele drepte install.packages() în conducta CI/CD. Din fericire, m-am încrucișat cu fabulosul Maciej Nasinski și am construit un container specific pentru procesul de publicare pentru blogul pharmaverse, ceea ce a permis o reducere notabilă a timpului de publicare.

Mai jos voi discuta despre modul în care imaginea containerului pharmaverse a îmbunătățit fluxul de lucru de publicare al blogului nostru, reducând timpul de implementare la aproximativ 5 minute. De asemenea, suntem interesați de feedback cu privire la alte posibile utilizări ale acestui container (cum ar fi devcontainers) sau construirea de containere suplimentare pentru anumite scopuri. Pentru cei interesați, am fi bucuroși să oferim un tutorial despre containere sau să luăm legătura dacă aveți idei sau doriți să vă implicați!

Abordarea anterioară: Instalarea pachetului general

Secțiunea relevantă a vechiului nostru job de build-deploy a evidențiat acest lucru:

  build-deploy:
    # ... other configurations ...
    steps:
      # ... checkout and setup Quarto ...
      - name: Setup R
        uses: r-lib/actions/setup-r@v2
        with:
          use-public-rspm: true

      - name: Install dependencies
        uses: r-lib/actions/setup-r-dependencies@v2
        with:
          packages: |
            jsonlite
            tidyverse
            spelling
            janitor
            diffdf
            admiral
            admiralonco
            # ... and many, many more packages ...
            haven
      # ... other steps like install tinytex and publish ...

Acest pas „Instalați dependențe”, care implică o listă substanțială de pachete pharmaverse, a contribuit principal la timpul de execuție de 17 minute. Fiecare rulare a fluxului de lucru a implicat descărcarea și configurarea acestor pachete, prelungind durata totală de implementare.

Adoptarea imaginii containerului pharmaverse: o alternativă eficientă

Soluția la această provocare a venit odată cu introducerea imaginii containerului pharmaverse: ghcr.io/pharmaverse/docker_pharmaverse:4.5.1. Această imagine a containerului a fost concepută special pentru analiza datelor farmaceutice, prezentând peste 40 de pachete esențiale pharmaverse preinstalate. Aceste pachete acoperă diferite funcționalități, inclusiv CDISC ADaM/SDTM, raportarea studiilor clinice și trimiterile de reglementare. Construit pe imaginea rocker/tidyverse și încorporând R 4.5.1, oferă un mediu preconfigurat.

Iată o prezentare generală a jobului nostru actualizat de build-deploy:

  build-deploy:
    needs: Update-post-dates
    runs-on: ubuntu-latest
    container:
      image: "ghcr.io/pharmaverse/docker_pharmaverse:4.5.1"
    permissions:
      contents: write
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Configure Git safe directory
        run: git config --global --add safe.directory /__w/blog/blog

      - name: Set up Quarto
        uses: quarto-dev/quarto-actions/setup@v2
        with:
            version: 1.9.12

      # NOTE: Explicit R package installation is no longer required here.

      - name: Install tinytex
        run: quarto install tool tinytex

      - name: Mark repo directory as safe
        run: git config --global --add safe.directory /__w/blog/blog

      - name: Publish
        uses: quarto-dev/quarto-actions/publish@v2
        with:
          path: . # Path to your .qmd file
          target: gh-pages  # Target branch for GitHub Pages
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Rezultatul acestei schimbări a fost o reducere consistentă a timpului de publicare. Blogul nostru se publică acum în aproximativ 5 minute. Yay!

Aplicații mai largi ale imaginii containerului Pharmaverse

În timp ce această actualizare beneficiază direct publicarea blogului nostru, imaginea containerului pharmaverse oferă o utilitate mai largă. Este o resursă valoroasă pentru:

  • Analiza datelor farmaceutice: sarcini de sprijin legate de ADaM, SDTM și TLF.
  • Programarea studiilor clinice: Asistență cu trimiterile de reglementare.
  • Cercetare reproductibilă: oferirea unui mediu consistent și verificabil.
  • Instruire și educație: oferind o configurație gata de utilizare în scopuri educaționale.
  • Conducte CI/CD: îmbunătățirea testării și raportării automate, așa cum se observă în propriul nostru flux de lucru.
  • Dezvoltare colaborativă: facilitarea unor medii consistente între echipe.

Exemplu: Rularea reproductibil RStudio local

Pentru a porni o instanță locală RStudio folosind imaginea pharmaverse, puteți utiliza un container „o singură linie”. Această comandă condensează întreaga configurație – rețea, stocare și execuție în fundal – într-un singur șir de execuție. Conectează folderul local cu containerul, permițându-vă să editați fișiere „din zbor” fără a instala R sau pachete pe mașina dvs. reală.

Alegeți comanda care se potrivește cu sistemul dvs. de operare:

1. Mac-uri Linux și Intel (Standard)

Pentru arhitectura standard, setăm o parolă simplă (rstudio) și montați directorul curent.

docker run -d --name my_pharma_rstudio --rm -p 8787:8787 -e PASSWORD=rstudio -v "$(pwd)":/home/rstudio/project ghcr.io/pharmaverse/docker_pharmaverse:4.5.1

2. Apple Silicon (M1/M2/M3)

Nota: Încă nu acceptăm în mod nativ arhitectura ARM64 (de exemplu, Apple Silicon). Comanda de mai jos folosește emularea (--platform linux/amd64) pentru a rula imaginea. Dezactivăm, de asemenea, autentificarea, deoarece viteza mai lentă de emulare poate cauza uneori expirarea timpului de configurare a parolei.

docker run -d --name my_pharma_rstudio --rm --platform linux/amd64 -p 8787:8787 -e DISABLE_AUTH=true -v "$(pwd)":/home/rstudio/project ghcr.io/pharmaverse/docker_pharmaverse:4.5.1

Ce face această comandă?

  • **--rm & -d**: rulează containerul în fundal (detașat) și îl îndepărtează automat când este oprit, păstrând mașina curată.
  • -v "$(pwd)":...: Îți ia Psupărat Working Directory și îl montează în interiorul containerului. Orice fișier pe care îl salvați în folderul „proiect” al RStudio este salvat instantaneu pe computerul local.
  • --platform linux/amd64 (doar Mac): Forțează computerul să emuleze arhitectura Intel cerută de imagine.
  • -e DISABLE_AUTH=true (doar Mac): Ocolește ecranul de conectare pentru a asigura accesul imediat, în ciuda vitezei mai lente de emulare.

Accesarea RStudio

Odată ce comanda rulează:

  1. Deschideți browserul pentru http://localhost:8787.
  2. Linux/Intel: Conectați-vă cu utilizatorul rstudio si parola rstudio.
  3. Apple Silicon: Veți fi autentificat automat.

Veți vedea fișierele locale mapate la project folder din panoul Fișiere, gata pentru analiză.

Ultima actualizare

2026-01-18 22:21:19.079894

Detalii

Reutilizați

Citare

citat BibTeX:

@online{straub_and_maciej_nasinski2026,
  author = {Straub and Maciej Nasinski, Ben},
  title = {Pharmaverse and {Containers}},
  date = {2026-01-18},
  url = {https://pharmaverse.github.io/blog/posts/2026-01-18_pharmaverse_containers/pharmaverse_and__containers.html},
  langid = {en}
}

Pentru atribuire, vă rugăm să citați această lucrare ca:

Straub și Maciej Nasinski, Ben. 2026. „Pharmaverse și containere”. 18 ianuarie 2026. https://pharmaverse.github.io/blog/posts/2026-01-18_pharmaverse_containers/pharmaverse_and__containers.html.

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.