Controllable output-density synthetic axis-aligned hyper-rectangle generator
Project description
Alacarte RectGen (alacarte-rectgen)
A controllable output-density synthetic generator for axis-aligned hyper-rectangles (boxes), inspired by the ideas in Benchmarking Spatial Joins À La Carte.
It generates two box sets R and S such that the expected spatial-join output density is close to a user-specified target:
$$ \alpha_{\mathrm{out}} = \frac{|J(R,S)|}{|R| + |S|}, \quad J(R,S) = {(r,s)\in R\times S;|; r\cap s \neq \varnothing}. $$
Installation
pip install alacarte-rectgen
Import name:
import alacarte_rectgen as ar
Quickstart (matches the typical usage)
import numpy as np
import alacarte_rectgen as ar
# Parameter settings
N_R, N_S = 500_000, 500_000
TARGET_ALPHA = 10.0
# 1. Generate data and solve parameters
R, S, info = ar.make_rectangles_R_S(
nR=N_R,
nS=N_S,
alpha_out=TARGET_ALPHA,
d=2,
universe=None, # Default is [0, 1)^2
volume_dist="normal", # Use normal distribution for volume
volume_cv=0.25, # Coefficient of variation for volume
shape_sigma=0.5, # Enable aspect ratio variation
seed=42,
tune_tol_rel=0.01 # Solving tolerance 1%
)
# 2. Access generation results
print(f"Generated R size: {R.n}, S size: {S.n}")
print(f"Coordinates shape: {R.lower.shape}")
# 3. Audit generation parameters
print("\n--- Generation Audit ---")
print(f"Solved Coverage (C): {info['coverage']:.6e}")
print(f"Target Alpha: {info['alpha_target']:.4f}")
print(f"Expected Alpha: {info['alpha_expected_est']:.4f}")
print(f"Intersection Prob: {info['pair_intersection_prob_est']:.6e}")
What you get back
R and S are BoxSet objects
They store half-open boxes:
$$ \text{box}i = \prod{k} [\text{lower}{i,k}, \text{upper}{i,k}) $$
Key fields/properties:
R.lower,R.upper:np.ndarraywith shape(n, d)R.universe:np.ndarraywith shape(d, 2)giving[min, max]per dimensionR.n,R.d: sizes
info is an audit dictionary
Common keys:
info["coverage"]: solved coverage $C$info["alpha_target"]: requested target $\alpha_{out}$info["alpha_expected_est"]: Monte-Carlo estimate of expected $\alpha_{out}$ under the tuned coverageinfo["pair_intersection_prob_est"]: estimated pairwise intersection probability $p$info["tune_history"]: list of tried coverages + estimated alphas during tuninginfo["params"]: echo of the main generation parameters
Parameters you will typically tune
universe(defaultNone): bounds of shape(d,2). IfNone, uses[0,1)^d.volume_dist:"fixed" | "exponential" | "normal" | "lognormal"volume_cv: coefficient of variation for"normal"/"lognormal"volume distributions.shape_sigma:0gives squares/cubes; larger values increase aspect-ratio variation.tune_samples: Monte Carlo sample size used by the coverage solver (bigger = more accurate, slower).tune_tol_rel: relative tolerance of the solver, e.g.0.01for 1%.dtype: output coordinate dtype, defaultnp.float32to save memory.
Notes on scale & performance
- By default coordinates are
float32to reduce memory use. - Tuning uses Monte Carlo over length samples (not over all
nR*nSpairs), so it stays practical even for largenR,nS. - If you care about realized alpha on the concrete generated sets (not only the expectation), use:
alpha_hat, p_hat = ar.estimate_alpha_by_pair_sampling(R, S, num_pairs=2_000_000, seed=0)
License
MIT (see LICENSE).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alacarte_rectgen-0.1.1.tar.gz.
File metadata
- Download URL: alacarte_rectgen-0.1.1.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
230c0c30f7c780c370427f46228e3c5e34e69676b3984f263c94fb7ad5b64982
|
|
| MD5 |
a63bcb6d9391f4ef4abb1b1891ab257e
|
|
| BLAKE2b-256 |
fde2efe7c568b98edf7f64621e1763edb1427150df26ab5e8dde9a6a55f797b6
|
File details
Details for the file alacarte_rectgen-0.1.1-py3-none-any.whl.
File metadata
- Download URL: alacarte_rectgen-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61d9683778a001e466d3227235d822c300f99a616783a8e8b5f0740cb7080166
|
|
| MD5 |
c66ac857a7a2893e2833fc3c8a4a4fb5
|
|
| BLAKE2b-256 |
6bd809e03e4e0861ecd7f5879af7316219f0901ed3cf13a629e4cc00df681124
|