-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User guide #223
base: develop
Are you sure you want to change the base?
User guide #223
Changes from 4 commits
31543d0
dfed23b
0560495
0ba3530
a0b6de6
78a1559
cfd0cea
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
# Getting Started | ||
# User Guide | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I thought we'd discussed turning this more into a developer's guide instead of a user guide, then moving the install instructions to somewhere more prominent |
||
|
||
To get started, install titan using a local python (version 3.6 or later) install or virtual env using `pip`. Once installed, the model can be run using the `run_titan` program and configured using param files. | ||
## Installation | ||
|
||
To get started, install titan using a local python (version 3.6 or later) install or virtual env using `pip`. | ||
|
||
``` | ||
pip install titan-model | ||
run_titan -p my_params.yml | ||
run_titan -h | ||
``` | ||
|
||
!!! tip | ||
Running a large job locally? Look into using [pypy](https://www.pypy.org/) instead of python for MOAR performance. This is what we use on OSCAR. Otherwise, all of the instructions hold, just using pypy and pypy's pip. | ||
Running a large job locally? Look into using [pypy](https://www.pypy.org/) instead of python for MOAR performance. Otherwise, all of the instructions hold, just using pypy and pypy's pip. | ||
|
||
## Development Setup | ||
|
||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,59 @@ | ||||||
# Walkthrough | ||||||
For documentation on `run_titan.py`, as well as information for running the model interactively, see the [user guide](user_guide.md). | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is the walk through for? needs an intro before linking people to go elsewhere There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd think this would be more the user guide and should maybe be folded in with run_local |
||||||
|
||||||
## Parameter setup | ||||||
TITAN uses the [`paraml`](https://pypi.org/project/paraml/) package for parameter management using YAML. In TITAN, parameters are sub-divided, with each parameter set referring to a main model parameter type (e.g. classes or agent demographics), a model feature (e.g. syringe services), or an exposure (e.g. hiv). Parameters may be set up in one YAML file or a folder of YAML files. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. maybe include a screenshot of a folder of yaml files here? |
||||||
|
||||||
This guide will walk through creating a params file to augment the existing Atlanta setting, creating a small population to practice running. In order to best follow the next steps of the guide, users are encouraged to set this up as a single parameter file entitled `my_params.yml` in your working directory. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
### Model parameters | ||||||
To start, we want to edit the parameter file to run a smaller model over less time so that it will run quickly locally. To do this, we will update population size and number of timesteps. In addition, we can set the random seed to provide reproducibility. To achieve this, add the following to your `my_params.yml` file (without comments): | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why not start with creating a file instead of emptying an empty file? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. or is the editting here more talking about overriding setting defaults? I think this might require a detour into what settings are and how paraml layers the defaults vs the settings vs the user params There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leaving the comments seems fine - I'd drop that parenthetical |
||||||
``` | ||||||
model: | ||||||
seed: # random seed | ||||||
ppl: 1234 # set random seed for population initiation | ||||||
run: 1234 # set random seed for the run | ||||||
num_pop: 100 # create small population | ||||||
time: | ||||||
num_steps: 12 # number of steps in model run | ||||||
burn_steps: 0 # number of "burn-in" steps (negative time) | ||||||
``` | ||||||
|
||||||
### Demographic parameters | ||||||
Your parameter file can also be used to update demographic information and distributions for agents in the model. Here, we will change the percentage of agents of each race (white and Black) in the model. Add the following to `my_params.yml` (or play around with the numbers yourself! Just make sure they add up to 1): | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. instead of capitalizing Black here I'd make them code blocks so it clearly references the demographic classes There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. for each of these sections, I'd more links out where people could learn more about the params, or the features available, etc. |
||||||
``` | ||||||
demographics: | ||||||
black: | ||||||
ppl: 0.5 | ||||||
white: | ||||||
ppl: 0.5 | ||||||
``` | ||||||
|
||||||
### Adding a random trial | ||||||
Features can also be added to the model via params. To turn on the random trial feature, first we need to activate it: | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. link features out to somewhere |
||||||
``` | ||||||
features: | ||||||
random_trial: true | ||||||
``` | ||||||
We can then change the parameters for the trial. Let's make it select agents randomly: | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. link out to the param options here |
||||||
``` | ||||||
random_trial: | ||||||
choice: all | ||||||
``` | ||||||
|
||||||
### Other parameters | ||||||
Full reference for all parameters in TITAN can be found in our [parameter web app](https://pph-collective.github.io/titan-params-app). | ||||||
|
||||||
## Running your params file | ||||||
To run your new params file, you can simply use the command: | ||||||
``` | ||||||
run_titan -p my_params.yml -S atlanta | ||||||
``` | ||||||
This will save the results of your model in a newly-made `results` directory, or overwrite previous results in an existing `results` directory. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. screenshots might be useful in showing what the expected state should be |
||||||
|
||||||
## Sweeping parameters | ||||||
TITAN can also sweep over a set of parameters defined by a CSV file. To use this feature, create a CSV with columns named as `.`-separated parameters. For example, you might change the probability of componenets being treated in the random trial module by using the column name `random_trial.prob` in a `sweep_val.csv` file and populating rows with random numbers between 0 and 1. To run this sweep over the first 10 rows of your CSV, you would use the command: | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. doesn't have to be csv, right? should this mention the command line version and then maybe do the csv as a tip add on? |
||||||
``` | ||||||
run_titan -p my_params.yml -S atlanta -W sweep_file.csv -R 1:10 | ||||||
``` | ||||||
Your results directory now contains a report with outputs using all 10 values, as well as a file linking each run's id with its value for the probability. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd consider renaming this file