Skip to main content

Tools for producing sweights using classic methods or custom orthogonal weight functions (COWs) and for correcting covariance matrices for weighted data fits.

Project description


pip install sweights

We provide a few tools for projecting component weights ("sweights") for a control variable(s) using a discriminating variable(s). For details please see Dembinski, Kenzie, Langenbruch, Schmelling - arXiv:2112.04574.

We also provide tools for correcting the covariance matrix of fits to weighted data. For details please see Dembinski, Kenzie, Langenbruch, Schmelling - arXiv:2112.04574 (Sec IV) and Langenbruch - arXiv:1911.01303.


The below documentation is now superseeded as it has been moved to readthedocs. Please go to for the latest.

A variety of options for extraction of signal-like weights is provided:

  • classic "sWeights" via the sweight class produces pure weight functions and provides the Wkl and Akl matrices

    1. Using the "summation" method from the original sPlot paper Pivk, Le Diberder - arXiv:physics/0402083 referred to as Variant B in arXiv:2112.04574
    2. Using the "integration" method rederived originally by Schmelling and referred to as Variant A in arXiv:2112.04574
    3. Using the "refit" method, i.e. taking the covariance matrix of a yield only fit, referred to as Variant Ci in arXiv:2112.04574
    4. Using the "subhess" method, i.e. taking the sub-covariance matrix for the yields, referred to as Variant Cii in arXiv:2112.04574
    5. Using the implementation in ROOT's TSPlot (this we believe should be equivalent to Variant B but is more susceptible to numerical differences)
    6. Using the implementation in RooStat's SPlot (we found this identical to Variant B ("summation") above in all the cases we tried)
  • Custom Orthogonal Weight functions (COWs) via the cow class produces pure weight functions and provides Wkl and Akl matrices. It expects

    • gs - the signal function for the discrimant variable
    • gb - the background function(s) for the discriminant variable (can pass orders of polynomials here if desired)
    • Im - the variance function for the discriminant variance (can also pass 1 and it will be set of uniform)
    • obs - one can instead or additionally pass the observed distribution in the discriminant variable which will be used for the variance function instead. In this case you must pass a two element tuple giving the bin entries and bin edges for the observed dataset (the same as what np.histogram(data) would return)

Corrections to the covariance matrix can be implemented using

  • cov_correct which computes the full asymptotic correction using Eq. 55 in arXiv:2112.04574
  • approx_cov_correct is more straightfoward to compute but only computes the first term in Eq. 55 of arXiv:2112.04574 which will be slightly conservative

A test of variable independence based on the Kendall tau coefficient is also provided in kendall_tau


An example script demonstrating a typical use case is provided in

python tests/

There is also a version written as a .ipynb in doc/tutorial.ipynb

This does the following:

  1. Generate toy data in two independent dimensions m and t


  1. Fit the toy data in the discriminanting variable to get an estimate of the discriminating variable pdfs

  2. Compute sWeights using the "summation" method (implemented by the sweight class provided)


  1. Compute sWeights using the COW method with a variance function of unity, I(m)=1, (implemented by the cow class provided)


  1. Fit the weighted distributions and correct the covariance using the cov_correct function provided


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

sweights-0.0.5.tar.gz (16.5 kB view hashes)

Uploaded source

Built Distribution

sweights-0.0.5-py3-none-any.whl (16.2 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page