Skip to main content

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

  1. Make sure that you use Python 3.10 or newer

  2. Install the package:

    pip install wcl3

    or, with uv:

    uv tool install wcl3

  3. Run the tool with wcl.

For local development:

uv sync

Quick Start

  1. Prepare the folder with input data and an empty folder for the results

  2. Generate the config.yml file by running wcl generate_config and specify input, output paths and other options

  3. Prepare the data for your dataset (Winston will BLAST your sequences and map reads to detect the coverage)

    wcl prepare_data

    In your output folder all necessary data will be created.

  4. 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 .fasta file

Names of the files must be in the following format:

  • NAME_1.fastq
  • NAME_2.fastq
  • NAME.fasta

For example:

  • brucei_1.fastq
  • brucei_2.fastq
  • brucei.fasta
  • giardia_1.fastq
  • giardia_2.fastq
  • giardia.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 contigs
  • winston.paths.output — output folder with the results
  • winston.paths.tools.pileup_sh — (optional) bbtools pileup.sh execution command
  • winston.paths.tools.bowtie2 — (optional) bowtie2 execution command
  • winston.paths.tools.bowtie2_build — (optional) bowtie2-build execution command
  • winston.hits_filtering.len_ratio — minimal qcovhsp for hits filtering
  • winston.hits_filtering.len_minimum — minimal hit lenth for hits filtering
  • winston.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 type
  • winston.threads.multithreading — enable multithreading (disabling is convenient for debugging purposes)
  • winston.threads.count — number of threads if multithreading enabled
  • winston.tools.blast.threads — number of threads for BLAST processing
  • winston.tools.bowtie.threads — number of threads for bowtie2 processing
  • winston.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 organisms
  • REGULAR - 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)

Source distribution for wcl3 0.1.1
File Size Uploaded Provenance
wcl3-0.1.1.tar.gz 20.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for wcl3 0.1.1
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page