Skip to main content

This Python module facilitates operations such as quantum Pieri rules, quantum Giambelli formulae, action and multiplication of Schubert classes, and conversion between different representations of Schubert classes

Project description

schubertpy

Overview

schubertpy is a powerful Python package designed for performing advanced mathematical operations on the Grassmannian, a key concept in algebraic geometry and representation theory. This module facilitates operations such as quantum Pieri rules, quantum Giambelli formulae, and the manipulation of Schubert classes. It is a Python implementation based on the comprehensive maple library available at https://sites.math.rutgers.edu/~asbuch/qcalc/.

References:

Features

  • Quantum Pieri Rule Calculations: Efficient computation of quantum Pieri rules applied to Schubert classes.
  • Quantum Giambelli Formulae: Expression of products of Schubert classes in alternative forms using quantum Giambelli formulae.
  • Schubert Class Operations: Perform actions and multiplications on Schubert classes, in both classical and quantum contexts.
  • Dualization and Conversion: Dualize Schubert classes and convert between different Schubert class representations.

Installation

To install the schubertpy module, run the following command:

pip install schubertpy

If you wanna use with sagemath, run the following command:

sage -pip install schubertpy

Usage

Example usage demonstrating the capabilities of schubertpy:

from schubertpy import Grassmannian, OrthogonalGrassmannian, IsotropicGrassmannian

def main():
    # Initialize the Grassmannian object with dimensions
    gr = Grassmannian(2, 5)
    print(gr.qpieri(1, 'S[2,1] - 7*S[3,2]'))
    print(gr.qact('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(gr.qgiambelli('S[2,1]*S[2,1]'))
    print(gr.qmult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(gr.qtoS('S[2,1]*S[2,1]*S[2,1]'))
    print(gr.pieri(1, 'S[2,1] - 7*S[3,2]'))
    print(gr.act('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(gr.giambelli('S[2,1]*S[2,1]'))
    print(gr.mult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(gr.toS('S[2,1]*S[2,1]*S[2,1]'))
    print(gr.dualize('S[1]+S[2]'))


    ig = Grassmannian(2, 6)
    print(ig.qpieri(1, 'S[2,1] - 7*S[3,2]'))
    print(ig.qact('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(ig.qgiambelli('S[2,1]*S[2,1]'))
    print(ig.qmult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(ig.qtoS('S[2,1]*S[2,1]*S[2,1]'))
    print(ig.pieri(1, 'S[2,1] - 7*S[3,2]'))
    print(ig.act('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(ig.giambelli('S[2,1]*S[2,1]'))
    print(ig.mult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(ig.toS('S[2,1]*S[2,1]*S[2,1]'))
    print(ig.dualize('S[1]+S[2]'))

    og = Grassmannian(2, 6)
    print(og.qpieri(1, 'S[2,1] - 7*S[3,2]'))
    print(og.qact('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(og.qgiambelli('S[2,1]*S[2,1]'))
    print(og.qmult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(og.qtoS('S[2,1]*S[2,1]*S[2,1]'))
    print(og.pieri(1, 'S[2,1] - 7*S[3,2]'))
    print(og.act('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(og.giambelli('S[2,1]*S[2,1]'))
    print(og.mult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(og.toS('S[2,1]*S[2,1]*S[2,1]'))
    print(og.dualize('S[1]+S[2]'))

    og = Grassmannian(2, 7)
    print(og.qpieri(1, 'S[2,1] - 7*S[3,2]'))
    print(og.qact('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(og.qgiambelli('S[2,1]*S[2,1]'))
    print(og.qmult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(og.qtoS('S[2,1]*S[2,1]*S[2,1]'))
    print(og.pieri(1, 'S[2,1] - 7*S[3,2]'))
    print(og.act('S[1]+S[2]*S[3]', 'S[2,1]+S[3,2]'))
    print(og.giambelli('S[2,1]*S[2,1]'))
    print(og.mult('S[2,1]', 'S[2,1]+S[3,2]'))
    print(og.toS('S[2,1]*S[2,1]*S[2,1]'))
    print(og.dualize('S[1]+S[2]'))


if __name__ == "__main__":
    main()

You wanna use with sagemath? You can save above example to main.py and then run:

sage -python main.py

For detailed examples and more operations, refer to the test cases provided within the module's documentation.

Running Tests

To verify the module's functionality, you can run the included tests with either of the following commands:

make test

Or directly with Python:

python3 -m unittest schubertpy/testcases/*.py

Authors

Contributing

We highly encourage contributions to schubertpy. Whether you are looking to expand functionality, enhance performance, or fix bugs, your input is valuable. To get started:

  • Report Issues: If you encounter issues or have suggestions, please report them by creating an issue on our GitHub page.
  • Submit Pull Requests: Feel free to fork the repository and submit pull requests. Whether it's adding new features, optimizing existing code, or correcting bugs, your contributions are welcome.

Please ensure your pull requests are well-documented and include any necessary tests. For more details on contributing, refer to our contribution guidelines on GitHub.

License

schubertpy is open source software (under the GNU General Public 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

schubertpy-0.3.17.tar.gz (35.6 kB view details)

Uploaded Source

Built Distribution

schubertpy-0.3.17-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

File details

Details for the file schubertpy-0.3.17.tar.gz.

File metadata

  • Download URL: schubertpy-0.3.17.tar.gz
  • Upload date:
  • Size: 35.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.10

File hashes

Hashes for schubertpy-0.3.17.tar.gz
Algorithm Hash digest
SHA256 42c4d6d1fe3d138214bae23b2ef4d51e7e7ebaaf2820347c4299da84f61760e8
MD5 990957a9e923a45ee7a5a2c522d489b5
BLAKE2b-256 1467b68f35efb2e11fbc9215ac32dcf8aafd8b83241c771e1bd9d29048a76bc8

See more details on using hashes here.

File details

Details for the file schubertpy-0.3.17-py3-none-any.whl.

File metadata

  • Download URL: schubertpy-0.3.17-py3-none-any.whl
  • Upload date:
  • Size: 38.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.10

File hashes

Hashes for schubertpy-0.3.17-py3-none-any.whl
Algorithm Hash digest
SHA256 317702707c177378f850e710c44f945918e30cf0664511e9273c03abbb2bbeb7
MD5 886218b0f636b07252b91b0e900050f9
BLAKE2b-256 b2d33aa18c8aca6faeab649e6c8c0e0661afb456396123f5916695d2a9b777d9

See more details on using hashes here.

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