Skip to main content

A Python implementation of the SPIDER framework for data-driven equivariant modeling of continuous and discrete systems

Project description

PySPIDER: a Python implementation of the SPIDER framework for data-driven equivariant modeling of continuous and discrete systems

Introduction

SPIDER (Sparse Physics-Informed Discovery of Empirical Relations) is a framework for using sparse regression to perform data-driven inference of symmetry-equivariant models of spatiotemporally extended physical systems. These take the form of sets of tensor-valued

  • partial differential equations describing continuous systems or
  • partial integro-differential equations describing systems of discrete interacting particles or agents.

PySPIDER is a Python implementation that employs techniques from programming language theory to automate library generation, evaluation, and symbolic deduction, allowing the user to quickly obtain a full physically meaningful and quantitatively accurate description of the dataset.

Please check out my dissertation to learn more!

Getting started

The "tutorials" directory contains demonstrations of how to use PySPIDER to learn models for both continuous and discrete systems.

Installation

PySPIDER is now available as a TestPyPI package. To install:

pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pySPIDER_SR

This command installs PySPIDER_SR from TestPyPI while allowing dependencies (like numba-kdtree) to be installed from the main PyPI repository.

Alternatively, you can clone this GitHub repository for development or if you prefer to install from source.

Dependencies:

Python version: 3.12+

Libraries:

z3-solver - Z3 satisfiability modulo theory (SMT) solver for library generation
findiff - for finite differencing
numba-kdtree - for fast coarse-graining of discrete data
ffmpeg (optional) - for creating videos of data
h5py (optional) - to read HDF5 or MATLAB v7.3 data files

note: make sure that the latest version of scipy is installed (>=1.6)

Organization

The package is organized into three groups of modules:

  • commons contains modules corresponding to general concepts that are used for both continuous and discrete problems.
  • continuous contains modules specific to continuous systems.
  • discrete contains modules specific to systems of discrete interacting particles or agents.

Using PySPIDER for your project

Please feel free to contact us if you are interested in using PySPIDER for a project. We are happy to help you set it up for your problem of interest.

If you use PySPIDER, please cite the following paper as well as (check back later):

@article{gurevich_learning_2024,  
	author = {Gurevich, Daniel R. and Golden, Matthew R. and Reinbold, Patrick A.K. and Grigoriev, Roman O.},  
	title = {Learning fluid physics from highly turbulent data using sparse physics-informed discovery of empirical relations ({SPIDER})},  
 	journal = {Journal of Fluid Mechanics},  
	volume = {996},  
	year = {2024},  
	pages = {A25}  
}

Contributing to SPIDER

We have plenty of ideas for improving SPIDER, ranging from relatively simple coding projects to substantial conceptual generalizations, but not enough manpower to implement all of them currently. Several of these would substantially expand SPIDER's range of scientific applications and lead to some nice papers. If you might be interested in contributing to the project, we would be glad to chat.

Thank you

Thank you for checking out PySPIDER! Please let us know if you encounter any issues using this code or have comments or questions.

Daniel Gurevich
dgurevich@ucla.edu

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

pyspider_sr-2.1.0.tar.gz (75.5 kB view details)

Uploaded Source

Built Distribution

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

pyspider_sr-2.1.0-py3-none-any.whl (67.4 kB view details)

Uploaded Python 3

File details

Details for the file pyspider_sr-2.1.0.tar.gz.

File metadata

  • Download URL: pyspider_sr-2.1.0.tar.gz
  • Upload date:
  • Size: 75.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for pyspider_sr-2.1.0.tar.gz
Algorithm Hash digest
SHA256 4198779a9108545b71225858c5b10bb2d233b11ddd1d9a61be72de1b1d3c7400
MD5 ca6503d69541ee325ad08a8c60a1e041
BLAKE2b-256 c266ce070524664b0679a0646ff9bf00017bd8d2f12b77c1747ad7864fd23367

See more details on using hashes here.

File details

Details for the file pyspider_sr-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyspider_sr-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 67.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for pyspider_sr-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85c6ddb71237012265080b0dc5d9b8f93b5ff3f64642ad25090baba3acbb34a2
MD5 e8b416a43a8729709c5151281912cb74
BLAKE2b-256 a145a68cc6f24717f3bfb769f7d0ff5e881b970e93f560330c23dd6c2ddb9fb5

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