Skip to content

Releases: pph-collective/TITAN

v2.6.1

25 May 17:35
7b90c13
Compare
Choose a tag to compare

v2.6.1

Fixes

  • Updates the missouri setting.

v2.6.0

20 May 20:34
e4d5d32
Compare
Choose a tag to compare

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

15 Apr 20:46
c3b37c8
Compare
Choose a tag to compare

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

15 Apr 18:03
e2bc287
Compare
Choose a tag to compare

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

26 Mar 14:01
599cdcb
Compare
Choose a tag to compare

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

19 Mar 13:16
d94a044
Compare
Choose a tag to compare

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

19 Feb 15:14
eb23175
Compare
Choose a tag to compare

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 is centrality.

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 to pph-collective.
  • Updated np_random variables to use default_rng instead of RandomState 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 of None).
  • Bumped numpy and networkx versions slightly.

v2.1.1

02 Feb 14:50
78804f7
Compare
Choose a tag to compare

v2.1.1

Fixes

  • Removes redundant hiv init parameter and correct default for hiv start time
  • Removes now unnecessary timeline scaling in the Scott County setting.
  • Updated docs to point to the titan-oscar repo for batch submission.

v2.1.0

21 Jan 19:48
2e72ca9
Compare
Choose a tag to compare

V2.1.0

Version 2.1 of TITAN ...

Breaking Changes

  • Params
    • demographics.haart.prob has changed to demographics.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 partnership
    • demographics.safe_sex now requires a sub-dict by bond_type
    • haart.target and prep.target have been changed to haart.cap and prep.cap for clarity
    • moved references to HAART out of hiv and into haart. hiv.aids.haart_scale is now haart.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., a main partnership may have different condom use than a casual 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

14 Dec 19:10
2676ed3
Compare
Choose a tag to compare

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 under drug_type (hiv, haart, death rate, num partners). E.g. demographics.black.MSM.hiv.init is now demographics.black.sex_type.MSM.drug_type.NonInj.hiv.init
    • aids key in demographics moved under hiv
    • drug_type now has sub-key ppl instead of init, params checking enforces the ppl s for a race/sex_type/drug_type combination must add to one
    • prep in the demographics had coverage changed to target and an explicit init key added
    • haart adherence changed to boolean adherent, this affects haart and haart_scaling params
    • msmw feature renamed to external_exposure, new params added to make it more abstract
    • pca feature retired and refactored into the pca interaction and the knowledge exposure
  • HIVModel renamed TITAN 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 and knowledge
  • Interactions are the types of interactions that agents can have in the model, currently sex, injection, and pca
  • Features are interventions or similar events which affect the state of the agent, currently external_exposure (formerly msmw), haart, high_risk, incar, partner_tracing, prep, random_trial, syringe_services, vaccine
  • Random trial has been abstracted to allow treatments (prep or knowledge) 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 with target_as_prob set to true
  • 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 it
  • model.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