surface-dynamics

Teichmüller dynamics in SageMath

https://github.com/flatsurf/surface-dynamics

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.2%) to scientific vocabulary
Last synced: 8 months ago · JSON representation

Repository

Teichmüller dynamics in SageMath

Basic Info
Statistics
  • Stars: 13
  • Watchers: 4
  • Forks: 14
  • Open Issues: 26
  • Releases: 4
Created about 5 years ago · Last pushed 8 months ago
Metadata Files
Readme Changelog License Authors Zenodo

README.md

logo

surface-dynamics

License: GPL 2.0 or later Test DOI 10.5281/zenodo.13356803

Dynamics with Surfaces


The surface-dynamics package for SageMath provides functionality related to interval exchange transformations, translation surfaces, mapping classes and more. It is based on SageMath and relies heavily on:

  • GMP for arbitrary precision arithmetic
  • PARI/GP for number field computations
  • GAP for finite groups representation and permutation groups
  • PPL (Parma Polyhedra Library) and LattE (Lattice point Enumeration) for polytope computations

Usage

Here is an example session showcasing some of the computations that are possible with surface-dynamics. For further examples, please consult our documentation.

```python sage: from surfacedynamics.all import * sage: o = Origami('(1,2)', '(1,3)') sage: o (1,2)(3) (1,3)(2) sage: o.sumoflyapunovexponents() 4/3 sage: o.lyapunovexponentsapprox() # abs tol 0.05 [0.33441823619678734] sage: o.veechgroup() Arithmetic subgroup with permutations of right cosets S2=(2,3) S3=(1,2,3) L=(1,2) R=(1,3) sage: q = QuadraticStratum(1, 1, 1, 1) sage: q.orientationcover() H5(2^4) sage: q.components() [Q2(1^4)^hyp] sage: c = q.components()[0] sage: c Q2(1^4)^hyp sage: c.orientationcovercomponent() H5(2^4)^odd

sage: AbelianStrata(genus=3).list() [H3(4), H3(3, 1), H3(2^2), H3(2, 1^2), H_3(1^4)]

sage: O = OrigamiDatabase() sage: q = O.query(("stratum", "=", AbelianStratum(2)), ("nbsquares", "=", 5)) sage: q.numberof() 2 sage: for o in q: ....: print("%s\n- - - - - - - -" % o) (1)(2)(3)(4,5) (1,2,3,4)(5)


(1)(2)(3,4,5) (1,2,3)(4)(5)


sage: Q12reg = QuadraticStratum(12).regularcomponent() sage: Q12reg.lyapunovexponentsHplus(nbiterations=2**20) # abs tol 0.05 [0.6634, 0.4496, 0.2305, 0.0871] sage: Q12reg.lyapunovexponentsHminus(nbiterations=2**20) # abs tol 0.05 [1.0000, 0.3087, 0.1192] ```

Installation

The easiest and recommended way to install surface-dynamics is to install sage-flatsurf which includes surface-dynamics. Please follow the instructions for Linux and macOS or the instructions for Windows.

If you have a working copy of SageMath already you can also try to install surface-dynamics from PyPI using pip.

$ sage -pip install surface-dynamics

Build and Develop surface-dynamics with pixi

While surface-dynamics can be built and developed with pip like any other Python package, we strongly recommend that you install pixi to get all the dependencies right.

Once you have cloned this source repository, you can use the following commands:

  • pixi run test to build surface-dynamics and run its test suites
  • pixi run sage to build surface-dynamics and spawn SageMath with the local surface-dynamics available
  • pixi run doc to build and preview the documentation
What is pixi? pixi is a tool for developers based on [conda](https://en.wikipedia.org/wiki/Conda_(package_manager)) & [conda-forge](https://conda-forge.org) so that we can all use the same workflows in the same defined environments. pixi allows us to ship a very opinionated setup to developers, namely a number of opinionated scripts with corresponding tested (and opinionated) dependencies. This makes the whole development experience much more reliable and reproducible, e.g., the CI on GitHub Pull Requests runs with the exact same setup, so if something fails there, you can just run the CI command to hopefully get exactly the same behavior locally.
How do I use pixi? If you have not used pixi before, the most relevant pixi command is: ```sh pixi run TASK ``` Run `pixi task list` to see the available tasks. All tasks are defined in the `pyproject.toml` file and most are used somewhere in our GitHub Continuous Integration setup, see .github/workflows/.
Why don't we add all these dependencies normally to pyproject.toml? The dependency handling that Python provides when it comes to binary dependencies is not very robust. At the moment, pixi/conda solve this problem in a much better way.
Can I use pip and other tools with pixi? More experienced developers may not want to use the provided tasks. You can also just use the curated list of dependencies that pixi provides and drop into a shell with these dependencies installed. For example, to run the doctests directly, you could: ```sh pixi shell -e dev pip install -e . sage -tp surface_dynamics ```

Feedback and Contributions

If you have tried out surface-dynamics, we are thrilled to learn about your experiences. If you ran into any problems or have suggestions for improvement, please create an issue.

If you want to contribute to surface-dynamics, pull requests are always welcome :heart:

We are also happy to walk you through the process personally if you are unsure how to get started. Feel free to reach out in the #flatsurf stream on Zulip in any case.

Authors

See AUTHORS for a list of authors or visit our zenodo page.

License

surface-dynamics is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; either version 2.0 of the License, or (at your option) any later version. See https://www.gnu.org/licenses/.

How to cite this project

If you have used this project to prepare a publication please cite us as described on our zenodo page.

Versions

The first release of surface-dynamics as a SageMath SPKG happened on the 30th of July 2015. Refer to our Releases Page for the latest releases.

Acknowledgements

  • Julian Rth's contributions to this project have been supported by the Simons Foundation Investigator grant of Alex Eskin.

Owner

  • Name: flatsurf
  • Login: flatsurf
  • Kind: organization
  • Email: contact@flatsurf.org

GitHub Events

Total
  • Create event: 11
  • Release event: 3
  • Issues event: 16
  • Watch event: 1
  • Delete event: 7
  • Issue comment event: 49
  • Push event: 50
  • Pull request review event: 9
  • Pull request event: 57
  • Pull request review comment event: 8
  • Fork event: 1
Last Year
  • Create event: 11
  • Release event: 3
  • Issues event: 16
  • Watch event: 1
  • Delete event: 7
  • Issue comment event: 49
  • Push event: 50
  • Pull request review event: 9
  • Pull request event: 57
  • Pull request review comment event: 8
  • Fork event: 1

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 41
  • Total pull requests: 126
  • Average time to close issues: 27 days
  • Average time to close pull requests: 30 days
  • Total issue authors: 9
  • Total pull request authors: 10
  • Average comments per issue: 0.88
  • Average comments per pull request: 1.28
  • Merged pull requests: 99
  • Bot issues: 0
  • Bot pull requests: 13
Past Year
  • Issues: 12
  • Pull requests: 50
  • Average time to close issues: 29 days
  • Average time to close pull requests: 11 days
  • Issue authors: 6
  • Pull request authors: 6
  • Average comments per issue: 1.5
  • Average comments per pull request: 1.02
  • Merged pull requests: 39
  • Bot issues: 0
  • Bot pull requests: 13
Top Authors
Issue Authors
  • videlec (30)
  • Fougeroc (2)
  • saraedum (2)
  • magalijay (2)
  • mkoeppe (1)
  • slel (1)
  • Oscfon (1)
  • Saraaqzs (1)
  • fchapoton (1)
Pull Request Authors
  • fchapoton (47)
  • saraedum (28)
  • videlec (28)
  • dependabot[bot] (13)
  • KaiFu2210 (2)
  • Oscfon (2)
  • mkoeppe (2)
  • Fougeroc (2)
  • chriszhang3 (1)
  • iyakovlev23 (1)
Top Labels
Issue Labels
enhancement (6) bug (5) wishlist (4) code smell (2) documentation (1)
Pull Request Labels
dependencies (13) github_actions (7) enhancement (2)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 264 last-month
  • Total dependent packages: 2
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 22
  • Total maintainers: 2
pypi.org: surface-dynamics

Dynamics on surfaces

  • Versions: 17
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 264 Last month
Rankings
Dependent packages count: 4.8%
Downloads: 9.6%
Average: 12.0%
Dependent repos count: 21.6%
Maintainers (2)
Last synced: 8 months ago
conda-forge.org: surface-dynamics

The surface_dynamics package for SageMath adds functionality related to interval exchange transformations, translation surfaces, mapping classes and more.

  • Versions: 5
  • Dependent Packages: 1
  • Dependent Repositories: 1
Rankings
Dependent repos count: 24.3%
Dependent packages count: 29.0%
Average: 42.3%
Forks count: 52.2%
Stargazers count: 63.6%
Last synced: 8 months ago

Dependencies

.github/workflows/doc.yml actions
  • JamesIves/github-pages-deploy-action 3.7.1 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/test.yml actions
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
environment.yml conda
  • c-compiler
  • cxx-compiler
  • gap-defaults
  • givaro 4.1.1
  • gmpxxyy >=1.0.1,<2
  • ipywidgets
  • libiconv
  • matplotlib-base
  • pip
  • pyeantic >=1.0.0,<2
  • pyintervalxt >=3.1.0,<4
  • pytest
  • pytest-xdist
  • sage-flatsurf
  • sagelib
  • sagemath-db-conway-polynomials
  • scipy
  • sphinx >=4.2.0,<6
  • sympy