All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Various code improvements based on initial run of MuseDev static analysis. Changes included eliminating error prone code, etc, but no actual bugs were uncovered.
- Upgraded coverage reporting to JaCoCo 0.8.7.
- Enabled MuseDev code scanning on all pull requests.
- Added the
Permutation.Mechanic.set(Permutation, int[], int, int, int)
method.
- Refactored the SequenceDistanceMeasurer and SequenceDistanceMeasurerDouble interfaces into a hierarchy, eliminated an abstract base class made obsolete by that change, and changed all sequence distances in the library to use the new hierarchy. This is a non-breaking change, as the only thing removed was a package-private abstract class, and the change to the SequenceDistanceMeasurer interface was done in such a way that all inherited methods have default implementations.
- Refactored the PermutationDistanceMeasurer, PermutationDistanceMeasurerDouble, NormalizedPermutationDistanceMeasurer, and NormalizedPermutationDistanceMeasurerDouble interfaces, and all of the classes that implement them, to move default implementations from an abstract base class into the appropriate subinterfaces in hierarchy. This is a non-breaking change, as the only thing removed was a package-private abstract class, and the changes to interfaces were done in such a way that all inherited methods have default implementations.
- New methods added to the Permutation class.
- The cycle method creates a permutation cycle.
- Multiple variations of a scramble(int[] indexes) method that randomizes the elements indicated by the array of indexes. The variations of this method correspond to the different random number generators supported by the library.
- Minor code improvements in Permutation class (e.g., refactoring to reduce duplicated code, and some minor code optimizations).
- Started using CodeQL code scanning on all push/pull-request events.
- Minor optimizations to ReversalDistance and ReinsertionDistance.
- Refactored the RandomVariates.nextCauchy methods to remove redundancy.
- Refactored org.cicirello.math.rand.BTPE to remove redundancy.
- Refactored various methods of RandomIndexer to remove redundancy.
- Minor optimizations to RandomIndexer.sample methods.
- Fixed large magnitude negative input case in MathFunctions.logGamma.
- Fixed but in JacobiDiagonalization in case when default epsilon is not used.
- Added test cases to improve test coverage to 100%.
- Test cases added to improve test coverage.
- Modified API documentation website (https://jpt.cicirello.org/) to improve browsing on mobile devices.
- Minor optimizations in Permutation class.
- Moved the example programs to a new repository. They were previously found in directories examples and replication, both of which have been removed. All of the examples are now located in the repository: https://github.com/cicirello/jpt-examples.
- Removed jars of the library from the repo. These have been available from Maven Central, GitHub Packages, and GitHub Releases, for quite some time. No need to store in repo, and it is inefficient to do so.
- Removed the zip files generated by javadoc of the indexes for the api website. These are not needed for search functionality, as javadoc also stores and uses the js files contained in these zips. Later versions of javadoc no longer generate these. Also gitignored these to prevent future storage.
- Bug in Permutation.toString which was inserting an extra space at end.
- Added validation checking for all permutation distance measures validating same length permutations (except for EditDistance which can handle that case).
- Bug in ReversalDistance.max in case when permutation length is 2, and also added missing parameter validation.
- Minor bug fix in KendallTauSequenceDistance in the case of distance between arrays of floats.
- Migrated build process from Ant to Maven, including GitHub workflows.
- Migrated workflow for generating library website from Ant to Maven.
- Added test coverage via JaCoCo.
- Modernized API documentation website (https://jpt.cicirello.org/) to html5 with search and no frames.
- Revised workflow for publishing packages to publish to both Maven Central and Github Packages using one pom.xml.
- Documentation updates
- Working on getting workflow for publishing to maven central working properly. No functional difference from previous release.
- Working on getting workflow for publishing to maven central working properly. No functional difference from previous release.
- Automated generation of sitemap.xml via GitHub actions for the documentation website.
- .zenodo.json file for providing metadata to Zenodo for archival purposes.
- This ChangeLog was introduced, compiled from release notes of prior releases. The ChangeLog is likely inaccurate prior to this date, but should include the major changes. Beginning with this release, the ChangeLog will be updated at the time of pull requests.
- Enabled DependaBot to keep dependencies up to date.
- First release published in Maven Central
- Updated dependency versions
- Removed unnecessary maven settings.xml.
- All GitHub releases beginning with this version now include prebuilt jar files of the library, sources, and javadocs.
- This release contains no changes or additions to library functionality. It is functionally equivalent to v2.0.3.
- Fixed bug in workflow for publishing to GitHub Package Registry. Doesn't affect library itself. Just rereleasing to test workflow. v2.0.3 is functionally identical to v2.0.1 and v2.0.2.
- Fixed bug in workflow for publishing to GitHub Package Registry. Doesn't affect library itself. Just rereleasing to test workflow. v2.0.2 is functionally identical to v2.0.1.
- First version published to the GitHub Package Registry
- Changed jar naming scheme
- Renamed distribution directory from lib to dist
- RandomVariates class with methods to generate random values from various distributions including the Cauchy distribution and binomial distribution.
- Copyable interface also new.
- Also now includes the permutation distance called Block Interchange Distance.
- SequenceSampler class for randomly sampling arrays and other sequences.
- New functionality added to the RandomIndexer class.
- A variety of refactorings to improve code readability and maintenance, as well as a variety of code optimizations.
- RandomIndexer class which can be used to efficiently generate random indexes and combination of indexes into arrays and permutations.
- Library has been optimized for more efficient random number generation (e.g., generating random permutations more efficiently).
- New functionality in the Permutation class to make it easier in the future to add new operations on Permutations.
- Added functionality to the Permutation class, and added normalization for permutation distance measures.
- KendallTauSequenceDistance in the package org.cicirello.sequences.distance
- New functionality in the permutation distance classes
- Replication program for reproducing the data from the paper: Vincent A. Cicirello. Classification of Permutation Distance Metrics for Fitness Landscape Analysis. In Proceedings of the 11th International Conference on Bio-inspired Information and Communications Technologies. ICST, March 2019.
- Release includes all updates, revisions, etc produced during review of paper for Journal of Open Source Software, titled "JavaPermutationTools: A Java library of permutation distance metrics."
- Release includes all updates, revisions, etc produced during review of paper for Journal of Open Source Software, titled "JavaPermutationTools: A Java library of permutation distance metrics."
- Release includes all updates, revisions, etc produced during review of paper for Journal of Open Source Software, titled "JavaPermutationTools: A Java library of permutation distance metrics."
- Distance metrics on sequences (i.e., Strings, arrays of primitives, arrays of objects)
- More efficient implementations of ReinsertionDistance and KendallTauDistance. Specifically O(n lg n) implementations where the prior implementations were O(n^2).
This is the initial release.