theochem / theochem/grid

Additional low-discrepancy sequences for (hyper)cubic integration

Open
#322 12 comments 0 reactions 2 assignees View on GitHub

@Zohaibcode740 is already working on this.

Since Aug 14, 2026.

Dominant language
Python
Stars
101
Forks
40
PR merge metrics
No merged PRs in 30d

Description

Following #241 (lattice rules) -- since that's already moving forward in #293 --
I wanted to propose a few complementary low-discrepancy constructions that
aren't covered by lattice rules alone:

  • Sobol' sequences -- digital net construction, widely used, extensible in
    n (unlike lattice rules, which need n fixed in advance for a given
    generating vector).
  • Halton sequences -- radical-inverse construction, also extensible,
    simpler to construct than Sobol' but with somewhat worse discrepancy in
    higher dimensions.
  • (Randomized) Latin Hypercube Sampling -- not itself a low-discrepancy
    sequence in the classical sense, but a well-established variance-reduction
    alternative to plain Monte Carlo (Stein, 1987; McKay, Beckman & Conover,
    1979), often used alongside QMC methods for the same integration problems.
  • Korobov lattice rules -- as far as I can tell, #293 implements the
    general CBC-constructed lattice rules (via the Kuo/UNSW tabulated vectors).
    Korobov lattices are a restricted special case (generating vector
    z(a) = (1, a, a^2, ..., a^{d-1}) mod n, a single integer parameter a),
    which trades a smaller search space for near-instant table lookup and much
    smaller storage -- a lighter-weight complement to the general CBC lattice
    rather than a duplicate of it.

I've implemented all four of these from scratch already: Halton, Korobov
lattice rules, and randomized LHS for QMCPy
(merged), and Halton and rank-1 lattice sequences for
torchquad (open PR).

To keep review manageable, I'd plan to open a separate PR per sequence
rather than one large PR.

Would this be of interest? Happy to start whenever convenient, and to adjust
scope/order based on what's most useful for the library.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.