General-purpose agent-based modeling framework
Project description
General purpose agent-based modeling library to integrate C++ and Python
CppyABM is a free open-source header-only library that enables agent-based modeling by providing essential tools in both C++ and Python as well as mixing both in a single model. The modeling in both C++ and Python follows similar semantics and style. Therefore, a model developed in one languages can be conveniently transferred to another. In addition, CppyABM provides binding tools to specifically expose certain parts of a model written in C++ for further development in Python. This enables users to take the advantage of both languages simultaneously. CppyABM uses RTvisualize for browser-based real-time visualization. The link for the complete documentation. See examples folder as showcase of CppyABM utility.
Install
For an extended version of the available installation options, see documentation.
For Python development
Using pip manager (in case any error occured, install using the next option):
$ pip install --upgrade cppyabm
Or, download the package and in the root folder, command:
$ python3 setup.py install
For C++ development
The library can be also installed solely for C++ development using, $ git clone https://github.com/janursa/CppyABM $ cd CppyABM && mkdir build && cd build $ cmake .. -DCPP=TRUE $ make install
For Python-C++ development
In order to create a mixed model using both languages of C++ and Python, in addition to CppyABM, pybind11 needs to be installed. It can be either seperately installed according to the instruction given on pybind11-installation, or can be included in a project using Cmake. See documentation.
Docker
The Docker image "janursa/cppyabm" provides an environment where the lastest version of CppyABM, pybind11, and RTvisualize are installed. The following command will land you in a container with all set ready for development.
$ docker run --rm -t -i janursa/cppyabm /bin/bash
To run the examples with visualization, two seperate bash of same container needs to be executed; one for running the model and another for visualization. To do so,
[1]$ docker run -d -p 1818:8050 -t janursa/cppyabm /bin/bash
Runs the image in a detached mode and maps the port number 8050 (container) to 1818 (host). Then,
[2]$ docker ps
Get the CONTAINER ID
,
[3]$ docker exec -it container_id bash
Once in the container, navigate to the example folder and run the model. In parallel, open another bash using the exact command as [3]. But, this time run the monitor_script.py
for visualization. It will output the graphs to the port http://0.0.0.0:1818
.
License
This project is licensed under the MIT License - see the LICENSE.md file for details
To cite
Authors
- Jalil Nourisa
Useful links
Familiarity with pybind11 is helpful during the Python binding process.
Contributing to CppyABM
In case of encountering a problem, pls report it as an issue or contant the author (jalil.nourisa@gmail.com)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cppyabm-1.0.21.tar.gz
.
File metadata
- Download URL: cppyabm-1.0.21.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.8.2 requests/2.24.0 setuptools/58.0.4 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e171c100104bc14df1df5748a4cc953de45e2713ae199d3c3cab146044dd85c5 |
|
MD5 | ef399cd125afee88880a3ca98db30804 |
|
BLAKE2b-256 | e91947027e89b4a0d9d3cb47dede602db83f010c0392131f96c138946b6b6900 |
File details
Details for the file cppyabm-1.0.21-cp37-cp37m-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: cppyabm-1.0.21-cp37-cp37m-macosx_10_9_x86_64.whl
- Upload date:
- Size: 163.7 kB
- Tags: CPython 3.7m, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.8.2 requests/2.24.0 setuptools/58.0.4 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c046a123f7094b857b4e4355b087a24d51a2e3f4d3e35bed07ca24f2b191498 |
|
MD5 | ce60a8066c0df4afa50ab94088788391 |
|
BLAKE2b-256 | a325c476d23742a9ef1dc976528addad67d52653c1315b03fd2be2aa88d33921 |