eclosure
eclosure provides Python bindings and research utilities for e-Closure based
multiple testing procedures. The package wraps a compiled C++ backend for the
core closed e-BH and closed BY routines and ships example datasets used in the
paper.
- Documentation: https://neilzxu.github.io/eclosure/
- Source: https://github.com/neilzxu/eclosure
- Paper: https://arxiv.org/abs/2509.02517
Installation
Install the core package from PyPI:
python -m pip install eclosure
Optional extras:
# experiment and real-data helpers
python -m pip install "eclosure[experiments]"
# plotting helpers used by the experiment code
python -m pip install "eclosure[plotting]"
Supported releases ship binary wheels for common CPython platforms. If you build from source, you will need a working C++17 toolchain.
Quick start
import eclosure
eclosure.closedeBH([1.0, 100.0], alpha=0.05)
eclosure.closedBY([0.01, 0.5], alpha=0.05)
The top-level API focuses on the stable testing procedures. The experiments workflow is available through the packaged module:
python -m eclosure.experiments --mode real --alpha 0.1 --out-dir figures
Learn more
The full package documentation includes:
- API reference for
closedBY,closedeBH, and packaged data helpers - Script documentation for
python -m eclosure.experiments - Testing guidance for unit, real-data, and timing suites
- Notes on repository-only exploratory scripts that are not part of the package
See https://neilzxu.github.io/eclosure/ for the full docs.
Citation
@article{xu2025bringing,
title={Bringing Closure to False Discovery Rate Control: A General Principle for Multiple Testing},
author={Xu, Ziyu and Solari, Aldo and Fischer, Lasse and de Heide, Rianne and Ramdas, Aaditya and Goeman, Jelle},
journal={arXiv preprint arXiv:2509.02517},
year={2025}
}
Release files for eclosure 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eclosure-0.1.1.tar.gz | 538.9 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| eclosure-0.1.1-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| eclosure-0.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| eclosure-0.1.1-cp313-cp313-macosx_10_13_universal2.whl | CPython 3.13 | CPython 3.13 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
| eclosure-0.1.1-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| eclosure-0.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 | Details |
| eclosure-0.1.1-cp312-cp312-macosx_10_13_universal2.whl | CPython 3.12 | CPython 3.12 | macOS 10.13+ universal2 (ARM64, x86-64) | Details |
| eclosure-0.1.1-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| eclosure-0.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| eclosure-0.1.1-cp311-cp311-macosx_10_9_universal2.whl | CPython 3.11 | CPython 3.11 | macOS 10.9+ universal2 (ARM64, x86-64) | Details |
| eclosure-0.1.1-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| eclosure-0.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| eclosure-0.1.1-cp310-cp310-macosx_10_9_universal2.whl | CPython 3.10 | CPython 3.10 | macOS 10.9+ universal2 (ARM64, x86-64) | Details |
| eclosure-0.1.1-cp39-cp39-win_amd64.whl | CPython 3.9 | CPython 3.9 | Windows x86-64 | Details |
| eclosure-0.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| eclosure-0.1.1-cp39-cp39-macosx_10_9_universal2.whl | CPython 3.9 | CPython 3.9 | macOS 10.9+ universal2 (ARM64, x86-64) | Details |
Total release size: 12.1 MB
Release files / eclosure-0.1.1.tar.gz
| Download URL | eclosure-0.1.1.tar.gz |
|---|---|
| Size | 538.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f29303190701bd8cc39541e63a4e72013cb4be13f3135c41cdd4acbeba8f1203
|
|
BLAKE2b-256 checksum How to use checksums |
a44824c093cdf2dc806a69fa95f862115dcdefdc275b6a227d9ed3cc6dbad731
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp313-cp313-win_amd64.whl
| Download URL | eclosure-0.1.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 353.7 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
fe9c756d5bc010eeec20d03b76b5b8122a9b82115f6f86abf8f4f78fa0e3c543
|
|
BLAKE2b-256 checksum How to use checksums |
3d152fcb080a366cef680b23f4c9c14f1e90c320daf7fbdf52e2d85b5514c6ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | eclosure-0.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
27879a3cd0906689c2612f5a32341c19ccfcb9814956b2890819b1f65df6f8ef
|
|
BLAKE2b-256 checksum How to use checksums |
086ef0f94aecc035f6b7ae818c155fb9124e60195049c8ea43161b26bdac5de9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp313-cp313-macosx_10_13_universal2.whl
| Download URL | eclosure-0.1.1-cp313-cp313-macosx_10_13_universal2.whl |
|---|---|
| Size | 440.7 kB |
| Tags | CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
c96c3ed308dc5e5c4327e65dae9820ed84f6dbdf6d13c9a03cb0a5ee1fcd9dfc
|
|
BLAKE2b-256 checksum How to use checksums |
210286caada23c2f9f0c67cbd74db56d4630dc26f6f5e0396cf90065e7fa0daf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp312-cp312-win_amd64.whl
| Download URL | eclosure-0.1.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 353.7 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a69f0f62863c0ca6e169f919f4410052ba2c6aef584403866f49ab91bb45dfea
|
|
BLAKE2b-256 checksum How to use checksums |
5a13a6d689da2f9e5c9db9405b7de9eaf8603fea6b6073f16d26b81307f29900
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | eclosure-0.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
8ed3b1ce7412c3c87b4e754a04e0128687cc08a8ac059bbedcd7f96187228166
|
|
BLAKE2b-256 checksum How to use checksums |
ed3d6ffea36b7d0abd3a2f0c7d78705779fc11488e9ca49908776eff9f20eee0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp312-cp312-macosx_10_13_universal2.whl
| Download URL | eclosure-0.1.1-cp312-cp312-macosx_10_13_universal2.whl |
|---|---|
| Size | 440.6 kB |
| Tags | CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
f186ad5cef07032823cdc518f20761c24f63cb6f32c65e7b30c8e61323d4d25e
|
|
BLAKE2b-256 checksum How to use checksums |
e84bd600a93c4aa875ca494690d8d1a3d91ced9fb382390b74280bf43b175fb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp311-cp311-win_amd64.whl
| Download URL | eclosure-0.1.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 353.0 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
81a5143f6763ae9d6ec1ff752ba802f973343ef1f077f5ebaca85415172d326b
|
|
BLAKE2b-256 checksum How to use checksums |
4223c1f781f351c45f30e5427b4499c16c0c4e22f7f5ca14f8c0a7b0ba6faa7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | eclosure-0.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2038206bf2ba5c2bcc4e27376f45ccb7df50b38e0067f59277c12c2155786242
|
|
BLAKE2b-256 checksum How to use checksums |
3da7202788d7eab6cfd97ace2659d7a331890c7d3ac1593934cd1595a70596ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp311-cp311-macosx_10_9_universal2.whl
| Download URL | eclosure-0.1.1-cp311-cp311-macosx_10_9_universal2.whl |
|---|---|
| Size | 439.1 kB |
| Tags | CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
93ca6b3ece54ee8e9500cd48dc707ec28d119a6e9816859cef52d6568a7ff8d7
|
|
BLAKE2b-256 checksum How to use checksums |
a2b1ffc772422607f874a15f71d943dc45a998cd5bb9196dc2a64a4bf6e71271
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp310-cp310-win_amd64.whl
| Download URL | eclosure-0.1.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 352.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
80af8f20cdbc103f66d72126841f7cab473598f7fb11101f4a0f1ef85f12396a
|
|
BLAKE2b-256 checksum How to use checksums |
b647d3b991e072daf2897ad8059426927b37dce23e22b627eb4308667bc0aaa8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | eclosure-0.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
41e8de9d0d5289fcc0d079d697597287d93eb01f28e29691b562053f8c34bdc8
|
|
BLAKE2b-256 checksum How to use checksums |
6388db9a858701815d317448023a96929e07d9ac4a0ceac8bda7e048aed7e0f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp310-cp310-macosx_10_9_universal2.whl
| Download URL | eclosure-0.1.1-cp310-cp310-macosx_10_9_universal2.whl |
|---|---|
| Size | 436.6 kB |
| Tags | CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
b745cbf9d28f26ba4147d33a70de9b3a812da2f3a188a55e202005580ec508b7
|
|
BLAKE2b-256 checksum How to use checksums |
8c59e38959a7f29f19697ba89a057907db4e9c49ebf3d45940d654b8af05b42b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp39-cp39-win_amd64.whl
| Download URL | eclosure-0.1.1-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 353.1 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b0ee362b0407ebb5d31fbd91528812e8731087a54ee4a024fbac5cc393003e2d
|
|
BLAKE2b-256 checksum How to use checksums |
7d68e1448bd2032e0c1a9d19373e2ad8e3f43cc8937238bf540d9edcdb6f64d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | eclosure-0.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
97234c8f827944ac84480f35a3c48a1b4ccfff6944789435d95050420d4d41d2
|
|
BLAKE2b-256 checksum How to use checksums |
2737550f412064998092431a3a8a9472d3f38bb57037f8321ddeda2f9c2f0383
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / eclosure-0.1.1-cp39-cp39-macosx_10_9_universal2.whl
| Download URL | eclosure-0.1.1-cp39-cp39-macosx_10_9_universal2.whl |
|---|---|
| Size | 436.8 kB |
| Tags | CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
88f6a38dd380a9702bf2b1c4db5d326b86c342b57bbcffd989a61e1fdfff4c19
|
|
BLAKE2b-256 checksum How to use checksums |
fc9cceb5d04abe830c900767d767a02fdeb50b8297f835f7c02d0d345255ef9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|