Python
Install from PyPI:
pip install pragmastat==10.0.2
Source code: https://github.com/AndreyAkinshin/pragmastat/tree/v10.0.2/py
Pragmastat on PyPI: https://pypi.org/project/pragmastat/
Demo:
from pragmastat import (
Rng,
center,
spread,
shift,
ratio,
disparity,
center_bounds,
shift_bounds,
ratio_bounds,
spread_bounds,
disparity_bounds,
)
from pragmastat.distributions import Additive, Exp, Multiplic, Power, Uniform
def main():
# --- One-Sample ---
x = list(range(1, 21))
print(center(x)) # 10.5
bounds = center_bounds(x, 0.05)
print(
f"Bounds(lower={bounds.lower}, upper={bounds.upper})"
) # Bounds(lower=7.5, upper=13.5)
print(spread(x)) # 6.0
bounds = spread_bounds(x, 0.05, seed="demo")
print(
f"Bounds(lower={bounds.lower}, upper={bounds.upper})"
) # Bounds(lower=2.0, upper=10.0)
# --- Two-Sample ---
x = list(range(1, 31))
y = list(range(21, 51))
print(shift(x, y)) # -20.0
bounds = shift_bounds(x, y, 0.05)
print(
f"Bounds(lower={bounds.lower}, upper={bounds.upper})"
) # Bounds(lower=-25.0, upper=-15.0)
print(ratio(x, y)) # 0.43669798282695127
bounds = ratio_bounds(x, y, 0.05)
print(
f"Bounds(lower={bounds.lower}, upper={bounds.upper})"
) # Bounds(lower=0.31250000000000006, upper=0.5599999999999999)
print(disparity(x, y)) # -2.2222222222222223
bounds = disparity_bounds(x, y, 0.05, seed="demo")
print(
f"Bounds(lower={bounds.lower}, upper={bounds.upper})"
) # Bounds(lower=-13.0, upper=-0.8235294117647058)
# --- Randomization ---
rng = Rng("demo-uniform")
print(rng.uniform_float()) # 0.2640554428629759
print(rng.uniform_float()) # 0.9348534835582796
rng = Rng("demo-uniform-int")
print(rng.uniform_int(0, 100)) # 41
rng = Rng("demo-sample")
print(rng.sample([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 3)) # [3, 8, 9]
rng = Rng("demo-resample")
print(rng.resample([1, 2, 3, 4, 5], 7)) # [3, 1, 3, 2, 4, 1, 2]
rng = Rng("demo-shuffle")
print(rng.shuffle([1, 2, 3, 4, 5])) # [4, 2, 3, 5, 1]
# --- Distributions ---
rng = Rng("demo-dist-additive")
print(Additive(0, 1).sample(rng)) # 0.17410448679568188
rng = Rng("demo-dist-multiplic")
print(Multiplic(0, 1).sample(rng)) # 1.1273244602673853
rng = Rng("demo-dist-exp")
print(Exp(1).sample(rng)) # 0.6589065267276553
rng = Rng("demo-dist-power")
print(Power(1, 2).sample(rng)) # 1.023677535537084
rng = Rng("demo-dist-uniform")
print(Uniform(0, 10).sample(rng)) # 6.54043657816832
if __name__ == "__main__":
main()