Skip to content

WoC: Better Linking Between LibCint with GBasis #222

@PaulWAyers

Description

@PaulWAyers

Description

Gbasis uses libcint as a back end for efficient integral evaluation. Unfortunately, the default installation of GBasis (with PyPi) doesn't include libcint, and installation from source is not easy for some users. The primary goal of this project is to fix this. The secondary, subsidiary, goal is to provide better support for the very rich set of integrals that libcint supports.

📚 Package Description and Impact

GBasis is a pure-Python package for evaluating and analytically integrating Gaussian-type orbitals and their related quantities. The goal is to build a set of tools to the quantum chemistry community that are easily accessible and easy to use as to facilitate future scientific works.

👷 What will you do?

Your main focus will be to prepare a release of GBasis that includes libcint for PyPi. We want to support Windows, Linux, and Mac. Note that when we say libcint this includes libcint (generic C library) and its high-performance version qcint, for hardware platforms that support it. There might be multiple ways to do this, using, for example, Hatch. We are agnostic as to the way it is done, but we note that (a) compiling libcint can be hairy and (b) we want an automated workflow so that updating GBasis is easy and new versions of libcint are easily supported.

The C/Python interface can be written using a few different methods, such as the Python/C API, or Python's built-in foreign function interface library ctypes. Note that NumPy works with either of these.

🏁 Expected Outcomes

  1. It becomes possible to pip install GBasis with the libcint integral engine.
  2. More (most?) of the integrals in libcint are accessible from GBasis. (This is basically wrapping more integrals. It isn't always trivial. Evauation of angular momentum in GBasis vs. Libcint bindings #149 )
  3. Write comprehensive tests and documentation for all new functionality.
  4. Write tutorial Jupyter notebooks that show how to use the new functionality.
Required skills C, Python, OOP, DevOps
Preferred skills Experience with building complex Python packages and linking C/Python
Project size Large
Difficulty Medium to Hard 🥵

🙋 Mentors

Marco Martínez-González mmg870630_at_gmail_dot_com @marco-2023
Michelle Richer michellericher93_at_gmail_dot_com @msricher
Toon Verstraelen toon_dot_verstraelen_at_ugent_dot_be @tovrstra
Paul Ayers ayers_at_mcmaster_dot_ca @PaulWAyers

📝 Notes

  1. See the existing pyproject.toml and the current link to libcint.
  2. Refer to our guidelines for contributors.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions