Table of contents:
witan.models.demography is a Clojure library to run demographic models.
These models will be used on MastodonC's Witan city decision-making platform. They can also be used independently of Witan as a standalone demographic modelling library.
- Population projections: Release 0.1.0 includes a minimal version of the model.
See the docs for more info about the methodology.
If you wish to contribute to
witan.models.demography, please read the following guidelines.
Fork this repository (or clone it if you have writing rights to the repository).
Create a new branch. Let's try to keep the naming conventions for branches as follows:
This way, when you see a branch starting by
fix/we know something is broken and that someone is repairing it.
Keep branches short so that the reviewing process is easier and faster
Start a pull request (PR) as early as possible. You can add a
WIPin the title to specify it's in progress.
Describe the aim of your changes in the PR description box.
Before asking for a review of your PR:
- Write unit tests, docstrings, and documentation.
- Try to not have data changes and code changes in the same commit, and preferably not the same branch, as the data tends to swamp the code and hinder reviewing.
- Avoid modifying a file that is being modified on another branch.
- Avoid changing the name of a file while someone is working on another branch.
- We moved away from using the Incanter library.
core.matrixdatasets look for functions:
- Have a look at the following paragraph for useful development tools.
- Commit and push your changes often using descriptive commit messages. And squash commits (as much as possible/necessary) before asking for a review.
When combining functions into a model there are useful tools to take advantage of, thanks to dependencies for
To visualise a model workflow, you need to:
$ sudo apt-get install graphviz
$ brew install graphviz
For any OS you should also be able to install it with Pip:
$ pip install graphviz.
- Use the
view-workflowfunction using the cohort-component-model workflow as follows:
(witan.workspace-executor.core/view-workflow (:workflow witan.models.dem.ccm.models/cohort-component-model))
To print logs, use the
defworkflowfn is called logs will be written to your repl or terminal. It's very useful for debugging purposes.
Turn it off with:
Splitting and Uploading data
By default, the data for the CCM is amalgamated into single data files. To split the files by GSS code, use the following command:
To upload all the CSV files to S3 (gzipped), use the following command:
This assumes a valid AWS profile, called 'witan', is installed. For ease, these commands can be chained like so:
lein do split-data, upload-data
Copyright © 2016 MastodonC Ltd
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.