Releases: pph-collective/TITAN
Releases · pph-collective/TITAN
v2.6.1
v2.6.0
v2.6.0
New Features
- The
missouri
setting of MSM has been added - Location based assorting is available - see the
assort_mix.partner_values
param for more info - Migration has been added - see the
location.migration
params
v2.5.1
v2.5.1
Technical Notes
- Correct the defaults for aids progression (
hiv.aids.prob
), and haart scaling (partnership.injection.transmission.haart_scaling
) - More stochastic integration tests for treatment cascade, PCA, and assorting
v2.5.0
v2.5.0
New Features
- Add the ability to log to file instead of only the console. Default is still the console. See the
outputs.logging
params for details.
Technical Notes
- Remove comparison of component ID on population reading unit test, there is no guarantee these will be the same.
v2.4.0
v2.4.0
New Features
- Apply an assort rule to only a subset of
bond_types
instead of always applying to all bond types. The default remains to assort on all bond types in the model.
Technical Notes
- Fixed a regex deprecation warning
- Made integration tests more resilient to testing environment
- Set up project with poetry and update workflows and documentations for this flow
v2.3.0
v2.3.0
New Features
- More flexible assorting
- Assort on nested attributes of the agent (e.g. hiv status)
- Assort across different attributes on the agent and partner
[assort_def.partner_attribute]
. The default behavior will continue to be assorting on the same attribute. - Assort can now be done on
__same__
/__other__
attribute instead of enumerating all of the attribute combinations.
Technical Notes
- Stronger checks for population consistency (make sure all
ppl
add up to 1 even after location scaling) - Fix
incar
integration test - previously wasn't running - Reset trackers between calls to
update_all_agents
in a unit test (was causing very rare test failure)
v2.2.0
v2.2.0
Breaking Changes
- Report resulting from
outputs.network.calc_component_stats
, has been slimmed down. Most of the columns can now be derived from the basic report (see New Features), the only fully deprecated column iscentrality
.
New Features
- Add components as a reportable class in the basic report. After the partnering phase of each time step, the agent attribute
component
is updated to match the id of their current component. This enables stats to be collected by component as well as other classes (e.g.race
). If an agent is not in a component (should only happen on a time step they died), their component ID is-1
. - Various performance improvements.
Technical Notes
- Changed references to
marshall-lab
topph-collective
. - Updated
np_random
variables to usedefault_rng
instead ofRandomState
per numpy's latest guidance. - Added
safe_random_int
for consistency across numpy and python random integer choosing as well as performance. - Use custom
effective_size
instead of networkx's which is tailored to the assumption of our model (much faster). - Only print rows in the basic report which have agents.
- Change assorting algorithm so that eligible agents are shuffled, then the first agent that matches the assorting criteria is returned (about twice as fast as previous).
high_risk
no longer ends relationships, it marks their duration as 0 so they are ended at the beginning of the next time step.- Re-ordered
update_all_agents
for consistency of reporting. - No longer create copies of components, not necessary given usage.
- Break some large functions into smaller functions.
- Add utility functions for getting the bin from a bins param.
safe_shuffle
now returns an empty list if there are no items to shuffle (instead ofNone
).- Bumped numpy and networkx versions slightly.
v2.1.1
v2.1.0
V2.1.0
Version 2.1 of TITAN ...
Breaking Changes
- Params
demographics.haart.prob
has changed todemographics.haart.enroll
and is now a definition based on time since the agent's diagnosis with HIV.partnership.duration
now sub-dicts off of both race and the bond type of the partnershipdemographics.safe_sex
now requires a sub-dict bybond_type
haart.target
andprep.target
have been changed tohaart.cap
andprep.cap
for clarity- moved references to HAART out of
hiv
and intohaart
.hiv.aids.haart_scale
is nowhaart.aids_scale
New Features
- TITAN can now be pip installed. Scripts to run on OSCAR live in a separate repository at https://github.com/marshall-lab/titan-oscar
- Haart enrollment is now based on time since the HIV+ agent's diagnosis
- Partnership durations can now be stratified by race. If race of agents in a partnership differs, one agent's duration parameter is randomly selected
- Condom use (
safe_sex
) can be assigned differently based on the bond type (e.g., amain
partnership may have different condom use than acasual
partnership) - HAART use can now be specified separately for agents who have previously been on HAART
- HAART adherence can now change while an agent in on HAART; the agent may gain or lose adherence
Settings
- All settings have been updated for breaking changes
- NYC MSM has also added "location" to allow for three levels of test probability
v2.0.0
v2.0.0
Version 2 of TITAN includes a major refactor and reorganization of the code base, the ability to use the model without HIV, and changes to the parameters to better capture their use in the model.
Breaking Changes
- Params
demographics
rearranged to reflect the actual classes the value is used at (as opposed to having it available at all levels) -sex_type
key introduced and some items moved underdrug_type
(hiv, haart, death rate, num partners). E.g.demographics.black.MSM.hiv.init
is nowdemographics.black.sex_type.MSM.drug_type.NonInj.hiv.init
aids
key in demographics moved underhiv
drug_type
now has sub-keyppl
instead ofinit
, params checking enforces theppl
s for a race/sex_type/drug_type combination must add to oneprep
in the demographics hadcoverage
changed totarget
and an explicitinit
key addedhaart
adherence changed to boolean adherent, this affectshaart
andhaart_scaling
paramsmsmw
feature renamed toexternal_exposure
, new params added to make it more abstractpca
feature retired and refactored into thepca
interaction and theknowledge
exposure
HIVModel
renamedTITAN
as the model no longer is explicitly an HIV model (though most available features explicitly use HIV at this time)- Base setting retired, those values now must be explicitly included in the setting or params
- All agent attributes are saved with the population, no longer an option to just save core attributes
- Standardized naming of reporting fields and removed reports other than the basic report
- The columns in the report are dependent on the features/exposures enabled in the parameters
New Features
- Exposures are the class of objects that can be transmitted in the model, currently
hiv
andknowledge
- Interactions are the types of interactions that agents can have in the model, currently
sex
,injection
, andpca
- Features are interventions or similar events which affect the state of the agent, currently
external_exposure
(formerlymsmw
),haart
,high_risk
,incar
,partner_tracing
,prep
,random_trial
,syringe_services
,vaccine
- Random trial has been abstracted to allow treatments (
prep
orknowledge
) to be administered independently of the enrollment type (all
,bridge
,random
,eigenvector
) - New settings added: Mississippi and NYC
prep
target can be treated as a probability instead of a numeric target withtarget_as_prob
set totrue
modified_weibull
added to available distribution types
Technical Notes
- See the docs sections on exposures, interactions, and features for details on the required API and how to implement a new one
mypy
can't statically determine that features and exposures validly exist on an agent, so the comment# type: ignore[attr-defined]
is added to those lines to appease itmodel.py
is now agnostic to any exposures, interactions, or features so can be used as a base for any combination of those items- Each exposure, feature, and interaction file should be a standalone representation of that topic in the repository - there remain a few places where this could be improved, but the goal of standalone files should be used as a guiding principal in development