What's new
All notable changes to the codebase are documented in this file.
Version 1.5.0 (2026-03-13)
Interventions
- Refactor ART and VMMC coverage input: accept scalar, dict, or DataFrame formats with flexible column names (#126)
- Add
art_coverageanalyzer for tracking ART coverage by age and sex - Simplify
art_initiation: accept plain number, dropinit_probbackward compat - Guard pregnancy/maternalnet access in HIV and syphilis interventions so they work without a pregnancy module (#319)
- Document HIV intervention pipeline and ordering (#314)
HIV
- Add
aidsproperty to HIV module (cd4 < 200) - Fix
dur_on_artbeing silently scaled bydur_on_art_trend: default is nowNone(#336) - Add time-varying ART duration and wider care-seeking distribution
- Add custom module support to Sim constructor (#318)
Syphilis dynamics
- Fix
Syphilis.infect(): userel_trans=1for maternal transmission, stage-specific for sexual - Fix
NewbornTreatmentto detect MTC-infected babies (susceptible=False, congenital not yet fired) - Fix congenital syphilis over-counting: clear
ti_*after events fire, mark babies non-susceptible after MTC - Add
step_dieto Syphilis to clear states on death - Add
n_infectionscounter andnew_reinfectionsresult
Calibration API
- New dot-notation parameter routing:
'hiv.beta_m2f'automatically finds and sets the right module parameter viasim.get_module()(requires Starsim 3.2.0+) - Support nested parameter format:
dict(hiv=dict(beta_m2f=dict(low=..., high=...)))alongside flat{'hiv.beta_m2f': dict(...)} - Add
flatten_calib_pars()to normalize between nested and flat formats - Add
set_sim_pars(sim, pars)for setting calibrated parameters on any sim (pre- or post-init) - Add
Calibration.get_pars(n)to extract top-N parameter sets as flat dicts - Add
make_calib_sims()for creating and running sims from calibrated parameters, with filtering (check_fn) and seed replication (seeds_per_par) - Add
Calibration.save()method for shrink/save workflow (replaces manual shrink + saveobj boilerplate) - No custom
build_fnneeded --default_build_fnhandles all module types automatically
Documentation
- Add calibration tutorial with ABC philosophy, custom analyzer fitting, production workflow
- Update co-transmission tutorial: HIV-syphilis example with epidemiological explanation of connector effects
- Add custom results section to results tutorial
- Cross-link calibration and results tutorials
Tests
- Add HIV natural history verification test suite: CD4 decline, transmission doubling, MTCT, AIDS property (#178, #226, #227, #228, #237, #238, #295)
- Add HIV intervention tests: ART coverage formats, duration, effects, parameter sensitivity
- Add
testlib.pywith sharedbuild_testing_sim()helper
Version 1.4.9 (2026-02-24)
- Add
default_build_fnfor calibration: routes parameters by prefix (hiv_*,syph_*,nw_*) to diseases and networks automatically, removing need for custombuild_fn sti.Calibrationnow usesdefault_build_fnwhen nobuild_fnis provided- Fix
make_df()time column to use years fromtimevecinstead of integer index - Fix
parse_study()to guardsim_resultsreordering whensave_results=False - Fix calibration data column names to use dot notation (
hiv.prevalence) - Standardize import conventions:
import stisim as sti,import hivsim(no alias)
Version 1.4.8 (2026-02-23)
- Add
hivsim_examplespackage withsimpleandzimbabwepre-configured examples - Add
hs.demo()function for quickly running example HIV simulations (e.g.hs.demo('zimbabwe')) - Add
Sim.plot()override that auto-selects curated HIV result keys when HIV is present - Add
dataparameter tosti.Simfor passing comparison data (e.g. UNAIDS estimates) to starsim's plot overlay - Fix
process_demographics()to usetotal_popfrom sim_pars when set, and correctly scale age data (values in thousands) - Fix
separate_pars()so kwargs overridesim_parsdefaults (e.g.stop=1995overridessim_pars=dict(stop=2025)) - Fix
get_age_distribution()to handle CSV files without ayearcolumn
Version 1.4.7 (2026-02-20)
- Fix bugs in coinfection analyzer: age limit typo, variable name errors for male results
- Remove STIsim Pregnancy module, now superseded by the Starsim Pregnancy module
- Add exposed/incubation period for syphilis (
dur_exposed), and allow maternal transmission during this stage - Rename syphilis birth outcome key
activetomat_activeto reflect inclusion of exposed stage - Add
.vscode/and*.code-workspaceto.gitignore
Version 1.4.6 (2026-02-20)
- Add sensible
beta_m2fdefaults for all diseases (NG: 0.06, CT: 0.06, TV: 0.1, HIV: 0.05, syphilis: 0.1) - Add
rel_trans_hiv_ngparameter to the HIV-NG connector - Fix connector handling in
Sim.init()when a single connector is passed - Set
auto_plot=Falseon subpopulation, care-seeking, and detail results sosim.plot()shows only high-level results - Add tutorials: intro (gonorrhea), co-transmission, results/plotting, and interventions
- Add user guide pages for interventions (testing, treatment, ART, VMMC, PrEP)
- Update disease docs with
beta_m2fdefaults and per-act description - Pre-build font cache in docs CI workflow
Version 1.4.5 (2026-02-20)
- Fix BV trimester KeyError during initialization
- Add documentation: intro tutorial, disease reference pages, and network guide
- Configure mkdocs to execute notebooks and add user guide structure
- Update README with Python/R install instructions and example repos
- Move devtests to
tests/devtests/and renametest_hivtodevtest_hiv
Version 1.4.3 (2025-12-08)
- Patch to add super calls to init_results for analyzers
- GitHub info: PR 160
Version 1.4.2 (2025-11-28)
- Patch to ensure that products have different names
- Add
ti_exposedattribute to HIV module - GitHub info: PR 150
Version 1.4 (2025-08-12)
- Add location arg and Sim class
- Update to work with Starsim v3.
- GitHub info: PR 148
Version 1.3 (2025-06-27)
- Fixes to the pair-matching algorithm within the sexual network to better align partner ages
- Improvements to networks, including analyzers for debut age and partner age differences
- GitHub info: PR 143
Version 1.2 (2025-06-10)
- Improvements to networks, including analyzers for relationship duration and network degree
- Adds a
PriorPartnersnetwork for recalling past relationships - for use in partner notification - GitHub info: PR 135
Version 1.1.2 (2025-06-03)
- Bugfix to calibration class for multisims
- GitHub info: PR 138
Version 1.1.1 (2025-05-23)
- Bugfixes to calibration class and BV connector
- Replaces the
match_pairsmethod of theStructuredSexualnetwork with the faster option that was previously in theFastStructuredSexualnetwork (now removed). - GitHub info: PR 124
Version 1.1.0 (2025-05-13)
- Improvements to the Calibration class: this class now inherits directly from the Starsim calibration class, so users will have access to easier parameter constraints, plotting, flexible fit functions, etc
- Generalization of the coinfection class to handle any two diseases
- Addition of a more detailed BV model
- GitHub info: PR 119
Version 1.0.5 (2025-05-08)
- Adds results for syphilis transmission by disease stage
- GitHub info: PR 112
Version 1.0.4 (2025-05-07)
- Adds results for overtreatment among pregnant women
- GitHub info: PR 111
Version 1.0.3 (2025-04-30)
- Bugfixes for congenital syphilis
- GitHub info: PR 85
Version 1.0.2 (2025-04-14)
- Bugfixes for syphilis and GUD
- GitHub info: PR 83
Version 1.0.1 (2025-03-31)
- Track HIV prevalence for 15-49 year olds
- GitHub info: PR 79
Version 1.0.0 (2024-12-11)
- Updates to work with Starsim v2.2.1
- GitHub info: PR 63
Version 0.2.0 (2024-11-01)
- Updates to work with Starsim v2.0
- GitHub info: PR 62
Version 0.1.0 (2024-10-02)
- Collection of updates related to the NG/CT/TV work
- GitHub info: PR 59
Version 0.0.2 (2024-06-07)
- Initial version of STIsim with structured sexual networks, models of HIV and syphilis, worksflows for model calibration, and interventions for testing and treatment.
- GitHub info: PR 22
Version 0.0.1 (2024-05-15)
- Pre-release version