Main tool: autocycler
Code repository: https://github.com/rrwick/Autocycler/
Additional tools installed via micromamba:
Name Version Build Channel
──────────────────────────────────────────────────────────────────────────────────────
_openmp_mutex 4.5 20_gnu conda-forge
about-time 4.2.1 pyhd8ed1ab_1 conda-forge
alive-progress 3.2.0 pyhd8ed1ab_0 conda-forge
alsa-lib 1.2.15.3 hb03c661_0 conda-forge
archspec 0.2.5 pyhd8ed1ab_0 conda-forge
aria2 1.37.0 h4e1c2bf_3 conda-forge
attr 2.5.2 h39aace5_0 conda-forge
backports.zstd 1.3.0 py312h90b7ffd_0 conda-forge
binutils_impl_linux-64 2.45.1 default_hfdba357_101 conda-forge
biopython 1.86 py312h4c3975b_1 conda-forge
blast 2.17.0 h66d330f_0 bioconda
boost-cpp 1.85.0 h3c6214e_4 conda-forge
brotli-python 1.2.0 py312hdb49522_1 conda-forge
bwa 0.7.19 h577a1d6_1 bioconda
bzip2 1.0.8 hda65f42_9 conda-forge
c-ares 1.34.6 hb03c661_0 conda-forge
ca-certificates 2026.2.25 hbd8a1cb_0 conda-forge
cairo 1.18.4 h3394656_0 conda-forge
canu 2.3 h3fb4750_2 bioconda
capnproto 1.0.2 h766bdaa_3 conda-forge
certifi 2026.2.25 pyhd8ed1ab_0 conda-forge
charset-normalizer 3.4.4 pyhd8ed1ab_0 conda-forge
chopper 0.12.0 hcdda2d0_0 bioconda
clang 21.1.0 default_h36abe19_1 conda-forge
clang-21 21.1.0 default_h99862b1_1 conda-forge
click 8.3.1 pyh8f84b5b_1 conda-forge
curl 8.18.0 h4e3cde8_0 conda-forge
cyrus-sasl 2.1.28 hd9c7081_0 conda-forge
dbus 1.16.2 h24cb091_1 conda-forge
dnaapler 1.3.0 pyhdfd78af_0 bioconda
entrez-direct 24.0 he881be0_0 bioconda
fastp 1.1.0 heae3180_0 bioconda
flye 2.9.6 py312h5e9d817_0 bioconda
font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge
font-ttf-inconsolata 3.000 h77eed37_0 conda-forge
font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge
font-ttf-ubuntu 0.83 h77eed37_3 conda-forge
fontconfig 2.17.1 h27c8c51_0 conda-forge
fonts-conda-ecosystem 1 0 conda-forge
fonts-conda-forge 1 hc364b38_1 conda-forge
freetype 2.14.1 ha770c72_0 conda-forge
fribidi 1.0.16 hb03c661_0 conda-forge
gawk 5.3.1 hcd3d067_0 conda-forge
giflib 5.2.2 hd590300_0 conda-forge
glib 2.86.4 h5192d8d_1 conda-forge
glib-tools 2.86.4 hf516916_1 conda-forge
gmp 6.3.0 hac33072_2 conda-forge
gnuplot 5.4.10 hb1719d7_0 conda-forge
grapheme 0.6.0 pyhd8ed1ab_1 conda-forge
graphite2 1.3.14 hecca717_2 conda-forge
gsl 2.8 hbf7d49c_1 conda-forge
gst-plugins-base 1.24.11 h651a532_0 conda-forge
gstreamer 1.24.11 hc37bda9_0 conda-forge
h2 4.3.0 pyhcf101f3_0 conda-forge
harfbuzz 12.2.0 h15599e2_0 conda-forge
hpack 4.1.0 pyhd8ed1ab_0 conda-forge
htslib 1.23 h566b1c6_0 bioconda
hyperframe 6.1.0 pyhd8ed1ab_0 conda-forge
icu 75.1 he02047a_0 conda-forge
idna 3.11 pyhd8ed1ab_0 conda-forge
isa-l 2.31.1 hb9d3cd8_1 conda-forge
k8 1.2 he8db53b_6 bioconda
kernel-headers_linux-64 6.12.0 he073ed8_6 conda-forge
keyutils 1.6.3 hb9d3cd8_0 conda-forge
krb5 1.21.3 h659f571_0 conda-forge
lame 3.100 h166bdaf_1003 conda-forge
lcms2 2.17 h717163a_0 conda-forge
ld_impl_linux-64 2.45.1 default_hbd61a6d_101 conda-forge
lerc 4.0.0 h0aef613_1 conda-forge
libasprintf 0.25.1 h3f43e3d_1 conda-forge
libblas 3.11.0 5_h4a7cf45_openblas conda-forge
libboost 1.85.0 h0ccab89_4 conda-forge
libboost-devel 1.85.0 h00ab1b0_4 conda-forge
libboost-headers 1.85.0 ha770c72_4 conda-forge
libcap 2.77 h3ff7636_0 conda-forge
libcblas 3.11.0 5_h0358290_openblas conda-forge
libclang-cpp20.1 20.1.8 default_h99862b1_13 conda-forge
libclang-cpp21.1 21.1.0 default_h99862b1_1 conda-forge
libclang13 21.1.0 default_h746c552_1 conda-forge
libcups 2.3.3 hb8b1518_5 conda-forge
libcurl 8.18.0 h4e3cde8_0 conda-forge
libdeflate 1.22 hb9d3cd8_0 conda-forge
libdrm 2.4.125 hb03c661_1 conda-forge
libedit 3.1.20250104 pl5321h7949ede_0 conda-forge
libegl 1.7.0 ha4b6fd6_2 conda-forge
libev 4.33 hd590300_2 conda-forge
libevent 2.1.12 hf998b51_1 conda-forge
libexpat 2.7.4 hecca717_0 conda-forge
libffi 3.5.2 h3435931_0 conda-forge
libflac 1.5.0 he200343_1 conda-forge
libfreetype 2.14.1 ha770c72_0 conda-forge
libfreetype6 2.14.1 h73754d4_0 conda-forge
libgcc 15.2.0 he0feb66_18 conda-forge
libgcc-devel_linux-64 15.2.0 hcc6f6b0_118 conda-forge
libgcc-ng 15.2.0 h69a702a_18 conda-forge
libgd 2.3.3 h6f5c62b_11 conda-forge
libgettextpo 0.25.1 h3f43e3d_1 conda-forge
libgfortran 15.2.0 h69a702a_18 conda-forge
libgfortran-ng 15.2.0 h69a702a_18 conda-forge
libgfortran5 15.2.0 h68bc16d_18 conda-forge
libgl 1.7.0 ha4b6fd6_2 conda-forge
libglib 2.86.4 h6548e54_1 conda-forge
libglvnd 1.7.0 ha4b6fd6_2 conda-forge
libglx 1.7.0 ha4b6fd6_2 conda-forge
libgomp 15.2.0 he0feb66_18 conda-forge
libiconv 1.18 h3b78370_2 conda-forge
libidn2 2.3.8 hfac485b_1 conda-forge
libjpeg-turbo 3.1.2 hb03c661_0 conda-forge
liblapack 3.11.0 5_h47877c9_openblas conda-forge
libllvm20 20.1.8 hecd9e04_0 conda-forge
libllvm21 21.1.0 hecd9e04_0 conda-forge
liblzma 5.8.2 hb03c661_0 conda-forge
liblzma-devel 5.8.2 hb03c661_0 conda-forge
libnghttp2 1.67.0 had1ee68_0 conda-forge
libnsl 2.0.1 hb9d3cd8_1 conda-forge
libntlm 1.8 hb9d3cd8_0 conda-forge
libogg 1.3.5 hd0c01bc_1 conda-forge
libopenblas 0.3.30 pthreads_h94d23a6_4 conda-forge
libopus 1.6.1 h280c20c_0 conda-forge
libpciaccess 0.18 hb9d3cd8_0 conda-forge
libpng 1.6.55 h421ea60_0 conda-forge
libpq 17.7 h5c52fec_1 conda-forge
libsndfile 1.2.2 hc7d488a_2 conda-forge
libsqlite 3.51.2 h0c1763c_0 conda-forge
libssh2 1.11.1 hcf80075_0 conda-forge
libstdcxx 15.2.0 h934c35e_18 conda-forge
libstdcxx-ng 15.2.0 hdf11a46_18 conda-forge
libsystemd0 259.3 h6569c3e_0 conda-forge
libtiff 4.7.0 hc4654cb_2 conda-forge
libunistring 0.9.10 h7f98852_0 conda-forge
libuuid 2.41.3 h5347b49_0 conda-forge
libvorbis 1.3.7 h54a6638_2 conda-forge
libwebp-base 1.6.0 hd42ef1d_0 conda-forge
libxcb 1.17.0 h8a09558_0 conda-forge
libxcrypt 4.4.36 hd590300_1 conda-forge
libxkbcommon 1.11.0 he8b52b9_0 conda-forge
libxml2 2.13.9 h04c0eec_0 conda-forge
libzlib 1.3.1 hb9d3cd8_2 conda-forge
loguru 0.7.3 pyh707e725_0 conda-forge
mash 2.3 hb105d93_10 bioconda
metamdbg 1.3.1 hf426362_0 bioconda
miniasm 0.3 h577a1d6_5 bioconda
minimap2 2.28 h577a1d6_4 bioconda
minipolish 0.2.0 pyhdfd78af_0 bioconda
mmseqs2 18.8cc5c hd6d6fdc_0 bioconda
mpfr 4.2.1 h90cbb55_3 conda-forge
mpg123 1.32.9 hc50e24c_0 conda-forge
mpi 1.0 openmpi conda-forge
myloasm 0.4.0 ha6fb395_0 bioconda
ncbi-vdb 3.3.0 h9948957_0 bioconda
ncurses 6.5 h2d0b736_3 conda-forge
necat 0.0.1_update20200803 h5ca1c30_6 bioconda
nextdenovo 2.5.2 py312h4e9d295_6 bioconda
nextpolish 1.4.1 heebf65f_5 bioconda
nspr 4.38 h29cc59b_0 conda-forge
nss 3.118 h445c969_0 conda-forge
numpy 2.4.2 py312h33ff503_1 conda-forge
openjdk 25.0.1 h5755bd7_0 conda-forge
openldap 2.6.10 he970967_0 conda-forge
openmpi 4.1.6 hc5af2df_101 conda-forge
openssl 3.6.1 h35e630c_1 conda-forge
packaging 26.0 pyhcf101f3_0 conda-forge
pandas 3.0.1 py312h8ecdadd_0 conda-forge
pango 1.56.4 hadf4263_0 conda-forge
paralleltask 0.1.1 pyhd8ed1ab_0 conda-forge
pcre2 10.47 haa7fec5_0 conda-forge
perl 5.32.1 7_hd590300_perl5 conda-forge
perl-archive-tar 3.04 pl5321hdfd78af_0 bioconda
perl-carp 1.50 pl5321hd8ed1ab_0 conda-forge
perl-common-sense 3.75 pl5321hd8ed1ab_0 conda-forge
perl-compress-raw-bzip2 2.214 pl5321hda65f42_0 conda-forge
perl-compress-raw-zlib 2.214 pl5321h4dac143_0 conda-forge
perl-encode 3.21 pl5321hb9d3cd8_1 conda-forge
perl-env 1.04 pl5321hd8ed1ab_0 conda-forge
perl-exporter 5.74 pl5321hd8ed1ab_0 conda-forge
perl-exporter-tiny 1.002002 pl5321hd8ed1ab_0 conda-forge
perl-extutils-makemaker 7.70 pl5321hd8ed1ab_0 conda-forge
perl-filesys-df 0.92 pl5321h7b50bb2_9 bioconda
perl-io-compress 2.216 pl5321h503566f_0 bioconda
perl-io-zlib 1.15 pl5321hdfd78af_1 bioconda
perl-json 4.10 pl5321hdfd78af_1 bioconda
perl-json-xs 4.04 pl5321h9948957_0 bioconda
perl-list-moreutils 0.430 pl5321hdfd78af_0 bioconda
perl-list-moreutils-xs 0.430 pl5321h7b50bb2_5 bioconda
perl-parent 0.243 pl5321hd8ed1ab_0 conda-forge
perl-pathtools 3.75 pl5321hb9d3cd8_2 conda-forge
perl-scalar-list-utils 1.70 pl5321hb03c661_0 conda-forge
perl-storable 3.15 pl5321hb9d3cd8_2 conda-forge
perl-types-serialiser 1.01 pl5321hdfd78af_0 bioconda
pip 26.0.1 pyh8b19718_0 conda-forge
pixman 0.46.4 h54a6638_1 conda-forge
plassembler 1.8.2 pyhdfd78af_0 bioconda
psutil 7.2.2 py312h5253ce2_0 conda-forge
pthread-stubs 0.4 hb9d3cd8_1002 conda-forge
pulseaudio-client 17.0 h9a6aba3_3 conda-forge
pyrodigal 3.7.0 py312h247cb63_1 bioconda
pysam 0.23.3 py312h47d5410_1 bioconda
pysocks 1.7.1 pyha55dd90_7 conda-forge
python 3.12.13 hd63d673_0_cpython conda-forge
python-dateutil 2.9.0.post0 pyhe01879c_2 conda-forge
python-edlib 1.3.9.post1 py312h248b54c_3 bioconda
python_abi 3.12 8_cp312 conda-forge
pyyaml 6.0.3 py312h8a5da7c_1 conda-forge
qt-main 5.15.15 h3a7ef08_5 conda-forge
racon 1.5.0 h077b44d_8 bioconda
raven-assembler 1.8.3 h5ca1c30_3 bioconda
readline 8.3 h853b02a_0 conda-forge
requests 2.32.5 pyhcf101f3_1 conda-forge
samtools 1.23 h96c455f_0 bioconda
setuptools 82.0.0 pyh332efcf_0 conda-forge
six 1.17.0 pyhe01879c_1 conda-forge
spades 4.2.0 h8d6e82b_2 bioconda
sysroot_linux-64 2.39 hc4b9eeb_6 conda-forge
time 1.8 hd590300_0 conda-forge
tk 8.6.13 noxft_h366c992_103 conda-forge
tzdata 2025c hc9c84f9_1 conda-forge
unicycler 0.5.1 py312hdcc493e_5 bioconda
urllib3 2.6.3 pyhd8ed1ab_0 conda-forge
wget 1.25.0 h653f8fd_1 conda-forge
wheel 0.46.3 pyhd8ed1ab_0 conda-forge
wtdbg 2.5 h577a1d6_6 bioconda
xcb-util 0.4.1 h4f16b4b_2 conda-forge
xcb-util-image 0.4.0 hb711507_2 conda-forge
xcb-util-keysyms 0.4.1 hb711507_0 conda-forge
xcb-util-renderutil 0.3.10 hb711507_0 conda-forge
xcb-util-wm 0.4.2 hb711507_0 conda-forge
xkeyboard-config 2.47 hb03c661_0 conda-forge
xorg-libice 1.1.2 hb9d3cd8_0 conda-forge
xorg-libsm 1.2.6 he73a12e_0 conda-forge
xorg-libx11 1.8.13 he1eb515_0 conda-forge
xorg-libxau 1.0.12 hb03c661_1 conda-forge
xorg-libxdamage 1.1.6 hb9d3cd8_0 conda-forge
xorg-libxdmcp 1.1.5 hb03c661_1 conda-forge
xorg-libxext 1.3.7 hb03c661_0 conda-forge
xorg-libxfixes 6.0.2 hb03c661_0 conda-forge
xorg-libxi 1.8.2 hb9d3cd8_0 conda-forge
xorg-libxrandr 1.5.5 hb03c661_0 conda-forge
xorg-libxrender 0.9.12 hb9d3cd8_0 conda-forge
xorg-libxshmfence 1.3.3 hb9d3cd8_0 conda-forge
xorg-libxt 1.3.1 hb9d3cd8_0 conda-forge
xorg-libxtst 1.2.5 hb9d3cd8_3 conda-forge
xorg-libxxf86vm 1.1.7 hb03c661_0 conda-forge
xz 5.8.2 ha02ee65_0 conda-forge
xz-gpl-tools 5.8.2 ha02ee65_0 conda-forge
xz-tools 5.8.2 hb03c661_0 conda-forge
yaml 0.2.5 h280c20c_3 conda-forge
zlib 1.3.1 hb9d3cd8_2 conda-forge
zstd 1.5.7 hb78ec9c_6 conda-forge
Basic information on how to use this tool:
- executable: autocycler
- help: --help
- version: --version
- description: |
Autocycler is a tool for generating consensus long-read assemblies for bacterial genomes.
Additional information:
This image does not contain any of the assemblers listed in the wikis or tutorials. All helper scripts should be in path and are located at /usr/local/bin.
Full documentation: https://github.com/rrwick/Autocycler/wiki
-
Step 1: Autocycler subsample
- "Creates multiple read subsets from a single long-read dataset, minimising overlap to ensure each subset is as independent as possible."
-
Step 2: Generating input assemblies
- "Each of the read subsets made by Autocycler subsample can now be assembled, producing multiple alternative assemblies of the same genome."
-
Step 3: Autocycler compress
- "The autocycler compress command uses your input assemblies to build a compacted De Bruijn graph (a.k.a. a unitig graph)."
-
Step 4: Autocycler cluster
- "The autocycler cluster command groups input contigs into clusters. A cluster is a group of contigs which represent the same genomic sequence. It also decides which of these clusters should be included in the final assembly (QC-pass) and which should not (QC-fail)."
-
Step 5: Autocycler trim
- "Long-read contigs sometimes contain excess sequence which needs to be trimmed off."
- "This step is performed on a per-cluster basis. For each contig, Autocycler looks for two types of excess sequence: start-end circular overlap and hairpin overlap. Contigs are trimmed as necessary. After trimming, Autocycler discards any contigs with outlier lengths, so the remaining contigs in the cluster will all be in close agreement with each other."
-
Step 6: Autocycler resolve
"Aims to resolve repeats and ambiguities in the cluster by following these steps:- Identifying anchors: unitigs which occur exactly once in each of the cluster's contigs.
- Creating bridges: connections between anchors that follow the most supported path.
- Applying bridges: first unique bridges (those with no conflicts) and then the most supported conflicting bridges.
- Merging linear sequences into 'consentigs'."
-
Step 7: Autocycler combine
- "This is the final step in an Autocycler assembly, where the resolved sequences for each cluster are combined into a single assembly."
autocycler_full.sh reads.fastq.gz 16 4reads=ont.fastq.gz # your read set goes here
threads=16 # set as appropriate for your system (no more than 128)
genome_size=$(autocycler helper genome_size --reads "$reads" --threads "$threads") # can set this manually if you know the value
# Step 1: subsample the long-read set into multiple files
autocycler subsample --reads "$reads" --out_dir subsampled_reads --genome_size "$genome_size"
# Step 2: assemble each subsampled file
mkdir assemblies
for assembler in canu flye metamdbg miniasm necat nextdenovo plassembler raven; do
for i in 01 02 03 04; do
autocycler helper "$assembler" --reads subsampled_reads/sample_"$i".fastq --out_prefix assemblies/"$assembler"_"$i" --threads "$threads" --genome_size "$genome_size"
done
done
# Optional step: remove the subsampled reads to save space
rm subsampled_reads/*.fastq
# Step 3: compress the input assemblies into a unitig graph
autocycler compress -i assemblies -a autocycler_out
# Step 4: cluster the input contigs into putative genomic sequences
autocycler cluster -a autocycler_out
# Steps 5 and 6: trim and resolve each QC-pass cluster
for c in autocycler_out/clustering/qc_pass/cluster_*; do
autocycler trim -c "$c"
autocycler resolve -c "$c"
done
# Step 7: combine resolved clusters into a final assembly
autocycler combine -a autocycler_out -i autocycler_out/clustering/qc_pass/cluster_*/5_final.gfaAccording to the author, Ryan Wick, certain steps in the aforementioned fully automated assembly can be manually curated.
- After Steps 1 & 2, you can curate input assemblies.
- See the Generating input assemblies page for more details.
- See the Influencing Autocycler via contig headers page for more details.
- After Steps 3 & 4, you can curate your clusters.
- See the Autocyler cluster page for more details.
- After Steps 5 & 6, you can examine dot plots and the autocycler bridging.
- See the Autocycler dotplot page for more information.
- "In particular, it can be helpful to examine each cluster's 4_merged.gfa file to see if there is structural heterogeneity or conflicts between assemblies."
- A manual step of removing any extraneous sequences can be done after Step 7.
- See Bandage, a tool by Ryan Wick.
- Autocycler clean can be used to "remove unwanted tigs to allow for a fully resolved assembly."