From d208d70b0a23a1f68aa86cfdbdd224a1231fd15c Mon Sep 17 00:00:00 2001 From: Sangyu Xu Date: Wed, 29 Jul 2026 16:10:19 +0800 Subject: [PATCH 1/3] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 533ba62c..5d93cdbb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ license = {text = "Apache-2.0"} authors = [{name = "Joses W. Ho", email = "joseshowh@gmail.com"}] keywords = ['nbdev', 'jupyter', 'notebook', 'python'] classifiers = ["Natural Language :: English", "Intended Audience :: Developers", "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only"] -dependencies = ['fastcore', 'pandas~=2.2.3', 'numpy~=2.1.0', 'matplotlib~=3.10.0', 'seaborn~=0.13.2', 'scipy~=1.15.2', 'numba~=0.61.0', 'datetime', 'statsmodels', 'lqrt', 'tqdm'] +dependencies = ['fastcore>=1.14.6,<2', 'pandas~=2.2.3', 'numpy~=2.1.0', 'matplotlib~=3.10.0', 'seaborn~=0.13.2', 'scipy~=1.15.2', 'numba~=0.61.0', 'datetime', 'statsmodels', 'lqrt', 'tqdm'] [project.urls] Repository = "https://github.com/acclab/DABEST-python" From 4557fd01d13e998b0fdc0ff21cfad923d91e4d35 Mon Sep 17 00:00:00 2001 From: Sangyu Xu Date: Wed, 29 Jul 2026 16:19:09 +0800 Subject: [PATCH 2/3] Pin fastcore below v2 for nbdev compatibility --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5d93cdbb..eaf0b9c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ license = {text = "Apache-2.0"} authors = [{name = "Joses W. Ho", email = "joseshowh@gmail.com"}] keywords = ['nbdev', 'jupyter', 'notebook', 'python'] classifiers = ["Natural Language :: English", "Intended Audience :: Developers", "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only"] -dependencies = ['fastcore>=1.14.6,<2', 'pandas~=2.2.3', 'numpy~=2.1.0', 'matplotlib~=3.10.0', 'seaborn~=0.13.2', 'scipy~=1.15.2', 'numba~=0.61.0', 'datetime', 'statsmodels', 'lqrt', 'tqdm'] +dependencies = ['fastcore>=1.14.1,<2', 'pandas~=2.2.3', 'numpy~=2.1.0', 'matplotlib~=3.10.0', 'seaborn~=0.13.2', 'scipy~=1.15.2', 'numba~=0.61.0', 'datetime', 'statsmodels', 'lqrt', 'tqdm'] [project.urls] Repository = "https://github.com/acclab/DABEST-python" From 6f4479bebc650a4943341861af61664a89fb2677 Mon Sep 17 00:00:00 2001 From: Sangyu Xu Date: Wed, 29 Jul 2026 16:56:52 +0800 Subject: [PATCH 3/3] Update index.qmd.py to accommodate fastcore 2 starmap => star --- README.md | 160 ++++++++++++++--------------------------------- nbs/index.qmd.py | 4 +- nbs/nbdev.yml | 5 ++ pyproject.toml | 2 +- 4 files changed, 54 insertions(+), 117 deletions(-) diff --git a/README.md b/README.md index 10c80543..22a5df53 100644 --- a/README.md +++ b/README.md @@ -3,76 +3,54 @@ -[![minimal Python -version](https://img.shields.io/badge/Python%3E%3D-3.10-6666ff.svg)](https://www.anaconda.com/distribution/) -[![PyPI -version](https://badge.fury.io/py/dabest.svg)](https://badge.fury.io/py/dabest) +[![minimal Python version](https://img.shields.io/badge/Python%3E%3D-3.10-6666ff.svg)](https://www.anaconda.com/distribution/) +[![PyPI version](https://badge.fury.io/py/dabest.svg)](https://badge.fury.io/py/dabest) [![Downloads](https://img.shields.io/pepy/dt/dabest.svg)](https://pepy.tech/project/dabest) -[![Free-to-view -citation](https://zenodo.org/badge/DOI/10.1038/s41592-019-0470-3.svg)](https://rdcu.be/bHhJ4) +[![Free-to-view citation](https://zenodo.org/badge/DOI/10.1038/s41592-019-0470-3.svg)](https://rdcu.be/bHhJ4) [![License](https://img.shields.io/badge/License-BSD%203--Clause--Clear-orange.svg)](https://spdx.org/licenses/BSD-3-Clause-Clear.html) ## Recent Version Update **✨ DABEST “Bingka” v2025.10.20 for Python is now released! ✨** -Dear DABEST users, The latest version of the DABEST Python library -brings new visualizations, refined plots, and improved accuracy. +Dear DABEST users, +The latest version of the DABEST Python library brings new visualizations, refined plots, and improved accuracy. 1. **Whorlmap 🌀: Compact visualization for multi-dimensional effects** - Introducing **Whorlmap**, a new way to visualize effect sizes from - multiple comparisons in a compact, grid-based format. + Introducing **Whorlmap**, a new way to visualize effect sizes from multiple comparisons in a compact, grid-based format. - Whorlmaps condense information from the full bootstrap distributions - of many contrast objects into a **2D heatmap-style grid of “whorled” - cells**. This provides an overview of the entire dataset while - preserving the underlying distributional detail. + Whorlmaps condense information from the full bootstrap distributions of many contrast objects into a **2D heatmap-style grid of “whorled” cells**. This provides an overview of the entire dataset while preserving the underlying distributional detail. - They are especially useful for large-scale or multi-condition - experiments, serving as a **space-efficient alternative to stacked - forest plots**. + They are especially useful for large-scale or multi-condition experiments, serving as a **space-efficient alternative to stacked forest plots**. - You can generate a Whorlmap directly from multi-dimensional DABEST - objects using the `.whorlmap()` method. See the [Whorlmap - tutorial](https://acclab.github.io/DABEST-python/tutorials/10-whorlmap.html) - for more details. + You can generate a Whorlmap directly from multi-dimensional DABEST objects using the `.whorlmap()` method. See the [Whorlmap tutorial](https://acclab.github.io/DABEST-python/tutorials/10-whorlmap.html) for more details. 2. **Slopegraphs 📈: Enhanced summaries for paired data** - Slopegraphs for paired continuous data now display **group summary - statistics**. + Slopegraphs for paired continuous data now display **group summary statistics**. - - By default, a thick trend line connects group means, with vertical - bars showing standard deviation. + - By default, a thick trend line connects group means, with vertical bars showing standard deviation. - - Choose the summary type via the group_summaries argument in - `.plot()` — options include `'mean_sd'`, `'median_quartiles'`, or - `None`. + - Choose the summary type via the group_summaries argument in `.plot()` — options include `'mean_sd'`, `'median_quartiles'`, or `None`. - Customize appearance with `group_summaries_kwargs`. - See the Group Summaries section in the [Plot Aesthetics - tutorial](https://acclab.github.io/DABEST-python/tutorials/08-plot_aesthetics.html) - for more details. + See the Group Summaries section in the [Plot Aesthetics tutorial](https://acclab.github.io/DABEST-python/tutorials/08-plot_aesthetics.html) for more details. 3. **Mini-meta Weighted Delta Fix 🧮** - The weighted delta calculation in mini-meta plots has been updated - for **greater accuracy and consistency**. + The weighted delta calculation in mini-meta plots has been updated for **greater accuracy and consistency**. 4. **Expanded custom_palette functionality 🎨** - - **Barplots (unpaired, proportional):** `custom_palette` can now - take `1` and `0` as dictionary keys to color the filled and - unfilled portions of the plot. + - **Barplots (unpaired, proportional):** + `custom_palette` can now take `1` and `0` as dictionary keys to color the filled and unfilled portions of the plot. - - **Slopegraphs (paired, non-proportional):** `custom_palette` can - now color contrast bars and effect-size curves. + - **Slopegraphs (paired, non-proportional):** + `custom_palette` can now color contrast bars and effect-size curves. -See the Custom Palette section in the [Plot Aesthetics -tutorial](https://acclab.github.io/DABEST-python/tutorials/08-plot_aesthetics.html) -for examples. +See the Custom Palette section in the [Plot Aesthetics tutorial](https://acclab.github.io/DABEST-python/tutorials/08-plot_aesthetics.html) for examples. Thank you for your continued support! @@ -96,38 +74,24 @@ Thank you for your continued support! ## About -DABEST is a package for **D**ata **A**nalysis using -**B**ootstrap-Coupled **EST**imation. +DABEST is a package for **D**ata **A**nalysis using **B**ootstrap-Coupled **EST**imation. -[Estimation -statistics](https://en.wikipedia.org/wiki/Estimation_statistics) are a -[simple framework](https://thenewstatistics.com/itns/) that avoids the -[pitfalls](https://www.nature.com/articles/nmeth.3288) of significance -testing. It employs familiar statistical concepts such as means, mean -differences, and error bars. More importantly, it focuses on the effect -size of one’s experiment or intervention, rather than succumbing to a -false dichotomy engendered by *P* values. +[Estimation statistics](https://en.wikipedia.org/wiki/Estimation_statistics) are a [simple framework](https://thenewstatistics.com/itns/) that avoids the [pitfalls](https://www.nature.com/articles/nmeth.3288) of significance testing. It employs familiar statistical concepts such as means, mean differences, and error bars. More importantly, it focuses on the effect size of one’s experiment or intervention, rather than succumbing to a false dichotomy engendered by *P* values. An estimation plot comprises two key features. -1. It presents all data points as a swarm plot, ordering each point to - display the underlying distribution. +1. It presents all data points as a swarm plot, ordering each point to display the underlying distribution. -2. It illustrates the effect size as a **bootstrap 95% confidence - interval** on a **separate but aligned axis**. +2. It illustrates the effect size as a **bootstrap 95% confidence interval** on a **separate but aligned axis**. -![The five kinds of estimation -plots](showpiece.png "The five kinds of estimation plots.") +![The five kinds of estimation plots](showpiece.png "The five kinds of estimation plots.") -DABEST powers [estimationstats.com](https://www.estimationstats.com/), -allowing everyone access to high-quality estimation plots. +DABEST powers [estimationstats.com](https://www.estimationstats.com/), allowing everyone access to high-quality estimation plots. ## Installation -This package is tested on Python 3.11 and onwards. It is highly -recommended to download the [Anaconda -distribution](https://www.continuum.io/downloads) of Python in order to -obtain the dependencies easily. +This package is tested on Python 3.11 and onwards. +It is highly recommended to download the [Anaconda distribution](https://www.continuum.io/downloads) of Python in order to obtain the dependencies easily. You can install this package via `pip`. @@ -137,9 +101,7 @@ To install, at the command line run pip install dabest ``` -You can also -[clone](https://help.github.com/articles/cloning-a-repository) this repo -locally. +You can also [clone](https://help.github.com/articles/cloning-a-repository) this repo locally. Then, navigate to the cloned repo in the command line and run @@ -164,87 +126,57 @@ iris_dabest = dabest.load(data=iris, x="species", y="petal_width", iris_dabest.mean_diff.plot(); ``` -![A Cumming estimation plot of petal width from the iris -dataset](iris.png) +![A Cumming estimation plot of petal width from the iris dataset](iris.png) -Please refer to the official -[tutorial](https://acclab.github.io/DABEST-python/) for more useful code -snippets. +Please refer to the official [tutorial](https://acclab.github.io/DABEST-python/) for more useful code snippets. ## How to cite **Getting over ANOVA: Estimation graphics for multi-group comparisons** -*Zinan Lu, Jonathan Anns, Yishan Mai, Rou Zhang, Kahseng Lian, Nicole -MynYi Lee, Shan Hashir, Lucas Wang Zhuoyu, A. Rosa Castillo Gonzalez, -Joses Ho, Hyungwon Choi, Sangyu Xu, Adam Claridge-Chang* +*Zinan Lu, Jonathan Anns, Yishan Mai, Rou Zhang, Kahseng Lian, Nicole MynYi Lee, Shan Hashir, Lucas Wang Zhuoyu, A. Rosa Castillo Gonzalez, Joses Ho, Hyungwon Choi, Sangyu Xu, Adam Claridge-Chang* -bioRxiv preprint 2026. -[10.64898/2026.01.26.701654](http://dx.doi.org/10.64898/2026.01.26.701654) +bioRxiv preprint 2026. [10.64898/2026.01.26.701654](http://dx.doi.org/10.64898/2026.01.26.701654) [PDF](https://www.biorxiv.org/content/10.64898/2026.01.26.701654v1.full.pdf) **Moving beyond P values: Everyday data analysis with estimation plots** -*Joses Ho, Tayfun Tumkaya, Sameer Aryal, Hyungwon Choi, Adam -Claridge-Chang* +*Joses Ho, Tayfun Tumkaya, Sameer Aryal, Hyungwon Choi, Adam Claridge-Chang* -Nature Methods 2019, 1548-7105. -[10.1038/s41592-019-0470-3](http://dx.doi.org/10.1038/s41592-019-0470-3) +Nature Methods 2019, 1548-7105. [10.1038/s41592-019-0470-3](http://dx.doi.org/10.1038/s41592-019-0470-3) -[Paywalled publisher -site](https://www.nature.com/articles/s41592-019-0470-3); [Free-to-view -PDF](https://rdcu.be/bHhJ4) +[Paywalled publisher site](https://www.nature.com/articles/s41592-019-0470-3); [Free-to-view PDF](https://rdcu.be/bHhJ4) ## Bugs -Please report any bugs on the [issue -page](https://github.com/ACCLAB/DABEST-python/issues/new). +Please report any bugs on the [issue page](https://github.com/ACCLAB/DABEST-python/issues/new). ## Contributing -All contributions are welcome; please read the [Guidelines for -contributing](../CONTRIBUTING.md) first. +All contributions are welcome; please read the [Guidelines for contributing](../CONTRIBUTING.md) first. -We also have a [Code of Conduct](../CODE_OF_CONDUCT.md) to foster an -inclusive and productive space. +We also have a [Code of Conduct](../CODE_OF_CONDUCT.md) to foster an inclusive and productive space. ### A wish list for new features -If you have any specific comments and ideas for new features that you -would like to share with us, please read the [Guidelines for -contributing](../CONTRIBUTING.md), create a new issue using Feature -request template or create a new post in [our Google -Group](https://groups.google.com/g/estimationstats). +If you have any specific comments and ideas for new features that you would like to share with us, please read the [Guidelines for contributing](../CONTRIBUTING.md), create a new issue using Feature request template or create a new post in [our Google Group](https://groups.google.com/g/estimationstats). ## Acknowledgements -We would like to thank alpha testers from the [Claridge-Chang -lab](https://www.claridgechang.net/): [Sangyu -Xu](https://github.com/sangyu), [Xianyuan -Zhang](https://github.com/XYZfar), [Farhan -Mohammad](https://github.com/farhan8igib), Jurga Mituzaitė, and -Stanislav Ott. +We would like to thank alpha testers from the [Claridge-Chang lab](https://www.claridgechang.net/): [Sangyu Xu](https://github.com/sangyu), [Xianyuan Zhang](https://github.com/XYZfar), [Farhan Mohammad](https://github.com/farhan8igib), Jurga Mituzaitė, and Stanislav Ott. ## Testing -To test DABEST, you need to install -[pytest](https://docs.pytest.org/en/latest) and -[nbdev](https://nbdev.fast.ai/). +To test DABEST, you need to install [pytest](https://docs.pytest.org/en/latest) and [nbdev](https://nbdev.fast.ai/). -- Run `pytest` in the root directory of the source distribution. This - runs the test suite in the folder `dabest/tests/mpl_image_tests`. -- Run `nbdev_test` in the root directory of the source distribution. - This runs the value assertion tests in the folder `dabest/tests` +- Run `pytest` in the root directory of the source distribution. This runs the test suite in the folder `dabest/tests/mpl_image_tests`. +- Run `nbdev_test` in the root directory of the source distribution. This runs the value assertion tests in the folder `dabest/tests` -The test suite ensures that the bootstrapping functions and the plotting -functions perform as expected. +The test suite ensures that the bootstrapping functions and the plotting functions perform as expected. -For detailed information, please refer to the [test -folder](../nbs/tests/README.md) +For detailed information, please refer to the [test folder](../nbs/tests/README.md) ## DABEST in other languages -DABEST is also available in R -([dabestr](https://github.com/ACCLAB/dabestr)) and Matlab -([DABEST-Matlab](https://github.com/ACCLAB/DABEST-Matlab)). +DABEST is also available in R ([dabestr](https://github.com/ACCLAB/dabestr)) and Matlab ([DABEST-Matlab](https://github.com/ACCLAB/DABEST-Matlab)). diff --git a/nbs/index.qmd.py b/nbs/index.qmd.py index f6dbe449..22677965 100644 --- a/nbs/index.qmd.py +++ b/nbs/index.qmd.py @@ -7,7 +7,7 @@ toc: false ---""" -from fastcore.foundation import L +from fastcore.foundation import L, star from nbdev import qmd def img(fname, classes=None, **kwargs): return qmd.img(f"images/{fname}", classes=classes, **kwargs) @@ -39,7 +39,7 @@ def testm(im, nm, detl, txt): def feature(im, desc): return qmd.div(f"{img(im+'.svg')}\n\n{desc}\n", ['feature', 'g-col-12', 'g-col-sm-6', 'g-col-md-4']) -feature_d = qmd.div('\n'.join(features.starmap(feature)), ['grid', 'gap-4'], style={"padding-bottom": "60px"}) +feature_d = qmd.div('\n'.join(features.map(star(feature))), ['grid', 'gap-4'], style={"padding-bottom": "60px"}) def b(*args, **kwargs): print(banner (*args, **kwargs)) def d(*args, **kwargs): print(qmd.div(*args, **kwargs)) diff --git a/nbs/nbdev.yml b/nbs/nbdev.yml index 34cfc3c6..f68657b8 100644 --- a/nbs/nbdev.yml +++ b/nbs/nbdev.yml @@ -7,3 +7,8 @@ website: description: "Data Analysis and Visualization using Bootstrap-Coupled Estimation." repo-branch: master repo-url: "https://github.com/acclab/DABEST-python" + +format-links: + - html + - format: commonmark + text: Markdown diff --git a/pyproject.toml b/pyproject.toml index eaf0b9c7..533ba62c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ license = {text = "Apache-2.0"} authors = [{name = "Joses W. Ho", email = "joseshowh@gmail.com"}] keywords = ['nbdev', 'jupyter', 'notebook', 'python'] classifiers = ["Natural Language :: English", "Intended Audience :: Developers", "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only"] -dependencies = ['fastcore>=1.14.1,<2', 'pandas~=2.2.3', 'numpy~=2.1.0', 'matplotlib~=3.10.0', 'seaborn~=0.13.2', 'scipy~=1.15.2', 'numba~=0.61.0', 'datetime', 'statsmodels', 'lqrt', 'tqdm'] +dependencies = ['fastcore', 'pandas~=2.2.3', 'numpy~=2.1.0', 'matplotlib~=3.10.0', 'seaborn~=0.13.2', 'scipy~=1.15.2', 'numba~=0.61.0', 'datetime', 'statsmodels', 'lqrt', 'tqdm'] [project.urls] Repository = "https://github.com/acclab/DABEST-python"