Skip to main content

Fast multithreaded implementation for calculating Fisher's exact test for any RxC sized table

Project description

Fisher RxC

Fast multithreaded implementation of calculating Fisher's exact test for any RxC size table. Written in Rust using Maturin.

Installation

pip install fisher-rxc
import fisher

Usage

fisher.exact(table, workspace=None)

Calculate Fisher's exact test for 2D list according to Mehta & Patel's Network Algorithm. If workspace size is not provided, it will be "guessed" dynamically.

Workspace size of 2e8 takes ~800MB of RAM.

fisher.sim(table, iterations)

Calculate Fisher's exact test for 2D list by Monte Carlo simulation. This multithreaded implementation can be more than 100x faster than using R through rpy2.

A modern CPU can quickly do 10^8 iterations and get very accurate results.

fisher.recursive(table)

Calculate Fisher's exact test by a simple multithreaded recursive algorithm. This is generally much slower than the fisher.exact function. Only use for small tables with low numbers.

Return values

0 <= x <= 1: p-value

x < 0: error code number, message printed to stdout

References

Contingency table generator (ASA159): https://people.sc.fsu.edu/~jburkardt/c_src/asa159/asa159.html

Fisher' exact test - network algorithm (ASA643): https://netlib.org/toms/643.gz

Fisher's exact test - recursive: https://stackoverflow.com/questions/25368284/fishers-exact-test-for-bigger-than-2-by-2-contingency-table

Fortran to C transpiler: https://www.netlib.org/toms/

C to Rust transpiler: https://github.com/immunant/c2rust

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

fisher_rxc-0.9.0.tar.gz (22.8 kB view hashes)

Uploaded Source

Built Distributions

fisher_rxc-0.9.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl (491.0 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl (508.6 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl (582.2 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl (505.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (320.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (364.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (361.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (330.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (318.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl (491.8 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl (508.9 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl (582.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl (506.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (321.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (365.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (362.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (331.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (319.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl (492.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl (508.8 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-pp38-pypy38_pp73-musllinux_1_2_armv7l.whl (582.3 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl (506.1 kB view hashes)

Uploaded PyPy musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (365.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (362.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (319.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-cp312-none-win_amd64.whl (173.7 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

fisher_rxc-0.9.0-cp312-none-win32.whl (159.6 kB view hashes)

Uploaded CPython 3.12 Windows x86

fisher_rxc-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl (489.9 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-cp312-cp312-musllinux_1_2_i686.whl (507.2 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-cp312-cp312-musllinux_1_2_armv7l.whl (580.8 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-cp312-cp312-musllinux_1_2_aarch64.whl (504.2 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (319.9 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (363.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (360.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (329.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (317.5 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-cp312-cp312-macosx_11_0_arm64.whl (272.7 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fisher_rxc-0.9.0-cp312-cp312-macosx_10_12_x86_64.whl (282.6 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

fisher_rxc-0.9.0-cp311-none-win_amd64.whl (174.3 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

fisher_rxc-0.9.0-cp311-none-win32.whl (159.8 kB view hashes)

Uploaded CPython 3.11 Windows x86

fisher_rxc-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl (490.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-cp311-cp311-musllinux_1_2_i686.whl (508.0 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-cp311-cp311-musllinux_1_2_armv7l.whl (581.2 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-cp311-cp311-musllinux_1_2_aarch64.whl (504.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (319.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (363.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (360.5 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (330.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (318.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.5 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-cp311-cp311-macosx_11_0_arm64.whl (273.0 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fisher_rxc-0.9.0-cp311-cp311-macosx_10_12_x86_64.whl (283.3 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

fisher_rxc-0.9.0-cp310-none-win_amd64.whl (174.3 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

fisher_rxc-0.9.0-cp310-none-win32.whl (159.9 kB view hashes)

Uploaded CPython 3.10 Windows x86

fisher_rxc-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl (490.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-cp310-cp310-musllinux_1_2_i686.whl (508.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-cp310-cp310-musllinux_1_2_armv7l.whl (581.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-cp310-cp310-musllinux_1_2_aarch64.whl (504.5 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (320.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (363.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (360.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (330.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (318.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-cp310-cp310-macosx_11_0_arm64.whl (273.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fisher_rxc-0.9.0-cp39-none-win_amd64.whl (174.3 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

fisher_rxc-0.9.0-cp39-none-win32.whl (160.1 kB view hashes)

Uploaded CPython 3.9 Windows x86

fisher_rxc-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl (490.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-cp39-cp39-musllinux_1_2_i686.whl (508.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-cp39-cp39-musllinux_1_2_armv7l.whl (581.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-cp39-cp39-musllinux_1_2_aarch64.whl (504.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (320.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (363.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (361.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (330.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (318.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fisher_rxc-0.9.0-cp39-cp39-macosx_11_0_arm64.whl (273.8 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fisher_rxc-0.9.0-cp38-none-win_amd64.whl (174.2 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

fisher_rxc-0.9.0-cp38-none-win32.whl (160.0 kB view hashes)

Uploaded CPython 3.8 Windows x86

fisher_rxc-0.9.0-cp38-cp38-musllinux_1_2_x86_64.whl (490.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

fisher_rxc-0.9.0-cp38-cp38-musllinux_1_2_i686.whl (507.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

fisher_rxc-0.9.0-cp38-cp38-musllinux_1_2_armv7l.whl (581.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

fisher_rxc-0.9.0-cp38-cp38-musllinux_1_2_aarch64.whl (504.4 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

fisher_rxc-0.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (320.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

fisher_rxc-0.9.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (363.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

fisher_rxc-0.9.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (360.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

fisher_rxc-0.9.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (329.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

fisher_rxc-0.9.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (317.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

fisher_rxc-0.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

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