hpvsim 2.2.1__tar.gz → 2.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. hpvsim-2.2.6/.github/workflows/pypi_release.yaml +38 -0
  2. {hpvsim-2.2.1 → hpvsim-2.2.6}/.github/workflows/tests.yaml +5 -1
  3. {hpvsim-2.2.1 → hpvsim-2.2.6}/.readthedocs.yaml +5 -2
  4. {hpvsim-2.2.1 → hpvsim-2.2.6}/CHANGELOG.rst +30 -0
  5. {hpvsim-2.2.1 → hpvsim-2.2.6}/LICENSE +1 -1
  6. {hpvsim-2.2.1/hpvsim.egg-info → hpvsim-2.2.6}/PKG-INFO +7 -4
  7. {hpvsim-2.2.1 → hpvsim-2.2.6}/README.rst +5 -2
  8. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/page.html +0 -9
  9. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/conf.py +0 -3
  10. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/requirements.txt +1 -1
  11. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/analysis.py +4 -2
  12. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/calibration.py +1 -0
  13. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/loaders.py +2 -0
  14. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/products_dx.csv +112 -0
  15. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/products_tx.csv +16 -0
  16. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/products_txvx.csv +4 -0
  17. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/products_vx.csv +6 -0
  18. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/hiv.py +10 -10
  19. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/immunity.py +1 -1
  20. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/interventions.py +12 -13
  21. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/parameters.py +66 -1
  22. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/people.py +1 -0
  23. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/version.py +3 -3
  24. {hpvsim-2.2.1 → hpvsim-2.2.6/hpvsim.egg-info}/PKG-INFO +7 -4
  25. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim.egg-info/SOURCES.txt +2 -1
  26. hpvsim-2.2.6/hpvsim.egg-info/entry_points.txt +2 -0
  27. {hpvsim-2.2.1 → hpvsim-2.2.6}/pyproject.toml +4 -1
  28. hpvsim-2.2.6/tests/baseline.json +60 -0
  29. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/benchmark.json +3 -3
  30. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_sim.py +0 -1
  31. hpvsim-2.2.1/docs/robots.txt +0 -2
  32. hpvsim-2.2.1/tests/baseline.json +0 -60
  33. {hpvsim-2.2.1 → hpvsim-2.2.6}/.gitignore +0 -0
  34. {hpvsim-2.2.1 → hpvsim-2.2.6}/CODE_OF_CONDUCT.rst +0 -0
  35. {hpvsim-2.2.1 → hpvsim-2.2.6}/MANIFEST.in +0 -0
  36. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/Makefile +0 -0
  37. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/README.md +0 -0
  38. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_static/theme_overrides.css +0 -0
  39. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/custom-class-template.rst +0 -0
  40. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/custom-function-template.rst +0 -0
  41. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/custom-module-template.rst +0 -0
  42. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/footer_end.html +0 -0
  43. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/footer_start.html +0 -0
  44. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/_templates/navbar-side.html +0 -0
  45. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/api/index.rst +0 -0
  46. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/build_docs +0 -0
  47. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/images/favicon.ico +0 -0
  48. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/images/idm-logo-transparent.png +0 -0
  49. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/index.html +0 -0
  50. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/index.rst +0 -0
  51. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/overview.rst +0 -0
  52. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/README.rst +0 -0
  53. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/clean_outputs +0 -0
  54. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/example_cancer_cases.csv +0 -0
  55. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/nigeria_cancer_cases.csv +0 -0
  56. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/nigeria_cancer_types.csv +0 -0
  57. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/south_africa_age_pyramid.csv +0 -0
  58. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_analyzers.ipynb +0 -0
  59. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_calibration.ipynb +0 -0
  60. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_interventions.ipynb +0 -0
  61. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_intro.ipynb +0 -0
  62. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_people.ipynb +0 -0
  63. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_plotting.ipynb +0 -0
  64. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials/tut_running.ipynb +0 -0
  65. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/tutorials.rst +0 -0
  66. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/variables.txt +0 -0
  67. {hpvsim-2.2.1 → hpvsim-2.2.6}/docs/whats-new.rst +0 -0
  68. {hpvsim-2.2.1 → hpvsim-2.2.6}/examples/t05_screen_algorithms.py +0 -0
  69. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/__init__.py +0 -0
  70. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/base.py +0 -0
  71. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/__init__.py +0 -0
  72. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/downloaders.py +0 -0
  73. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/test_downloaders.py +0 -0
  74. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/data/test_loaders.py +0 -0
  75. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/defaults.py +0 -0
  76. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/misc.py +0 -0
  77. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/plotting.py +0 -0
  78. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/population.py +0 -0
  79. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/regression/pars_v0.2.6.json +0 -0
  80. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/regression/pars_v0.2.9.json +0 -0
  81. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/regression/pars_v0.3.0.json +0 -0
  82. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/regression/pars_v0.3.1.json +0 -0
  83. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/run.py +0 -0
  84. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/settings.py +0 -0
  85. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/sim.py +0 -0
  86. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim/utils.py +0 -0
  87. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim.egg-info/dependency_links.txt +0 -0
  88. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim.egg-info/requires.txt +0 -0
  89. {hpvsim-2.2.1 → hpvsim-2.2.6}/hpvsim.egg-info/top_level.txt +0 -0
  90. {hpvsim-2.2.1 → hpvsim-2.2.6}/setup.cfg +0 -0
  91. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/.coveragerc +0 -0
  92. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/README.rst +0 -0
  93. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/benchmark_profile.py +0 -0
  94. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/check_coverage +0 -0
  95. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/check_hiv_data.py +0 -0
  96. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/hpv_test_pars.csv +0 -0
  97. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/multiscale_concept1.py +0 -0
  98. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/multiscale_concept2.py +0 -0
  99. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/multiscale_concept3.py +0 -0
  100. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/multiscale_test.df +0 -0
  101. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/mysql_hpvsim_test.py +0 -0
  102. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/mysql_test.py +0 -0
  103. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/network_dx.py +0 -0
  104. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/plot_nathx.py +0 -0
  105. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/setup_mysql +0 -0
  106. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_cancer_dysp.py +0 -0
  107. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_dt.py +0 -0
  108. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_hiv.py +0 -0
  109. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_latency.py +0 -0
  110. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_logistic.py +0 -0
  111. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_merge_scens.py +0 -0
  112. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_multiscale.py +0 -0
  113. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_multiscale_pars.py +0 -0
  114. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_networks.py +0 -0
  115. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_new_progs.py +0 -0
  116. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_parameter_exploration.py +0 -0
  117. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_popgrowth.py +0 -0
  118. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_popscale.py +0 -0
  119. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_sampler.py +0 -0
  120. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/test_txvx.py +0 -0
  121. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/devtests/tut_parameter_exploration.ipynb +0 -0
  122. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/hpvsim_v1.2.2.yml +0 -0
  123. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/pytest.ini +0 -0
  124. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/requirements.txt +0 -0
  125. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/run_tests +0 -0
  126. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/simple.py +0 -0
  127. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_analysis.py +0 -0
  128. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_baselines.py +0 -0
  129. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_calibration.py +0 -0
  130. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/RSA_data.csv +0 -0
  131. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/art_coverage_south_africa.csv +0 -0
  132. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/australia_age_pyramid.csv +0 -0
  133. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/hiv_incidence_south_africa.csv +0 -0
  134. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_cancer_cases.csv +0 -0
  135. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_cancer_deaths.csv +0 -0
  136. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_cancer_types.csv +0 -0
  137. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_cin_types.csv +0 -0
  138. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_data.csv +0 -0
  139. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_hpv_data.csv +0 -0
  140. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/india_hpv_prevalence.csv +0 -0
  141. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/kenya_age_pyramid.csv +0 -0
  142. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/kenya_cancer_incidence.csv +0 -0
  143. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/kenya_cancer_mortality.csv +0 -0
  144. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/kenya_data.csv +0 -0
  145. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/param_space.csv +0 -0
  146. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/param_space_filled.csv +0 -0
  147. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_age_pyramid.csv +0 -0
  148. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_art_coverage_by_age_females.csv +0 -0
  149. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_art_coverage_by_age_males.csv +0 -0
  150. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_cancer_data_2020.csv +0 -0
  151. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_cancer_data_hiv_2020.csv +0 -0
  152. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_cancer_incidence_by_age_no_hiv.csv +0 -0
  153. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_cancer_incidence_by_age_with_hiv.csv +0 -0
  154. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_female_hiv_mortality.csv +0 -0
  155. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_hpv_data.csv +0 -0
  156. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_male_hiv_mortality.csv +0 -0
  157. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_target_data.csv +0 -0
  158. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_type_distribution_cancer.csv +0 -0
  159. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/south_africa_type_distribution_high_grade_lesion.csv +0 -0
  160. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/tanzania_age_pyramid.csv +0 -0
  161. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/tanzania_data.csv +0 -0
  162. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/test_tx_assigner.csv +0 -0
  163. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/test_via.csv +0 -0
  164. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data/test_via_triage.csv +0 -0
  165. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_data.py +0 -0
  166. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_event_schedule.py +0 -0
  167. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_interventions.py +0 -0
  168. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/test_run.py +0 -0
  169. {hpvsim-2.2.1 → hpvsim-2.2.6}/tests/update_baseline +0 -0
@@ -0,0 +1,38 @@
1
+ name: Publish HPVsim to PyPI (manual)
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags:
7
+ - 'v*'
8
+
9
+ jobs:
10
+ build-and-publish:
11
+ name: Build and publish
12
+ runs-on: ubuntu-latest
13
+
14
+ permissions:
15
+ id-token: write
16
+ contents: read
17
+
18
+ environment:
19
+ name: pypi
20
+ url: https://pypi.org/project/hpvsim/
21
+
22
+ steps:
23
+ - name: Check out repository
24
+ uses: actions/checkout@v4
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: '3.x'
30
+
31
+ - name: Install build backend
32
+ run: python -m pip install build
33
+
34
+ - name: Build sdist and wheel
35
+ run: python -m build
36
+
37
+ - name: Publish
38
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -1,5 +1,7 @@
1
1
  name: HPVsim CI tests
2
2
  on:
3
+ workflow_call:
4
+ workflow_dispatch:
3
5
  pull_request:
4
6
  schedule:
5
7
  - cron: "0 0 * * *"
@@ -12,7 +14,7 @@ jobs:
12
14
  fail-fast: false
13
15
  max-parallel: 8
14
16
  matrix:
15
- python-version: [ '3.12' ]
17
+ python-version: [ '3.13' ]
16
18
  name: Install and test
17
19
  steps:
18
20
  - name: Checkout sources
@@ -23,6 +25,8 @@ jobs:
23
25
  architecture: x64
24
26
  - name: Install HPVsim
25
27
  run: pip install -e .
28
+ - name: Download data on first load
29
+ run: hpvsim-download-data
26
30
  - name: Install tests
27
31
  working-directory: ./tests
28
32
  run: pip install -r requirements.txt
@@ -7,9 +7,12 @@ version: 2
7
7
 
8
8
  # Set the version of Python and other tools you might need
9
9
  build:
10
- os: ubuntu-20.04
10
+ os: ubuntu-24.04
11
11
  tools:
12
- python: "3.9"
12
+ python: "3.13"
13
+ jobs:
14
+ post_install:
15
+ - hpvsim-download-data
13
16
 
14
17
  # Build documentation in the docs/ directory with Sphinx
15
18
  sphinx:
@@ -9,6 +9,36 @@ All notable changes to the codebase are documented in this file. Changes that ma
9
9
  :depth: 1
10
10
 
11
11
 
12
+ Version 2.2.6 (2026-04-17)
13
+ ---------------------------
14
+ - Reconcile different copies of repository
15
+ - *Github info* PR `75 <https://github.com/starsimhub/hpvsim/pull/75>`__
16
+
17
+
18
+ Version 2.2.5 (2025-10-27)
19
+ ---------------------------
20
+ - Small bugfix for campaign vaccination
21
+ - *Github info* PR `689 <https://github.com/starsimhub/hpvsim_orig/pull/689>`__
22
+
23
+
24
+ Version 2.2.4 (2025-08-20)
25
+ ---------------------------
26
+ - Fixes a bug in analyzer results for cancer by age and HIV status
27
+ - *Github info* PR `687 <https://github.com/starsimhub/hpvsim_orig/pull/687>`__
28
+
29
+
30
+ Version 2.2.3 (2025-06-27)
31
+ ---------------------------
32
+ - Small bugfixes and changes to HIV module parameterization
33
+ - *Github info* PR `685 <https://github.com/starsimhub/hpvsim_orig/pull/685>`__
34
+
35
+
36
+ Version 2.2.2 (2025-06-20)
37
+ ---------------------------
38
+ - Bugfix to allow running simulations beyond 2100
39
+ - *Github info* PR `681 <https://github.com/starsimhub/hpvsim_orig/pull/681>`__
40
+
41
+
12
42
  Version 2.2.1 (2025-05-29)
13
43
  ---------------------------
14
44
  - Bugfix for running calibrations to prevent interventions being reinitialized
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023-2025 Bill & Melinda Gates Foundation
3
+ Copyright (c) 2023-2026 Gates Foundation
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hpvsim
3
- Version: 2.2.1
3
+ Version: 2.2.6
4
4
  Summary: HPVsim: Human Papillomavirus Simulator
5
5
  Author: Robyn Stuart, Jamie Cohen, Cliff Kerr, Romesh Abeysuriya, Mariah Boudreau, Daniel Klein, Hao Hu
6
6
  Maintainer-email: HPVsim Team <info@hpvsim.org>
7
7
  License-Expression: MIT
8
8
  Project-URL: Website, https://hpvsim.org
9
- Project-URL: Source, https://github.com/institutefordiseasemodeling/hpvsim/
9
+ Project-URL: Source, https://github.com/starsimhub/hpvsim/
10
10
  Keywords: HPV,human papillomavirus,cervical cancer,agent-based model,disease modeling,simulation
11
11
  Classifier: Intended Audience :: Science/Research
12
12
  Classifier: Operating System :: OS Independent
@@ -31,6 +31,9 @@ Dynamic: license-file
31
31
  Human papillomavirus simulator (HPVsim)
32
32
  =======================================
33
33
 
34
+ .. image:: https://badgen.net/pypi/v/hpvsim/?color=blue
35
+ :target: https://pypi.org/project/hpvsim
36
+
34
37
  .. image:: https://github.com/institutefordiseasemodeling/hpvsim/actions/workflows/tests.yaml/badge.svg
35
38
  :target: https://github.com/institutefordiseasemodeling/hpvsim/actions/workflows/tests.yaml
36
39
  :alt: pipeline status
@@ -62,7 +65,7 @@ HPVsim has been used for analyses in several countries. Academic papers that hav
62
65
  Installation
63
66
  ------------
64
67
 
65
- The easiest way to install is simply via pip: ``pip install hpvsim``. Alternatively, you can clone this repository, then run ``pip install -e .`` (don't forget the dot!) in this folder to install ``hpvsim`` and its dependencies. This will make ``hpvsim`` available on the Python path. The first time HPVsim is imported, it will automatically download the required data files (~30 MB).
68
+ The easiest way to install is simply via pip: ``pip install hpvsim``. Alternatively, you can clone this repository, then run ``pip install -e .`` (don't forget the dot!) in this folder to install ``hpvsim`` and its dependencies. This will make ``hpvsim`` available on the Python path. The first time HPVsim is imported, it will automatically download the required data files (~30 MB). You can also download the data manually by running ``hpvsim-download-data`` from the terminal.
66
69
 
67
70
 
68
71
  Usage and documentation
@@ -74,7 +77,7 @@ Documentation is available at https://docs.hpvsim.org. Additional usage examples
74
77
  Contributing
75
78
  ------------
76
79
 
77
- If you wish to contribute, please follow the Starsim style guide at: https://github.com/amath-idm/styleguide. See the code of conduct readme for more information.
80
+ If you wish to contribute, please follow the Starsim style guide at: https://github.com/starsimhub/styleguide. See the code of conduct readme for more information.
78
81
 
79
82
 
80
83
  Disclaimer
@@ -1,6 +1,9 @@
1
1
  Human papillomavirus simulator (HPVsim)
2
2
  =======================================
3
3
 
4
+ .. image:: https://badgen.net/pypi/v/hpvsim/?color=blue
5
+ :target: https://pypi.org/project/hpvsim
6
+
4
7
  .. image:: https://github.com/institutefordiseasemodeling/hpvsim/actions/workflows/tests.yaml/badge.svg
5
8
  :target: https://github.com/institutefordiseasemodeling/hpvsim/actions/workflows/tests.yaml
6
9
  :alt: pipeline status
@@ -32,7 +35,7 @@ HPVsim has been used for analyses in several countries. Academic papers that hav
32
35
  Installation
33
36
  ------------
34
37
 
35
- The easiest way to install is simply via pip: ``pip install hpvsim``. Alternatively, you can clone this repository, then run ``pip install -e .`` (don't forget the dot!) in this folder to install ``hpvsim`` and its dependencies. This will make ``hpvsim`` available on the Python path. The first time HPVsim is imported, it will automatically download the required data files (~30 MB).
38
+ The easiest way to install is simply via pip: ``pip install hpvsim``. Alternatively, you can clone this repository, then run ``pip install -e .`` (don't forget the dot!) in this folder to install ``hpvsim`` and its dependencies. This will make ``hpvsim`` available on the Python path. The first time HPVsim is imported, it will automatically download the required data files (~30 MB). You can also download the data manually by running ``hpvsim-download-data`` from the terminal.
36
39
 
37
40
 
38
41
  Usage and documentation
@@ -44,7 +47,7 @@ Documentation is available at https://docs.hpvsim.org. Additional usage examples
44
47
  Contributing
45
48
  ------------
46
49
 
47
- If you wish to contribute, please follow the Starsim style guide at: https://github.com/amath-idm/styleguide. See the code of conduct readme for more information.
50
+ If you wish to contribute, please follow the Starsim style guide at: https://github.com/starsimhub/styleguide. See the code of conduct readme for more information.
48
51
 
49
52
 
50
53
  Disclaimer
@@ -2,15 +2,6 @@
2
2
 
3
3
  {% set css_files = css_files + ["_static/theme_overrides.css"] %}
4
4
 
5
- {% block htmltitle %}
6
- {{ super() }}
7
-
8
- {% if not READTHEDOCS %}
9
- <meta name="robots" content="none">
10
- {% endif %}
11
-
12
- {% endblock %}
13
-
14
5
  {% block extrahead %}
15
6
 
16
7
  <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
@@ -101,9 +101,6 @@ html_context = {
101
101
  },
102
102
  "default_mode": "light",
103
103
  }
104
- # Add any extra paths that contain custom files
105
- if not on_rtd:
106
- html_extra_path = ['robots.txt']
107
104
 
108
105
 
109
106
  # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
@@ -6,7 +6,7 @@ pydata-sphinx-theme
6
6
  sphinx-design
7
7
  readthedocs-sphinx-search
8
8
  ipykernel # For tutorials
9
- nbconvert==7.13.0 # For tutorials; >=7.14 does not work
9
+ nbconvert==7.17.0 # For tutorials; >=7.14 does not work
10
10
  nbsphinx # For tutorials
11
11
  plantweb
12
12
  ipykernel
@@ -785,9 +785,9 @@ class age_results(Analyzer):
785
785
  if rdict.result_type == 'flow':
786
786
  if not rdict.by_genotype: # Results across all genotypes
787
787
  if rdict.by_hiv:
788
- if rdict.hiv_attr:
788
+ if rdict.hiv_attr == 'with':
789
789
  inds = ((ppl[rdict.date_attr] == sim.t) * (ppl[rdict.attr]) * (ppl['hiv'])).nonzero()[-1]
790
- else:
790
+ elif rdict.hiv_attr == 'no':
791
791
  inds = ((ppl[rdict.date_attr] == sim.t) * (ppl[rdict.attr]) * (~ppl['hiv'])).nonzero()[-1]
792
792
  else:
793
793
  inds = ((ppl[rdict.date_attr] == sim.t) * (ppl[rdict.attr])).nonzero()[-1]
@@ -1111,6 +1111,7 @@ class age_causal_infection(Analyzer):
1111
1111
  if self.start_year is None:
1112
1112
  self.start_year = sim['start']
1113
1113
  self.age_causal = []
1114
+ self.age_cin = []
1114
1115
  self.age_cancer = []
1115
1116
  self.dwelltime = dict()
1116
1117
  for state in ['precin', 'cin', 'total']:
@@ -1127,6 +1128,7 @@ class age_causal_infection(Analyzer):
1127
1128
  cin_time = (sim.t - date_cin) * sim['dt']
1128
1129
  total_time = (sim.t - date_exposed) * sim['dt']
1129
1130
  self.age_causal += (current_age - total_time).tolist()
1131
+ self.age_cin += (current_age - cin_time).tolist()
1130
1132
  self.age_cancer += current_age.tolist()
1131
1133
  self.dwelltime['precin'] += hpv_time.tolist()
1132
1134
  self.dwelltime['cin'] += cin_time.tolist()
@@ -715,6 +715,7 @@ class Calibration(sc.prettyobj):
715
715
  # Set title and labels
716
716
  ax.set_xlabel('Age group')
717
717
  ax.set_title(f'{self.result_args[resname].name}, {date}')
718
+ sc.setylim(data=[ydata, modeldf['values']], ax=ax)
718
719
  ax.legend()
719
720
  ax.set_xticks(x, age_labels[resname], rotation=45)
720
721
  plot_count += 1
@@ -314,6 +314,8 @@ def get_birth_rates(location=None):
314
314
  raise ValueError(errormsg) from E
315
315
 
316
316
  raw_df = map_entries(birth_rate_data, location)
317
+ raw_df = raw_df.dropna()
317
318
  df = sc.dataframe(raw_df).reset_index().rename(columns={'Time':'year', 'CBR':'cbr'})
319
+
318
320
  return df
319
321
 
@@ -93,6 +93,12 @@ hpv,susceptible,hpv18,inadequate,0
93
93
  hpv,susceptible,hi5,positive,0
94
94
  hpv,susceptible,hi5,negative,1
95
95
  hpv,susceptible,hi5,inadequate,0
96
+ hpv,susceptible,hpv45,positive,0
97
+ hpv,susceptible,hpv45,negative,1
98
+ hpv,susceptible,hpv45,inadequate,0
99
+ hpv,susceptible,hi4,positive,0
100
+ hpv,susceptible,hi4,negative,1
101
+ hpv,susceptible,hi4,inadequate,0
96
102
  hpv,susceptible,ohr,positive,0
97
103
  hpv,susceptible,ohr,negative,1
98
104
  hpv,susceptible,ohr,inadequate,0
@@ -111,6 +117,12 @@ hpv,latent,hpv18,inadequate,0
111
117
  hpv,latent,hi5,positive,0
112
118
  hpv,latent,hi5,negative,1
113
119
  hpv,latent,hi5,inadequate,0
120
+ hpv,latent,hpv45,positive,0
121
+ hpv,latent,hpv45,negative,1
122
+ hpv,latent,hpv45,inadequate,0
123
+ hpv,latent,hi4,positive,0
124
+ hpv,latent,hi4,negative,1
125
+ hpv,latent,hi4,inadequate,0
114
126
  hpv,latent,ohr,positive,0
115
127
  hpv,latent,ohr,negative,1
116
128
  hpv,latent,ohr,inadequate,0
@@ -129,6 +141,12 @@ hpv,precin,hpv18,inadequate,0
129
141
  hpv,precin,hi5,positive,0.9
130
142
  hpv,precin,hi5,negative,0.1
131
143
  hpv,precin,hi5,inadequate,0
144
+ hpv,precin,hpv45,positive,0.9
145
+ hpv,precin,hpv45,negative,0.1
146
+ hpv,precin,hpv45,inadequate,0
147
+ hpv,precin,hi4,positive,0.9
148
+ hpv,precin,hi4,negative,0.1
149
+ hpv,precin,hi4,inadequate,0
132
150
  hpv,precin,ohr,positive,0.9
133
151
  hpv,precin,ohr,negative,0.1
134
152
  hpv,precin,ohr,inadequate,0
@@ -147,6 +165,12 @@ hpv,cin,hpv18,inadequate,0
147
165
  hpv,cin,hi5,positive,0.9
148
166
  hpv,cin,hi5,negative,0.1
149
167
  hpv,cin,hi5,inadequate,0
168
+ hpv,cin,hpv45,positive,0.9
169
+ hpv,cin,hpv45,negative,0.1
170
+ hpv,cin,hpv45,inadequate,0
171
+ hpv,cin,hi4,positive,0.9
172
+ hpv,cin,hi4,negative,0.1
173
+ hpv,cin,hi4,inadequate,0
150
174
  hpv,cin,ohr,positive,0.9
151
175
  hpv,cin,ohr,negative,0.1
152
176
  hpv,cin,ohr,inadequate,0
@@ -165,6 +189,12 @@ hpv,cancerous,hpv18,inadequate,0
165
189
  hpv,cancerous,hi5,positive,0.9
166
190
  hpv,cancerous,hi5,negative,0.1
167
191
  hpv,cancerous,hi5,inadequate,0
192
+ hpv,cancerous,hpv45,positive,0.9
193
+ hpv,cancerous,hpv45,negative,0.1
194
+ hpv,cancerous,hpv45,inadequate,0
195
+ hpv,cancerous,hi4,positive,0.9
196
+ hpv,cancerous,hi4,negative,0.1
197
+ hpv,cancerous,hi4,inadequate,0
168
198
  hpv,cancerous,ohr,positive,0.9
169
199
  hpv,cancerous,ohr,negative,0.1
170
200
  hpv,cancerous,ohr,inadequate,0
@@ -183,6 +213,12 @@ hpv1618,susceptible,hpv18,inadequate,0
183
213
  hpv1618,susceptible,hi5,positive,0
184
214
  hpv1618,susceptible,hi5,negative,1
185
215
  hpv1618,susceptible,hi5,inadequate,0
216
+ hpv1618,susceptible,hpv45,positive,0
217
+ hpv1618,susceptible,hpv45,negative,1
218
+ hpv1618,susceptible,hpv45,inadequate,0
219
+ hpv1618,susceptible,hi4,positive,0
220
+ hpv1618,susceptible,hi4,negative,1
221
+ hpv1618,susceptible,hi4,inadequate,0
186
222
  hpv1618,susceptible,ohr,positive,0
187
223
  hpv1618,susceptible,ohr,negative,1
188
224
  hpv1618,susceptible,ohr,inadequate,0
@@ -201,6 +237,12 @@ hpv1618,latent,hpv18,inadequate,0
201
237
  hpv1618,latent,hi5,positive,0
202
238
  hpv1618,latent,hi5,negative,1
203
239
  hpv1618,latent,hi5,inadequate,0
240
+ hpv1618,latent,hpv45,positive,0
241
+ hpv1618,latent,hpv45,negative,1
242
+ hpv1618,latent,hpv45,inadequate,0
243
+ hpv1618,latent,hi4,positive,0
244
+ hpv1618,latent,hi4,negative,1
245
+ hpv1618,latent,hi4,inadequate,0
204
246
  hpv1618,latent,ohr,positive,0
205
247
  hpv1618,latent,ohr,negative,1
206
248
  hpv1618,latent,ohr,inadequate,0
@@ -219,6 +261,12 @@ hpv1618,precin,hpv18,inadequate,0
219
261
  hpv1618,precin,hi5,positive,0
220
262
  hpv1618,precin,hi5,negative,1
221
263
  hpv1618,precin,hi5,inadequate,0
264
+ hpv1618,precin,hpv45,positive,0
265
+ hpv1618,precin,hpv45,negative,1
266
+ hpv1618,precin,hpv45,inadequate,0
267
+ hpv1618,precin,hi4,positive,0
268
+ hpv1618,precin,hi4,negative,1
269
+ hpv1618,precin,hi4,inadequate,0
222
270
  hpv1618,precin,ohr,positive,0
223
271
  hpv1618,precin,ohr,negative,1
224
272
  hpv1618,precin,ohr,inadequate,0
@@ -237,6 +285,12 @@ hpv1618,cin,hpv18,inadequate,0
237
285
  hpv1618,cin,hi5,positive,0
238
286
  hpv1618,cin,hi5,negative,1
239
287
  hpv1618,cin,hi5,inadequate,0
288
+ hpv1618,cin,hpv45,positive,0
289
+ hpv1618,cin,hpv45,negative,1
290
+ hpv1618,cin,hpv45,inadequate,0
291
+ hpv1618,cin,hi4,positive,0
292
+ hpv1618,cin,hi4,negative,1
293
+ hpv1618,cin,hi4,inadequate,0
240
294
  hpv1618,cin,ohr,positive,0
241
295
  hpv1618,cin,ohr,negative,1
242
296
  hpv1618,cin,ohr,inadequate,0
@@ -255,6 +309,24 @@ hpv1618,cancerous,hpv18,inadequate,0
255
309
  hpv1618,cancerous,hrhpv,positive,0
256
310
  hpv1618,cancerous,hrhpv,negative,1
257
311
  hpv1618,cancerous,hrhpv,inadequate,0
312
+ hpv1618,cancerous,hi5,positive,0
313
+ hpv1618,cancerous,hi5,negative,1
314
+ hpv1618,cancerous,hi5,inadequate,0
315
+ hpv1618,cancerous,hpv45,positive,0
316
+ hpv1618,cancerous,hpv45,negative,1
317
+ hpv1618,cancerous,hpv45,inadequate,0
318
+ hpv1618,cancerous,hi4,positive,0
319
+ hpv1618,cancerous,hi4,negative,1
320
+ hpv1618,cancerous,hi4,inadequate,0
321
+ hpv1618,cancerous,ohr,positive,0
322
+ hpv1618,cancerous,ohr,negative,1
323
+ hpv1618,cancerous,ohr,inadequate,0
324
+ hpv1618,cancerous,hr,positive,0
325
+ hpv1618,cancerous,hr,negative,1
326
+ hpv1618,cancerous,hr,inadequate,0
327
+ hpv1618,cancerous,lr,positive,0
328
+ hpv1618,cancerous,lr,negative,1
329
+ hpv1618,cancerous,lr,inadequate,0
258
330
  hpv_type,susceptible,hpv16,positive_1618,0
259
331
  hpv_type,susceptible,hpv16,positive_ohr,0
260
332
  hpv_type,susceptible,hpv16,negative,1
@@ -267,6 +339,14 @@ hpv_type,susceptible,hi5,positive_1618,0
267
339
  hpv_type,susceptible,hi5,positive_ohr,0
268
340
  hpv_type,susceptible,hi5,negative,1
269
341
  hpv_type,susceptible,hi5,inadequate,0
342
+ hpv_type,susceptible,hpv45,positive_1618,0
343
+ hpv_type,susceptible,hpv45,positive_ohr,0
344
+ hpv_type,susceptible,hpv45,negative,1
345
+ hpv_type,susceptible,hpv45,inadequate,0
346
+ hpv_type,susceptible,hi4,positive_1618,0
347
+ hpv_type,susceptible,hi4,positive_ohr,0
348
+ hpv_type,susceptible,hi4,negative,1
349
+ hpv_type,susceptible,hi4,inadequate,0
270
350
  hpv_type,susceptible,ohr,positive_1618,0
271
351
  hpv_type,susceptible,ohr,positive_ohr,0
272
352
  hpv_type,susceptible,ohr,negative,1
@@ -291,6 +371,14 @@ hpv_type,latent,hi5,positive_1618,0
291
371
  hpv_type,latent,hi5,positive_ohr,0
292
372
  hpv_type,latent,hi5,negative,1
293
373
  hpv_type,latent,hi5,inadequate,0
374
+ hpv_type,latent,hpv45,positive_1618,0
375
+ hpv_type,latent,hpv45,positive_ohr,0
376
+ hpv_type,latent,hpv45,negative,1
377
+ hpv_type,latent,hpv45,inadequate,0
378
+ hpv_type,latent,hi4,positive_1618,0
379
+ hpv_type,latent,hi4,positive_ohr,0
380
+ hpv_type,latent,hi4,negative,1
381
+ hpv_type,latent,hi4,inadequate,0
294
382
  hpv_type,latent,ohr,positive_1618,0
295
383
  hpv_type,latent,ohr,positive_ohr,0
296
384
  hpv_type,latent,ohr,negative,1
@@ -315,6 +403,14 @@ hpv_type,precin,hi5,positive_1618,0
315
403
  hpv_type,precin,hi5,positive_ohr,0.9
316
404
  hpv_type,precin,hi5,negative,0.1
317
405
  hpv_type,precin,hi5,inadequate,0
406
+ hpv_type,precin,hpv45,positive_1618,0
407
+ hpv_type,precin,hpv45,positive_ohr,0.9
408
+ hpv_type,precin,hpv45,negative,0.1
409
+ hpv_type,precin,hpv45,inadequate,0
410
+ hpv_type,precin,hi4,positive_1618,0
411
+ hpv_type,precin,hi4,positive_ohr,0.9
412
+ hpv_type,precin,hi4,negative,0.1
413
+ hpv_type,precin,hi4,inadequate,0
318
414
  hpv_type,precin,ohr,positive_1618,0
319
415
  hpv_type,precin,ohr,positive_ohr,0.9
320
416
  hpv_type,precin,ohr,negative,0.1
@@ -339,6 +435,14 @@ hpv_type,cin,hi5,positive_1618,0
339
435
  hpv_type,cin,hi5,positive_ohr,0.9
340
436
  hpv_type,cin,hi5,negative,0.1
341
437
  hpv_type,cin,hi5,inadequate,0
438
+ hpv_type,cin,hpv45,positive_1618,0
439
+ hpv_type,cin,hpv45,positive_ohr,0.9
440
+ hpv_type,cin,hpv45,negative,0.1
441
+ hpv_type,cin,hpv45,inadequate,0
442
+ hpv_type,cin,hi4,positive_1618,0
443
+ hpv_type,cin,hi4,positive_ohr,0.9
444
+ hpv_type,cin,hi4,negative,0.1
445
+ hpv_type,cin,hi4,inadequate,0
342
446
  hpv_type,cin,ohr,positive_1618,0
343
447
  hpv_type,cin,ohr,positive_ohr,0.9
344
448
  hpv_type,cin,ohr,negative,0.1
@@ -363,6 +467,14 @@ hpv_type,cancerous,hi5,positive_1618,0
363
467
  hpv_type,cancerous,hi5,positive_ohr,0.9
364
468
  hpv_type,cancerous,hi5,negative,0.1
365
469
  hpv_type,cancerous,hi5,inadequate,0
470
+ hpv_type,cancerous,hpv45,positive_1618,0
471
+ hpv_type,cancerous,hpv45,positive_ohr,0.9
472
+ hpv_type,cancerous,hpv45,negative,0.1
473
+ hpv_type,cancerous,hpv45,inadequate,0
474
+ hpv_type,cancerous,hi4,positive_1618,0
475
+ hpv_type,cancerous,hi4,positive_ohr,0.9
476
+ hpv_type,cancerous,hi4,negative,0.1
477
+ hpv_type,cancerous,hi4,inadequate,0
366
478
  hpv_type,cancerous,ohr,positive_1618,0
367
479
  hpv_type,cancerous,ohr,positive_ohr,0.9
368
480
  hpv_type,cancerous,ohr,negative,0.1
@@ -8,48 +8,64 @@ excision,cancerous,all,0
8
8
  txvx1,latent,hpv16,0.01
9
9
  txvx1,latent,hpv18,0.01
10
10
  txvx1,latent,hi5,0.01
11
+ txvx1,latent,hpv45,0.01
12
+ txvx1,latent,hi4,0.01
11
13
  txvx1,latent,ohr,0.01
12
14
  txvx1,latent,hr,0.01
13
15
  txvx1,latent,lr,0.01
14
16
  txvx1,precin,hpv16,0.01
15
17
  txvx1,precin,hpv18,0.01
16
18
  txvx1,precin,hi5,0.01
19
+ txvx1,precin,hpv45,0.01
20
+ txvx1,precin,hi4,0.01
17
21
  txvx1,precin,ohr,0.01
18
22
  txvx1,precin,hr,0.01
19
23
  txvx1,precin,lr,0.01
20
24
  txvx1,cin,hpv16,0.01
21
25
  txvx1,cin,hpv18,0.01
22
26
  txvx1,cin,hi5,0.01
27
+ txvx1,cin,hpv45,0.01
28
+ txvx1,cin,hi4,0.01
23
29
  txvx1,cin,ohr,0.01
24
30
  txvx1,cin,hr,0.01
25
31
  txvx1,cin,lr,0.01
26
32
  txvx1,cancerous,hpv16,0
27
33
  txvx1,cancerous,hpv18,0
28
34
  txvx1,cancerous,hi5,0
35
+ txvx1,cancerous,hpv45,0
36
+ txvx1,cancerous,hi4,0
29
37
  txvx1,cancerous,ohr,0
30
38
  txvx1,cancerous,hr,0
31
39
  txvx1,cancerous,lr,0
32
40
  txvx2,latent,hpv16,0.9
33
41
  txvx2,latent,hpv18,0.9
34
42
  txvx2,latent,hi5,0.01
43
+ txvx2,latent,hpv45,0.01
44
+ txvx2,latent,hi4,0.01
35
45
  txvx2,latent,ohr,0.01
36
46
  txvx2,latent,hr,0.01
37
47
  txvx2,latent,lr,0.01
38
48
  txvx2,precin,hpv16,0.9
39
49
  txvx2,precin,hpv18,0.9
40
50
  txvx2,precin,hi5,0.01
51
+ txvx2,precin,hpv45,0.01
52
+ txvx2,precin,hi4,0.01
41
53
  txvx2,precin,ohr,0.01
42
54
  txvx2,precin,hr,0.01
43
55
  txvx2,precin,lr,0.01
44
56
  txvx2,cin,hpv16,0.5
45
57
  txvx2,cin,hpv18,0.5
46
58
  txvx2,cin,hi5,0.01
59
+ txvx2,cin,hpv45,0.01
60
+ txvx2,cin,hi4,0.01
47
61
  txvx2,cin,ohr,0.01
48
62
  txvx2,cin,hr,0.01
49
63
  txvx2,cin,lr,0.01
50
64
  txvx2,cancerous,hpv16,0
51
65
  txvx2,cancerous,hpv18,0
52
66
  txvx2,cancerous,hi5,0
67
+ txvx2,cancerous,hpv45,0
68
+ txvx2,cancerous,hi4,0
53
69
  txvx2,cancerous,ohr,0
54
70
  txvx2,cancerous,hr,0
55
71
  txvx2,cancerous,lr,0
@@ -2,12 +2,16 @@ name,genotype,rel_imm
2
2
  txvx1,hpv16,1
3
3
  txvx1,hpv18,1
4
4
  txvx1,hi5,0.5
5
+ txvx1,hpv45,0.5
6
+ txvx1,hi4,0.5
5
7
  txvx1,ohr,0.5
6
8
  txvx1,hr,0.5
7
9
  txvx1,lr,0.3
8
10
  txvx2,hpv16,1
9
11
  txvx2,hpv18,1
10
12
  txvx2,hi5,0.5
13
+ txvx2,hpv45,0.5
14
+ txvx2,hi4,0.5
11
15
  txvx2,ohr,0.5
12
16
  txvx2,hr,0.5
13
17
  txvx2,lr,0.3
@@ -2,18 +2,24 @@ name,genotype,rel_imm
2
2
  bivalent,hpv16,1
3
3
  bivalent,hpv18,1
4
4
  bivalent,hi5,0.5
5
+ bivalent,hpv45,0.5
6
+ bivalent,hi4,0.5
5
7
  bivalent,ohr,0.1
6
8
  bivalent,hr,0.3
7
9
  bivalent,lr,0.3
8
10
  quadrivalent,hpv16,1
9
11
  quadrivalent,hpv18,1
10
12
  quadrivalent,hi5,0.5
13
+ quadrivalent,hpv45,0.5
14
+ quadrivalent,hi4,0.5
11
15
  quadrivalent,ohr,0.1
12
16
  quadrivalent,hr,0.3
13
17
  quadrivalent,lr,1
14
18
  nonavalent,hpv16,1
15
19
  nonavalent,hpv18,1
16
20
  nonavalent,hi5,1
21
+ nonavalent,hpv45,1
22
+ nonavalent,hi4,1
17
23
  nonavalent,ohr,0.1
18
24
  nonavalent,hr,0.5
19
25
  nonavalent,lr,1
@@ -45,15 +45,11 @@ class HIVsim(hpb.ParsObj):
45
45
  "rel_reactivation_prob": 3, # Unused for now
46
46
  "model_hiv_death": True, # whether or not to model HIV mortality. Typically only set to False for testing purposes
47
47
  "time_to_hiv_death_shape": 2, # shape parameter for weibull distribution, based on https://royalsocietypublishing.org/action/downloadSupplement?doi=10.1098%2Frsif.2013.0613&file=rsif20130613supp1.pdf
48
- "time_to_hiv_death_scale": lambda a: 21.182
49
- - 0.2717
50
- * a, # scale parameter for weibull distribution, based on https://royalsocietypublishing.org/action/downloadSupplement?doi=10.1098%2Frsif.2013.0613&file=rsif20130613supp1.pdf
48
+ "time_to_hiv_death_scale_pars": dict(m=21.182, b=-0.2717), # scale parameter for weibull distribution, based on https://royalsocietypublishing.org/action/downloadSupplement?doi=10.1098%2Frsif.2013.0613&file=rsif20130613supp1.pdf
51
49
  "hiv_death_adj": 1,
52
50
  "cd4_start": dict(dist="normal", par1=594, par2=20),
53
- "cd4_trajectory": lambda f: (24.363 - 16.672 * f)
54
- ** 2, # based on https://docs.idmod.org/projects/emod-hiv/en/latest/hiv-model-healthcare-systems.html?highlight=art#art-s-impact-on-cd4-count
55
- "cd4_reconstitution": lambda m: 15.584 * m
56
- - 0.2113 * m**2, # growth in CD4 count following ART initiation
51
+ "cd4_pars": dict(m=24.363, b=-16.672), # based on https://docs.idmod.org/projects/emod-hiv/en/latest/hiv-model-healthcare-systems.html?highlight=art#art-s-impact-on-cd4-count
52
+ "cd4_reconstitution_pars": dict(b1=15.584, b2=-0.2113), # growth in CD4 count following ART initiation
57
53
  "art_failure_prob": 0.0, # Percentage of people on ART who will fail treatment
58
54
  "dt_art": 1.0, # Timestep for art updates (in years)
59
55
  }
@@ -63,7 +59,9 @@ class HIVsim(hpb.ParsObj):
63
59
  self.init_results(sim)
64
60
 
65
61
  y = np.linspace(0, 1, 101)
66
- cd4_decline = self["hiv_pars"]["cd4_trajectory"](y)
62
+ # Calculate the CD4 trajectory based on the parameters
63
+ m, b = self["hiv_pars"]["cd4_pars"]["m"], self["hiv_pars"]["cd4_pars"]["b"]
64
+ cd4_decline = m + b* y # CD4 decline trajectory
67
65
  self.cd4_decline_diff = np.diff(cd4_decline)
68
66
  sim.pars["hiv_pars"]["mortality_rates"] = self.pars["mortality_rates"]
69
67
  return
@@ -235,7 +233,8 @@ class HIVsim(hpb.ParsObj):
235
233
  shape = self["hiv_pars"]["time_to_hiv_death_shape"]
236
234
  dt = people.pars["dt"]
237
235
  if self["hiv_pars"]["model_hiv_death"]:
238
- scale = self["hiv_pars"]["time_to_hiv_death_scale"](people.age[inds])
236
+ m, b = self["hiv_pars"]["time_to_hiv_death_scale_pars"]["m"], self["hiv_pars"]["time_to_hiv_death_scale_pars"]["b"]
237
+ scale = m + b*people.age[inds]
239
238
  adjust = self["hiv_pars"]["hiv_death_adj"]
240
239
  scale = np.maximum(scale, 0)
241
240
  time_to_hiv_death = adjust * weibull_min.rvs(
@@ -300,7 +299,8 @@ class HIVsim(hpb.ParsObj):
300
299
  # Now take care of people successfully on ART (CD4 reconstitutes)
301
300
  mpy = 12
302
301
  months_on_ART = (people.t - people.date_art[art_success_inds]) * mpy
303
- cd4_change = self["hiv_pars"]["cd4_reconstitution"](months_on_ART)
302
+ b1, b2 = self["hiv_pars"]["cd4_reconstitution_pars"]["b1"], self["hiv_pars"]["cd4_reconstitution_pars"]["b2"]
303
+ cd4_change = b1*months_on_ART + b2*months_on_ART**2
304
304
  cd4_change[cd4_change < 0] = 0
305
305
  people.cd4[art_success_inds] += cd4_change
306
306
 
@@ -212,7 +212,7 @@ def check_immunity(people):
212
212
  Now suppose we have 3 people, whose immunity levels are
213
213
 
214
214
  people.nab_imm = np.array([[0.9, 0.0, 0.0],
215
- [0.0, 0.7, 0.0]])
215
+ [0.0, 0.7, 0.0]])
216
216
 
217
217
  This indicates that person 1 has a prior HPV16 infection, person 2 has a prior HPV18
218
218
  infection, and person 3 has no history of infection.