Skip to main content

Nicole: a symmetry-aware tensor library

Project description

Nicole Tensor Library

Nicole is a Python library for symmetry-aware tensor computations, specifically designed for quantum many-body physics and tensor network algorithms. It provides efficient block-sparse tensor operations that respect Abelian symmetries (U(1), Z₂, etc.), enabling memory-efficient and computationally optimized tensor network calculations.

With the assistance of various AI coding agents, Nicole reimagines the block-symmetric tensor approach with a Python-native API built upon PyTorch, making it accessible to the broader scientific Python ecosystem while maintaining the mathematical rigor needed for quantum physics applications.

Key Features

  • Block-Sparse Tensors: Memory-efficient representation of tensors with conserved quantum numbers
  • Abelian Symmetries: Built-in support for U(1) (particle number, magnetization) and Z₂ (parity), etc.
  • Charge Conservation: Automatic enforcement of selection rules through symmetry-aware indices
  • PyTorch Backend: Python implementation using PyTorch for high-performance dense block operations
  • GPU Acceleration: Optional GPU support (CUDA/MPS) for accelerated computations on large tensors
  • Autograd Control: Optional gradient tracking for efficient optimization tasks
  • Tensor Operations: Essential operations including contraction, trace, SVD decompositions, and more
  • Type-Safe API: Modern Python with type hints for better IDE support and fewer runtime errors
  • Extensible Design: Clean abstractions for adding custom symmetry groups

Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, implementing new symmetry groups, or improving documentation, your help is appreciated. You can also contribute by requesting new features or reporting performance bottlenecks.

Ways to contribute:

  • Report issues and request features via GitHub Issues
  • Submit pull requests with bug fixes or enhancements
  • Improve documentation and add examples
  • Share your use cases and provide constructive feedback

Development guidelines:

  • Ensure all contributions include appropriate tests
  • Follow the existing code style (enforced by ruff)
  • Add type hints for new functions and classes
  • Update documentation for user-facing changes

Authors and Maintainers:

Nicole is created and maintained by Changkai Zhang as part of the Ideogenesis-AI effort in studying quantum many-body systems. If you have questions about contributing to the project or are interested in collaboration opportunities, please feel free to open an issue on GitHub or contact the maintainer directly.

Acknowledgments

Nicole is inspired by the QSpace tensor library developed for MATLAB. While QSpace excels in complex symmetries (e.g. SU(N), Sp(N), SO(N)) with a C++ backend, Nicole focuses on providing a Python implementation for Abelian symmetries (SU(2) or more will come as a plugin) with an emphasis on clarity, extensibility, and integration with the scientific Python ecosystem.

License

Nicole is licensed under the GNU General Public License v3.0 (GPL-3.0). This means you are free to use, modify, and distribute this software under the terms of the GPL-3.0 license. We encourage you to share any improvements you make back to the community, helping Nicole grow and benefit all users. See the LICENSE file for the full license text. For more information about GPL-3.0, visit https://www.gnu.org/licenses/gpl-3.0.html

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

nicole-0.2.0.tar.gz (3.2 MB view details)

Uploaded Source

Built Distribution

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

nicole-0.2.0-py3-none-any.whl (90.5 kB view details)

Uploaded Python 3

File details

Details for the file nicole-0.2.0.tar.gz.

File metadata

  • Download URL: nicole-0.2.0.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nicole-0.2.0.tar.gz
Algorithm Hash digest
SHA256 25b7f5fd85ca7abb3fde53f35451a637f924bc5f3237f2f47c9d74d7aad9f972
MD5 74a51e2deea6c7029bbffd760c290880
BLAKE2b-256 51d63baacd0b9cad44792b0504a92152bd6d3928cc053186537cb660bd70777f

See more details on using hashes here.

File details

Details for the file nicole-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: nicole-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 90.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nicole-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8fc1df8677e4d658e0f67b2a805e457b7062271d50c62ab1ce45d1b3edfe9757
MD5 cb845b5b664cf20257f85a29874f1464
BLAKE2b-256 e5b32b0dda316ab8da28c51de238e5fb6e7b58a43d3c3534d36746906b709ed8

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