Skip to main content

No project description provided

Project description

PyRecombine

Performs a dynamic Caratheodory process and takes a weighted collection of vectors and identifies by pointers, a subset of minimal cardinality among the vectors and new weights so both empirical measures have the same mean. Software written by Terry Lyons, based on algorithms developed jointly with Christian Litter and then with Maria Tchernychova 2008-2020. Here minimal is a local notion and means it cannot be further reduced. There may be other noncomparable cubature sets with fewer points.

The library has a robust and stable C interface and even old dlls from 2008 with the old algorithm still run. Measures are represented by an array of null pointers (pseudo-points) and an array of equal length of positive doubles adding to 1.; the calling program provides a feature map that converts each null pointer to a vector, and so recombine never knows or needs to know the real types of the points. Recombine returns the indexes of the points that should remain and new positive weights so that the mean of these remaining points with the new weights is the same as the old mean. The new list of survivors is never more than D+1 long where D is the dimension of the vector space. If there are N points in D dimensions the sequential complexity of this algorithm is less than ND + log_2(N/D) D^3. This reflects the order of magnitude improvement in the algorithm developed with Maria Tchernychova; the algorithm with Litterer had complexity ND + log_2(N/D) D^4 although it is quicker for small problems. The interface remains the same. The ND comes from touching the points, and log_2(N/D) D^3 from performing log_2(N/D) complex SVD type calculations on Dx2D matrices. This is a linear programming problem under the surface, but the algorithm here has fixed complexity. In many of the problems we are interested in N is approximately D^2 so the cost is (to logarithms) equated with the cost of touching the points.

The algorithm uses MKL (LAPACK) to do most of the linear algebra, although there is a part that is bespoke. The operations benefit from some parallelism via OMP. Say (export OMP_NUM_THREADS=8). The log factor is truly sequential.

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

pyrecombine-1.0.0.tar.gz (933.5 kB view hashes)

Uploaded Source

Built Distributions

pyrecombine-1.0.0-cp313-cp313-win_amd64.whl (2.7 MB view hashes)

Uploaded CPython 3.13 Windows x86-64

pyrecombine-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

pyrecombine-1.0.0-cp313-cp313-macosx_14_0_arm64.whl (272.4 kB view hashes)

Uploaded CPython 3.13 macOS 14.0+ ARM64

pyrecombine-1.0.0-cp313-cp313-macosx_13_0_x86_64.whl (304.8 kB view hashes)

Uploaded CPython 3.13 macOS 13.0+ x86-64

pyrecombine-1.0.0-cp312-cp312-win_amd64.whl (2.7 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

pyrecombine-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyrecombine-1.0.0-cp312-cp312-macosx_14_0_arm64.whl (272.4 kB view hashes)

Uploaded CPython 3.12 macOS 14.0+ ARM64

pyrecombine-1.0.0-cp312-cp312-macosx_13_0_x86_64.whl (304.8 kB view hashes)

Uploaded CPython 3.12 macOS 13.0+ x86-64

pyrecombine-1.0.0-cp311-cp311-win_amd64.whl (2.7 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

pyrecombine-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyrecombine-1.0.0-cp311-cp311-macosx_14_0_arm64.whl (272.4 kB view hashes)

Uploaded CPython 3.11 macOS 14.0+ ARM64

pyrecombine-1.0.0-cp311-cp311-macosx_13_0_x86_64.whl (304.8 kB view hashes)

Uploaded CPython 3.11 macOS 13.0+ x86-64

pyrecombine-1.0.0-cp310-cp310-win_amd64.whl (2.7 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyrecombine-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyrecombine-1.0.0-cp310-cp310-macosx_14_0_arm64.whl (272.4 kB view hashes)

Uploaded CPython 3.10 macOS 14.0+ ARM64

pyrecombine-1.0.0-cp310-cp310-macosx_13_0_x86_64.whl (304.8 kB view hashes)

Uploaded CPython 3.10 macOS 13.0+ x86-64

pyrecombine-1.0.0-cp39-cp39-win_amd64.whl (2.7 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyrecombine-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyrecombine-1.0.0-cp39-cp39-macosx_14_0_arm64.whl (272.4 kB view hashes)

Uploaded CPython 3.9 macOS 14.0+ ARM64

pyrecombine-1.0.0-cp39-cp39-macosx_13_0_x86_64.whl (304.8 kB view hashes)

Uploaded CPython 3.9 macOS 13.0+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page