From 0899b2da57a12740514f80afb1b470e4a0213aa4 Mon Sep 17 00:00:00 2001 From: Glenn Hickey Date: Thu, 6 Aug 2026 13:21:41 -0400 Subject: [PATCH] prep release 3.3.0 --- BIN-INSTALL.md | 10 +++++----- ReleaseNotes.md | 24 ++++++++++++++++++++++++ doc/progressive.md | 6 +++--- setup.py | 2 +- src/cactus/shared/common.py | 2 +- 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/BIN-INSTALL.md b/BIN-INSTALL.md index 08b3a5648..38a2bf439 100644 --- a/BIN-INSTALL.md +++ b/BIN-INSTALL.md @@ -6,17 +6,17 @@ pre-compile binary, static linked distribution. ## Extracting If you have not already extract the distribution and cd into the cactus directory: ``` -tar -xzf cactus-bin-v3.2.1.tar.gz -cd cactus-bin-v3.2.1 +tar -xzf cactus-bin-v3.3.0.tar.gz +cd cactus-bin-v3.3.0 ``` ## Setup To build a python virtualenv and activate, do the following steps. This requires Python version >= 3.9 (so Ubuntu 18.04 users should use `-p python3.9` below): ``` -virtualenv -p python3 venv-cactus-v3.2.1 -printf "export PATH=$(pwd)/bin:\$PATH\nexport PYTHONPATH=$(pwd)/lib:\$PYTHONPATH\nexport LD_LIBRARY_PATH=$(pwd)/lib:\$LD_LIBRARY_PATH\n" >> venv-cactus-v3.2.1/bin/activate -source venv-cactus-v3.2.1/bin/activate +virtualenv -p python3 venv-cactus-v3.3.0 +printf "export PATH=$(pwd)/bin:\$PATH\nexport PYTHONPATH=$(pwd)/lib:\$PYTHONPATH\nexport LD_LIBRARY_PATH=$(pwd)/lib:\$LD_LIBRARY_PATH\n" >> venv-cactus-v3.3.0/bin/activate +source venv-cactus-v3.3.0/bin/activate python3 -m pip install -U setuptools pip wheel python3 -m pip install -U . python3 -m pip install -U -r ./toil-requirement.txt diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 9667198c8..599ca43d3 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,3 +1,27 @@ +# Release 3.3.0 2026-08-10 + +This release a few general patches and new pangenome functionality such as graph reference (gref), panacus and panpatch support. + +- Fix `--mgSplit` bug that could cause entire contigs to get erroneously filtered when single `--reference` provided. +- Genome passed to `--includeRoot` treated as outgroup and not ingroup +- `cactus-hal2seqfile` tool added to help with custom alignment updates +- `cactus-phast` faster on fragmented genomes +- Update to newer `FastGA` +- `cactus-panpatch` tool added to do assembly patching with pangenome alignments of different assemblies of the same sample. +- Increasing `--vcfwaveCores` now actually speeds up `vcfwave` (nearly linearly). +- Update Toil to `v9.5.0` +- `cactus-pangenome` now produces cleaner, more useful stats. Including reports and bed files of everything that was clipped and where. +- `maxMemory` automatically inferred on Slurm +- `cactus-hal2maf` `single-ref` output type added to get single-copy reference for each block but multicopy everything else. +- `--panacus` option added to `cactus-pangenome` to automatically generate a panacus report. +- `--gref` option cleaned up and improved in terms of the computed cover and the output VCFs (still experimental). +- `--vcfL` option added to cluster similar VCF alleles (experimental). +- Update to new vg (a bit past v1.76.1) +- Fix `--mgSplit` bug where reference contigs in chrOther could align together sometimes. +- `hal2vg` now takes about 30% less memory +- `--vcfReference` can select any genome, not just reference. +- Long pause at the end of minigraph construct fixed, it was due to Python being very slow at zipping the file. + # Release 3.2.1 2026-05-20 This release patches a critical regression from 3.2.0 that broke gpu support in docker diff --git a/doc/progressive.md b/doc/progressive.md index 0151a7604..f32106fe3 100644 --- a/doc/progressive.md +++ b/doc/progressive.md @@ -383,12 +383,12 @@ The Cactus Docker image contains everything you need to run Cactus (python envir ``` wget -q https://raw.githubusercontent.com/ComparativeGenomicsToolkit/cactus/master/examples/evolverMammals.txt -O evolverMammals.txt -docker run --user $(id -u):$(id -g) -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.2.1 cactus /data/jobStore /data/evolverMammals.txt /data/evolverMammals.hal +docker run --user $(id -u):$(id -g) -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.3.0 cactus /data/jobStore /data/evolverMammals.txt /data/evolverMammals.hal ``` Or you can proceed interactively by running ``` -docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.2.1 bash +docker run -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.3.0 bash cactus /data/jobStore /data/evolverMammals.txt /data/evolverMammals.hal ``` @@ -605,7 +605,7 @@ cp /src/cactus_progressive_config.xml ./config.xml If you are running cactus directly from `docker run`, then do (making sure to use the same docker image that you will use to run cactus): ``` -docker run --user $(id -u):$(id -g) -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.2.1 cp /home/cactus/cactus_env/lib/python3.10/site-packages/cactus/cactus_progressive_config.xml /data/config.xml +docker run --user $(id -u):$(id -g) -v $(pwd):/data --rm -it quay.io/comparative-genomics-toolkit/cactus:v3.3.0 cp /home/cactus/cactus_env/lib/python3.10/site-packages/cactus/cactus_progressive_config.xml /data/config.xml ``` You can then edit `config.xml` and use it to override cactus's defaults by adding `--configFile config.xml` to any cactus command. If you are using `docker run -v $(pwd):/data` then you would add `--configFile /data/config.xml` to your command instead. diff --git a/setup.py b/setup.py index 1b310b713..e4c7d9049 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ setup( name = "Cactus", - version = "3.2.1", + version = "3.3.0", author = "Benedict Paten", package_dir = {'': 'src'}, packages = find_packages(where='src'), diff --git a/src/cactus/shared/common.py b/src/cactus/shared/common.py index 56cb477a0..c0e8897c2 100644 --- a/src/cactus/shared/common.py +++ b/src/cactus/shared/common.py @@ -404,7 +404,7 @@ def getDockerTag(gpu=False): return "latest" else: # must be manually kept current with each release - return 'v3.2.1' + ('-gpu' if gpu else '') + return 'v3.3.0' + ('-gpu' if gpu else '') def getDockerImage(gpu=False): """Get fully specified Docker image name."""