Skip to main content

A Python library for simplifying innovation/policy diffusion modelling.

Project description

innovate

A Python library for simplifying innovation and policy diffusion modeling.

This library provides a flexible and robust framework for modeling the complex dynamics of how innovations, technologies, and policies spread over time. It is designed for researchers and practitioners in economics, marketing, public policy, and technology forecasting.

Core Philosophy

innovate is built on a modular architecture, allowing users to combine different models and components to simulate real-world scenarios. The library supports everything from classic S-curve models to advanced agent-based simulations.

Key Features

  • Modular Design: A suite of focused modules for specific modeling tasks:
    • innovate.diffuse: For foundational single-innovation adoption curves (Bass, Gompertz, Logistic).
    • innovate.substitute: For modeling technology replacement and generational products (Fisher-Pry, Norton-Bass).
    • innovate.compete: For analyzing market share dynamics between competing innovations.
    • innovate.hype: For simulating the Gartner Hype Cycle and the impact of public sentiment.
    • innovate.fail: For understanding the mechanisms of failed adoption.
    • innovate.adopt: For classifying adopter types based on their adoption timing.
  • Efficient Data Handling: Uses pandas with an Apache Arrow backend for high-performance data manipulation.
  • Extensible: Designed with clear base classes to make it easy to add new custom models.
  • Computationally Aware: Leverages vectorized NumPy operations for efficiency, with a backend abstraction that will support future acceleration (e.g., with JAX).

Innovate in the Ecosystem

innovate is designed to fill a unique gap in the Python ecosystem. While some libraries offer diffusion models and others provide generic agent-based modeling (ABM) frameworks, innovate is the first to integrate both under a unified, domain-specific toolkit for innovation dynamics.

Feature innovate PyDiM / bassmodeldiffusion Mesa / AgentPy / BPTK-Py
Core Diffusion Models ✅ (Bass, Gompertz, Logistic) ✅ (Primarily Bass) ❌ (Not its focus)
Competition Models ✅ (Lotka-Volterra) ✅ (Via custom ABM)
Substitution Models ✅ (Fisher-Pry) ✅ (Via custom ABM)
Hype Cycle Modeling ✅ (Composite & DDE models) ✅ (Via custom ABM)
Agent-Based Modeling ✅ (Integrated with mesa) ✅ (Core functionality)
Pre-configured ABM Scenarios ✅ (Competition, Hype, Disruption) ❌ (Requires manual implementation)
System Dynamics ✅ (BPTK-Py only)
Unified Framework ✅ (Diffusion + Competition + ABM) ❌ (Focused on diffusion) ❌ (Focused on ABM/SD)
Parameter Fitting ❌ (Not a primary feature)
Visualization ✅ (Network/Grid plots)

This integrated approach means you can start with high-level diffusion models and seamlessly transition to complex, bottom-up agent-based simulations without changing frameworks.

Roadmap

The innovate library is under active development. For detailed plans on upcoming features, including the Agent-Based Modeling (ABM) framework and advanced policy analysis tools, please see our Roadmap.

Installation

pip install innovate

(Note: The package is not yet available on PyPI under this name, but will be in the future).

You will also need to install pyarrow:

pip install pyarrow

Usage

Examples and tutorials will be provided in the examples/ directory to demonstrate how to use the library for various modeling scenarios.

Example Plots

Here is a sample of the kinds of visualizations you can generate with innovate.

Bass Diffusion Lotka-Volterra Competition
Bass Diffusion Curve Lotka-Volterra Competition
Hype Cycle Reduction Analysis
Hype Cycle Reduction Analysis
Gompertz Diffusion Logistic Diffusion
Gompertz Diffusion Curve Logistic Diffusion Curve
Fisher-Pry Substitution Norton-Bass Substitution
Fisher-Pry Substitution Norton-Bass Substitution
Multi-Product Diffusion
Multi-Product Diffusion

License

This project is licensed under the Apache 2.0 License.

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

innovate-0.2.1.tar.gz (57.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

innovate-0.2.1-py3-none-any.whl (61.2 kB view details)

Uploaded Python 3

File details

Details for the file innovate-0.2.1.tar.gz.

File metadata

  • Download URL: innovate-0.2.1.tar.gz
  • Upload date:
  • Size: 57.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for innovate-0.2.1.tar.gz
Algorithm Hash digest
SHA256 3e362d2217004409492c92f8adb912d224d1fc89cf7394304d4d443728b5cf81
MD5 b055b1ee899c9f7262ab3b50a26c24b9
BLAKE2b-256 59ae9b46b9356e9fceb12a18bdd6c35538df7e1d23d9b85476073d9d7c6682e9

See more details on using hashes here.

File details

Details for the file innovate-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: innovate-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 61.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for innovate-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1ae1342a409c67f8296a5c4bfd2b7e494d81105119ec43b66b71b1daca5d5a62
MD5 45ce4ed58113394bf86db3e79dc32cbb
BLAKE2b-256 211f07289c6555d142f512e7e01428a5238f807d5e54b4d19f6ae28b19c6a34b

See more details on using hashes here.

Supported by

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