<aside> 💡
This is computationally demanding, please try using a standalone Flye or Miniasm/Minipolish, or Raven first. These algorithms are accurate enough in the newest sequencing technology. Using Trycyler has diminishing returns and requires lots of manual inspection. Only consider Trycycler when all of the algorithms fail, or you only have a very few genomes to work with.
</aside>
Install these common packages:
mamba activate asm # Activate the mamba envrionment
mamba install git seqkit miniasm minipolish raven any2fasta circlator medaka
git clone <https://github.com/rrwick/Minipolish.git>
mv Minipolish/miniasm_and_minipolish.sh . # This script is what we wanted, move it to the current directory
Sometimes it is helpful to only get the long reads (short reads might come from contamination). This example uses seqkit to only retain reads longer than 5,000 bp by the -m argument.
seqkit seq -m 5000 ../${sample}.fq > ../${sample}_5k.fq
Then we will subsample the reads to 12 even subsets, each to be used for curating a sub-assembly. They will be in a new directory called read_subsets (specified by --out_dir).
trycycler subsample --reads ../${sample}_5k.fq --out_dir read_subsets --genome_size 2.3m
This chunk of codes basically runs 12 assembly pipelines. We also moved all the sub-assemblies to a new directory called assemblies. We then delete all the intermediate files in read_subsets.
threads=128 # Change as appropriate for your system
mkdir -p assemblies # Create a new directory called assemblies
flye --nano-hq read_subsets/sample_01.fastq --threads "$threads" --out-dir assembly_01 && cp assembly_01/assembly.fasta assemblies/assembly_01.fasta && rm -r assembly_01
bash miniasm_and_minipolish.sh read_subsets/sample_02.fastq "$threads" > assembly_02.gfa && any2fasta assembly_02.gfa > assemblies/assembly_02.fasta && rm assembly_02.gfa
raven --threads "$threads" --disable-checkpoints read_subsets/sample_03.fastq > assemblies/assembly_03.fasta
flye --nano-hq read_subsets/sample_04.fastq --threads "$threads" --out-dir assembly_04 && cp assembly_04/assembly.fasta assemblies/assembly_04.fasta && rm -r assembly_04
bash miniasm_and_minipolish.sh read_subsets/sample_05.fastq "$threads" > assembly_05.gfa && any2fasta assembly_05.gfa > assemblies/assembly_05.fasta && rm assembly_05.gfa
raven --threads "$threads" --disable-checkpoints read_subsets/sample_06.fastq > assemblies/assembly_06.fasta
flye --nano-hq read_subsets/sample_07.fastq --threads "$threads" --out-dir assembly_07 && cp assembly_07/assembly.fasta assemblies/assembly_07.fasta && rm -r assembly_07
bash miniasm_and_minipolish.sh read_subsets/sample_08.fastq "$threads" > assembly_08.gfa && any2fasta assembly_08.gfa > assemblies/assembly_08.fasta && rm assembly_08.gfa
raven --threads "$threads" --disable-checkpoints read_subsets/sample_09.fastq > assemblies/assembly_09.fasta
flye --nano-hq read_subsets/sample_10.fastq --threads "$threads" --out-dir assembly_10 && cp assembly_10/assembly.fasta assemblies/assembly_10.fasta && rm -r assembly_10
bash miniasm_and_minipolish.sh read_subsets/sample_11.fastq "$threads" > assembly_11.gfa && any2fasta assembly_11.gfa > assemblies/assembly_11.fasta && rm assembly_11.gfa
raven --threads "$threads" --disable-checkpoints read_subsets/sample_12.fastq > assemblies/assembly_12.fasta
rm -r read_subsets # Delete the intermediate files
We then cluster the assemblies. Resultant cluster_001 should always have the longest contig (which likely represents the whole chromosome).
trycycler cluster --assemblies assemblies/*.fasta --reads ../${sample}_5k.fq --out_dir ${sample}
Reconciling the clustered contig to form a single, circular chromosome is the manual and labour-intensive part. We might have to remove some problematic sub-assemblies given the errors, then re-run the code.
trycycler reconcile --reads ../${sample}_5k.fq --cluster_dir ${sample}/cluster_001/ --max_add_seq 150000