Skip to content

Commit 3a75501

Browse files
committed
Final changes
- updated tutorial images - updated test images - updated readme, about, and changelog
1 parent 8ceb192 commit 3a75501

File tree

98 files changed

+348
-448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+348
-448
lines changed

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
<!-- do not remove -->
44

5+
## v2025.10.17
6+
7+
### New Features
8+
9+
1. **Group Summaries for Paired Plots**: Slopegraphs now support group summaries, showing summary statistics for each group. By default, a line connects group means, with vertical bars indicating standard deviation. Users can choose the summary type via the `group_summaries` argument in `.plot()` — options include `'mean_sd'`, `'median_quartiles'`, or `None`. Appearance can be customized using `group_summaries_kwargs`.
10+
11+
2. **Fixed Mini-meta Weighted Delta Calculation**: The weighted delta calculation in mini-meta plots has been modified to ensure accurate reporting of the weighted delta.
12+
13+
3. **Whorlmaps**: A new plot type for visualizing high-dimensional data in a compact heatmap-like format. TBC
14+
15+
4. **Miscellaneous Improvements & Adjustments**:
16+
- **Additional color options for barplots (unpaired proportional)**: `custom_palette` dict can now take 0 and 1 as keys to color the filled and unfilled portions of the plots.
17+
- **Custom palette usage for slopegraphs**: The `custom_palette` can now be used for paired (non proportional) plots to color the contrast bars and effect size curves.
18+
19+
20+
521
## v2025.03.27
622

723
### New Features
@@ -69,6 +85,7 @@
6985
## v2023.03.29
7086

7187
### New Features
88+
7289
- **Repeated measures**: Augments the prior function for plotting (independent) multiple test groups versus a shared control; it can now do the same for repeated-measures experimental designs. Thus, together, these two methods can be used to replace both flavors of the 1-way ANOVA with an estimation analysis.
7390

7491
- **Proportional data**: Generates proportional bar plots, proportional differences, and calculates Cohen’s h. Also enables plotting Sankey diagrams for paired binary data. This is the estimation equivalent to a bar chart with Fischer’s exact test.

README.md

Lines changed: 35 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
DABEST-Python
2-
================
1+
# DABEST-Python
2+
33

44
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->
55

@@ -14,139 +14,42 @@ citation](https://zenodo.org/badge/DOI/10.1038/s41592-019-0470-3.svg)](https://r
1414

1515
## Recent Version Update
1616

17-
We are proud to announce **DABEST Version Dadar (v2025.03.27)** This new
18-
version of the DABEST Python library includes several new features and
19-
performance improvements. It’s a big one!
20-
21-
1. **Python 3.13 Support**: DABEST now supports Python 3.10—3.13.
22-
23-
2. **Horizontal Plots**: Users can now create horizontal layout plots,
24-
providing compact data visualization. This can be achieved by
25-
setting `horizontal=True` in the `.plot()` method. See the
26-
[Horizontal Plots
27-
tutorial](https://acclab.github.io/DABEST-python/tutorials/08-horizontal_plot.html)
28-
for more details.
29-
30-
3. **Forest Plots**: Forest plots provide a simple and intuitive way to
31-
visualize many delta-delta (or delta *g*), mini-meta, or regular
32-
delta effect sizes at once from multiple different dabest objects
33-
without presenting the raw data. See the [Forest Plots
34-
tutorial](https://acclab.github.io/DABEST-python/tutorials/07-forest_plot.html)
35-
for more details.
36-
37-
4. **Gridkey**: Users can now represent experimental labels in a
38-
‘gridkey’ table. This can be accessed with the `gridkey` parameter
39-
in the `.plot()` method. See the gridkey section in the [Plot
40-
Aesthetics
17+
We are proud to announce **DABEST Version Dadar (v2025.10.17)** This new
18+
version of the DABEST Python library includes new features, updated
19+
graphics, and improved calculations.
20+
21+
1. **Group Summaries for Paired Plots**: Slopegraphs now support group
22+
summaries, showing summary statistics for each group. By default, a
23+
line connects group means, with vertical bars indicating standard
24+
deviation. Users can choose the summary type via the
25+
`group_summaries` argument in `.plot()` — options include
26+
`'mean_sd'`, `'median_quartiles'`, or `None`. Appearance can be
27+
customized using `group_summaries_kwargs`. See the group summaries
28+
section in the [Plot Aesthetics
4129
tutorial](https://acclab.github.io/DABEST-python/tutorials/09-plot_aesthetics.html)
4230
for more details.
4331

44-
5. **Other Visualization Improvements**:
45-
46-
- **Comparing means and effect sizes**: The estimation plots now
47-
include three types of customizable visual features to enhance
48-
contextualization and comparison of means and effect sizes:
49-
50-
- **Bars for the mean of the observed values (`raw_bars`)**:
51-
Colored rectangles that extend from the zero line to the mean of
52-
each group’s raw data. These bars visually highlight the central
53-
tendency of the raw data.
54-
55-
- **Bars for effect size/s (`contrast_bars`)**: Similar to raw
56-
bars, these highlight the effect-size difference between two
57-
groups (typically test and control) in the contrast axis. They
58-
provide a visual representation of the differences between
59-
groups.
60-
61-
- **Summary bands (`reference_band`)**: An optional band or ribbon
62-
that can be added to emphasize a specific effect size’s
63-
confidence interval that is used as a reference range across the
64-
entire contrast axis. Unlike raw and contrast bars, these span
65-
horizontally (or vertically if `horizontal=True`) and are not
66-
displayed by default.
67-
68-
Raw and contrast bars are shown by default. Users can customize
69-
these bars and add summary bands as needed. For detailed
70-
customization instructions, please refer to the [Plot Aesthetics
71-
tutorial](https://acclab.github.io/DABEST-python/tutorials/09-plot_aesthetics.html).
72-
73-
- **Tighter spacing in delta-delta and mini-meta plots**: We have
74-
adjusted the spacing of delta-delta and mini-meta plots to reduce
75-
whitespace. The new format brings the overall effect size closer
76-
to the two-groups effect sizes. In addition, delta-delta plots now
77-
have a gap in the zero line to separate the delta-delta from the ∆
78-
effect sizes.
79-
80-
- **Delta-delta effect sizes for proportion plots**: In addition to
81-
continuous data, delta-delta plots now support binary data
82-
(proportions). This means that 2-way designs for binary outcomes
83-
can be analyzed with DABEST.
84-
85-
- **Proportion plots sample sizes**: The sample size of each binary
86-
option for each group can now be displayed. These can be toggled
87-
on/off via the `prop_sample_counts` parameter.
88-
89-
- **Effect size lines for paired plots**: Along with lines
90-
connecting paired observed values, the paired plots now also
91-
display lines linking the effect sizes within a group in the
92-
contrast axes. These lines can be toggled on/off via the
93-
`contrast_paired_lines` parameter.
94-
95-
- **Baseline error curves**: To represent the baseline/control group
96-
in the contrast axes, it is now possible to plot the baseline dot
97-
and the baseline error curve. The dot is shown by default, while
98-
the curve can be toggled on/off via the `show_baseline_ec`
99-
parameter. This dot helps make it clear where the baseline comes
100-
from i.e. the control minus itself. The baseline error curve can
101-
be used to show that the baseline itself is an estimate inferred
102-
from the observed values of the control data.
103-
104-
- **Delta text**: Effect-size deltas (e.g. mean differences) are now
105-
displayed as numerals next to their respective effect size. This
106-
can be toggled on/off via the `delta_text` parameter.
107-
108-
- **Empty circle color palette**: A new swarmplot color palette
109-
modification is available for unpaired plots via the
110-
`empty_circle` parameter in the `.plot()` method. This option
111-
modifies the two-group swarmplots to have empty circles for the
112-
control group and filled circles for the experimental group.
113-
114-
6. **Miscellaneous Improvements & Adjustments**
115-
116-
- **Numba for speed improvements**: We have added
117-
[Numba](https://numba.pydata.org/) to speed up the various
118-
calculations in DABEST. Precalculations will be performed during
119-
import, which will help speed up the subsequent loading and
120-
plotting of data.
121-
122-
- **Terminology/naming updates**: During the refactoring of the
123-
code, we have made several updates to the documentation and
124-
terminology to improve clarity and consistency. For example:
125-
126-
- Plot arguments have been adjusted to bring more clarity and
127-
consistency in naming. Arguments relating to the rawdata plot
128-
axis will now be typically referred to with `raw` while
129-
arguments relating to the contrast axis will be referred to with
130-
`contrast`. For example, `raw_label` replaces `swarm_label` and
131-
`bar_label`. The various kwargs relating to each different type
132-
of plot (e.g., `swarmplot_kwargs`) remain unchanged.
133-
134-
- The method to utilise the Delta *g* effect size is now via the
135-
.hedges_g.plot() method rather than creating a whole new Delta_g
136-
object as before. The functionality remains the same, it plots
137-
hedges_g effect sizes and then the Delta *g* effect size
138-
alongside these (if a delta-delta experiment was loaded
139-
correctly).
140-
141-
- **Updated tutorial pages**: We have updated the tutorial pages to
142-
reflect the new features and changes. The tutorial pages are now
143-
more comprehensive and (hopefully!) more intuitive!
144-
145-
- **Results dataframe for delta-delta and mini-meta plots**: A
146-
results dataframe can now be extracted for both the delta-delta
147-
and mini-meta effect size data (similar to the results dataframe
148-
for the regular effect sizes). These can be found via the
149-
`.results` attribute of the `.delta_delta` or `.mini_meta` object.
32+
2. **Fixed Mini-meta Weighted Delta Calculation**: The weighted delta
33+
calculation in mini-meta plots has been modified to ensure accurate
34+
reporting of the weighted delta.
35+
36+
3. **Whorlmaps**: A new plot type for visualizing high-dimensional data
37+
in a compact heatmap-like format. TBC
38+
39+
4. **Miscellaneous Improvements & Adjustments**:
40+
41+
- **Additional color options for barplots (unpaired proportional)**:
42+
`custom_palette` dict can now take 0 and 1 as keys to color the
43+
filled and unfilled portions of the plots. See the custom palette
44+
section in the [Plot Aesthetics
45+
tutorial](https://acclab.github.io/DABEST-python/tutorials/09-plot_aesthetics.html)
46+
for more details.
47+
- **Custom palette usage for slopegraphs**: The `custom_palette` can
48+
now be used for paired (non proportional) plots to color the
49+
contrast bars and effect size curves. See the custom palette
50+
section in the [Plot Aesthetics
51+
tutorial](https://acclab.github.io/DABEST-python/tutorials/09-plot_aesthetics.html)
52+
for more details.
15053

15154
## Contents
15255

dabest/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
if not _NUMBA_COMPILED:
1313
precompile_all()
1414

15-
__version__ = "2025.03.27"
15+
__version__ = "2025.10.17"

dabest/forest_plot.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,8 +645,8 @@ def forest_plot(
645645
## y-label
646646
if ylabel is None:
647647
effect_attr_map = {
648-
"mean_diff": "Mean Difference",
649-
"median_diff": "Median Difference",
648+
"mean_diff": "Mean difference",
649+
"median_diff": "Median difference",
650650
"cohens_d": "Cohen's d",
651651
"cohens_h": "Cohen's h",
652652
"cliffs_delta": "Cliff's delta",

dabest/misc_tools.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -951,24 +951,24 @@ def initialize_fig(
951951

952952
# Set contrast axes y-label.
953953
contrast_label_dict = {
954-
"mean_diff": "Mean difference",
955-
"median_diff": "Median difference",
954+
"mean_diff": "mean difference",
955+
"median_diff": "median difference",
956956
"cohens_d": "Cohen's d",
957957
"hedges_g": "Hedges' g",
958958
"cliffs_delta": "Cliff's delta",
959959
"cohens_h": "Cohen's h",
960960
}
961961

962962
if proportional and effect_size_type != "cohens_h":
963-
default_contrast_label = "Proportion difference"
963+
default_contrast_label = "proportion difference"
964964
else:
965965
default_contrast_label = contrast_label_dict[effect_size_type]
966966

967967
if plot_kwargs["contrast_label"] is None:
968968
if is_paired:
969969
contrast_label = "Paired\n{}".format(default_contrast_label)
970970
else:
971-
contrast_label = default_contrast_label
971+
contrast_label = default_contrast_label.capitalize()
972972
else:
973973
contrast_label = plot_kwargs["contrast_label"]
974974

nbs/02-about.ipynb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
"\n",
1818
"DABEST is written in Python by [Joses W. Ho](https://twitter.com/jacuzzijo), with design and input from [Adam Claridge-Chang](https://twitter.com/adamcchang) and other [lab members](https://www.claridgechang.net/people.html).\n",
1919
"\n",
20+
"Features in v2025.10.17 were added by [Jonathan Anns](https://github.com/JAnns98), [Zinan Lu](https://github.com/Jacobluke-), [Yishan Mai](https://github.com/maiyishan), and [Sangyu Xu](https://github.com/sangyu).\n",
21+
"\n",
2022
"Features in v2025.03.27 were added by [Jonathan Anns](https://github.com/JAnns98), [Zinan Lu](https://github.com/Jacobluke-), [Kah Seng Lian](https://github.com/sunroofgod), [Yishan Mai](https://github.com/maiyishan), [Sangyu Xu](https://github.com/sangyu), and [Lucas Wang Zhuoyu](https://github.com/Lucas1213WZY).\n",
2123
"\n",
2224
"Features in v2024.03.29 were added by [Zinan Lu](https://github.com/Jacobluke-), [Kah Seng Lian](https://github.com/sunroofgod), [Ana Rosa Castillo](https://github.com/cyberosa).\n",

nbs/API/forest_plot.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -705,8 +705,8 @@
705705
" ## y-label \n",
706706
" if ylabel is None:\n",
707707
" effect_attr_map = {\n",
708-
" \"mean_diff\": \"Mean Difference\",\n",
709-
" \"median_diff\": \"Median Difference\", \n",
708+
" \"mean_diff\": \"Mean difference\",\n",
709+
" \"median_diff\": \"Median difference\", \n",
710710
" \"cohens_d\": \"Cohen's d\",\n",
711711
" \"cohens_h\": \"Cohen's h\",\n",
712712
" \"cliffs_delta\": \"Cliff's delta\",\n",

nbs/API/misc_tools.ipynb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,24 +1004,24 @@
10041004
"\n",
10051005
" # Set contrast axes y-label.\n",
10061006
" contrast_label_dict = {\n",
1007-
" \"mean_diff\": \"Mean difference\",\n",
1008-
" \"median_diff\": \"Median difference\",\n",
1007+
" \"mean_diff\": \"mean difference\",\n",
1008+
" \"median_diff\": \"median difference\",\n",
10091009
" \"cohens_d\": \"Cohen's d\",\n",
10101010
" \"hedges_g\": \"Hedges' g\",\n",
10111011
" \"cliffs_delta\": \"Cliff's delta\",\n",
10121012
" \"cohens_h\": \"Cohen's h\",\n",
10131013
" }\n",
10141014
"\n",
10151015
" if proportional and effect_size_type != \"cohens_h\":\n",
1016-
" default_contrast_label = \"Proportion difference\"\n",
1016+
" default_contrast_label = \"proportion difference\"\n",
10171017
" else:\n",
10181018
" default_contrast_label = contrast_label_dict[effect_size_type]\n",
10191019
"\n",
10201020
" if plot_kwargs[\"contrast_label\"] is None:\n",
10211021
" if is_paired:\n",
10221022
" contrast_label = \"Paired\\n{}\".format(default_contrast_label)\n",
10231023
" else:\n",
1024-
" contrast_label = default_contrast_label\n",
1024+
" contrast_label = default_contrast_label.capitalize()\n",
10251025
" else:\n",
10261026
" contrast_label = plot_kwargs[\"contrast_label\"]\n",
10271027
"\n",

0 commit comments

Comments
 (0)