Skip to main content

The Population activity Modeller (PAM) is a python API for activity sequence modelling.

Project description

PAM

Population Activity Modeller

DailyCIbadge image

PAM is a python library for population activity sequence modelling. Example use cases:

  • Read an existing population then write to a new format.
  • Modify an existing population, for example to model activity locations.
  • Create your own activity-based model.

PAM supports common travel and activity formats, including MATSim.

Activity Sequences?

Population activity sequences (sometimes called activity plans) are used to model the activities (where and when people are at home, work, education and so on) and associated travel of a population:

PAM

Activity sequences are used by transport planners to model travel demand, but can also be used in other domains, such as for virus transmission or energy use modelling.

Brief History

PAM was originally built and shared to rapidly modify existing activity models to respond to pandemic lock-down scenarios.

PAM

This functionality used a read-modify-write pattern. Where modifications are made by applying policies. Example policies might be (a) infected persons quarantine at home, (b) only critical workers travel to work, and (c) everyone shops locally.

PAM

Features

Activity Modelling

In addition to the original read-modify-write pattern and functionality, PAM has modules for:

  • location modelling
  • discretionary activity modelling
  • mode choice modelling
  • facility sampling
  • vehicle ownership

More generally the core PAM data structure and modules can be used as a library to support your own use cases, including building your own activity-based model.

MATSim

PAM fully supports the MATSim population/plans format. This includes vehicles, unselected plans, leg routes and leg attributes. A core use case of PAM is to read-modify-write experienced plans from MATSim. This can allow new MATSim scenarios to be "warm started" from existing scenarios, significantly reducing MATSim compute time.

Documentation

For more detailed instructions, see our documentation.

Installation

To install PAM, we recommend using the mamba package manager:

As a user

mamba create -n pam -c conda-forge -c city-modelling-lab cml-pam
mamba activate pam

As a developer

git clone git@github.com:arup-group/pam.git
cd pam
mamba create -n pam -c conda-forge -c city-modelling-lab --file requirements/base.txt --file requirements/dev.txt
mamba activate pam
pip install --no-deps -e .

Installing with pip

Installing directly with pip as a user (pip install cml-pam) or as a developer (pip install -e '.[dev]') is also possible, but you will need the libgdal & libspatialindex geospatial non-python libraries pre-installed.

For more detailed instructions, see our documentation.

Contributing

There are many ways to make both technical and non-technical contributions to PAM. Before making contributions to the PAM source code, see our contribution guidelines and follow the development install instructions.

If you are using pip to install PAM instead of the recommended mamba, you can install the optional test and documentation libraries using the dev option, i.e., pip install -e '.[dev]'

If you plan to make changes to the code then please make regular use of the following tools to verify the codebase while you work:

  • pre-commit: run pre-commit install in your command line to load inbuilt checks that will run every time you commit your changes. The checks are: 1. check no large files have been staged, 2. lint python files for major errors, 3. format python files to conform with the pep8 standard. You can also run these checks yourself at any time to ensure staged changes are clean by simple calling pre-commit.
  • pytest - run the unit test suite, check test coverage, and test that the example notebooks successfully run.
  • pytest -p memray -m "high_mem" --no-cov (not available on Windows) - after installing memray (mamba install memray pytest-memray), test that memory and time performance does not exceed benchmarks.

For more information, see our documentation.

Building the documentation

If you are unable to access the online documentation, you can build the documentation locally. First, install a development environment of PAM, then deploy the documentation using mike:

mike deploy 0.2
mike serve

Then you can view the documentation in a browser at http://localhost:8000/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cml-pam-0.3.1.tar.gz (165.6 kB view details)

Uploaded Source

Built Distribution

cml_pam-0.3.1-py3-none-any.whl (128.3 kB view details)

Uploaded Python 3

File details

Details for the file cml-pam-0.3.1.tar.gz.

File metadata

  • Download URL: cml-pam-0.3.1.tar.gz
  • Upload date:
  • Size: 165.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for cml-pam-0.3.1.tar.gz
Algorithm Hash digest
SHA256 815503da8a5d9a0cb3089360089062f279d31a8d30aee064b99055acd569d820
MD5 cdd06c49bc445148d901467bbff9aa44
BLAKE2b-256 343a4618ad4052e992cba5aaa1687c110e7e314caa44a3f8d6d88126edbcadc1

See more details on using hashes here.

File details

Details for the file cml_pam-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: cml_pam-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 128.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for cml_pam-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bf6777a028243863eb473060226b732409b368025234f0758e9ebf196326dfbf
MD5 4136b5489101bed141a31d3e9d033ad6
BLAKE2b-256 a37ef8b2fc63c236fc000251bfd68a60bc5be5ed8d93e50614ff736812a51358

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page