wcl3
wcl3 is the successor of WinstonCleaner, a software tool for detecting and removing cross-contaminated contigs from assembled transcriptomes. The program uses BLAST to identify suspicious contigs and RPKM values to sort these as either correct or contamination.
Requirements
To run wcl3, the following requirements must be satisfied:
Installation
-
Make sure that you use Python 3.10 or newer
-
Install the package:
pip install wcl3or, with uv:
uv tool install wcl3 -
Run the tool with
wcl.
For local development:
uv sync
Quick Start
-
Prepare the folder with input data and an empty folder for the results
-
Generate the config.yml file by running
wcl generate_configand specify input, output paths and other options -
Prepare the data for your dataset (Winston will BLAST your sequences and map reads to detect the coverage)
wcl prepare_dataIn your output folder all necessary data will be created.
-
wcl find_contaminations
Usage
Input
The input data should be presented as a set of triads of files for each dataset. For each dataset it is necessary to prepare:
- left reads
.fastq - right reads
.fastq - assembled transcriptome
.fastafile
Names of the files must be in the following format:
NAME_1.fastqNAME_2.fastqNAME.fasta
For example:
brucei_1.fastqbrucei_2.fastqbrucei.fastagiardia_1.fastqgiardia_2.fastqgiardia.fasta
For file names only letters, digits and _ symbols are allowed.
All the files must be placed together in one folder.
Configuration
The dummy settings.yml file can be automatically generated by the command wcl generate_config:
Options:
-h, --help show this help message and exit
--output_folder=OUTPUT_FOLDER
Where to put new settings.yml (current folder by
default)
The list of available settings:
winston.paths.input— input folder with reads and contigswinston.paths.output— output folder with the resultswinston.paths.tools.pileup_sh— (optional) bbtoolspileup.shexecution commandwinston.paths.tools.bowtie2— (optional) bowtie2 execution commandwinston.paths.tools.bowtie2_build— (optional) bowtie2-build execution commandwinston.hits_filtering.len_ratio— minimalqcovhspfor hits filteringwinston.hits_filtering.len_minimum— minimal hit lenth for hits filteringwinston.coverage_ratio.regular— coverage ratio for REGULAR dataset pair type (lower values make contamination prediction more strict, less contaminations will be found)winston.coverage_ratio.close— coverage ratio for CLOSE dataset pair typewinston.threads.multithreading— enable multithreading (disabling is convenient for debugging purposes)winston.threads.count— number of threads if multithreading enabledwinston.tools.blast.threads— number of threads for BLAST processingwinston.tools.bowtie.threads— number of threads for bowtie2 processingwinston.in_memory_db— load coverage database to RAM in the beginning. Makes contamination lookup faster, but requires decent amount of memory.
winston:
in_memory_db: false
paths:
input: /path/to/folder/with/data/
output: /path/to/output/folder
hits_filtering:
len_ratio: 70
len_minimum: 100
coverage_ratio:
REGULAR: 1.1
CLOSE: 0.04
threads:
multithreading: true
count: 8
tools:
blast:
threads: 8
bowtie:
threads: 8
Data preparation
The first step is to prepare the data for wcl3 processing.
wcl prepare_data
The result will be stored in the folder, specified in winston.paths.output option.
After the preparation the file types.csv can be inspected and edited.
It contains all possible combinations of dataset pairs and their types.
The default types are:
CLOSE- taxonomically close organismsREGULAR- simple pair of organisms
In types.csv there can also be specified any amount of custom types.
Their names must be in upper case.
predator,prey,95.0,LEFT_EATS_RIGHT
prey,predator,95.0,RIGHT_EATS_LEFT
In these case coverage ratio for each custom type must be specified in winston.coverage_ratio section of
settings.yml file:
...
coverage_ratio:
REGULAR: 1.1
CLOSE: 0.04
LEFT_EATS_RIGHT: 10
RIGHT_EATS_LEFT: 0.1
...
Contamination cleanup
wcl find_contaminations
Output
The results will be saved in the folder, specified in winston.paths.output option.
For each datasets there will be the following structure of files.
- DATASET_NAME_clean.fasta — clean contigs
- DATASET_NAME_deleted.fasta — contaminated contigs
- DATASET_NAME_suspicious_hits.csv — all suspicious BLAST hits
- DATASET_NAME_contamination_sources.csv — sources of contaminations with a following columns: source contamination dataset name, number of sequences
- DATASET_NAME_contaminations.csv — list of blast hits from which contaminations were detected
- DATASET_NAME_missing_coverage.csv — list of contig ids without a coverage
TODO
- Logging system
- Extended unit and integration testing
- GitHub CI workflow for tests
- Export to graph format
Metadata
Release files for wcl3 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| wcl3-0.1.1.tar.gz | 20.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wcl3-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.4 kB
Release files / wcl3-0.1.1.tar.gz
| Download URL | wcl3-0.1.1.tar.gz |
|---|---|
| Size | 20.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d95424d35f8fcf6c85ee0b00d3ef1dd098dd61eb052793a7c7d68c87b9c333c0
|
|
BLAKE2b-256 checksum How to use checksums |
1a1bfe89679bc67aacfee39d28605d6e94eb3fac67214d29cbce472a779b7352
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logRelease files / wcl3-0.1.1-py3-none-any.whl
| Download URL | wcl3-0.1.1-py3-none-any.whl |
|---|---|
| Size | 25.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c81a0095a024be3287776a321b20bb6b8b369364411be8e7e10c52348538444
|
|
BLAKE2b-256 checksum How to use checksums |
9fabfa98cbc7311624649a6c45ef62835010b217bd3e9bad92043ecbacd61579
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logSecurity for wcl3 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for wcl3-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.