Cutadapt

Latest version: v5.0

Safety actively analyzes 710445 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 11

5.0

-----------------

This release increases the major version number because results when
demultiplexing may change with this release.

* :pr:`827`: When matching multiple adapters (typically when demultiplexing
using barcodes), Cutadapt now no longer assigns ambiguous matches to one
of the adapters/barcodes.
* :issue:`808`: Made gzip compression level 1 the default, which improves
runtime significantly in many cases. (Compressing the output is often a
bottleneck when using multiple threads.) Output files will be larger, but because
Cutadapt is typically used in intermediate step where the output would be
deleted, this may often not have an impact on final disk usage.
Suggested by rhpvorderman (many times). Use ``--compression-level=N`` with
``N`` greater than ``N`` to get higher compression at the cost of speed.
(``N=5`` is the old default.)
Option ``-Z`` (equivalent to ``--compression-level=1``) is now deprecated.
* The previously hidden option ``--compression-level`` is now shown in the
``--help`` output.
* :issue:`819`: To enable reproducible output, the report no longer includes
the runtime (``Finished in XY.Z s``). Runtime is still shown as part of the
progress "bar".
* :issue:`812`: Fixed an issue where multithreaded reading of unaligned BAM
files would cause an error.
* :issue:`820`: On Bioconda, Cutadapt is now also available for ARM64 Macs (M1/M2).
* :issue:`817`: Fixed missing statistics when ``--revcomp`` was used for
paired-end data.
* :issue:`820`: Fix division by zero problem if ``--max-ee`` is used with an
empty read. By rhpvorderman.
* :issue:`824`: Fix: discard_(un)trimmed values were always ``none`` in JSON
report.
* An index (that speeds up matching of many anchored adapters such as barcodes)
is now created for up to three allowed errors (instead of two). Since this can
be slow and memory intensive, particularly when indels are enabled,
a message is printed that suggests using ``--no-indels`` or ``--no-index``.
* Dropped support for Python 3.8.
* Added support for Python 3.13.

4.9

-----------------

* Added ``--action=crop`` for removing everything *except* the adapter sequence.
(The sequence before and after the adapter is removed.) This can be useful if the
"adapter" contains wildcards (such as ``N``) that you are interested in.
* :issue:`788`: Added option ``-L`` as a counterpart to ``-l``/``--length``,
which allows shortening R1 and R2 to different lengths.
* A too long minimum overlap is now automatically decreased to the length of
the adapter. That is, you can use ``-a 'ACGT;o=99'`` to force full-length
matches.
* :issue:`784`: Fixed some unexpected trimming results for anchored 5'
adapters (due to an incorrectly initialized alignment score matrix).

4.8

-------------------

* :issue:`772`: Restored ability to provide input files via
process substitution.
* :issue:`773`: Fixed crash when writing interleaved data to stdout
(that is, when no ``-o`` option is provided).

4.7

-----------------

* :issue:`767`: Error messages are always sent to stderr. They were
previously sent to stdout when using `-o`.
* Cutadapt can now read single-end data from unaligned BAM files (uBAM).
* Dropped support for Python 3.7.

4.6

-------------------

* :issue:`744`, :issue:`561`: Make ``--revcomp`` work with paired-end data.

4.5

-----------------

* :pr:`725`: Added a ``--max-average-error-rate``/``--max-aer`` option to add a filter
that checks if the number of expected errors divided by read length is above a
certain threshold. The expected errors are calculated the same as in
``--max-expected-errors``, and dividing by read length helps for reads that
have varying lengths.
* :issue:`696`: Added a histogram of the lengths of removed poly-A tails to
the report.
* :issue:`696`: For paired-end data, ``--poly-a`` was changed to trim poly-T
"heads" on R2 (this is still experimental as it is unclear whether that is
the desired behavior. Please give feedback!)
* A poly-A tail is only removed if it is at least three nucleotides long.
* :issue:`734`: Fixed misassignments during demultiplexing that would sometimes
happen when there are collisions between adapter sequences
(when the warning "sequence ... cannot be assigned uniquely" was printed).
Previously, sequences could incorrectly be assigned to an adapter that is not
actually the best match.

Page 1 of 11

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.