arup-group / genet

Manipulate MATSim networks via a Python API.
MIT License
45 stars 9 forks source link
arup city-modelling city-modelling-lab cml network

Network Scenario Generator (GeNet)

DOI

GeNet provides tools to represent and work with a multi-modal transport network with public transport (PT) services. It is based on MATSim's representation of such networks.

The goal of GeNet is to:

The underlying network available to PT services (roads, railways, but also ferry/flight connections) uses a networkx.MultiDiGraph with additional methods for 'links' which are unique in genet.Network (networkx.MultiDiGraph accepts multiple edges between the same from and to node pair; referring to an edge in networkx.MultiDiGraph and genet.Network has the same effects, i.e. the result is a dictionary indexed by the multi edge index). The PT services are represented through the genet.Schedule class which relies on other genet classes: the Schedule relies on a list of genet.Service's, which in turn consists of a list of genet.Route's. Each Route class object has an attribute stops which consists of genet.Stops objects. The Stops carry spatial information for the PT stop.

You can use GeNet's CLI to run pre-baked modifications or checks on networks. You can also write your own python scripts, importing genet as a package, use IPython shell or Jupyter Notebook to load up a network, inspect or change it and save it out to file.

Documentation

For more detailed instructions, see our documentation.

Installation

If you do not plan to make any code changes, you can install GeNet as a Docker image or a Python package.

For more detailed instructions, see our documentation.

As a Docker image

git clone git@github.com:arup-group/genet.git
cd genet
docker build -t "cml-genet" .

As a Python package

To install genet (indexed online as cml-genet), we recommend using the mamba package manager:

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

Contributing

There are many ways to contribute to genet. Before making contributions to the genet source code, see our contribution guidelines and follow the development install instructions.

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:

For more information, see our documentation.

Installing a development environment

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

Building the documentation

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

mike deploy develop
mike serve

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

Credits

This package was created with Cookiecutter and the arup-group/cookiecutter-pypackage project template.