Skip to main content

Numerical project all about (dynamical) zeta functions and resonances.

Project description

Project

Build Status

Coverage

Checkers

Benchmarks

badge1

badge5

badge6

badge8

badge2

badge3

badge4

docstr-coverage=?

badge7


Introduction

Welcome to PyZeta!

PyZeta is a numerical project written (mostly) in Python. It aims at providing an easy to use interface for the calculation of Pollicott-Ruelle resonances of the geodesic flow on convex cocompact hyperbolic surfaces, i.e. Schottky surfaces. It is planned to provide resonance calculation tools for scattering systems in the future.

The implementation of these facilities heavily relies on the connection between resonances and zeros of dynamical zeta functions. The latter are numerically tractible in the settings mentioned above because of the availability of symbolic dynamics and a technique known as cycle expansion.

The PyZeta project offers its users capabilities ranging from the simple generation of resonance plots for illustrational purposes in papers or talks to advanced numerical experimentation. Furthermore it is capable of calculating so-called weighted zeta functions which allow a more in-depth investigation of resonance structures via certain generalized densities in phase space called invariant Ruelle distributions.

Project Features

This project is in the middle of a migration to an open source model. The following features are already implemented in legacy code and will be ported to this project (soon!):

  • several functions and classes for the calculation and visualisation of geometric quantities of hyperbolic geometry (module hypgeo)

  • class representations of the following Schottky surfaces: hyperbolic cylinder, funneled torus, n-funnel surface (module ifs)

  • an abstract base class for custom implementations of hyperbolic surfaces (module ifs)

  • calculation of quantum mechanical resonances for hyperbolic surfaces (module zeta)

  • calculation of classical resonances for the geodesic flow on hyperbolic surfaces, which for Schottky surfaces coincides with the quantum resonances spectrum by the quantum-classical correspondence (module wzeta)

  • a browser based resonance viewer that allows you to select subsets of resonances according to your requirements for future applications in e.g. invariant Ruelle distribution calculations (module selector)

  • calculation of invariant Ruelle distributions for the geodesic flow on hyperbolic surfaces (module wzeta)

Comprehensive coverage of all modules and an introduction to the mathematics and numerical methods can be found on ReadTheDocs. We also provide hints to the original maths and physics literature. As part of the documentation we provide interactive Jupyter notebooks which could e.g. serve as the starting point for your own PyZeta based research or applications.

Installation

If you have Cython installed, you can simply install this project via pip:

$ pip install pyzeta

If you don’t have a local version of Cython you need to install it first:

$ pip install cython
$ pip install pyzeta

Alternatively you can clone this repository, change into the newly created directory and install it via the following commands (which also installs all dependencies required for development):

$ pip install cython
$ pip install -e .[dev]

Requirements

The core (non-development) requirements for this project include some exceedingly popular numerics packages: numpy, scipy, matplotlib. Furthermore we require cython and rely heavily on numba for performance optimization. Finally we use bokeh to build and run our browser based visualisation tool selector.py.

Getting Started

Tests

The PyZeta project contains a comprehensive test suite for all modules mentioned above. While the tests are an integral part of our continuous integration pipeline, you can just as well run the tests yourself, e.g. to verify your local installation after cloning this repository:

$ pytest pyzeta/tests/

Contributing

If you would like to contribute anything from an improvement of the documentation, a new feature request, bug report or (parts of) a root finding algorithm, please feel free to do so. Any collaborations are welcome and the documentation or the open issues might be a good place to start.

To contribute, either clone or fork the repository and create a development branch dev/<your_feature>. Once you have completed your work on this branch create a pull request on the main branch of this repository. At this point your PR requires (at least) one positive review from a core contributor. Once you have received such a review, maybe after addressing some comments and suggestions by the reviewer(s), your PR will be merged effectively making your work part of the mainline PyZeta package.

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

PyZeta-0.1.1.tar.gz (116.5 kB view hashes)

Uploaded Source

Built Distribution

PyZeta-0.1.1-py3-none-any.whl (154.3 kB view hashes)

Uploaded Python 3

Supported by

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