Skip to main content

Tautological ring on Mbar_g,n

Project description


admcycles is a SageMath module to compute with the tautological ring of the moduli spaces of complex curves. You can install it on top of a SageMath installation on your computer (see the instructions below). You can alternatively use one of the online services below that have admcycles already installed:

  • SageMathCell: An online service for SageMath computations that does not require authentification.
  • CoCalc: A complete computation environment that offers a free plan subscription (with limited resources).

admcycles includes the SageMath module diffstrata to compute with the tautological ring of the moduli space of multi-scale differentials, a compactification of strata of flat surfaces. It is particularly tailored towards computing Euler characteristics of these spaces.

Detailed information on the package is contained in the documents



Make sure that SageMath is installed on your computer. Detailed installation instructions for different operating systems are available here and on the SageMath website.

All the command below must be run inside a console (the last character of the prompt is usally a $). On Windows this is called SageMath Shell while on linux and MacOS this is often referred to as a terminal.

Inside the console, we assume that the command sage launches a Sage session (whose prompt is usually sage:). To quit the Sage session type quit and press Enter.

Installation with pip (the Python package manager)

The most convenient way to use admcycles is to add the package to your Sage installation. The exact procedure for this depends on your operating system and how you installed Sage. If the pip installation fails, see the sections Manual installation with pip or Use without installation below.

  • If you manually installed Sage by downloading it from the website, then run in a shell console:

    $ sage -pip install admcycles --user

    Here, the --user is an optional argument to pip which, when provided, will install admcycles not inside the Sage folder but in your home directory.

  • If you have a linux distribution and installed the sagemath package via your package manager then run in a shell console:

    $ pip install admcycles --user

    The pip command above might have to be changed to pip2 or pip3 depending on your system. Also, on Debian/Ubuntu systems, the following step might be necessary before running the above command:

    $ source /usr/share/sagemath/bin/sage-env

Manual installation with pip

The automatic installation with pip from Section Installation with pip might fail. One common reason is the lack of SSL support of the SageMath binaries. In such situation you can follow the procedure below that bypass the connection of pip to the web.

  • Download the admcycles package as a tar.gz-file or .zip file either from PyPI or from gitlab.

  • Inside a shell console run:

    $ sage -pip install /where/is/the/package.tar.gz --user

    Here, the --user is an optional argument to pip which, when provided, will install admcycles not inside the Sage folder but in your home directory.

Installation of the development version

If you want to install the development version, you need to have the versioning software git installed. The only change in the procedure is to replace admcycles in the any of the command above by git+


If you have already installed admcycles and a new version appears on PyPI, you can update your installation by appending the option --upgrade above.

Use without installation

To use the package without installing, download the package as a .zip or .tar.gz-file either from PyPI or from gitlab. Unpack the .zip or .tar.gz file. This creates a folder which should contain a file In order to use the module, you need to run Sage from this folder. For example, if the full path of this folder is /u/You/Downloads/admcycles, you could do:

$ cd /u/You/Downloads/admcycles
$ sage

Or directly inside a Sage session:

sage: cd /u/You/Downloads/admcycles

If you run Sage in Windows using cygwin, the path above should be a cygwin path and will looks something like /cygdrive/c/Users/You/Downloads/admcycles-master.


To start using admcycles, start a Sage session (either in the command line, or a Jupyter notebook, or inside one of the online services). Then type:

sage: from admcycles import *

To try a first computation, you can compute the degree of the class kappa_1 on Mbar_{1,1} by:

sage: kappaclass(1,1,1).evaluate()

You can have a look at the above computation directly in SageMathCell.

Here is a more advanced computation:

sage: t1 = 3*sepbdiv(1,(1,2),3,4) - psiclass(4,3,4)^2
sage: t1
Graph :      [1, 2] [[1, 2, 5], [3, 4, 6]] [(5, 6)]
Polynomial : 3*
Graph :      [3] [[1, 2, 3, 4]] []
Polynomial : (-1)*psi_4^2

To use diffstrata, the package must be imported separately. Type:

sage: from admcycles.diffstrata import *

To try a first computation, you can compute the Euler characteristic of the minimal stratum H(2) in genus 2:

sage: X = Stratum((2,))
sage: X.euler_characteristic()

Here is a more advanced computation:

sage: X = Stratum((1,1))
sage: (X.xi^2 * X.psi(1) * X.psi(2)).evaluate()

Building documentation

To build the documentation, go in the repository docs/ and then run in a console:

$ sage -sh
(sage-sh)$ make html
(sage-sh)$ exit

The documentation is then available in docs/build/

Running doctests

To run doctests, use the following command:

$ sage -t --force-lib admcycles/ docs/source

If it succeeds, you should see a message:

All tests passed!


admcycles is distributed under the terms of the GNU General Public License (GPL) published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See


Johannes Schmitt was supported by the grant SNF-200020162928 and has received funding from the European Research Council (ERC) under the European Union Horizon 2020 research and innovation programme (grant agreement No 786580). He also profited from the SNF Early Postdoc.Mobility grant 184245 and also wants to thank the Max Planck Institute for Mathematics in Bonn for its hospitality. Vincent Delecroix was a guest of the Max-Planck Institut and then of the Hausdorff Institut for Mathematics during the development of the project. Jason van Zelm was supported by the Einstein Foundation Berlin during the course of this work.

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

admcycles-1.3.2.tar.gz (278.1 kB view hashes)

Uploaded source

Built Distribution

admcycles-1.3.2-py3-none-any.whl (299.5 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page