Implement Spectrum adult ART adjustment by absolute count. This is a user input that adjust the number on ART count by an absolute value. It is intended to be used to account for clients receiving services in or from another region; typically with subnational Spectrum files.
If both absolute count and ratio adjustments are specified in the same year, the absolute count is applied first and then ratio is applied. If ART is specified as a percentage, then adjustments do not have any influence.
Previously entered ART adjustments were applied or not via a checkbox in Spectrum. The checkbox has been removed in Spectrum 6.38 beta 18. For backward compatability with previously simulated Spectrum outputs, if the checkbox flag exists in the .DP file, it is still used to determine application of the ratios; if the .DP file does not contain the checkbox flag, then the ratio is applied.
Patch ART dropout implementation. Spectrum converts input ART dropout percent to an annual rate using [dropout rate] = -log(1.0 - [input percent]).
Implement Spectrum ART allocation.
There has been a longstanding discrepancy betweeen EPP-ASM and Spectrum in ART allocation. For ART allocation by 'expected mortality', EPP-ASM allocated according to mortality by CD4 and age.
Spectrum allocates ART in a two step process: first, ART is allocated by CD4 category based on the 'expected mortality' and 'proportional to eligibility' weight. Second, within CD4 categories, ART is allocated by age solely proportional to number in each age group (propotional to eligibility).
This has modest overall difference, but was a source of numerical differences between Spectrum and EPP-ASM.
Update output plots and tables to 2024.
Extend theta0 initial values for additional year random-walk parameters.
Implement new excess non-AIDS mortality among PLHIV implemented in Spectrum 6.38 for 2025 UNAIDS HIV estimates.
Spectrum 6.38 implements rates of non-AIDS excess mortality by sex, age group, CD4 category and ART status. By default these mortality rates are applied in concentrated epidemic countries and defaulted to zero in African HIV epidemic settings.
Spectrum outputs for non-AIDS deaths among PLHIV in AIM include non-AIDS excess deaths. EPP-ASM deaths outputs are updated accordingly.
To ensure backward compatibility, excess non-AIDS mortality are initialized to 0.0 and replaced with values read from Spectrum if the relevant values exist in the .DP file.
simmod()
updated to incorporate excess non-AIDS mortality among PLHIV.
Internally new model parameters arrays cd4_nonaids_excess_mort
and
art_nonaids_excess_mort
follow the same dimensions and stratification
of cd4_mort
and art_mort
arrays. These represent expansions of the
arrays saved in Spectrum-AIM, to all age groups and ART duration categories,
consistent with handling of the cd4_mort
and art_mort
arrays.
Fix bug in R version for end-year net migration in first year of ART eligibility
<NeedARTDec31 MV>
, and so it was fine to extract the total
value. Now child ART is recorded, and so need to sum the adult age groups only.ylim
in plot_prv_pos_yld()
. This addresses issue with this plot not showing in interface and preventing plot downloads when data NA values are simulated.vroom::vroom()
to read PJNZ files; much faster for reading .DP
file.read_specdp_demog_param()
, ensure no zero totals when normalising age-specific fertility
distribution and net-migration age distribution.Updates for 2023 UNAIDS estimates:
Other:
data.table
dependency.Updates for Spectrum transition from mid-year projection period to calendar year projection period. Implemented in Spectrum 6.2 in November 2022.
Previous mid-year interpolation is still available in code by using argument
create_fp(..., projection_period = "midyear")
. The default argument
projection_period = NULL
will choose the projection period based on the
Spectrum inputs version number. For versions 6.19 and earlier,
projection_period = "midyear"
. For versions 6.2 and later, projection_period = "calendar"
.
Normalise asfd
and netmigagedist
to sum to exactly 1.0 before distributing
to age groups.
Disaggregate under-5 net migration proportional to paediatric survival probabilities in the base year.
Net-migrations added at end of projection step, consistent with WPP 2022. No longer (1) adjust net migration for half-period survival, nor (2) adjust net migration to be half in current age group and half in next age group.
End-year ART input interpolation adjusted to reflect calendar year projection period, such that ART input aligns to end of projection year. Note: since net migration is applied after ART initiations, the number on ART will be scaled by the net migration proportions. Therefore the model output for number on ART will not exactly match the ART inputs.
In likelihood calculations for household survey proportion ever tested, interopolate
model outputs to mid-year. This affects ll_evertest()
. Likelihood for annual
HIV tests and diagnoses (ll_prgdat()
) is unaffected.
eppmod = "directinfections_hts"
option (v1.5.0) to avoid referencing
uninitialised memory.Updates for 2022 UNAIDS estimates:
Extend output arrays, plots, and tables to output 2021 results.
Extend theta0 initial values for additional year random-walk parameters.
Intercalate new infections in each HIV time step. Equal number of infections are added in each time step. This is controlled by the option eppmod = "directinfections_hts"
.
Option eppmod = "directinfections_hts"
is specified as the default option in
prepare_inputs(pjnz)
. Therefore, new package version will not reproduce simulations
from a previous model fit. Simulating from a previous fit requires manually specifying
fp$eppmod <- "directinfections"
after calling prepare_inputs()
.
extract_pjnz()
reads whether custom population adjustment was used in the Spectrum file from the tag "<RegionalAdjustPopCBState MV>"
. This is used to set popadjust = TRUE
automatically if a custom population was used in Spectrum.
add_ss_indices()
, add argument type.convert(..., as.is = TRUE)
to suppress R 4.0 warning.double incrate_g[NG];
in EPP_DIRECTINCID
incidence
option. This did not affect any results because this option is not used in Shiny90 application;
new infections by sex and age group were directly specified (option EPP_DIRECTINFECTIONS
).create_hts_param()
will throw and error if an unexpected parameter
vector length is identified.Updates for 2021 UNAIDS estimates:
Extended arrays to output 2020 results.
Changed prior for baseline testing rate to normal(log(0.005), sd = 0.25). (likelihood.R#138)
Revise HIV retesting rate to increase log-linearly betwee 2005 and 2010. The implication of this is to reduce the retesting rate during the 2000s compared to the 2010s, which reduces implausibly high predictions for number of HIV tests conducted during the 2000s in the abscence of HTS programme data (Giguere et al 2020).
NEWS.md
file to track changes to the package.