# demographic-modeling-module
Demographic Modeling is _opinionated_ tooling for performing demographic analysis using both geography and machine
learning.
## Opinionated
No, this set of tooling written in Python is not going to have a political debate with you. Rather, while flexible
enough to be used in a variety of ways, this tooling provides a clear way to perform analysis. This enables you to
get started and be productive as quickly as possible.
## Getting Started
From the project directory, create an environment with all dependencies installed and linked.
```
> make env
```
This creates a conda environment cloned from the ArcGIS Pro default environment `arcgispro-py3`, and names this new
environment `demographic-modeling`, and also activates this environment for ArcGIS Pro at the same time. If opening
a new command prompt, you can easily activate this environment using the command..
```
> make env_activate
```
...which simply calls `> activate demographic-modeling` for you.
From there, the example workflow can be found in the notebooks in the `./notebooks` directory of the project, and
explored by simply calling.
```
> make jupyter
```
This command takes care of activating the environment, and also starting jupyter lab, so you can get started quickly.
## Project Organization
------------
```
├── LICENSE
├── Makefile <- Makefile with commands like `make data`
├── make.bat <- Windows batch file with commands like `make data`
├── setup.py <- Setup script for the library (dm)
├── .env <- Any environment variables here - created as part of project creation,
│ but NOT syncronized with git repo for project.
├── README.md <- The top-level README for developers using this project.
├── arcgis <- Root location for ArcGIS Pro project created as part of
│ │ data science project creation.
│ ├── demographic-modeling-module.aprx <- ArcGIS Pro project.
│ └── demographic-modeling-module.tbx <- ArcGIS Pro toolbox associated with the project.
├── scripts <- Put scripts to run things here.
├── data
│ ├── external <- Data from third party sources.
│ ├── interim <- Intermediate data that has been transformed.
│ │ └── interim.gdb
│ ├── processed <- The final, canonical data sets for modeling.
│ │ └── processed.gdb
│ └── raw <- The original, immutable data dump.
│ └── raw.gdb
├── docs <- A default Sphinx project; see sphinx-doc.org for details
├── models <- Trained and serialized models, model predictions, or model summaries
├── notebooks <- Jupyter notebooks. Naming convention is a 2 digits (for ordering),
│ │ descriptive name. e.g.: 01_exploratory_analysis.ipynb
│ └── notebook_template.ipynb
├── references <- Data dictionaries, manuals, and all other explanatory materials.
├── reports <- Generated analysis as HTML, PDF, LaTeX, etc.
│ └── figures <- Generated graphics and figures to be used in reporting
├── environment.yml <- The requirements file for reproducing the analysis environment. This
│ is generated by running `conda env export > environment.yml` or
│ `make env_export`.
└── src <- Source code for use in this project.
└── dm <- Library containing the bulk of code used in this
project.
```
<p><small>Project based on the <a target="_blank" href="https://github.com/knu2xs/cookiecutter-geoai">cookiecutter GeoAI project template</a>. This template, in turn, is simply an extension and light modification of the <a target="_blank" href="https://drivendata.github.io/cookiecutter-data-science/">cookiecutter data science project template</a>. #cookiecutterdatascience</small></p>