Software -ul dezvoltat pentru cercetare sau de către cercetători poate fi dificil de menținut, având în vedere structurile de stimulare și finanțare din mediul academic. Acest lucru rămâne valabil pentru epidemiologie, cu un volum mare de software scris în timpul Pandemiei Covid-19, o mare parte din care acum este abandonware1. Acest lucru nu înseamnă că software-ul dezvoltat pentru a înțelege pandemia Covid-19 a fost rău sau nu are utilitate în înțelegerea epidemiilor și pandemicelor viitoare, ci doar că capacitatea de a menține și dezvolta în continuare aceste instrumente nu este disponibilă acum, pandemia nu mai este considerată o urgență acută de sănătate publică.
Aceste probleme în ceea ce privește sustenabilitatea software -ului și structurile academice care împiedică longevitatea software -ului au fost ridicate de Kucharski, Funk și Eggo (2020) și au fost unul dintre motivele principale ale inițiativei Epiverse-Trace. Alături de software -ul în curs de dezvoltare (pachete R), Epiverse are, de asemenea, un angajament de a sprijini comunitatea dezvoltatorilor de pachete în epidemiologie și analitice de focar. Inițiativa încearcă, de asemenea, să îmbunătățească colaborarea comunitară și contribuția prieteniei software-ului open-source.
Această postare pe blog evidențiază unele lucrări recente ale inginerilor software EPIVERSE pentru a colabora la software de cercetare sau cercetare, pentru a ajuta la îmbunătățirea unui pachet R care a fost inițial scris în primele zile ale Pandemiei Covid-19 (ianuarie 2020-mai 2020) pentru a evalua eficacitatea izolării și a eficacității de urmărire a contactelor de urmărire (Hellewell și colab. 2020). Acesta a construit pe codul scris pentru focarul Ebola 2014-2016 din Africa de Vest pentru a oferi informații despre vaccinarea cu inel (Kucharski și colab. 2016). Aceste aplicații și natura generală a întrebărilor pe care le adresează pachetul sugerează că ar putea fi de mare ajutor în viitoarele focare de boli infecțioase, dar nu au lipsit resursele dezvoltatorilor fără priorități legate de pandemie.
Pachetul R.
Pachetul R în cauză este {ringbp}. Pachetul are două funcționalități: 1) pentru a simula un focar de boală infecțioasă folosind un model de proces de ramificare cu intervenții non-farmaceutice; și 2) pentru a calcula proporția de focare simulate care sunt conținute (adică nu provoacă o epidemie mare susținută de om-umană). Utilitatea cadrului general al modelului pachetului a fost demonstrată prin servirea ca șablon pentru alte cercetări epidemiologice, cum ar fi profilaxia post-expunere, efectele rețelei asupra controlului (Firth și colab. 2020) și impactul auto-raportării și aderării la izolare (Davis și colab. 2020).
Problema
Este de înțeles că, deoarece {Ringbp} a fost scris în grabă pentru a produce informații pentru a informa răspunsul pandemic, nu a respectat toate cele mai bune practici software. Utilizabilitatea, documentația, testarea, stilul de cod și performanța (calculațională) ar putea fi îmbunătățite. Anumite aspecte ale codului modelului, cum ar fi parametrizările, au fost codate greu, nefiind oferind utilizatorilor flexibilitatea completă pe care modelul ar putea să o permită.
Contribuție Epiverse
În ultimele luni, Epiverse a colaborat cu {ringbp} dezvoltatori SEB Funk (de asemenea, membru al Epiverse) și Carl Pearson (colaborator extern), cu sediul la London School of Igiene și Medicină tropicală și, respectiv, la Universitatea din Carolina de Nord, pentru a încerca să îmbunătățească pachetul R, atât intern, cât și din partea utilizatorului-experimental. Următoarele secțiuni vor oferi scurte rezumate ale unora dintre evoluțiile de colaborare.
Interfață de utilizator
Experiența de utilizator (API) a pachetului a fost refactorizată. Principala funcție de simulare scenario_sim() rămâne, dar argumentele sale au fost modulare pentru a grupa mai bine parametrii modelului și argumentele de control. Acest lucru face, de asemenea, pachetul mai ușor de dezvoltat în continuare, fără a introduce neapărat multe schimbări de rupere și împiedică extinderea numărului de argumente de funcții de nivel superior.
Vechi
scenario_sim( n.sim = 5, num.initial.cases = 5, cap_max_days = 365, cap_cases = 2000, r0isolated = 0, r0community = 2.5, disp.iso = 1, disp.com = 0.16, k = 0.7, delay_shape = 2.5, delay_scale = 5, prop.asym = 0, prop.ascertain = 0 )
Nou
scenario_sim( n = 5, initial_cases = 5, offspring = offspring_opts( community = (n) rnbinom(n = n, mu = 2.5, size = 0.16), isolated = (n) rnbinom(n = n, mu = 0, size = 1), asymptomatic = (n) rnbinom(n = n, mu = 2.5, size = 0.16) ), delays = delay_opts( incubation_period = (n) rweibull(n = n, shape = 2.32, scale = 6.49), onset_to_isolation = (n) rweibull(n = n, shape = 2.5, scale = 5) ), event_probs = event_prob_opts( asymptomatic = 0, presymptomatic_transmission = 0.3, symptomatic_ascertained = 0 ), interventions = intervention_opts(quarantine = TRUE), sim = sim_opts( cap_max_days = 365, cap_cases = 2000 ) )
Noua API oferă utilizatorului un control mai mare asupra parametrizării modelului. Perioada de incubație este acum specificată de utilizator în loc să fie setată la o estimare pentru CovID-19. Sunt specificate funcțiile de descendență și de întârziere de distribuție a întârzierii înseamnă, de asemenea, că orice formă distribuțională sau non-parametrică poate fi furnizată, relaxând presupunerea că debutul la izolare trebuie să fie o distribuție weibull.
Utilizatorii pot acum să specifice proporția de transmisie presimptomatică, mai degrabă decât trebuie să înțeleagă parametrizarea normală a skew utilizată de modelul de simulare, ceea ce face mai ușor să înceapă cu pachetul pentru utilizatorii noi.
În cele din urmă, la modificările orientate cu utilizatorul, denumirea și stilul argumentelor funcționale au fost standardizate pentru utilizarea constantă a stilului SnakeCase și a prescurtărilor.
Documentare
Documentația funcțională a fost deja folosită {roxygen2}, dar nu a folosit moștenirea sau a documentat în mod cuprinzător ieșirea sau utilizarea funcției. Am folosit @inheritParams de la {roxygen2} la deduplicat, adăugat @return Documentare la toate funcțiile. De asemenea, am îmbunătățit documentația argumentului funcției urmând o structură a: de exemplu:
@param sim a `list` with class ``: the simulation control options for the pkg{ringbp} model, returned by (sim_opts())
Funcțiile exportate au acum exemple informative (@examples) pentru a prezenta modul în care trebuie utilizate funcțiile. Exemple de funcții acum rulează întotdeauna (eliminarea dontrun{}) pentru a prinde erori.
Pachetul {Roxyglobals} a fost adăugat pentru a automatiza gestionarea variabilelor globale cu utilizarea @autoglobal etichetă.
Vignetele sunt utile documentație de pachete de formă lungă. Până acum am adăugat o vinie la pachet și intenționăm să adăugăm mai multe, acolo unde este relevant.
Remedieri de erori
Poate mai important că oricare dintre cele mai bune practici software și interfața de utilizator este corectitudinea codului. În evoluțiile noastre am descoperit câteva bug -uri în versiunea anterioară a {Ringbp}. Au fost identificate și fixate erori în momentul în care se încadrează în carantină, eșantionarea de la distribuția de la debut-isolation și calcularea timpului de generare din perioada de incubație.
Testare
- Testarea regresiei corectitudinii (instantanee) de simulare (instantanee)
Diverse
Există diverse alte modificări în {Ringbp} din munca noastră. Exemple includ: verificarea intrării, nu specificarea valorilor implicite ale funcției eronate, actualizarea site -ului web al pachetului și funcțiile care revin data.table Obiectele nu se mai întorc în tăcere. Menționat în introducere, performanța modelului a fost îmbunătățită treptat, dar nu ne -am concentrat pe acest aspect, iar pachetul va beneficia de timpul petrecut concentrându -se pe acest lucru în viitor; Mai ales dacă setul și complexitatea intervențiilor non-farmaceutice în model se extinde.
Concluzie
Pachetul {Ringbp} R implementează un model simplu, dar informativ, pentru transmiterea și intervențiile bolii infecțioase. Când a fost scris inițial, a inclus multe aspecte bine dezvoltate, dar constrângerile de timp ale răspunsului la focar în timp real au însemnat mai multe îmbunătățiri.
Epiverse-TRACE are oportunitatea de a dezvolta nu numai un instrument de pregătire și răspuns la pandemie, ci și de a contribui la ecosistemul software-ului open-source în epidemiologia bolii infecțioase. Sperăm că, prin acoperirea evoluțiilor colaborative ale {Ringbp}, poate ilustra beneficiile aducerii software -ului la zi cu cele mai bune practici și să facă instrumente disponibile, accesibile și robuste atunci când apare o nouă epidemie sau pandemie, la rândul său, în mod sperăm, eliminând necesitatea reamenajării software -ului similar în viitor.
Îmbunătățirea accesibilității software -ului pentru utilizatori și dezvoltatori prin îmbunătățirea documentației sale și a interfeței de utilizator va oferi speranță o poartă pentru mai mulți contribuabili externi să se angajeze cu proiectul. În peisajul de sănătate publică a creșterii temporale în ceea ce privește capacitatea și prioritățile, mai bine permițând contribuțiile comunității la software-ul open-source ar trebui să ajute sustenabilitatea software-ului.
Mulțumiri
Mulțumim Seb Funk și Carl Pearson pentru feedback util atunci când redactați acest post și pentru colaborarea lor în proiectul {Ringbp}.
Referințe
Davis, Emma L., Tim CD Lucas, Anna Borlase, Timothy M. Pollington, Sam Abbott, Diepreye Ayabina, Thomas Crellen și colab. 2020. „Un instrument imperfect: urmărirea contactelor ar putea oferi reduceri valoroase în COVID 19 Transmitere dacă se poate realiza și menține o bună aderare. ” https://doi.org/10.1101/2020.06.09.20124008.
Firth, Josh A., Joel Hellewell, Petra Klepac, Stephen Kissler, CMMID COVID-19 Working Group, Mark Jit, Katherine E. Atkins și colab. 2020. „Utilizarea unei rețele din lumea reală pentru modelarea localizată COVID 19 Strategii de control. ” Medicina naturii 26 (10): 1616–22. https://doi.org/10.1038/S41591-020-1036-8.
Hellewell, Joel, Sam Abbott, Amy Gimma, Nikos I Bosse, Christopher I Jarvis, Timothy W Russell, James D Munday și colab. 2020. „Fezabilitatea controlului COVID 19 Focare prin izolarea cazurilor și contactelor. ” Lancet Global Health 8 (4): E488–96. https://doi.org/10.1016/S2214-109X(20)30074-7.
Kucharski, Adam J., Rosalind M. Eggo, Conall H. Watson, Anton Camacho, Sebastian Funk și W. John Edmunds. 2016. „Eficacitatea Vaccinare în inel ca Strategia de control pentru Boala virusului Ebola. ” Boli infecțioase emergente 22 (1): 105–8. https://doi.org/10.3201/eid2201.151410.
Kucharski, Adam J., Sebastian Funk și Rosalind M. Eggo. 2020. „The COVID 19 Răspunsul ilustrează faptul că structurile și valorile tradiționale de recompensă academice nu reflectă contribuții cruciale la știința modernă. ” Biologie PLOS 18 (10): E3000913. https://doi.org/10.1371/journal.pbio.3000913.
Reutilizați
Citare
Citarea Bibtex:
@online{w._lambert2025,
author = {W. Lambert, Joshua},
title = {Epiverse Community Engagement and Software Sustainability for
Research Software},
date = {2025-08-25},
url = {https://epiverse-trace.github.io/posts/epi-community-contrib/},
langid = {en}
}
Pentru atribuire, vă rugăm să citați această lucrare ca:
W. Lambert, Iosua. 2025. „Implicarea comunității EPIVERSE și sustenabilitatea software -ului pentru software de cercetare.” 25 august 2025. Https://epiverse-trace.github.io/posts/epi-community-contrib/.
