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.
- Bump third-party dependency versions in GitHub actions.
- Update badges in README.
- Add star tracker in README.
- Remove deps from environment yaml that are installed as pip dependencies of flexidot.
- Bump LICENSE to GPL-3
- Support for pre-computed alignments in blast6 or PAF format.
- Tests for new features.
- Tutorial for generating alignments with blastn, nucmer, and minimap2.
- Error when GFF supplied without colour config file.
- Bump third-party dependency versions in GitHub actions.
- Minor formatting fixes.
- Add CFF maintenance actions.
This release is a major refactor of the Flexidot codebase that migrates to Python 3 and a modern package structure.
- Flexidot and its dependencies are now pip installable - uses Hatch and pyproject.toml
- Versioning is now managed dynamically using git tags
- Some basic tests for the core
find_match_pos_diag()function have been added - Command line options are now managed with argparse
- Repo includes env yaml to set up conda env for flexidot
- Check that input files exist
- Auto cleanup temp files
- Add action to run pytests
- Add action to format code with Ruff
- Uses logging module to manage status logging (removed time logging)
- When comparing a sequence to an identical sequence
find_match_pos_diag()will recycle kmer counts from the first seq. Saves 33% runtime. - Several command line options have been renamed or have changes to their expected input formatting. See --help.
- If not using the
--wobble_conversionoption then kmers containing any Ns will be skipped by default. - If
--wobble_conversionis set then--max_ndetermines the max percentage of Ns that will be tolerated in a kmer. Default changed to 10% from hard coded 49%.
- Fix deprecation issue with numpy creating an ndarray from ragged nested sequences in
find_match_pos_diag(). Closes issue #15 - Read files with r instead of rb
- Fix unicode issue referenced in #10
- Corrected a few bugs, including a bug introduced in version 1.05, affecting dotplots with substitutions allowed
- Reverted (for now) to the pattern matching algorithm of version 1.04
- Modified word match recognition, speeding up FlexiDot's runtime
- The default wordsize has been changed from 7 to 10 in order to prevent people from running FlexiDot with small word sizes on large datasets, as this presumably takes a very long time
- New
-O, --only_vs_first_seqoption to limit the output of pairwise dotplots. Instead of printing all possible pairwise combinations from a multi-fasta-sequence, only the pairwise comparisons against the first sequence are generated, if switched on (-O y). We use this feature to compare a new/unknown sequence against a batch of references.
- Fixed a few bugs with the dotplot shading legends
- New graphic formatting options for all-against-all dotplots
- With
-M/--mirrorit is now possible to mirror the middle diagonal
Basic commands:
python flexidot.py -i test-seqs.fas -p 2 -M n
python flexidot.py -i test-seqs.fas -p 2 -M y
Command plus aesthetics as shown here (as described in version update 1.03):
python flexidot.py -i test-seqs.fas -p 2 -M n -g example2.gff3 -G gff_color.config -x y -k 10 -F 0.06 -A 1.5
python flexidot.py -i test-seqs.fas -p 2 -M y -g example2.gff3 -G gff_color.config -x y -k 10 -F 0.06 -A 1.5
- The
-R/--representationparameter allows partial dotplotting, either printing the complete-R 0, the top-R 1, or the bottom dotplot-R 2
Basic commands:
python flexidot.py -i test-seqs.fas -p 2 -R 0
python flexidot.py -i test-seqs.fas -p 2 -R 1
python flexidot.py -i test-seqs.fas -p 2 -R 2
Command plus aesthetics as shown here (as described in version update 1.03):
python flexidot.py -i test-seqs.fas -p 2 -R 0 -g example2.gff3 -G gff_color.config -x y -k 10 -F 0.06 -A 1.5
python flexidot.py -i test-seqs.fas -p 2 -R 1 -g example2.gff3 -G gff_color.config -x y -k 10 -F 0.06 -A 1.5
python flexidot.py -i test-seqs.fas -p 2 -R 2 -g example2.gff3 -G gff_color.config -x y -k 10 -F 0.06 -A 1.5
- Fixed a distortion issue in
-p/--plotting_mode 0(self dotplots)
- Annotation-based shading now available for all-against-all dotplots. Previously only available for self dotplots, we added annotation-based shading to all-against-all dotplots, allowing for many new visualizations. As before, annotation information is provided as general feature file (GFF3). These features are added to the middle diagonal (see our example below).
Basic command:
python flexidot.py -i test-seqs.fas -g example2.gff3 -G gff_color.config -p 2
Command plus aesthetics as shown here (+ LCS shading, wordsize 10, change of subplot spacing and line width):
python flexidot.py -i test-seqs.fas -g example2.gff3 -G gff_color.config -p 2 -x y -k 10 -F 0.06 -A 1.5
The test files used here are provided:
- Changed handling of
-Tparameter: The character count of the sequence titles has been limited to20by default. This limit can be changed with-T. If anE(end) is added to the limit, the last characters are chosen instead of the first.
-T 20 (the first 20 characters)
-T 20E (the last 20 characters)
- Minor bugfixing
- First FlexiDot release


