Change log
The changes in each release of CheckM are listed below, most recent first. This list is included directly
from the checkm/VERSION file of the CheckM source code, which also defines the version number (first
line). The releases are also available on GitHub and
PyPI.
1.3.0
- pplacer has been replaced by gPlace (https://github.com/cmc-aau/gPlace; PyPI: gtdb-gplace), which gives the same placements as pplacer, bit for bit, using less memory and time; gPlace >= 0.1.0 must be on the system path (it requires Python >= 3.12 and can be installed in a separate environment), and pplacer and guppy are no longer required
- the --pplacer_threads option of the tree and lineage_wf commands has been removed; gPlace uses the number of threads given by -t, without the previous limit of 64 threads
- the names of gPlace's output files are those of pplacer, apart from compression (e.g., storage/tree/concatenated.pplacer.json.gz; see below)
- the --reduced_tree option of the tree and lineage_wf commands has been removed: bins are always placed in the full reference genome tree, which gPlace does with less memory than pplacer needed with the reduced tree (about 12 GB, mostly for the reference tree; pplacer needed about 35 GB with the full tree); use --gplace_max_memory to place bins with less memory (e.g., 6G for 128 bins)
- 'checkm test' runs gPlace with --gplace_max_memory 6G, so it needs about 5 GB of memory
- new --gplace_max_memory option for the tree and lineage_wf commands sets the memory gPlace may use (e.g., 64G); if the placement needs more, gPlace places bins tile by tile within this limit, which gives identical results
- when gPlace fails, its error message (e.g., that --gplace_max_memory is too small) is included in CheckM's error message
- progress is reported with tqdm progress bars (e.g., ' Processing bins: 100%|##########| 128/128 [01:15<00:00, 1.70bin/s]'), which adds tqdm as a dependency; progress is no longer reported when console output is suppressed with --quiet
- most output files are gzip-compressed (compression level 1, using xopen and ISA-L), which reduces the size of the output directory ~3.5x (e.g., from 596 MB to 169 MB for 128 genomes) and has little effect on run time: bins/<genome_id>/* (e.g., genes.faa.gz, genes.gff.gz, hmmer.tree.txt.gz, hmmer.analyze.txt.gz), lineage.ms (now lineage.ms.gz) and the marker files of lineage_set and taxon_set ('.gz' is appended to the given name if not present), storage/*.tsv (e.g., storage/bin_stats_ext.tsv.gz), all files in storage/tree except the *.log and *.out files (e.g., storage/tree/concatenated.tre.gz), and the storage/aai_qa directory, which is replaced by the archive storage/aai_qa.tar.gz; results are unchanged
- all commands still read the uncompressed output of earlier versions of CheckM and accept the uncompressed file names (e.g., 'checkm qa ./output/lineage.ms ./output' reads lineage.ms.gz; if both lineage.ms and lineage.ms.gz exist, the most recently modified file is used), but scripts that read these files directly by their previous names must be updated
- adds xopen (>= 2.0) as a dependency and requires Python >= 3.11
- lineage_wf and taxonomy_wf write their results to <output_dir>/quality_report.tsv, the tab-separated table produced by 'qa -o 2 --tab_table', and no longer print a results table to the console; their -f/--file and --tab_table options have been removed (run 'checkm qa' on the output directory for other output formats)
- new --rm_tmp_files option for lineage_wf and taxonomy_wf removes the bins and storage directories once the quality report has been written (other commands, such as qa and the plots, need these directories)
1.2.10
- Prodigal's error output is now captured and included in the error message when Prodigal fails (e.g., 'exit code 18: Error: no input sequences to analyze.'); results are unchanged
1.2.9
- performance improvements; results are unchanged
- marker genes are identified more efficiently: the marker file is parsed once rather than once per bin, the HMM file for each unique marker set is created once and is no longer indexed, larger bins are processed first, and HMMER runs in serial mode when bins are searched in parallel
- marker sets in lineage.ms and the reference data are parsed without eval(), which is ~13x faster
- the Pfam clan file and other reference files are read once rather than once per bin, and lineage_set no longer searches the reference tree for each bin
- HMMER results are parsed in parallel (qa now uses -t)
- --pplacer_threads now defaults to the number of threads (-t), to a maximum of 64; pplacer's memory usage increases only slightly with additional threads
- README badges are cached for a shorter time
1.2.8
- fix to the Pfam same-clan filter, which treated Pfams without a clan as members of the same clan; this can slightly change completeness and contamination estimates
- fix to reading FASTA files without a trailing newline, which dropped the last base
- fix to end coordinates of merged adjacent marker gene hits
- hits to the same marker on a run of consecutive genes (e.g., a gene split into several fragments) are now combined into a single hit, rather than being paired in an order that depended on hits to other markers; this can slightly change contamination and strain heterogeneity estimates
- failures of external programs (Prodigal, HMMER, pplacer) and of worker processes now cause CheckM to exit with an error instead of exiting with status 0 or silently dropping bins
- bins without any genes are now skipped with a warning, and FASTA records without sequence data are ignored
- output is now deterministic (order of HMM models, bins and markers in output files)
- fix to infinite loop when using --reduced_tree for bins placed at one node of the reduced tree
- fix to qa -o 4 --individual_markers corrupting stored results, qa -o 9 omitting markers, and parsing of custom HMM files with models lacking accessions or thresholds
- fix to --ali_top_hits aligning the worst rather than best hit
- fix to gc_bias_plot (pysam compatibility), nx_plot step sizes, histogram bins and percentages, and len_hist bar alignment
- fix to ssu_finder strand handling, contig matching, sequence coordinates and orientation of reverse-strand hits
- fix to handling of gzipped FASTA files in ssu_finder, unique and modify
- fix to coverage with BAM files lacking NM tags, BAM files with the same name, and BAM files without mapped reads
- fix to checkm --help, invalid --tmpdir values, bin input tables with blank lines, and checkm data setRoot errors
- paths containing spaces are now supported
- removed unused code (including util/img.py and uniqueMarkers.py) and fixed spelling in comments and messages
1.2.7
- fix to crash in BinStatistics.sequenceStats when no called genes are available
1.2.6
- fix to report hmmalign failures instead of ignoring them, which caused a NameError on 'mask' (issue #387)
- fix to 'OSError: AF_UNIX path too long' when using --tmpdir (issue #402)
- fix to coverage command dropping bins that contain sequences with the same ID as sequences in other bins (issue #386)
1.2.5
- fix to regular expression syntax warnings in prettytable.py
- fix to use of setuptools in checkmData.py thanks to meereeum
- fix to pysam import in coverage.py thanks to baptwr
1.2.4
- fixed issue with prodigal not trying the -meta model for failed genomes (fix provided by noelle-haddad)
- added Dockerfile provided by Louis-MG
1.2.3
- changes to support numpy 2.0
- better handling of non-zero return codes from external programs
1.2.2
- support gzipped protein files as input (thanks to alienzj for the PR)
1.2.1
- renamed private classes (thanks to misialq for the PR)
1.2.0
- modified how bin IDs are identified to improve output tables
1.1.11
- fixed error with inverse_transformed being deprecated in newer versions of Matplotlib
1.1.10
- fixed bug with missing bCalledGenes flag that was impacting a number of commands
1.1.9
- fixed support for gzip input FASTA files
1.1.8
- updated setup.py to include long description and fixed PyPi URL
1.1.7
- added Jie Zhu's (alienzj) PR to allow input files to be specified via a file
- added Jeremy Jacobson's (jjacobson95) PR to fix prettytable import issue
- added fix by Jie Li (jili6t) regarding more stringent matching of bin extensions
1.1.6
- allow CheckM data path to be set through a CHECKM_DATA_PATH environmental variable
1.1.5
- fixed small bug with maxibor's PR
1.1.4
- added Maxime Borry's (maxibor) PR to allow path to DATA_CONFIG file to be set
1.1.3
- fixed error resulting from incorrect GFF files produced by Prodigal on FASTA files with Windows style line endings
- replaced usage of normed keyword with density as required for Matplotlib >= 3.2.0
1.1.2
- removed erroneous error message when setting root to CheckM reference data
- fixed infinit loop issue when trying to install CheckM reference data to directory without write permission
1.1.1
- fixes legacy Python 2 syntax issues (thanks to Sebastian Jaenicke!)
1.1.0
- code base ported to Python 3
- massive thanks to baudrly, vinisalazar, and asafpr for initial Python 2 to 3 porting
- bug in ssu_finder fixed that on rare occasions caused a SSU sequence to be reported more than once
- now using i-Evalue to break ties in the rare cases when hits to a target sequence have the exact same full E-value; this makes the code more deterministic
- improvements to information reported in marker_plot
- fixed CLI issue with outliers method
1.0.18
- fix to CLI of bin_qa_plot (thanks to Finesim97 for PR)
1.0.17
- fixed bug with CLI of plotting methods introduced in 1.0.16
1.0.16
- made ~/.checkm the default directory for CheckM reference data
- "checkm data setRoot <directory>" is no longer interactive and the directory must be given on the command line
1.0.15
- fixed CheckM data setRoot command to work from command line (thanks to cbt for PR)
- added logging to files
- improved reporting of CheckM results to include timestamp
- removed "--force-overwrite" option and now allow output directories to already exist
1.0.14
- fixed bug with test command missing "--force-overwrite" option
1.0.13
- failed commands now exit with error code 1
- added "--force-overwrite" option
1.0.12
- removed bVerbose option for all commands
1.0.11
- fix to lineage_wf CLI regarding missing coverage_file argument
1.0.10
- updated version number for pypi
1.0.9
- removed ScreamingBackpack as a dependency and modified CheckM to never removes user files
- added "life" as an acceptable rank for the taxonomy_wf so the universal Prokaryotic marker set can be used
- fixed bug with processing empty gene files
- fixed bug with processing identical user genomes which cause pplacer to create polytomies