- Reworked the GitLab CI/CD pipeline: unit tests now run on every merge request
and the default branch (decoupled from the docs deploy) and block on failure;
the tests run across Python 3.10/3.11/3.12 on stock slim images via a matrix;
hardened the CI shell scripts (
set -eu) and replaced the broken custom SAST job with the GitLab-managed template. resources/ci_cd/debug_run_docker.shnow mirrors the entire pipeline locally in Docker — the unit-test matrix on every Python version and the docs build, in GitLab stage order — reading the version list and images from.gitlab-ci.ymlso it stays in sync with CI. It is portable: the repo root and docs build dir are auto-detected and Docker availability is pre-checked, so it runs on any machine (not just the maintainer's). The host-side scripts (debug_run_docker.sh,run_docker.sh) are macOS-compatible — GNU-onlyreadlink -fandhead -n -1were replaced withcd … && pwd -Pandsed '$d'.- Simplified the
pagesdocs job: the package install moved intopages.shand the separatebefore_script.sh+ its.before_script_templateanchor were removed.makeis now baked into the docs image (PERSISTENT_DEPS) instead of being re-installed viaapk addon every run.
-
resources/ci_cd/before_script.shand the.before_script_templateanchor in.gitlab-ci.yml; the docs job now runspages.shdirectly (which installs the package then builds the docs). -
Dead bioinformatics-template leftovers from the docs Docker image (
resources/docker/plot-misc/master/Dockerfile): thelibdeflate/libdeflate-dev(cyvcf),openssh(only used by the removed ssh-agent), and commentedllvm11/numba build dependencies. The image now requires a rebuild and push to take effect in CI.
plot_misc.machine_learningimportedSelffromtyping, which only exists on Python 3.11+, breaking imports on the declared-supported Python 3.10. It now falls back totyping_extensions.Selfon 3.10, andtyping_extensionsis declared as a runtime dependency inrequirements.txt(markerpython_version < "3.11") and in the conda recipe / env files (unconditional, as conda noarch packages have no install-time python selector).
plot_misc.heatmap.masked_heatmap, a two-layer heatmap that draws a single-colour background and overlays the heatmap only on the cells flagged by a binaryindicatortable the same shape asdata.examples.qc_matrix, a dummy quality-control data set (signed standardised deviations plus a binary pass/fail indicator) showcasingmasked_heatmap.- Masked-heatmap cells added to the
resources/examples/heatmap.ipynbandresources/examples/tldr/heatmap.ipynbnotebooks. - Example notebooks for the
plot_misc.utils.utilshelpers: a concise TLDR notebookresources/examples/tldr/utils.ipynband a detailed worked-out notebookresources/examples/utils.ipynb. - Corresponding
.nblinkfiles underdocs/source/examples/plots/anddocs/source/examples/plots/tldr/, linked into thenbgalleryand the "Worked out examples" toctree indocs/source/index.rst. calc_matricessymbolargument to set the significance marker glyph to any text/unicode string (e.g.'●','◆'); previously fixed to'★'.calc_matricesannotate='symbol'option, replacing'star'as the significance-marker selector.calc_matricesp-value annotation options'pvalues_signed','pvalues_unsigned', and'pvalues_raw', controlling whether the annotation shows signed -log10, unsigned -log10, or the raw p-value. The numeric value matrix remains signed -log10 regardless.MatrixHeatmapResultsnow exposes two further numeric p-value tables,curated_matrix_value_unsigned_log(unsigned -log10) andcurated_matrix_value_raw(raw p-values), alongside the signed -log10curated_matrix_value.
calc_matricesannotatenow defaults to'symbol'(was'star'); the default output is unchanged. Theannotateargument is now a typedLiteralof the supported options._format_matricesno longer takes alogargument; p-values are always -log10 transformed and the numericcurated_matrix_valueis consistently signed -log10.calc_matricesalphais now a raw p-value in (0, 1] (default0.05), consistent withvolcano; it is converted internally to a -log10 threshold. Values outside (0, 1] raiseInputValidationError.calc_matricesptrunis now a raw p-value in (0, 1] (default1e-16), consistent withalpha; the old exponent convention was removed. Values outside (0, 1] raiseInputValidationError.
calc_matricesannotate='star'is deprecated in favour of'symbol'.calc_matricesannotate='pvalues'is deprecated in favour of'pvalues_signed'.calc_matriceswithout_logis deprecated and no longer changes behaviour (p-values are always -log10 transformed); usecurated_matrix_value_rawfor raw p-values.
annotate_heatmapno longer raisesMaskErroron masked arrays; masked cells (e.g. frommasked_heatmap) are skipped so only visible cells are annotated.masked_heatmapnow rejects a shape mismatch betweendataandindicatoron the full 2D shape (previously only the row count was checked, so a column mismatch raised an opaqueIndexError), and appliesbackground_zorderto the background grid lattice.segment_labellednow rotates the midpoint label to align with the drawn segment. The second endpoint was transformed with the wrong x-coordinate (y[0]instead ofx[1]), producing an incorrect text angle wheneverx[1] != y[0].masked_heatmapper-cell outlines are no longer clipped by the axes boundary on edge cells (outline patches now default toclip_on=False).
- TLDR notebooks split into per-plot files under
resources/examples/tldr/(barcharts,bubblechart,forestplot,heatmap,incidencematrix,machine_learning,pychart,survival,treeplot,volcanoplot), each with minimal self-contained examples. The originaltldr.ipynbhas been removed. - Corresponding
.nblinkfiles added underdocs/source/examples/plots/tldr/and linked indocs/source/index.rst. - New
load_forest_preprocesseddataset loader inplot_misc/example_data/examples.py, returning a plot-ready DataFrame with colour and shape columns attached. - Barchart
group_positionsparameter to control bar positions within groups. - Examples for saving metadata with PDFs and applying compression with TIFFs added to the publication-ready notebook.
resources/build/inc_version.shimproved: simplified git branch detection and now also updatesCHANGELOG.mdautomatically on version bump.- CI/CD: unified pip dependencies across pipeline stages and removed stale code and comments.
- Heatmap: threshold now applied to raw values instead of normalised values.
- Barchart: grouped bar charts were using the same position for every bar within a group.
- Function and class naming inconsistencies corrected; boolean handling brought in line with coding standards.
- Redundant
conftest.pyremoved from the test suite.
- Fixed a
pytest.raiseserror forplot_table. - Added missing
test_survivaltest. - Renamed
commit-spell.shtopre-committo comply with git hook name conventions.
- Git hook enforcing commit message standards.
- Added the
.githooksdirectory and script. codespellrcand ignore word list.- Makefile: generalised GitLab install and path to the git hooks
setup script; git hook install now handled via
make install. - Started a publication-ready tips notebook, expanding tutorials on tick labels and locations.
- Incidencematrix parameter arguments updated.
- Volcano module refactored: updated colour arguments, added
vline_kwargs_dict, and updated the example notebook. - Heatmap refactored: removed redundant tests and cleaned the example file.
- Example notebooks updated, correcting spelling mistakes and removing redundant help calls.
- Numerous spelling and grammar fixes across documentation.
Nothing
- Clustermap removed from the heatmap module, as it no longer fits the package aim.
- Seaborn dependency removed.
- forestplot notebook.
- Added
midpointsparameter toannotate_axis_midpointsfunction which overwrites thegapargument. - Added
survivalmodule and notebook supporting survival plots with bottom survival table. - Additional colour schemes to the utils.colour module.
text_wrapfunction in utils.formatting to automatically break a string into multiple lines with optional line break character.- introduced x and y coordinate parameters in incidencematrix allowing the user to match coordinates when creating multiple plots in for example a gridspec.
- Documentation improvements.
Nothing
Nothing
- Added missing versioning in the pyproject.toml for the required and optional packages.
Nothing
- Improved the example notebooks and documentation.
- Brought the docker requirements image in line with the current software versions.
- stack_bar now uses bar internally instead of matplotlib.Axes.bar.
- split the requirements.txt into requirements.txt and requirements-dev.txt, updating the CI/CD scripts to pip install both.
Nothing
Nothing
Nothing
Nothing
- Updated the sci_notation parameters to include both
maxandminwindsoring. MatrixHeatmapResultsnow inherits from the generalResultsclass.- Improved the documentation - added a design_philosophy.rst to explain how the design philosophy of the module and explain how code contributions can best adhere to this.
- Introduced the
Realtype hint for theutilscode.
Nothing
Nothing
- Upgraded adjustText to 1.3 or higher to deal with an error where the
limkeyword was incorrectly passed to FancyArrowPatch.
Nothing.
- Slightly changed the pyproject.toml and meta.yaml file to handle the license correctly (changed to US spelling instead of licence).
Nothing.
Nothing.
- Minor bug fixes.
- Expanded code based to publish package on conda.
annotate_axis_midpointswas added toutils.utils. The function adds a string placed exactly in the mid of two points. Useful to create headers in plots with lots of groups.- Added
Realtype hint to replaceint | float. - Included further pytests for modules with low coverage (below 80%).
- Included a
raising issuestutorial.
- The entire documentation has been refactored to be numpy compliant.
- All notebooks have been updated showcasing the new functionality.
- The following modules were refactored, where needed replacing function by classes:
barchart,forest,incidencematrix,pychart. assign_distancecan now deal with groups of different sizes.- moved much of the function and classes outside the constants module into the
errors.pymodule instead. - The plot-table now standardise the x-axis to the
[0, 1]range to improve alignments.
Nothing.
assign_distanceis replaced byset_y_coordinates.
- Bug fixes to pychart.
- Bug fixes to utils.utils.calc_matrix.
- Where relevant add repr
- Added some additional colours.
- Added a grouped bar chart.
- Migrated to pyproject.toml instead of setup.py
- Where relevant ensure all functions return ax.figure if an ax is supplied. This replaces returning a None value.
- Document clarifications.
assign_distancecan now deal with groups of different sizes.
Nothing
Nothing
Nothing
- A DecisionCurve class in the machine_learning.
- Updated examples.
- Changed the default behaviour of assign_distance to not sort rows.
Nothing
- Removes KD test function.
- Removes table module.
Nothing
- Piechart module
pychart. - A point estimate formatting function in
utils.formatting. - A empirical support class to plot trees.
- Pytest for the new functions.
- Adding sphinx documentation
- Gitlab CI/CD
- Updated the python requirements, currently build for python 3.12.
Nothing
Nothing
- Fixed documentation
- Various fixes to
forest.py
- Expanded the number of input tests.
- Added a
_dict_string_argumentfunction to test the content of pd.DataFrame columns or pd.Series. - Started a
test_constants.pymodule. - Verbose argument to some functions.
- volcano.py now calls
axinstead ofpltto set limits and labels.
Nothing
Nothing
- Updated installation instructions and removed redundancies.
- Fixed documentation
- seaborn clustermap wrapper.
- Added additional arguments for plot_forest.
- Added
plot_tablefunction toforest, including example and tests.
Nothing
Nothing
Nothing
- Various minor changes in the arguments, improving logic and fixing some bugs
- kwargs in nested functions can now be overwritten by simply using the kwargs_dicts using
_update_kwargsto ensure thekwargs_dictstake precedence .
- Added unit tests for all plotting modules
- Added example data
- Added additional examples under resources
- Various naming objects in constants.py
- Updated examples reflecting minor changes in the code base
- Moved colour.py to utils.
- Dependencies: matplotlib 3.5.*
- Added a futurewarning warning that plot_misc.table.layout will be moved to the module
data_clean(outside of plot_misc).
Nothing
Nothing
- Started a changelog.
Nothing
Nothing
Nothing