
Bio Workflows Genome Assembly Pipeline
- 4 installs
- 1.1k repo stars
- Updated July 25, 2026
- gptomics/bioskills
Run an end-to-end genome assembly workflow from reads to a polished, QC-assessed assembly for short, long, or hybrid data.
About
Orchestrates read QC, assembly with SPAdes or Flye, polishing, and QUAST/BUSCO quality assessment. A developer uses it to assemble genomes from raw short or long reads with N50 and BUSCO checkpoints.
- Short-read (SPAdes), long-read (Flye), and hybrid assembly paths
- Pilon/medaka polishing and QUAST/BUSCO QC gates
Bio Workflows Genome Assembly Pipeline by the numbers
- 4 all-time installs (skills.sh)
- Ranked #1,625 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/gptomics/bioskills --skill bio-workflows-genome-assembly-pipelineAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 4 |
|---|---|
| repo stars | ★ 1.1k |
| Last updated | July 25, 2026 |
| Repository | gptomics/bioskills ↗ |
What it does
Run an end-to-end genome assembly workflow from reads to a polished, QC-assessed assembly for short, long, or hybrid data.
Files
Genome Assembly Pipeline
Complete workflow from sequencing reads to polished, quality-assessed genome assembly.
Workflow Overview
Reads (short and/or long)
|
v
[1. QC & Filtering] -----> fastp, NanoPlot
|
v
[2. Assembly] -----------> SPAdes (short) or Flye (long)
|
v
[3. Polishing] ----------> Pilon (short) or medaka (long)
|
v
[4. QC Assessment] ------> QUAST, BUSCO
|
v
Final polished assemblyPath A: Short-Read Assembly (SPAdes)
Step 1: QC
fastp -i reads_R1.fastq.gz -I reads_R2.fastq.gz \
-o trimmed_R1.fq.gz -O trimmed_R2.fq.gz \
--detect_adapter_for_pe \
--qualified_quality_phred 20 \
--length_required 50 \
--html qc_report.htmlStep 2: Assembly with SPAdes
# Standard bacterial assembly
spades.py \
-1 trimmed_R1.fq.gz \
-2 trimmed_R2.fq.gz \
-o spades_output \
--careful \
-t 16 \
-m 64
# For isolate genomes
spades.py --isolate \
-1 trimmed_R1.fq.gz \
-2 trimmed_R2.fq.gz \
-o spades_output \
-t 16Step 3: Polishing with Pilon
# Align reads to assembly
bwa index spades_output/scaffolds.fasta
bwa mem -t 16 spades_output/scaffolds.fasta \
trimmed_R1.fq.gz trimmed_R2.fq.gz | \
samtools sort -@ 4 -o aligned.bam
samtools index aligned.bam
# Polish
pilon --genome spades_output/scaffolds.fasta \
--frags aligned.bam \
--output polished \
--threads 16Path B: Long-Read Assembly (Flye)
Step 1: QC
# NanoPlot for long-read QC
NanoPlot --fastq reads.fastq.gz \
--outdir nanoplot_output \
--threads 8Step 2: Assembly with Flye
# ONT raw reads
flye --nano-raw reads.fastq.gz \
--out-dir flye_output \
--threads 16 \
--genome-size 5m
# ONT HQ reads (sup/dna_r10)
flye --nano-hq reads.fastq.gz \
--out-dir flye_output \
--threads 16 \
--genome-size 5m
# PacBio HiFi
flye --pacbio-hifi reads.fastq.gz \
--out-dir flye_output \
--threads 16 \
--genome-size 5mStep 3: Polishing with medaka
# Polish with medaka (for ONT)
medaka_consensus \
-i reads.fastq.gz \
-d flye_output/assembly.fasta \
-o medaka_output \
-t 16 \
-m r1041_e82_400bps_sup_v4.3.0 # Match your basecalling modelPath C: Hybrid Assembly
# Flye with long reads, then polish with short reads
flye --nano-hq long_reads.fastq.gz \
--out-dir flye_output \
--threads 16 \
--genome-size 5m
# Polish with short reads using Pilon
bwa index flye_output/assembly.fasta
bwa mem -t 16 flye_output/assembly.fasta \
short_R1.fq.gz short_R2.fq.gz | \
samtools sort -@ 4 -o aligned.bam
samtools index aligned.bam
pilon --genome flye_output/assembly.fasta \
--frags aligned.bam \
--output hybrid_polished \
--threads 16Step 4: Quality Assessment
QUAST
quast.py polished.fasta \
-r reference.fasta \
-g genes.gff \
-o quast_output \
-t 8
# Without reference
quast.py polished.fasta \
-o quast_output \
-t 8BUSCO
# Download lineage database
busco --download bacteria_odb10
# Run BUSCO
busco -i polished.fasta \
-l bacteria_odb10 \
-o busco_output \
-m genome \
-c 8Parameter Recommendations
| Tool | Parameter | Bacteria | Eukaryote |
|---|---|---|---|
| SPAdes | --careful | Yes | Optional |
| SPAdes | -m | 64GB | 256GB+ |
| Flye | --genome-size | 5m | Species-specific |
| Flye | --meta | If metagenome | No |
| BUSCO | -l | bacteria_odb10 | eukaryota_odb10 |
Troubleshooting
| Issue | Likely Cause | Solution |
|---|---|---|
| Fragmented assembly | Low coverage, repetitive genome | Increase coverage, use long reads |
| Low N50 | Short reads only | Add long reads for scaffolding |
| Low BUSCO | Incomplete assembly, wrong lineage | Check coverage, try different lineage |
| Assembly too large | Contamination, heterozygosity | Filter reads, check for contamination |
Complete Pipeline Script
#!/bin/bash
set -e
THREADS=16
GENOME_SIZE="5m"
LONG_READS="long_reads.fastq.gz"
SHORT_R1="short_R1.fastq.gz"
SHORT_R2="short_R2.fastq.gz"
BUSCO_LINEAGE="bacteria_odb10"
OUTDIR="assembly_results"
mkdir -p ${OUTDIR}/{qc,assembly,polished,quast,busco}
# Step 1: QC
echo "=== QC ==="
NanoPlot --fastq ${LONG_READS} --outdir ${OUTDIR}/qc/nanoplot -t ${THREADS}
fastp -i ${SHORT_R1} -I ${SHORT_R2} \
-o ${OUTDIR}/qc/short_R1.fq.gz -O ${OUTDIR}/qc/short_R2.fq.gz \
--html ${OUTDIR}/qc/fastp.html
# Step 2: Assembly with Flye
echo "=== Assembly ==="
flye --nano-hq ${LONG_READS} \
--out-dir ${OUTDIR}/assembly \
--threads ${THREADS} \
--genome-size ${GENOME_SIZE}
# Step 3: Polish with short reads
echo "=== Polishing ==="
bwa index ${OUTDIR}/assembly/assembly.fasta
bwa mem -t ${THREADS} ${OUTDIR}/assembly/assembly.fasta \
${OUTDIR}/qc/short_R1.fq.gz ${OUTDIR}/qc/short_R2.fq.gz | \
samtools sort -@ 4 -o ${OUTDIR}/polished/aligned.bam
samtools index ${OUTDIR}/polished/aligned.bam
pilon --genome ${OUTDIR}/assembly/assembly.fasta \
--frags ${OUTDIR}/polished/aligned.bam \
--output ${OUTDIR}/polished/final \
--threads ${THREADS}
# Step 4: QC
echo "=== Quality Assessment ==="
quast.py ${OUTDIR}/polished/final.fasta -o ${OUTDIR}/quast -t ${THREADS}
busco -i ${OUTDIR}/polished/final.fasta -l ${BUSCO_LINEAGE} \
-o busco -m genome -c ${THREADS} --out_path ${OUTDIR}
echo "=== Assembly Complete ==="
echo "Final assembly: ${OUTDIR}/polished/final.fasta"
cat ${OUTDIR}/quast/report.txtRelated Skills
- genome-assembly/short-read-assembly - SPAdes details
- genome-assembly/long-read-assembly - Flye, Canu, Hifiasm
- genome-assembly/assembly-polishing - Pilon, medaka, Racon
- genome-assembly/assembly-qc - QUAST, BUSCO metrics