Skip to main content

Python package to make statistical test and add statistical annotations on plots generated with Plotly

Project description

🚩 Index of Contents

📌 What is TAP?

Python package to make statistical tests and add statistical annotations on plot generated with Plotly

✅ Features

  • Single function to make statistical tests and add statistical annotations on plot generated with Plotly:

    • Box plots
    • Strip plots
  • Integrated statistical tests (scipy.stats methods):

    • Mann-Whitney test
    • t-test (independent and paired)
    • t-test-related (dipendent)
    • Levene test
    • Wilcoxon test
    • Kruskal-Wallis test
    • Dunn test
    • Brunner-Munzel test
    • Ansari-Bradley test
    • CramerVon-Mises test
    • Kolmogorov-Smirnov test
    • Alexander-Govern test
    • Fligner-Killeen test
    • Bartlett test
  • Correction for statistical tests can be applied (statsmodel.stats.multitest.multipletests method):

    • Bonferroni
    • Sidak
    • Holm-Sidak
    • Benjamini-Hochberg
  • Exporting plots to formats:

    • png
    • jpeg
    • webp
    • svg
    • pdf
    • html

📦 Installation

Downloads

TAP is present on pipy, and can be downloaded directly with pip

pip install taplib

Or if you prefer you can clone the repository and install it manually

git clone https://github.com/FedericaPersiani/tap.git
cd tap
pip install .

🔍 Example

Once your dataframe has been loaded you can pass it to the plot_stats function which will apply the Mann-Whitney test by default on all classes present in the column indicated as x, using the y column as the value

import tap
import seaborn as sns

df = sns.load_dataset("tips")
x = "day"
y = "total_bill"

tap.plot_stats(df, x, y)

img

Cutoff pvalue: You can change the significance of the null hypothesis through the cutoff_pvalue parameter, by default it is set to 0.05.

tap.plot_stats(df, x, y, cutoff_pvalue=0.01)

img

Type test: You can change the test type using the type_test parameter

tap.plot_stats(df, x, y, type_test="cramervon-mises")

img

Type correction: You can apply a p-value correction algorithm via the type_correction parameter

tap.plot_stats(df, x, y, type_correction="bonferroni")

img

Order: You can change the sorting of the plot by passing the list with all the entries present in the x column ordered as you prefer

tap.plot_stats(df, x, y, order=["Thur", "Fri", "Sat", "Sun"])

img

Type plot: You can change the plot type using the type_plot parameter

tap.plot_stats(df, x, y, type_plot="strip")

img

Pairs: You can decide the pairs that will be used to generate the statistics to plot

tap.plot_stats(df, x, y, pairs=[("Sun", "Sat"), ("Sun", "Thur")])

img

Sub category: Through the subcategory parameter it is possible to divide the various entries into a further sub-category, you can decide the various pairings using the pairs parameter but in this case you will need to declare them as a tuple (primary category, subcategory)

tap.plot_stats(df, x, y, subcategory="sex")

img

tap.plot_stats(df, x, y, subcategory="sex", pairs=[(("Sun", "Male"), ("Sat", "Male")), (("Sun", "Male"), ("Sun", "Female"))])

img

Filename: To directly export the image you can use the filename parameter, the standard export size is (800, 600, 3) but you can modify it via the export_size parameter (width, height, scale-factor)

tap.plot_stats(df, x, y, filename="images/export_1.png", export_size=(800, 400, 3))

img

Kwargs: Through the kwargs parameter you can pass a key/value pairs directly to the plotly function, such as the size of the figure, or a title

tap.plot_stats(df, x, y, kwargs={"width":500, "height":500, "title": "My title"})

img

📝 Similar work

This repository is inspired by trevismd/statannotations (Statannotations), which compute statistical tests and annotations with seaborn

💬 Citation

DOI

BibTeX

@software{persiani_2024_13256766,
  author       = {Persiani, Federica and
                  Malori, Damiano},
  title        = {Discovery-Circle/tap: v0.1.5},
  month        = aug,
  year         = 2024,
  publisher    = {Zenodo},
  version      = {0.1.5},
  doi          = {10.5281/zenodo.13256766},
  url          = {https://doi.org/10.5281/zenodo.13256766}
}

APA

Persiani, F., & Malori, D. (2024). Discovery-Circle/tap: v0.1.4 (0.1.4). Zenodo. https://doi.org/10.5281/zenodo.10616392

✨ Contributors

Federica Persiani
Federica Persiani

💻 🔬
Damiano Malori
Damiano Malori

💻 📦

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

taplib-0.1.7.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

taplib-0.1.7-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file taplib-0.1.7.tar.gz.

File metadata

  • Download URL: taplib-0.1.7.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for taplib-0.1.7.tar.gz
Algorithm Hash digest
SHA256 e7e07e6625b19b71f105bd4987ebacdf1648b0476d2a1ce223e6cfa018237ebf
MD5 46dfaa1c8bec0d02223828cf7347fda2
BLAKE2b-256 88d9a0b0123038180cffaa96d5faf71c0d02131f4753c79f6e81dc27f98a1c47

See more details on using hashes here.

File details

Details for the file taplib-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: taplib-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for taplib-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 123469079fd869cc2ea3981c40bf39c68f5a44a90faaacbd6bce92d427106011
MD5 e0b4207c4b4f86c4b8a0bbd30a1315c9
BLAKE2b-256 aed91d51af1839ed3a4c3671ba8d33acc85ae34c9f902626b369d4047a1ab240

See more details on using hashes here.

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