v3.1.0
[3.1.0] - 2026-09-10
This version makes the module system do what it was built for. 3.0.0 introduced modules that are published, versioned and installed on their own timetable — and then shipped three of them inside the release, which is the one thing that design was meant to avoid. A module in the payload is a module that moves when the pipeline moves. Now nothing ships: analysis/modules/ is a store that arrives empty and holds what you put in it.
Upgrading leaves you with an empty module store, and that is the whole of the upgrade. Ask the release you are leaving what it has, then install each into the new one. Nothing else moves: your projects, your configuration and every analysis already published are untouched, and the old release keeps its own modules and still runs.
PoolSeqFlow-3.0.0 analysis modules list # what the old release has
PoolSeqFlow analysis modules install mds # and again, into the new onePoolSeqFlow check now takes a word. There are two questions — is this installation sound, and is this project sound — and one command answering both meant answering neither well. A bare check is refused rather than guessing which you meant, because whichever it picked would leave the other unchecked while reporting success.
Changed
- No module ships inside a release, and no library either.
analysis/modules/is the install store: gitignored, absent from the tarball, and empty until you install something.PoolSeqFlow analysis modules install <name>puts one there. This is what lets a module be fixed, improved or published without waiting for a pipeline release — and the cost is that a new installation starts with nothing in it and you choose what goes back. - A module arrives with the libraries it declares. The shared arithmetic more than one module wants — effective pool size, gene diversity, per-site allele frequencies, Nei's distance, the chunking — is now five libraries, each published and versioned like a module and installed into
analysis/modules/lib/. You never ask for one by name: it arrives with whatever needs it, and leaves when nothing installed still declares it. A published result still carries the library code folded into the script that produced it, so a result explains itself whatever the store holds later. checkis two commands.check installverifies the installation — every tool the release is built to run, and every helper inbin/.check projectverifies a project — thatparameters.configis current and parses, thatmetadata.csvand the run table parse, and that every command resolves as that project configures them, so a tool repointed at a system binary is checked the way the run will call it. Runcheck installfrom anywhere, including before you have a project; runcheck projectfrom your project directory.check installasks the release's own environment rather than yourPATH. Every tool it looks for is pinned ininstall/environment.yml, so one that resolves from anywhere else means the environment is missing a package and your system's copy is standing in — at some other version, on your machine only. That is now reported asOUTSIDE THE ENVIRONMENTand fails the check. It is worth catching because it is quiet: the pipeline runs, the results look fine, and nothing reproduces anywhere else.- The installation directories say what they are for.
bin/holds everything that is run rather than sourced, the check scripts included;lib/holds what is sourced;install/holds the two pinned environment files and nothing else; andcitations/is new, holding the pipeline's ownreferences.biband thecitations.jsongenerated from it. Nothing you set moves, and no project is affected.
Added
PoolSeqFlow check project— the configuration and the commands a project names, checked without spending a run. It readsparameters.configthrough Nextflow itself and the two tables through the same parsers step 0 uses, so what it tells you is what a run would tell you.
Fixed
- Uninstalling a module could take a package another module still needs. The keep-list is built by reading one manifest per installed module, and the reader did not terminate its last line — so with several modules in the store the last package of one and the first of the next arrived joined, and a name at that boundary dropped out of the list of things to keep. The same defect applied to libraries. The shipped modules declared no packages, so this could only be reached by a module published against 3.0.0 that declared its own.
- Uninstalling a module could take a package the release itself is built on. A module declares what it needs whether or not the baseline already carries it, so
r-ggplot2appears in a manifest and ininstall/environment-analysis.ymlboth. The removal now subtracts the baseline, and nothing the release provides can leave with a module.
Commits
- (91e027f) Publish the three shipped modules
- (45770fd) Release notes now reads from changelog
- (7428880) install no longer checks for paramters.config, which is not in the install folder anymore
- (6d38c88) Full rework of modules
- (598d955) wrapper check is aligned with the current file structure
- (4f8a313) citations move to their own folder
- (dbc522d) modules rework continued
- (c9b26e2) check project fix
- (bdd3c93) Major bug fixes related to the migration of files to different folders
- (ae1af19) Release notes updated
Download and install
curl -LO https://github.com/ozankiratli/PoolSeqFlow/releases/download/v3.1.0/PoolSeqFlow-3.1.0.tar.gz
tar -xzf PoolSeqFlow-3.1.0.tar.gz
cd PoolSeqFlow-3.1.0
cp parameters.config.template parameters.config
./PoolSeqFlow installThen edit parameters.config and metadata.csv for your data and run
./PoolSeqFlow run.
Verify the download with sha256sum -c SHA256SUMS.
PoolSeqFlow.tar.gz is the same archive under a stable name, for
scripted installs:
https://github.com/ozankiratli/PoolSeqFlow/releases/latest/download/PoolSeqFlow.tar.gz
Upgrading an existing project? Your parameters.config is not
touched by a new version and can be missing parameters this release
expects. Run ./PoolSeqFlow migrate_config and read what it reports —
see Upgrading.
Full documentation: https://ozankiratli.github.io/PoolSeqFlow/
The full changelog, including every commit, is in CHANGELOG.md in the download and in the repository.