Skip to main content

wcl3 - transcriptomic data cross-contamination eliminator

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wcl3-0.1.1.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wcl3-0.1.1-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file wcl3-0.1.1.tar.gz.

File metadata

  • Download URL: wcl3-0.1.1.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wcl3-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d95424d35f8fcf6c85ee0b00d3ef1dd098dd61eb052793a7c7d68c87b9c333c0
MD5 2a1d879896bc2fc580b17e4e56b38339
BLAKE2b-256 1a1bfe89679bc67aacfee39d28605d6e94eb3fac67214d29cbce472a779b7352

See more details on using hashes here.

Provenance

The following attestation bundles were made for wcl3-0.1.1.tar.gz:

Publisher: publish.yml on merv1n34k/wcl3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wcl3-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: wcl3-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wcl3-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8c81a0095a024be3287776a321b20bb6b8b369364411be8e7e10c52348538444
MD5 9736131bb21b722b02eb3e8ca195ef80
BLAKE2b-256 9fabfa98cbc7311624649a6c45ef62835010b217bd3e9bad92043ecbacd61579

See more details on using hashes here.

Provenance

The following attestation bundles were made for wcl3-0.1.1-py3-none-any.whl:

Publisher: publish.yml on merv1n34k/wcl3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page