Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
65871dc
Created kronecker folder and search method
Apr 22, 2026
b3d48fd
Merge branch 'develop' of https://github.com/QMCSoftware/QMCSoftware …
May 15, 2026
4350e46
Clarified kronecker_search_methods.py
May 18, 2026
1e969b5
Kron search method returns wssd and discrepancies
May 26, 2026
1ff125d
Added lattice discrepancy computation for any sample size, and lattic…
Jun 9, 2026
78e67bc
Merge branch 'kronecker_search' of https://github.com/QMCSoftware/QMC…
Jun 9, 2026
cef4e70
Added demo for lattice and Kronecker methods
Jun 9, 2026
c33611e
Updated demo to correct coord. weight Kuo vector
Jun 9, 2026
8864860
Added new generating vector option for Kronecker
Jun 9, 2026
bc3d3b6
Corrected Kronecker discrepancy calculations
Jun 10, 2026
52a2ff1
branches instructions in CONTRIBUTING.md
alegresor Jun 18, 2026
fdc4a10
suggested changes from Sou-Cheng
alegresor Jun 22, 2026
8948ce4
Remove line breaks in the middle of a sentence. Fix a typo.
sou-cheng-choi Jun 23, 2026
a9d8583
Merge branch 'develop' into branch_info_for_contributors
fjhickernell-IllinoisTech Jun 27, 2026
60824da
update contributing.md
fjhickernell-IllinoisTech Jun 27, 2026
0cb74a7
Apply suggestions from code review
fjhickernell Jun 28, 2026
fbb01e3
Add good practices doc
sou-cheng-choi Jul 2, 2026
bac0747
Fix warning
sou-cheng-choi Jul 4, 2026
dc2433a
Unskip doc tests
sou-cheng-choi Jul 4, 2026
a51f2a1
Fix a warning from 'make doc'
sou-cheng-choi Jul 7, 2026
4bb95cc
Use URLs that will work upon next release
sou-cheng-choi Jul 7, 2026
d08ee78
Update good_practices.md
sou-cheng-choi Jul 7, 2026
7c0a6a5
Make LaTeX on MacOS more robust
sou-cheng-choi Jul 7, 2026
43e9438
+AI Guidelines
sou-cheng-choi Jul 8, 2026
963f8a0
Merge branch 'develop' into branch_info_for_contributors
sou-cheng-choi Jul 8, 2026
5b28a3c
Remove unfair guidelines
sou-cheng-choi Jul 8, 2026
e27848e
Update AI assistance guidelines for clarity and academic integrity
sou-cheng-choi Jul 8, 2026
fcd3b25
Merge branch 'develop' into doc_test_choi
sou-cheng-choi Jul 9, 2026
fd254d9
Fix recent alltests failures
sou-cheng-choi Jul 9, 2026
a0c803d
full sweep on *choi branches
sou-cheng-choi Jul 9, 2026
78bb0a9
Full sweep for *choi branches
sou-cheng-choi Jul 9, 2026
96f85b0
Merge branch 'doc_test_choi' into branch_info_for_contributors
sou-cheng-choi Jul 9, 2026
ebf6e0a
Respond to Copilot reviews
sou-cheng-choi Jul 9, 2026
ee0a1a0
Merge branch 'develop' of https://github.com/QMCSoftware/QMCSoftware …
Jul 9, 2026
82d8df4
Final version before pull request
Jul 9, 2026
8d889e1
Merge branch 'develop' into doc_test_choi
sou-cheng-choi Jul 11, 2026
d7558bd
Merge branch 'develop' into doc_test_choi
sou-cheng-choi Jul 16, 2026
29cea0b
Merge branch 'develop' into lattice_kronecker
fjhickernell Jul 16, 2026
9033e59
Add booktest file
sou-cheng-choi Jul 17, 2026
15ee863
Add imports in __init__.py
sou-cheng-choi Jul 17, 2026
081936c
Comment out global high precision
sou-cheng-choi Jul 17, 2026
a48c42e
Fix unit test for demo
sou-cheng-choi Jul 17, 2026
cfbe5ec
Replace with a smaller example in code cell [5]
sou-cheng-choi Jul 17, 2026
a4055a1
Add doc
sou-cheng-choi Jul 17, 2026
cfbcf9c
Potential fix for pull request finding 'Unused import'
sou-cheng-choi Jul 17, 2026
2a3bbb4
Potential fix for pull request finding 'Testing equality to None'
sou-cheng-choi Jul 17, 2026
b0889dc
Fix a bug in warning
sou-cheng-choi Jul 17, 2026
98221ba
Add unit tests
sou-cheng-choi Jul 17, 2026
e0692c6
ignore qmctoolscl in pylint scoring
sou-cheng-choi Jul 17, 2026
dcfd799
Merge branch 'develop' into doc_test_choi
sou-cheng-choi Jul 17, 2026
fb9be39
Remove coverage warnings in "make tests_fast"
sou-cheng-choi Jul 17, 2026
0156ef6
Recover ci-testing.md from Jun 16 code of develop branch at https://g…
sou-cheng-choi Jul 17, 2026
2542d0d
Several miscellaneous requested changes:
Jul 28, 2026
dea6e2c
Updated docs to match new kronecker search name
Jul 28, 2026
fe041c4
Potential fix for pull request finding 'Testing equality to None'
AndersPride Jul 28, 2026
c98da32
Fix test failures
sou-cheng-choi Aug 8, 2026
9874b96
Fix doc tests
sou-cheng-choi Aug 8, 2026
e8e8290
Merge develop and resolve import/docs conflicts
Copilot Aug 9, 2026
24e2195
Apply select Copilot suggestions from code review
AndersPride Aug 25, 2026
0a6bc4e
Addresses issues in lattice.py raised by Copilot:
Aug 25, 2026
d87eca5
Merge branch 'lattice_kronecker' of https://github.com/QMCSoftware/QM…
Aug 25, 2026
f223ce7
Addresses sympy dependency and vector placement
Aug 25, 2026
8b34133
Significantly improves speed of lattice discrepancies
Aug 25, 2026
86bae71
Potential fix to doctest error in lattice search
Aug 26, 2026
aee9958
Potential fix for test failures
Aug 31, 2026
3fae5f3
Potential fix for test failure
Aug 31, 2026
63702b4
Potential fix for tests
Sep 1, 2026
ba23acd
Potential fix for tests, corrected
Sep 1, 2026
b319fa7
Potential fix for tests, re-corrected
Sep 1, 2026
d2fd0dd
Merge branch 'develop' into lattice_kronecker
Sep 1, 2026
de58cbc
Fixes differences in Kronecker naming convention
Sep 1, 2026
f286fba
Fixes bugs in searches and wssd calculations
Sep 2, 2026
a940969
Various Enhancements for CBC Vector Search (#616)
sou-cheng-choi Sep 19, 2026
b7bfd20
Merge branch 'develop' into doc_test_choi
sou-cheng-choi Sep 26, 2026
6a95a30
Fix CI test failures associated with the Haberman dataset
sou-cheng-choi Sep 26, 2026
17702a3
Check references in demos
sou-cheng-choi Sep 27, 2026
04e6080
Revert "Check references in demos"
sou-cheng-choi Sep 27, 2026
24d9b17
Merge origin/develop into lattice_kronecker
sou-cheng-choi Sep 27, 2026
e2ff324
Merge branch 'doc_test_choi' into lattice_kronecker
sou-cheng-choi Sep 27, 2026
ff23831
Fix Konecker unit test error
sou-cheng-choi Sep 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/alltests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -297,12 +297,12 @@ jobs:
- name: Validate MPMC dependencies (Unix)
if: runner.os != 'Windows'
shell: bash -el {0}
run: python -c "import torch, pyg_lib, torch_geometric; print(f'torch={torch.__version__}'); print('MPMC dependencies ready')"
run: python -c "import torch, torch_geometric; print(f'torch={torch.__version__}'); print('MPMC dependencies ready')"

- name: Validate MPMC dependencies (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: python -c "import torch, pyg_lib, torch_geometric; print(f'torch={torch.__version__}'); print('MPMC dependencies ready')"
run: python -c "import torch, torch_geometric; print(f'torch={torch.__version__}'); print('MPMC dependencies ready')"
# -----------------------------------------------------------
# Colab readiness tests (Linux only)
# -----------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ demos/prob_failure_gp_ci_plots/
demos/fgpr_figs/
demos/GBM/images/*.png
demos/GBM/outputs/*.*
*.tmp_colab*
.tmp_*

# Generated notebook/demo images
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ While `dev` contains the most complete set of install dependencies, a number of
pip install -e ".[dev]"
~~~

The `dev` extra includes QMCPy's PyPI-hosted MPMC dependencies. MPMC additionally requires a platform-specific `pyg_lib` wheel that is not available from PyPI. After installing `dev`, let the QMCPy installer select the wheel page matching the installed PyTorch build:
The `dev` extra includes QMCPy's PyPI-hosted MPMC dependencies. The optional `pyg_lib` accelerator uses platform-specific wheels that are not available from PyPI. MPMC can run without it using a native PyTorch radius-graph fallback. After installing `dev`, the QMCPy installer can select the wheel page matching the installed PyTorch build; it warns and continues if neither a wheel nor a source build is available:

~~~bash
qmcpy-install-mpmc
Expand Down
18 changes: 15 additions & 3 deletions demos/GBM/gbm_demo.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,8 @@
"results_data = []\n",
"params_ql = {'initial_value': 100, 'mu': 0.05, 'sigma': 0.2, 'maturity': 1.0, 'n_steps': 252, 'n_paths': 2**14, 'seed': cf.QUANTLIB_SEED}\n",
"params_qp = {'initial_value': 100, 'mu': 0.05, 'diffusion': 0.2**2, 'maturity': 1.0, 'n_steps': 252, 'n_paths': 2**14, 'replications': 8}\n",
"if IN_COLAB:\n",
" params_ql['n_paths'] = params_qp['n_paths'] = 2**10\n",
"theoretical_mean, theoretical_std = calculate_theoretical_statistics(params_ql)\n",
"\n",
"# Add theoretical values once\n",
Expand Down Expand Up @@ -1140,6 +1142,8 @@
"# Generate specific data for visualization (ensure we have data for both libraries)\n",
"params_vis_ql = {'initial_value': 100, 'mu': 0.05, 'sigma': 0.2, 'maturity': 1.0, 'n_steps': 252, 'n_paths': 2**14, 'sampler_type': 'Sobol'}\n",
"params_vis_qp = {'initial_value': 100, 'mu': 0.05, 'diffusion': 0.2**2, 'maturity': 1.0, 'n_steps': 252, 'n_paths': 2**14, 'sampler_type': 'Sobol'}\n",
"if IN_COLAB:\n",
" params_vis_ql['n_paths'] = params_vis_qp['n_paths'] = 2**10\n",
"\n",
"# Generate paths for visualization\n",
"vis_quantlib_paths, _ = qlu.generate_quantlib_paths(**params_vis_ql)\n",
Expand Down Expand Up @@ -1201,7 +1205,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"We benchmark path generation with `%timeit`, using ten loops and three repeats.\n",
"We benchmark path generation with `%timeit`, using ten loops and three repeats. On Colab, the comparison and benchmark use 1024 paths per library, with one timing loop and one repeat.\n",
"\n",
"QMCPy Halton is slowest here because its work scales with an $(n,d,t)$ array of base-$b$ digits. We use `t = cf.HALTON_DIGITS` ($32$ rather than $63$) with the default linear-matrix scramble (LMS) and digital permutation (DP), `'LMS DP'`. QMCPy paths use consecutive batches from the same sampler, limiting the two temporary digit buffers to 64 MiB without changing path counts, time steps, or randomizations. This limit excludes the returned paths and the sampler's permutation tables; the latter use about 3.6 GiB at 512 time steps with eight replications.\n",
"\n",
Expand All @@ -1222,7 +1226,10 @@
" for sampler_type in samplers_to_test:\n",
" print(f\"QuantLib ({sampler_type}) timing:\")\n",
" benchmark_func = lambda st=sampler_type: qlu.generate_quantlib_paths(**base_params, sampler_type=st)\n",
" timing_result = %timeit -n 10 -r 3 -o benchmark_func()\n",
" if IN_COLAB:\n",
" timing_result = %timeit -n 1 -r 1 -o benchmark_func()\n",
" else:\n",
" timing_result = %timeit -n 10 -r 3 -o benchmark_func()\n",
" timing_results[sampler_type] = {\n",
" 'average': timing_result.average,\n",
" 'stdev': timing_result.stdev,\n",
Expand All @@ -1243,7 +1250,10 @@
" for sampler_type in samplers_to_test:\n",
" print(f\"QMCPy ({sampler_type}) timing:\")\n",
" benchmark_func = lambda st=sampler_type: qpu.generate_qmcpy_paths(**qp_params, sampler_type=st)\n",
" timing_result = %timeit -n 10 -r 3 -o benchmark_func()\n",
" if IN_COLAB:\n",
" timing_result = %timeit -n 1 -r 1 -o benchmark_func()\n",
" else:\n",
" timing_result = %timeit -n 10 -r 3 -o benchmark_func()\n",
" timing_results[sampler_type] = {\n",
" 'average': timing_result.average,\n",
" 'stdev': timing_result.stdev,\n",
Expand Down Expand Up @@ -1400,6 +1410,8 @@
" 'n_steps': 252, \n",
" 'n_paths': 2**14\n",
"}\n",
"if IN_COLAB:\n",
" base_ql_params['n_paths'] = base_qp_params['n_paths'] = 2**10\n",
"# Run benchmarks\n",
"quantlib_timing_results = benchmark_quantlib_samplers(quantlib_samplers_to_benchmark, base_ql_params)\n",
"qmcpy_timing_results = benchmark_qmcpy_samplers(qmcpy_samplers_to_benchmark, base_qp_params)\n",
Expand Down
295 changes: 295 additions & 0 deletions demos/lattice_kronecker_methods.ipynb

Large diffs are not rendered by default.

15 changes: 4 additions & 11 deletions demos/talk_paper_demos/SorokinThesis2025/sorokin_thesis_2025.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -516,20 +516,13 @@
"metadata": {},
"outputs": [],
"source": [
"import io\n",
"import zipfile\n",
"from urllib.request import urlopen\n",
"\n",
"import pandas as pd\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"with urlopen(\n",
" 'https://cdn.uci-ics-mlr-prod.aws.uci.edu/43/haberman%2Bs%2Bsurvival.zip',\n",
" timeout=30,\n",
") as resp:\n",
" with zipfile.ZipFile(io.BytesIO(resp.read())) as zf:\n",
" with zf.open('haberman.data') as f:\n",
" df = pd.read_csv(f, header=None)\n",
"df = pd.read_csv(\n",
" 'https://archive.ics.uci.edu/ml/machine-learning-databases/haberman/haberman.data',\n",
" header=None,\n",
")\n",
"df.columns = ['Age','1900 Year','Axillary Nodes','Survival Status']\n",
"df.loc[df['Survival Status']==2,'Survival Status'] = 0\n",
"x,y = df[['Age','1900 Year','Axillary Nodes']],df['Survival Status']\n",
Expand Down
15 changes: 4 additions & 11 deletions demos/vectorized_qmc.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -451,20 +451,13 @@
},
"outputs": [],
"source": [
"import io\n",
"import zipfile\n",
"from urllib.request import urlopen\n",
"\n",
"import pandas as pd\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"with urlopen(\n",
" 'https://cdn.uci-ics-mlr-prod.aws.uci.edu/43/haberman%2Bs%2Bsurvival.zip',\n",
" timeout=30,\n",
") as resp:\n",
" with zipfile.ZipFile(io.BytesIO(resp.read())) as zf:\n",
" with zf.open('haberman.data') as f:\n",
" df = pd.read_csv(f, header=None)\n",
"df = pd.read_csv(\n",
" 'https://archive.ics.uci.edu/ml/machine-learning-databases/haberman/haberman.data',\n",
" header=None,\n",
")\n",
"df.columns = ['Age','1900 Year','Axillary Nodes','Survival Status']\n",
"df.loc[df['Survival Status']==2,'Survival Status'] = 0\n",
"x,y = df[['Age','1900 Year','Axillary Nodes']],df['Survival Status']\n",
Expand Down
15 changes: 4 additions & 11 deletions demos/vectorized_qmc_bayes.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -450,20 +450,13 @@
},
"outputs": [],
"source": [
"import io\n",
"import zipfile\n",
"from urllib.request import urlopen\n",
"\n",
"import pandas as pd\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"with urlopen(\n",
" 'https://cdn.uci-ics-mlr-prod.aws.uci.edu/43/haberman%2Bs%2Bsurvival.zip',\n",
" timeout=30,\n",
") as resp:\n",
" with zipfile.ZipFile(io.BytesIO(resp.read())) as zf:\n",
" with zf.open('haberman.data') as f:\n",
" df = pd.read_csv(f, header=None)\n",
"df = pd.read_csv(\n",
" 'https://archive.ics.uci.edu/ml/machine-learning-databases/haberman/haberman.data',\n",
" header=None,\n",
")\n",
"df.columns = ['Age','1900 Year','Axillary Nodes','Survival Status']\n",
"df.loc[df['Survival Status']==2,'Survival Status'] = 0\n",
"x,y = df[['Age','1900 Year','Axillary Nodes']],df['Survival Status']\n",
Expand Down
8 changes: 8 additions & 0 deletions docs/api/discrete_distributions.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ jupyter:

::: qmcpy.discrete_distribution.korobov.KorobovLattice

## `lattice_vector_wssd_search`

::: qmcpy.discrete_distribution.lattice.lattice_vector_wssd_search.lattice_vector_wssd_search

## `Halton`

::: qmcpy.discrete_distribution.digital_net_any_bases.halton.Halton
Expand All @@ -52,6 +56,10 @@ jupyter:

::: qmcpy.discrete_distribution.latin_hypercube.LatinHypercube

## `kronecker_vector_search_mobius_transform`

::: qmcpy.discrete_distribution.kronecker.kronecker_search_methods.kronecker_vector_search_mobius_transform

## `DummySampler`

::: qmcpy.discrete_distribution.dummy_sampler.DummySampler
Expand Down
18 changes: 9 additions & 9 deletions docs/mpmc-compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
## Recommended Baseline

- Treat MPMC as an optional feature, not part of the minimum QMCPy dependency set.
- Prefer `pyg_lib` plus `torch-geometric`; do not require `torch-cluster` as a separate dependency.
- Require PyTorch and `torch-geometric`; `pyg_lib` is an optional accelerator. When the compiled radius-graph backend is unavailable or fails to load, MPMC uses a native `torch.cdist` fallback. Neither `pyg_lib` nor `torch-cluster` is required to run MPMC.
- For reproducible local work and future CI pinning, prefer a modern PyTorch line with matching `data.pyg.org` wheels installed by `qmcpy-install-mpmc`.
- `unittests.yml` runs the full suite on `3.10`-`3.14` plus a slim `core-tests` tier on `3.9` (see [Minimum Python Version by Role](CONTRIBUTING.md#minimum-python-version-by-role)); neither installs MPMC.

## Support Policy

| Python | Linux / macOS / Windows | MPMC status | Dependency guidance | CI expectation |
|---|---|---|---|---|
| `3.14` | Target | Supported | `torch >= 2.10`, `torch-geometric >= 2.6.1`, `pyg_lib >= 0.6.0` from the matching `data.pyg.org` wheel index | Run MPMC doctests and unit tests |
| `3.13` | Target | Supported | `torch >= 2.10`, `torch-geometric >= 2.6.1`, `pyg_lib >= 0.6.0` | Run MPMC doctests and unit tests |
| `3.12` | Target | Supported | `torch >= 2.10`, `torch-geometric >= 2.6.1`, `pyg_lib >= 0.6.0` | Run MPMC doctests and unit tests |
| `3.14` | Target | Supported | `torch >= 2.10`, `torch-geometric >= 2.6.1`; optional `pyg_lib >= 0.6.0` from the matching `data.pyg.org` wheel index | Run MPMC doctests and unit tests |
| `3.13` | Target | Supported | `torch >= 2.10`, `torch-geometric >= 2.6.1`; optional `pyg_lib >= 0.6.0` | Run MPMC doctests and unit tests |
| `3.12` | Target | Supported | `torch >= 2.10`, `torch-geometric >= 2.6.1`; optional `pyg_lib >= 0.6.0` | Run MPMC doctests and unit tests |
| `3.10` to `3.11` | Best effort | Not a release blocker for MPMC | May work with matching PyTorch / PyG wheels, but not required by current CI policy | Optional manual testing only |

Python `3.9` is covered only by the slim `core-tests` tier, which never installs MPMC's PyTorch Geometric stack (see [Minimum Python Version by Role](CONTRIBUTING.md#minimum-python-version-by-role)).
Expand All @@ -29,23 +29,23 @@ The distinction is intentional:

The current CI split is:

- `alltests.yml`: the only workflow that installs the MPMC stack (`qmcpy-install-mpmc`) and runs `make doctests_mpmc` plus the MPMC unit tests, on Python `3.13`. The steps are not OS-gated: Ubuntu alone on feature-branch pushes, all three OSes on full sweeps.
- `unittests.yml`: `3.10`-`3.14` on all three OSes, plus a `core-tests` tier on Ubuntu for `3.9`. Neither calls `qmcpy-install-mpmc`, so `test/test_dd_mpmc.py` skips throughout via `pytest.importorskip("pyg_lib")`. This workflow gives **no** MPMC coverage.
- `alltests.yml`: the only workflow that installs the MPMC stack (`qmcpy-install-mpmc`) and runs `make doctests_mpmc` plus the MPMC unit tests, on Python `3.13`. The steps are not OS-gated: Ubuntu alone on feature-branch pushes, all three OSes on full sweeps. Dependency validation requires PyTorch and `torch-geometric`; a missing `pyg_lib` accelerator does not block the tests.
- `unittests.yml`: `3.10`-`3.14`, each version on one operating system, plus a `core-tests` tier on all three OSes for `3.9`. Neither installs `torch-geometric` or calls `qmcpy-install-mpmc`, so MPMC tests normally skip. `test/test_dd_mpmc.py` checks only for PyTorch and `torch-geometric`; when both are available, the tests run with or without `pyg_lib`.

See [MPMC Coverage by OS](ci-testing.md#mpmc-coverage-by-os) for the per-operating-system breakdown.

This keeps MPMC enforcement in one place. The trade-off: MPMC regressions are invisible to `unittests.yml`, so raising MPMC coverage means adding a job to `alltests.yml`, not widening the `unittests.yml` matrix.
This keeps required MPMC coverage in `alltests.yml`. Widening the `unittests.yml` matrix alone does not add MPMC coverage; a job must install the required PyTorch and `torch-geometric` dependencies.

## Local Developer Commands

Install the usual test and MPMC extras first, then add the platform-specific PyG runtime with QMCPy's installed helper command:
Install the usual test and MPMC extras first, then optionally add the platform-specific accelerator with QMCPy's installed helper command:

```bash
python -m pip install -e ".[test,test_torch,test_gpytorch,test_botorch,mpmc]"
qmcpy-install-mpmc
```

The `mpmc` extra contains dependencies available from PyPI. The helper handles `pyg_lib` separately because its wheel page depends on the installed PyTorch version and accelerator build, which standard project metadata cannot select.
The `mpmc` extra contains dependencies available from PyPI. The helper handles `pyg_lib` separately because its wheel page depends on the installed PyTorch version and accelerator build, which standard project metadata cannot select. If no matching wheel or source build is available, the helper warns and continues; MPMC can use its native PyTorch fallback.

Then run the MPMC-specific checks:

Expand Down
2 changes: 1 addition & 1 deletion makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ PYTEST_XDIST ?= $(shell $(PYTHON) scripts/pytest_xdist.py 2>/dev/null)
PYTEST ?=
SMOKE_CODE_CELLS ?= 2
WITH_MPMC ?= 0
HAS_MPMC ?= $(shell $(PYTHON) -c "import importlib.util; mods=('torch','pyg_lib','torch_geometric'); print(int(all(importlib.util.find_spec(m) is not None for m in mods)))" 2>/dev/null || echo 0)
HAS_MPMC ?= $(shell $(PYTHON) -c "import importlib.util; mods=('torch','torch_geometric'); print(int(all(importlib.util.find_spec(m) is not None for m in mods)))" 2>/dev/null || echo 0)

# set environment variable for documentation
export JUPYTER_PLATFORM_DIRS=1
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ nav:
- 2020 MCQMC Software Tutorial: demos/talk_paper_demos/MCQMC_Tutorial_2020/MCQMC_2020_QMC_Software_Tutorial.ipynb
- Technical Examples:
- 2023 Random Lattice Generating Vectors: demos/lattice_random_generator.ipynb
- Lattice and Kronecker Generating-Vector Search: demos/lattice_kronecker_methods.ipynb
- 2022 Bayesian Cubature Stopping Criterion: demos/gaussian_diagnostics/gaussian_diagnostics_demo.ipynb
- 2020 Why Add Q to MC?: demos/talk_paper_demos/why_add_q_to_mc_blog/why_add_q_to_mc_blog.ipynb
- 2020 Bayesian Optimization Expected Improvement:
Expand Down
5 changes: 2 additions & 3 deletions qmcpy/discrete_distribution/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from .abstract_discrete_distribution import AbstractDiscreteDistribution
from .iid_std_uniform import IIDStdUniform
from .lattice import Lattice
from .lattice import Lattice, lattice_vector_wssd_search
from .digital_net_b2 import DigitalNetB2
from .digital_net_any_bases import DigitalNetAnyBases,Halton,Faure,Hammersley
from .mpmc import MPMC
from .kronecker import Kronecker
from .kronecker import Kronecker, kronecker_vector_search_mobius_transform
from .korobov import KorobovLattice
from .dummy_sampler import DummySampler
from .latin_hypercube import LatinHypercube
Expand All @@ -15,4 +15,3 @@
DigitalNet = DigitalNetB2
Net = DigitalNetB2
NetB2 = DigitalNetB2

2 changes: 2 additions & 0 deletions qmcpy/discrete_distribution/kronecker/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .kronecker import Kronecker
from .kronecker_search_methods import kronecker_vector_search_mobius_transform
Loading
Loading