/helipad

An agent-based modeling framework for Python with a shallow learning curve and powerful visualization capabilities.

Primary LanguagePythonMIT LicenseMIT

Helipad

Helipad is an agent-based modeling framework for Python with powerful visualization capabilities and a shallow learning curve. Documentation and API reference can be found at helipad.dev.

Features

  • ⚓️ A simple hook-based API makes it easy to build a model without worrying about the features you don’t need
  • 📈 Interactive and live-updating visualizations, including time series, bar charts, networks, spatial, and an API for writing custom visualizations
  • 👋🏻 Flexible parameter API allows parameter values to be set programmatically, adjusted manually from the control panel while the model is running, or shocked stochastically
  • 🪐 Cross-platform and multimodal. Models can be written and run with a Tkinter GUI, in Jupyter notebooks, or without a GUI at all
  • 🤹🏻‍♂️ Agents can barter, buy and sell with money, reproduce both haploid and polyploid, and more
  • 🕺🏻 A variety of model types: sequential or random-activation models, matching models, multi-level models, network models, spatial models, and more

How to Use

You can install Helipad using either Pip or Conda, depending on your preferred package manager.

pip install helipad

conda install -c charwick helipad

Once installed, getting started with a model is very simple.

from helipad import *
heli = Helipad()

#Use the heli object to set up here

heli.launchCpanel()

The included bootstrap model contains a more detailed template, and the sample models exemplify various use cases. The documentation also includes a complete hook and function reference.

Requirements

As of version 1.7, Helipad requires Python 3.9 or higher. The following libraries are also required:

How to Cite

If you use Helipad in your own research, please cite as follows:

Harwick, Cameron (2021). “Helipad: A Framework for Agent-Based Modeling in Python.” Working paper available at ssrn.com/abstract=3870501.

Version History

  • 1.6: Geospatial models, agent scatterplot visualizer, new Agents and Edges containers
  • 1.5: Polar grid spatial models, various spatial improvements
  • 1.4: More consistent container API, localization, miscellaneous interface improvements
  • 1.3: Allow mixing time series and other plots, display networks on spatial maps, goods API improvements
  • 1.2: Extensible visualization API, events, performance profiling, Jupyterlab support
  • 1.1: Virtual parameters, improved Jupyter flexibility, spatial pre-alpha, misc improvements
  • 1.0: Jupyter integration, hook decorators, and separated control panel from plotting
  • 0.7: Ability to output stackplots, parameter sweeps, and an updated parameter identification pattern
  • 0.6: Support for multi-level models
  • 0.5: Support for matching models, and the checkGrid class
  • 0.4: Initial PyPI release