Release Notes#
0.3.0 (February 17, 2025)#
What’s New#
CLI#
Added
--workersoption to the CLI for running multiple morphs in parallel.Renamed
--ramp-inand--ramp-outas--ease-inand--ease-out.Added
--easeoption to the CLI, which is shorthand for--ease-in --ease-out.
Documentation#
Added Tutorials page to the documentation.
Added Shape Creation tutorial.
Added section to the documentation with ideas of how to use Data Morph in the classroom.
Updated contribution instructions in Custom Datasets tutorial.
Included reference to article on the creation of Data Morph in the documentation header.
Included reference to Data Morph: A Cautionary Tale of Summary Statistics (conference talk) in the documentation header.
Added contributing guidelines and code of conduct.
Configured canonical URL.
Morphing#
Reworked GIF creation logic to write only one PNG for distinct frames in the animation and use frequency counts to determine frame duration for speed improvements and less I/O.
Added three new datasets: soccer, pi, and gorilla. See the
DataLoaderfor visuals.Added four new shapes:
Club,FigureEight,Spade, andSpiral.Refactored some shape logic to use more
numpyfor speed improvements.Added
centerproperty toIntervalandBoundingBoxto simplify shape calculations.Made it possible to unpack the bounds from the
BoundingBox.Switched from
tqdmto progress bars powered byrich.Renamed the
ramp_inandramp_outarguments toDataMorpher.morph()asease_inandease_out.Added
Shape.get_name()method andShape.nameattribute to replace__str__()shape naming logic, which removed some redundancies inShapeFactory.Refactored the shape code into separate modules per shape.
Renamed
get_values()asget_summary_statistics().Improved variable names in several spots for more readable code.
Plotting#
Added
show_boundsparameter toDataset.plot()to visualize the automatically-calculated bounds.Added
titleparameter toDataset.plot()with default showing the name and number of points.Switched from using Matplotlib’s
tight_layout()to constrained layout.Added
style_context()context manager for plotting in a Data Morph style.Added test suite for
plotting.stylemodule.Changed plot layouts for
DataLoader.plot()andShapeFactory.plot_available_shapes().Adjusted grid of datasets in the documentation to use tighter plot bounds.
Tooling#
Added new GitHub Actions workflow to run Data Morph on new/altered datasets, shapes, or core logic.
Switched to trusted publishing on PyPI via GitHub Actions.
Added PR and issue templates.
Added
pytest-xdistto dev dependencies and reworked the test suite to make it faster.Switched from
blacktoruffformatting in pre-commit setup and included additional rulesets.Added
pyproject-fmtpre-commit hook.Refactored shape tests.
Bug Fixes#
Addressed compatibility issues with
numpy>=2.0.0.Assorted performance and code quality improvements after running additional
ruffrules.Fixed some incorrect return types.
Dependency Updates#
Replaced
tqdmdependency withrich.Replaced
pytweeningdependency with functions inplotting.animation.Replaced
sphinxarg.extSphinx extension withsphinx_argparse_cli.Changed the minimum Sphinx version to 7.2.6.
Changed the minimum
pydata-sphinx-themeversion to 0.15.3.Updated pre-commit hooks to the latest versions.
Factored out
scipydependency.Updated GitHub Actions workflows for Node 16 deprecation.
Enabled Dependabot on GitHub Actions and switched to use commit hashes for versioning.
Updated Python testing matrix to include Python 3.9 through 3.13.
0.2.0 (September 24, 2023)#
What’s New#
Created 5 new target shapes:
Diamond,Heart,LeftParabola,RightParabola,Rings.Created 3 new datasets: bunny, Python logo (TM), SuperDataScience logo. Logos are used with permission.
Made it possible to install via
conda.Configured versioned documentation hosted in GitHub Pages.
Generated a CLI reference page in the documentation.
Provided a custom dataset creation tutorial to the documentation.
Included logo and badges in README.
Included an example using easing for the animation to the documentation.
Included reference to article on the creation of Data Morph in the documentation.
Configured codecov reporting on test coverage with actions to validate the config both periodically and upon change.
Incorporated metavar indicators for some CLI options.
Added a test of the frame freezing functionality in the
DataMorpher.Added a test for the
ShapeFactory.plot_available_shapes()method used in the documentation.Added a test for the
PointCollection.plot()method used in the documentation.
Bug Fixes#
Fixed links to Autodesk assets after change to their website.
Corrected missing type references in the documentation.
Addressed a bug in the
DataMorpherthat caused frame recording to miss first frame (initial dataset).Fixed a bug in the
DataMorpherthat wasn’t properly decreasing the temperature in the simulated annealing process.Reduced point size for datasets displayed in the documentation so points appear with some separation and stay true to their subjects.
Fixed bug in logic for padding statistics in plots that would use incorrect spacing in some cases.
Dependency Updates#
Changed the minimum Sphinx version to 7.2.1.
Changed the minimum
pytweeningversion to 1.0.5.Switched from
isortandflake8toruffin pre-commit setup.Updated pre-commit hooks to the latest versions and to use the new upstream
numpydocvalidation hook.
0.1.0 (April 1, 2023)#
This is the first release of Data Morph, which is a spinoff of jmatejka/same-stats-different-graphs. Data Morph extends the original premise from the Autodesk Research paper to be more general. The core improvements include:
Created a modular package, moving away from functional programming to object-oriented programming.
Introduction of
Shapeclasses both for resuability of the code and to decouple the shapes from the original “datasaurus” dataset and its hardcoded values. Morphing is now possible from any input dataset to the target shapes. See theShapeFactorydocumentation for visuals.Creation of
Datasetto hold the data along with bounds needed for morphing and plotting and the name.Morph and plot bounding logic for automatic calculation of values needed for simulated annealing and plot limits.
Fun new starter datasets: cat, dog, music, panda, and sheep. See the
DataLoaderdocumentation for visuals.Easier application of plotting theme.
Documentation with Sphinx.
Testing suite with pytest.
Replaced center shape with
Scatterand included a newRectangleshape.