lielab

Numerical Lie-theory in C++ and Python.

https://github.com/sandialabs/lielab

Science Score: 44.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.6%) to scientific vocabulary

Keywords

scr-2897 snl-science-libs
Last synced: 6 months ago · JSON representation ·

Repository

Numerical Lie-theory in C++ and Python.

Basic Info
  • Host: GitHub
  • Owner: sandialabs
  • License: mit
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 247 KB
Statistics
  • Stars: 3
  • Watchers: 2
  • Forks: 1
  • Open Issues: 0
  • Releases: 11
Topics
scr-2897 snl-science-libs
Created about 2 years ago · Last pushed 12 months ago
Metadata Files
Readme License Citation

README.md

Lielab

Conan Center PyPI - Version

C++ code for numerical algorithms and processes defined on Lie-type domains, including Lie algebras and Lie groups. Also fully usable from Python with a set of wrappers.

User Installation

Source code and prebuilt binaries are available on various artifact hosting websites. Try these pre-built binaries first.

Python

Install Lielab with pip

pip install lielab

C++

Add Lielab to another project by adding it to the conanfile.txt and include with

```

include

```

Alternatively, the header files can be included directly into other projects. Eigen must be made available in this case.

Developer Installation

Conan

Assuming Python is installed to your system already, the following block will generate the binary file for the Lielab Python bindings

conan build . -o with_python=True

This will build the pyd file required for Python, and also skip building the pure C++ test cases. The Python wrapper can then be installed with

cd python pip install -e .

CMake

Lielab is template header-only and the only other hard requirement is Eigen. The easiest way to make this available is installing it through Conan. This allows you to build and run Lielab with a minimal set of requirements. But building straight from the CMakeLists is also possible. Pybind11, Catch2, and Eigen3 targets need to be made available. This can be done from another CMakeLists. Alternatively, acquire these codes yourself, add them to the /include/ folder, and uncomment the following lines from the top level Lielab CMakeLists

add_subdirectory(include/Catch2) add_subdirectory(include/Eigen3) add_subdirectory(include/pybind11)

from the top level Lielab CMakeLists. Then, build the tools as usual with CMake

cmake .. -DLIELAB_BUILD_TESTS=False cmake --build . --target cppLielab

This will build the pyd file required for Python, and also skip building the pure C++ test cases. The Python wrapper can then be installed with

cd python pip install -e .

Citation

Find this repo useful?

@misc{Lielab, author = {Sparapany, Michael J.}, title = {Lielab: Numerical Lie-theory in C++ and Python}, year = {2024}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/sandialabs/lielab}} }

Dev Note

Using the Lielab Pybind11 wrapper to communicate to a heavier weight C++ code also using Lielab can be a very effective way at developing relatively performant C++ code while still retaining the usability of Python. When doing this, error messages thrown can be very unhelpful. The most common one may look like:

``` $ python myexample.py Traceback (most recent call last): File "myexample.py", line , in outputfromlielabcpp = myprojectusinglielabcpp.solve(inputfromlielabpython) TypeError: solve(): incompatible function arguments. The following argument types are supported: 1. (lielabinput: lielab::domain::so) -> [othercode::otherdatatype]

Invoked with: > ```

This error is thrown when calling some C++ code from a Python package and passing Lielab objects as an argument.

Fix

Make sure both the C++ binary and the Lielab Python wrapper are compiled with the same CMake flags. Often times this error is caused when the Lielab Python wrapper was compiled as a Release, or -DCMAKE_BUILD_TYPE=Release and the other C++ code was compiled as a Debug, or -DCMAKE_BUILD_TYPE=Debug. Both need to be set to either Release or Debug. Only release versions of Lielab are included on PyPi so you may be required to compile your own set of Pybind11 wrappers for easier debugging.

As a rule of thumb, do not use the pre-compiled versions of Python Lielab if you intend to link it to another C++ project. Compile both the C++ project and Python Lielab using the same platform and compiler to minimize issues like this.

Owner

  • Name: Sandia National Laboratories
  • Login: sandialabs
  • Kind: organization
  • Location: United States

Exceptional service in the national interest.

Citation (CITATION.cff)

cff-version: 1.2.0
title: Lielab
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - orcid: 'https://orcid.org/0000-0003-3202-0615'
    affiliation: Sandia National Laboratories
    given-names: Michael J.
    family-names: Sparapany
    email: mjspara@sandia.gov
repository-code: 'https://github.com/sandialabs/Lielab'
license: MIT
version: 0.4.1
date-released: '2024-09-29'

GitHub Events

Total
  • Release event: 1
  • Watch event: 1
  • Delete event: 3
  • Push event: 21
  • Pull request event: 10
  • Create event: 4
Last Year
  • Release event: 1
  • Watch event: 1
  • Delete event: 3
  • Push event: 21
  • Pull request event: 10
  • Create event: 4

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • msparapa (4)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 4,965 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 11
  • Total maintainers: 1
pypi.org: lielab

Lielab is a Python-wrapped C++ library implementing various objects and routines for numerical finite-dimensional Lie-theory.

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 4,965 Last month
Rankings
Dependent packages count: 9.8%
Average: 37.2%
Dependent repos count: 64.7%
Maintainers (1)
Last synced: about 1 year ago

Dependencies

python/requirements.txt pypi
  • numpy >=1.16.3
python/requirements_dev.txt pypi
  • pytest * development
python/setup.py pypi