Organisation Profile
QC DEVS
QC-Devs develops free, open-source, and cross-platform libraries for the computational sciences, focusing on theoretical and computational chemistry. Our goal is to make programming accessible to students and researchers, to catalyze scientific collaborations, and to promote precepts of sustainable software development. We’re adapting some of the same principles to develop free and open-source educational materials (qc-edu.org) to modernize scientific education by integrating hands-on computation and computer programming.

MENTORS
PROJECTS
Arbitrary-order Overlap Integrals (and evaluations enabled thereby)
Add functionality to the GBasis library for arbitrary-order overlaps. One motivation of this is to support the evaluation of the intracule (the distribution function for the interelectronic distance) and the extracule (the distribution function for the center-of-mass of electron pairs).
Problem Statement
Your main focus will be to add functionality for the overlaps of arbitrarily many Gaussian basis functions. It is important to include screening, as otherwise the evaluations can be quite expensive. An important application, which should be supported with an appropriate API, is evaluation of the intracule and extracule. Another important application is the evaluation of near-arbitrary interparticle repulsions. This is possible because, using tricks popularized by Beylkin and Monzon, almost any interparticle repulsion can be written as a sum of Gaussians. This would include the (many-body) interactions associated with nucleon and other types of cofermions and cobosons. This is a place where some creativity can be exercised, as innovative new algorithms and improved fits are being consistently proposed. That said, these potential applications are beyond the scope of this specific issue, though they are relatively easy extensions thereto. This functionality also allows us to compute arbitrary positive integer powers of the electron density and related density matrices analytically. (Typical approaches rely, instead, on numerical integration that become increasingly ill-conditioned for high powers.) This is sometimes useful when describing (very) multicenter bonding. 3- and 4-Gaussian overlaps from PySCF can be used for testing. 1-Gaussian overlaps and 2-Gaussian overlaps are built-in already and can be used for testing. An algorithm similar to what is needed here is already included in IODATA (for two Gaussians). See also the overlap integrals in GBasis.Our current CLI provides minimal feedback and lacks a robust subcommand architecture. As workflows scale, users cannot easily see what is happening, retry failed steps, or compose commands safely. This results in confusion, longer onboarding, and lower contributor confidence. ** Expected Outcomes: • Implement the overlap for an arbitrary number of (contracted, Cartesian or spherical) Gaussian basis functions. • Add support for screening, with appropriate default parameters. • Add functionality for evaluating the intracule and extracule. • Utilities for computing positive integer powers of the electron density and relevant density matrices. • Support for (near) arbitrary interparticle repulsion integrals. This uses the aforementioned trick of Beylkin and Monzon. A similar trick is used in MADNESS, which can be used for inspiration. • Write comprehensive tests and documentation for all new functionality. • Write tutorial Jupyter notebooks that show how to use the new functionality. ***Notes: An algorithm (two algorithms, in fact) for doing this are included in the attached notes, which were developed in the context of the intracule and extracule. The attached notes are old and have Fortran-style pseudocode (they are that old). [To be clear, I would not suggest implementing the direct algorithms for the intracule/extracule. It is better to pass through the multi-Gaussian overlaps.] Note that multi-Gaussian overlaps are extremely sparse, so a sparse tensor structure should be used. The main operation one needs are tensor contractions (usually pairing indices to one or more copies of the 1- or 2-electron density matrix), which will determine the type of structure one uses to store the tensor. One may need to use pytorch functionality for this.
Focus Area
Implementation and testing of numerical algorithms. • Development of API (porcelain) to support the use of the new functionality. • Writing documentation and tutorial notebooks.
Student Contribution Guide
See the contributing guidelines: https://iodata.qcdevs.org/contributing.html
Better Linking Between libint with GBasis
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.
Problem Statement
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. ***Expected Outcomes • It becomes possible to pip install GBasis with the libcint integral engine. • More (most?) of the integrals in libcint are accessible from GBasis. (This is basically wrapping more integrals. It isn’t always trivial. #149) • Write comprehensive tests and documentation for all new functionality. • Write tutorial Jupyter notebooks that show how to use the new functionality.
Focus Area
DevOps: automatic building, testing, and releasing of Python packages with compiled back ends. • Development of API (porcelain) to support the use of the additional integrals from libcint. • Writing documentation and tutorial notebooks.
Student Contribution Guide
See the contributing guidelines: https://iodata.qcdevs.org/contributing.html
2-electron integrals: better performance and more flexibility
Add functionality to the GBasis library for evaluating 2-electron integrals, including non-Coulomb repulsions. The current Python implementation is very slow, but it also uses a very inefficient algorithm. A more efficient algorithm, combining the Obara–Saika and Head-Gordon–Pople recursions, would fix this issue. One advantage of having this coded in (pure) Python is that it makes it easy to explore new screening methods, exploit sparsity, and include unconventional integrals (e.g., screened Coulomb interactions). Here is a good introduction to Gaussian integral evaluation, which can help you get your bearings without overwhelming you with (important!) details.
Problem Statement
Your main focus will be to (re)implement the 2-electron integrals in GBasis. This is important partly because it seems we may have a bug in the integrals for high angular momentum (cf. #216) and because the current implementation is painfully slow. It is very helpful for many people to have a pure Python implementation of the 2-electron integrals because, while it will always be (relatively) slow, it allows more flexibility for development of new algorithms and facilitates cross-platform code interoperability. In addition, in many cases integral evaluation is not the performance bottleneck. The key steps will be to • Understand the recursive evaluation of Gaussian integrals. • Implement the key recursions (vertical, horizontal, electron-transfer). • Apply these recursions in sequence to evaluate the 2-electron integrals. • Write functions for different “initializations” of the Boys function to support different types of 2-electron integrals. 2-electron integrals from PySCF can be used for testing, as can a recursion check against existing integrals (which are surely reliable for low angular momentum). For more general integral types, one will have to test by manual verification (e.g., numerical integration using Grid) ***Expected Outcomes: • Implement the recursive evaluation of 2-electron integrals into GBasis using the algorithm in the notes. • This requires implementing several different recursions, which are the “building blocks” for the algorithm as a whole. •Implement several different “generalized Boys functions” so that multiple types of 2-electron integrals are supported. • Write comprehensive tests and documentation for all new functionality. • Write tutorial Jupyter notebooks that show how to use the new functionality.
Focus Area
Implementation and testing of numerical algorithms. • Development of API (porcelain) to support the use of the new functionality. • Writing documentation and tutorial notebooks.
Student Contribution Guide
See the contributing guidelines: https://iodata.qcdevs.org/contributing.html
Ready to collaborate?
Join the community chat, review the issue tracker, and pick a project to start contributing. Mentors are available to help you scope your first patch.