Skip to main content

Overview

This package collects tools which compute weighted statistics on parallel, incremental data, i.e. data being read by multiple processors, a chunk at a time.

The tools available are:

  • ParallelSum
  • ParallelMean
  • ParallelMeanVariance
  • ParallelHistogram
  • SparseArray

All assume that mpi4py is being used among the processes, and are passed a communicator object (often mpi4py.MPI.COMM_WORLD).

Installation

For now you can install this package using:

pip install parallel_statistics

Documentation

Documentation can be found at https://parallel-statistics.readthedocs.io/

Example

The three tools ParallelSum, ParallelMean, and ParallelMeanVariance compute statistics in bins, and you add data to them per bin.

The usage pattern for them, and ParallelHistogram, is:

  • Create a parallel calculator object in each MPI process
  • Have each process read in their own chunks of data and add it using the add_data methods
  • Once complete, call the collect method to get the combined results.

Here's an example of splitting up data from an HDF5 file, using an example from the DESC tomographic challenge. You can run it either on its own, or under MPI with different numbers of processors, and the results should be the same:

import mpi4py.MPI
import h5py
import parallel_statistics
import numpy as np

# This data file is available at
# https://portal.nersc.gov/project/lsst/txpipe/tomo_challenge_data/ugrizy/mini_training.hdf5
f = h5py.File("mini_training.hdf5", "r")
comm = mpi4py.MPI.COMM_WORLD

# We must divide up the data between the processes
# Choose the chunk sizes to use here
chunk_size = 1000
total_size = f['redshift_true'].size
nchunk = total_size // chunk_size
if nchunk * chunk_size < total_size:
    nchunk += 1

# Choose the binning in which to put values
nbin = 20
dz = 0.2

# Make our calculator
calc = parallel_statistics.ParallelMeanVariance(size=nbin)

# Loop through the data
for i in range(nchunk):
    # Each process only reads its assigned chunks,
    # otherwise, skip this chunk
    if i % comm.size != comm.rank:
        continue
    # work out the data range to read
    start = i * chunk_size
    end = start + chunk_size

    # read in the input data
    z = f['redshift_true'][start:end]
    r = f['r_mag'][start:end]

    # Work out which bins to use for it
    b = (z / dz).astype(int)

    # add add each one
    for j in range(z.size):
        # skip inf, nan, and sentinel values
        if not r[j] < 30:
            continue
        # add each data point
        calc.add_datum(b[j], r[j])

# Finally, collect the results together
weight, mean, variance = calc.collect(comm)

# Print out results - only the root process gets the data, unless you pass
# mode=allreduce to collect.  Will print out NaNs for bins with no objects in.
if comm.rank == 0:
    for i in range(nbin):
        print(f"z = [{ dz * i :.1f} .. { dz * (i+1) :.1f}]    r = { mean[i] :.2f} ± { variance[i] :.2f}")

Metadata

Release files for parallel-statistics 0.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parallel-statistics 0.13
File Size Uploaded Provenance Actions
parallel_statistics-0.13.tar.gz 11.9 kB Without provenance Details for parallel_statistics-0.13.tar.gz

Release files / parallel_statistics-0.13.tar.gz

Download URL parallel_statistics-0.13.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8b9ac2f35bdbe773295941221b7981f1a0388cd702e4eab9343bcd9d3098a340
BLAKE2b-256 checksum
How to use checksums
8dc309d1fa59a9e81c89edf6561222860a4d56b383fa40ff35b1a3fa0c087cb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.2

Security for parallel-statistics 0.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page