Skip to content

Examples

This section provides practical examples of TBsim usage across different scenarios and applications.

Basic TB Simulation

The simplest way to run a TB simulation:

from tbsim import TB_EMOD
import starsim as ss

# Create a basic TB simulation
sim = ss.Sim(diseases=TB_EMOD())

# Run the simulation
sim.run()

# Plot results
sim.plot()

TB with Interventions

Adding BCG vaccination and treatment interventions:

from tbsim.interventions.bcg import BCGRoutine
from tbsim.interventions.tpt import TPTSimple
from tbsim import TB_EMOD
import starsim as ss

# Add TB module and interventions
tb = TB_EMOD()
bcg = BCGRoutine(pars=dict(
    coverage=ss.bernoulli(p=0.8),
    start=ss.date('1980-01-01'),
    stop=ss.date('2030-12-31'),
    age_range=[0, 5],
))
tpt = TPTSimple(pars=dict(
    start=ss.date('1990-01-01'),
    stop=ss.date('2030-12-31'),
))

sim = ss.Sim(
    diseases=tb,
    interventions=[bcg, tpt],
    pars=dict(start=ss.date('1975-01-01'), stop=ss.date('2030-12-31')),
)
sim.run()

TB-HIV Comorbidity

Modeling TB and HIV together:

from tbsim.comorbidities.hiv import HIV
from tbsim import TB_EMOD
import starsim as ss

# Add both modules
tb = TB_EMOD()
hiv = HIV()

sim = ss.Sim(diseases=[tb, hiv])
sim.run()

Household Networks

Using household-based social networks:

from tbsim.networks import HouseholdNet
from tbsim import TB_EMOD
import starsim as ss

# Create household network and TB
households = HouseholdNet()
tb = TB_EMOD()

sim = ss.Sim(
    networks=households,
    diseases=tb
)
sim.run()

Advanced Analysis

Using the built-in analyzers:

from tbsim import TB_EMOD
from tbsim.analyzers import DwellTime
import starsim as ss

# Run simulation with dwell time analyzer
sim = ss.Sim(diseases=[TB_EMOD()], analyzers=DwellTime(scenario_name="Baseline"))
sim.run()

# Create plots from the analyzer
sim.analyzers[0].plot('sankey')
sim.analyzers[0].plot('histogram')
sim.analyzers[0].plot('kaplan_meier')

Parameter Sweeps

Running multiple parameter combinations:

from tbsim import TB_EMOD
import starsim as ss
import numpy as np

# Define parameter ranges
transmission_rates = np.linspace(0.1, 0.5, 5)

results = []
for rate in transmission_rates:
    sim = ss.Sim(diseases=TB_EMOD(pars={'beta': ss.peryear(rate)}))
    sim.run()
    results.append(sim.results)

Script Examples

The tbsim_examples/ directory contains ready-to-run examples:

  • Basic TB: run_tb.py - Simple TB simulation
  • LSHTM Model: run_tb_lshtm.py - Spectrum of TB disease natural history
  • Malnutrition: run_malnutrition.py - TB and malnutrition comorbidity
  • TB-HIV: run_tbhiv.py - TB-HIV coinfection model
  • Interventions: run_tb_interventions.py - BCG, TPT, and beta scenarios
  • Health Seeking: run_health_seeking.py - Health-seeking behaviour with the LSHTM TB model

For more detailed tutorials and step-by-step guides, see the tutorials section.