Rf_allocVector
instead of allocVector
. Shorthand names are no longer allowed in R v4.5.0. See Nov 10th news https://developer.r-project.org/blosxom.cgi/R-develImplement 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.
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.
Specific changes:
read_hivproj_param()
is updated to read input values for excess non-AIDS
mortality from Spectrum .DP file, stored in tag "<AdultNonAIDSExcessMort MV>"
.
read_hivproj_output()
updated to read additiounal deaths outputs:
"<NonAIDSExcessDeathsSingleAge MV>"
,
and output in the array specres$nonaids_excess_deaths
.aidsdeaths_art1
and aidsdeaths_noart1
. (Previously only output by 5-year age group.aidsdeaths_art
and aidsdeaths_noart
have added a suffix 5
to avoid ambiguity:
aidsdeaths_art5
and aidsdeaths_noart5
. Previous code that used aidsdeaths_art
and
aidsdeaths_noart
will need to be updated.EPP-ASM code 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.
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.
Patch ART dropout implementation. Spectrum converts input ART dropout percent to an annual rate using [dropout rate] = -log(1.0 - [input percent]).
Rf_allocVector
instead of allocVector
. Shorthand names are no longer allowed in R v4.5.0. See Nov 10th news https://developer.r-project.org/blosxom.cgi/R-develread_pop1()
to parse Spectrum _pop1.xlsx
export file.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.Package tidying to address R CMD CHECK warnings:
anclik
and binom
.src/Makevars
with GCC specific -pedantic
compiler flag.In read_specdp_demog_param()
, normalise the age-specific fertility distribution before disaggregating TFR to ASFR. This fixes small discrepancy between Spectrum and EPP-ASM population projection.
In read_specdp_demog_param()
, disaggregate the under-5 net migrations to single-year ages proportional to survival probabilities, to match Spectrum.
Change model projection to calendar year steps instead of mid-year steps, consistent with Spectrum 6.2 updated for WPP 2022 release in December 2022.
Code changes are backwards compatible such that code supports simulation of either calendar year or mid-year projection steps. This is controlled by option fp$projection_period
= either "midyear"
or "calendar"
.
The function create_spectrum_fixpar(..., projection_period = "calendar")
has new argument which defaults to calendar year input. This must be re-run to recreate the fp
object to change the choice because calculation of paediatric net migration inputs depends on the choice.
DIRECTINCID_HTS
for intercalating direct incidence new HIV infections in each time step. This was implemented by (1) calculating the number of new infections once per year before the HIV simulation, then (2) adding DT * new infections in each time step.Pre-calculating the number of new infections, rather than applying the HIV incidence rate in each time step was preferred to maintain consistency with Spectrum which calculates the number of infections based on previous year population size.
eppasm.cpp
to avoid dividing by 0 when there is zero population eligible
to initiate ART.get_dp_version()
to search for tag instead of relying on exact location.read_epp_t0()
to parse XML file projection sets using same code as epp:read_epp_data()
. This resolves parsing issue for Niger, Senegal, and Dominican Republic. Unsure why the XML is formed different for these cases.read_hivproj_param()
to read incidence sex ratio from Spectrum v5.88, v5.89, and v5.90.artinit
for number of ART initiations by CD4 category.aidsdeaths_noart
and aidsdeaths_noart
for number of AIDS deaths by
coarse age groups, stage of infection, and ART duration.fp$ss$h_art_stage_dur
instead of hard coded values.spec_add_dimnames()
to add dimnames to simmod output arrays.fp$scale_cd4_mort = 1
)Modularize code for calculating new infections.
Implement age 15 entrant prevalence and ART coverage inputs.
Implement logit transformation for sampling from uniform logiota prior distribution.
Set age IRR penalty variance at a fixed constant value (9003)
Implement piecewise-linear time-varying M:F incidence/transmission ratio and 15-24 incidence rate ratio. Knots fixed at 2002, 2007, and 2012.
Modularize code for incidence rate ratio parameterization, now in infections.R.
Updated default IRR priors to informative priors based on fits countries with several surveys.
Add function to generate summary model outputs
Integrate random effects variance parameter out of likelihood.
Implement hybrid r-spline and RW model for r(t).
Implement logistic model for log r(t) (rlogistic), and version with random walk (rlogistic_rw).
Add optimization option to fitmod().
Add option to fit without site-level ANC data.
Rename package eppasm
.
Add IMIS function to eppasm package. In this version of IMIS, at each iteration a new mixture component is constructed either centered on input with greatest weight or based on optimizer. Allows optimizers to be run at arbitrary iterations, but doesn't implment multiple optimizers which might still be usful. Covariance for optimizer mixture component when Hessian is degenerate still needs further work.
Change from dependency to imports epp package.
Add ANC-RT data to aggregate national fits (prepare_national_fit() and create_aggr_input()).
Implement dsamp() to calculate density for initial IMIS samples. This allows different initial sampling density from prior distribution.
Specify knot locations for o-spline model
Estimate HIV+:HIV- FRR adjustment.
Specify knot locations for o-spline model
Add functions to read country and subnational region from Spectrum PJN file.
r0logiotaratio
option to estimate ratio of r(t0) and log of initial seed, reduces correation. Not set as default.epp v0.3
which implements ANC routine testing (ANC-RT) likelihood in EPP 2017.