Mastering Oxford Nanopore Long-Read Data Analysis: A 3-Day Deep Dive

https://nanoschool.in/biotechnology/btws/nanopore-genomics-2-0-structural-variants-native-epigenomics-clinical-metagenomics/

Ready to decode complex genomes? This mentor-led virtual workshop provides advanced, research-oriented training in Oxford Nanopore bioinformatics workflows. Move beyond basic sequencing and learn to convert long-read data into meaningful genomic, epigenomic, and microbiological insights.

📚 Workshop Structure & Topics:

Day 1: Long-Read Human Genomics & Structural Variant DiscoveryFocus: Detecting genomic variation difficult to resolve with short-read sequencing. • Workflow: POD5 → Basecalling → FASTQ/BAM → Alignment → Variant Analysis. • Key Skills: Read QC (Q-score, N50, coverage), genome alignment, and detecting structural variants (deletions, insertions, duplications, inversions, translocations), CNVs, and repeat expansions. • Hands-on Tools: NanoPlot, Minimap2, SAMtools, Sniffles2, IGV, Python, Google Colab. • Deliverable: Long-read QC report, structural-variant table, and genomic visualization.

Day 2: Native DNA Methylation, Adaptive Sampling & Long-Read TranscriptomicsFocus: Real-time targeted sequencing, direct DNA methylation detection, and full-length transcript analysis. • Key Skills: Adaptive sampling, host-DNA depletion, analyzing modified-base BAM files for 5mC/CpG-level methylation, haplotype-resolved methylation, and comparing cDNA vs. direct RNA sequencing for isoform profiling. • Hands-on Tools: Dorado Concepts, Modkit, Minimap2, SAMtools, IGV, BEDTools Concepts, Python, Google Colab. • Deliverable: Regional methylation profile with genomic/epigenomic visualization.

Day 3: Clinical Metagenomics, Pathogen Genomics & AMR ProfilingFocus: Microbial identification, pathogen genomics, and antimicrobial-resistance (AMR) profiling. • Key Skills: Shotgun vs. targeted metagenomics, taxonomic classification, long-read microbial genome assembly, plasmid/mobile genetic element analysis, and identifying AMR genes/mutations. • Hands-on Tools: Kraken2, Minimap2, Flye, AMRFinderPlus / ResFinder Concepts, IGV, Nextflow Concepts, Python, Google Colab. • Deliverable: Microbial taxonomic profile, pathogen summary, AMR profile, and research-ready analysis report.

🎯 Who Should Attend? Students, Ph.D. scholars, researchers, faculty, and industry professionals in bioinformatics, genomics, epigenomics, transcriptomics, metagenomics, microbiology, and clinical research.

🏆 Learning Outcomes: Participants will walk away with the ability to process nanopore data, generate QC reports, identify structural variants, interpret methylation profiles, perform microbial taxonomic profiling, screen for AMR determinants, and build reproducible bioinformatics pipelines.

#Bioinformatics #NanoporeSequencing #Genomics #StructuralVariants #Metagenomics #AMR #Epigenomics #ComputationalBiology #LongReadSequencing

Before vs After decontam

The “+3 patients” (11 → 14) are the samples whose library size falls below 12,201 only after the 72 contaminant ASVs are removed — because in the new pipeline the cutoff is applied to clean (post-decontam) sums, whereas in the old pipeline the cutoff was applied to raw, contaminant-inflated sums (and was circular, i.e. set equal to the minimum of the retained set, so it removed nothing by construction).

The 3 additional patients (and the 1 PC)

Sample Group Raw depth Post-decontam depth Why it drops out only in the new pipeline
O23092004 1 12,230 < 12,201 Marginally above the cutoff pre-decontam; losing a few dozen contaminant reads pushes it below
O24010402 1 12,363 < 12,201 Same marginal-depth mechanism
O23121305 5 75,260 collapses far below 12,201 Library was almost pure contaminant (Shannon 0.35, 11 ASVs, i.e. ~97% Burkholderia); after removing contaminant ASVs its clean library collapses
UR009768 (the +1 PC) PC 21,031 collapses far below 12,201 Nearly pure contaminant (Shannon 0.50, 5 ASVs); collapses after decontam

This is exactly consistent with the heatmap group counts: old samples_keep-based backbone 80/21/69/10/34 (+14 NTC +11 PC) vs new 78/21/69/10/33 (+14 NTC +10 PC) — i.e. −2 in Group 1 (O23092004, O24010402), −1 in Group 5 (O23121305), −1 PC (UR009768).

The 11 patients + 3 NTCs removed in both pipelines are the raw-low-depth set: patients A23060601, A23072501, A23111301, A24040201, O23082401, O23091304, O23100501, O23100502, O23100601, U23071201, U23091101, plus NTC_1, NTC_5, NTC01.

Interpretation

  • The old pipeline’s “11 patients + 3 NTCs” were removed before/without decontamination, on raw sums, with a circular threshold.
  • The new pipeline’s “14 patients + 3 NTCs + 1 PC” is the methodologically correct order (decontam → depth filter → rarefaction): the threshold now acts on clean library sizes, so samples whose apparent depth was created by contaminant reads are correctly dropped.
  • The two Group-1 dropouts are pure threshold-margin cases; the Group-5 sample and the PC are contaminant-dominated libraries whose “depth” was an artifact — dropping them is a QC improvement, not a loss of biological signal.

Verify directly in R

removed <- setdiff(sample_names(ps_pruned), sample_names(ps_filt))
print(sort(removed))                      # should print the 18 IDs
sort(sample_sums(ps_pruned)[removed])     # their post-decontam depths, all < 12,201
sort(sample_sums(ps_decontam)[removed])   # same, post-decontam sums
sort(sample_sums(ps_base)[removed])       # their raw sums (shows the 3 marginal/contaminant-dominated cases)

If the printed list matches the 18 IDs above, the table row is confirmed; if any ID differs, substitute the printed IDs into the table (the mechanism — post-decontam sum < 12,201 — is unchanged).



Here is the updated and logically ordered table. I have inserted the two requested steps (Subjective (PCoA) exclusions and Samples removed by Rarefaction depth) into their correct chronological positions in the bioinformatics pipeline.

I also filled in the corresponding values for the v2 new report column based on our previous analyses.

Updated Pipeline Comparison Table

Stage Manuscript v32 v2 new report (9/16/26)
1. Import ps_base 5,980 ASVs × 253 samples; text says “208 boys + 16 NTC + PC” Same
2. Subjective (PCoA) exclusions 6 patients + 3 NTC outliers (removed based on visual PCoA clustering) none (all 253 samples retained; audited post-decontam instead of pre-excluded)
3. Decontam → ps_decontam None (decontam not used) prevalence, thr 0.1, model = 242 (PCs excluded), neg = 17 NTC → 72 flagged → 5,908 × 253
4. Samples removed by Rarefaction depth 11 patients + 3 NTCs (cutoff 12,201 = min of retained set, circular) 14 patients + 3 NTCs + 1 PC (18 total removed; programmatic 12,201 cutoff applied on post-decontam sums)
5. Analysis backbone (ps_filt) 219 retained (208 pat + 11 NTC); 34 not carried forward 235 retained (92.9%); depth Min 12,239 / Med 48,407 / Max 279,419
6. Rarefaction → ps_rarefied (alpha only) rarefy 12,201, seed 9242, on 219 rarefy min(ps_filt) = 12,239, seed 9242, on 235; alpha values still from QIIME2 exported (pre-decontam) merged
7. Beta / DESeq2 on non-rarefied ps_filt Bray–Curtis (Hellinger) PERMANOVA 9999 perm on 219; DESeq2 non-rarefied, 10 comparisons, 313 sig / 129 ASVs / 42 genera Beta not yet recomputed (to do on ps_filt 235, non-rarefied); DESeq2 on ps_filt 235, prefilter ≥10 → ~5.5k ASVs, only G1 vs G4
Heatmap / composition 94 × 235 (groups 78/21/69/10/33 + 14 NTC + 10 PC; consistent)

Why this order?

  1. Step 2 (Subjective exclusions) is placed immediately after import because the original authors manually removed these 9 samples before doing any downstream filtering or diversity calculations. In the new report, we skip this step entirely to avoid circular reasoning.
  2. Step 3 (Decontam) happens next in the new report to clean the ASV table objectively before applying any depth thresholds.
  3. Step 4 (Samples removed by Rarefaction depth) represents the hard depth cutoff. In the manuscript, this was a circular 12,201 cutoff that dropped 14 samples. In the new report, applying the exact same 12,201 cutoff after decontamination results in 18 samples dropping out (because removing contaminant ASVs slightly lowers the total read counts of some samples, pushing them below the 12,201 threshold).
  4. Step 5 (Analysis backbone) summarizes the final sample count remaining for the actual statistical tests.


Below is the corrected, pipeline-ordered comparison. Three versions are distinguished: Manuscript v32 (as written), v1 old report (Phyloseq_v2_decontam.pdf, 9/14/26 – first decontam adaptation, PCs left in the decontam model, 10th-percentile cutoff 17,317), and v2 new report (Phyloseq_v2_decontam.knit.pdf, 9/16/26 – PCs excluded from the decontam model, pre-specified 12,201 cutoff). Rows follow exactly the order ps_base → decontam → ps_filt → ps_rarefied (alpha) / ps_filt (beta, DESeq2).

Table 1 – Pipeline-stage comparison (corrected)

Stage Manuscript v32 v1 old report (9/14/26) v2 new report (9/16/26) Correction / note
1. Import ps_base 5,980 ASVs × 253 samples; text says “208 boys + 16 NTC + PC” Same import; console: Total 253 | NTC 17 | PC 11 Same Data actually contain 225 patient-named + 17 NTC-like (NTC_1–16 + NTC01) + 11 PC/UR-like. Manuscript “16 NTC” omits NTC01; “208 boys” = analysed, not imported
2. Decontam → ps_decontam None (decontam named as required future work) prevalence, thr 0.1, model = all 253 (PCs included as “samples”), neg = 17 NTC → 76 flagged → 5,904 × 253 prevalence, thr 0.1, model = 242 (PCs excluded), neg = 17 NTC → 72 flagged → 5,908 × 253; sweep 0.1–0.9 documented v1’s inclusion of mock PCs in the model is methodologically wrong (PCs are not blanks); v2 corrects it. Sweep shows plateau 0.1–0.5, jump ≥0.6 → 0.1 retained
3. Depth filter → ps_filt Explicit list; 12,201 = min of retained set (circular); retained 219 (208 pat + 11 NTC); 34 not carried forward ps_pruned = ps_decontam; cutoff = 10th pct = 17,317ps_filt 227; depth Min 17,501 / Med 49,017 / Max 279,419 ps_pruned = ps_decontam; cutoff = 12,201 applied programmatically on post-decontam sumsps_filt 235 (92.9%); removed 18 = 14 pat + 3 NTC + 1 PC; depth Min 12,239 / Med 48,407 / Max 279,419 v2 restores the manuscript’s 12,201 but applies it non-circularly post-decontam; v1’s 17,317 unnecessarily dropped 5 repaired-group patients
4. Rarefaction → ps_rarefied (alpha only) rarefy 12,201, seed 9242, on 219 rarefy min(ps_filt) = 17,501, seed 9242, on 227; but alpha values taken from QIIME2 exported alpha (pre-decontam, 12,201) merged with ps_rarefied metadata rarefy min(ps_filt) = 12,239, seed 9242, on 235; alpha values still from QIIME2 exported (pre-decontam) merged Alpha values in v1 and v2 are pre-decontamination QIIME2 exports → must be recomputed with estimate_richness(ps_rarefied) on the decontaminated rarefied object
5. Beta / DESeq2 on non-rarefied ps_filt Bray–Curtis (Hellinger) PERMANOVA 9999 perm on 219; DESeq2 non-rarefied, 10 comparisons, 313 sig / 129 ASVs / 42 genera Beta not recomputed (QIIME2 export, old set); DESeq2 on ps_filt 227, prefilter ≥10 → 5,395 ASVs, only G1 vs G4 Beta not yet recomputed (to do on ps_filt 235, non-rarefied); DESeq2 on ps_filt 235, prefilter ≥10 → ~5.5k ASVs, only G1 vs G4 Beta/DESeq2 correctly stay on non-rarefied ps_filt; v2 still owes the full 10 comparisons and a recomputed PERMANOVA
Heatmap / composition 95 × 239 (cached pre-decontam objects; inconsistent with ps_filt 227) 94 × 235 (groups 78/21/69/10/33 + 14 NTC + 10 PC; consistent) v1 heatmap/alpha used stale cache; v2 consistent
Alpha t-tests Wilcoxon/BH on 207 patients t-tests on 225-sample merge (QIIME2 alpha) t-tests on 235-sample merge (same QIIME2 alpha) v1 vs v2 p-values differ slightly (e.g. G4vsG5 0.0426 vs 0.0289; G1vsPC 0.007 vs ns) purely from sample-set change; v2 final must recompute alpha

Table 2 – Corrections to the previous (xlsx) table

Previous entry Problem Corrected entry
“Old Rmd (as coded): Decontamination = none” Wrong: the attached old report (v1) already ran decontam (76 flagged, PCs in model, 17,317 cutoff). “None” applies only to the pre-decontam original Rmd Old column = v1: decontam 76 flagged (PCs in model), cutoff 17,317, ps_filt 227
“Old depth filter → 225 (203 pat + 11 NTC + 11 PC)” Describes the pre-decontam original Rmd, not the attached v1 report v1 = 227; the 225 figure belongs to the pre-decontam original
“New rarefaction depth = 12,239” Correct value, but omitted that alpha values are still pre-decontam QIIME2 exports Keep 12,239; add flag “alpha must be recomputed on ps_rarefied
“New samples removed by depth = 18 = 14 pat + 3 NTC + 1 PC” Correct (confirmed by heatmap counts 211 pat + 14 NTC + 10 PC = 235) Keep
“Old analysis backbone = 225 (cached 239)” Conflated pre-decontam original with v1 v1 ps_filt = 227 but heatmap/alpha cached 239 → inconsistent; v2 = 235 consistent
“Manuscript NTC = 16 carried / 11 retained” Data contain 17 NTC-like (NTC01 extra) State 17 NTC-like in data; manuscript’s 16 omits NTC01; 17−3−3 = 11 retained ✓

Remaining to-dos for v2 (to close the pipeline)

  1. Recompute alpha (Shannon, observed, Faith PD) with estimate_richness(ps_rarefied) on the decontaminated rarefied object (replace QIIME2 exported alpha).
  2. Run all ten pairwise group comparisons (alpha + DESeq2) on the v2 objects, not only G1 vs G4.
  3. Recompute PERMANOVA on non-rarefied ps_filt (235 samples) instead of the QIIME2 export.
  4. Re-run after rm -rf Phyloseq_v2_decontam_cache to purge stale cached objects.

This table now matches the attached v1/v2 reports exactly and fixes the three factual errors in the previous xlsx (old-report decontam status, old depth-filter sample count, and the missing “alpha not recomputed” flag).



Decontamination first, rarefaction second — never the other way around. In your Rmd the correct chunk order is:

ps_base (import, all 253 samples) → decontamps_decontam → depth filter → ps_filtrarefactionps_rarefied (alpha only); beta/DESeq2 stay on non-rarefied ps_filt.

Why decontam must come before rarefaction

  1. Rarefaction would waste even depth on contaminant reads. In this dataset Burkholderiaceae is ~97% of NTC reads and a substantial share of patient reads. If you rarefy first, part of the even sequencing depth is spent on contaminant ASVs; when you then remove those ASVs, sample depths become unequal again — the rarefaction is undone and you would have to re-rarefy. Removing contaminant taxa first, then equalizing depth, is the only order that yields a genuinely even, clean depth.

  2. decontam’s prevalence method needs the original counts and the controls. It compares presence/absence (prevalence) of each ASV in NTCs vs true samples. Rarefying first (a) discards reads and thus detection power for rare ASVs, biasing the prevalence test, and (b) is normally applied only to the retained patient set — but the NTCs are exactly what decontam needs as the neg panel. Rarefying before decontam would either drop the controls or distort their prevalence signal.

  3. Library-size QC must be computed on clean counts. A low-biomass sample can look “deep” only because it is full of contaminant reads (e.g., 13,000 raw reads of which most are Burkholderia). Depth-filtering or choosing the rarefaction depth on raw sums lets such samples pass; computing depths after decontamination reflects true biological depth. This is why your latest knit shows min depth 12,239 and 235 retained samples when the 12,201 cutoff is applied to the decontaminated table.

  4. Operation types: decontam is a taxon-level cleaning step; depth filtering and rarefaction are sample-level steps. Cleaning taxa first keeps every downstream sample-level decision (threshold, rarefaction depth, evenness metrics) uncontaminated by reagent background — which matters especially here because the paper’s key metric is evenness, exactly the metric a variable contaminant background mechanically inflates.

Concrete chunk order for the Rmd

# 1) Import: all 253 samples, 5980 ASVs
ps_base <- merge_phyloseq(ps_raw, SAM, tax_table_final)

# 2) DECONTAMINATION (before any sample filtering or rarefaction)
#    neg = all 17 NTCs; positive controls excluded from the model
ps_for_decontam <- prune_samples(!is_PC, ps_base)
contam <- decontam::isContaminant(ps_for_decontam, method = "prevalence",
                                  neg = is_ntc, threshold = 0.1)
ps_decontam <- prune_taxa(!contam$contaminant, ps_base)   # samples all retained

# 3) Depth filter on DECONTAMINATED library sizes
ps_filt <- prune_samples(sample_sums(ps_decontam) >= 12201, ps_decontam)
ps_filt <- prune_taxa(taxa_sums(ps_filt) > 0, ps_filt)

# 4) RAREFACTION (alpha diversity only), on the clean, depth-filtered table
ps_rarefied <- rarefy_even_depth(ps_filt, sample.size = min(sample_sums(ps_filt)),
                                 rngseed = 9242, replace = FALSE)

# 5) Beta diversity (Bray-Curtis/PERMANOVA) and DESeq2 on NON-rarefied ps_filt

Two practical notes: (i) keep the audit of the 11 re-included samples (Point 3) between steps 2 and 3, since it needs the decontaminated but not yet depth-filtered object; (ii) after decontam, re-print summary(sample_sums(ps_filt)) — the retained-sample count (235 at the 12,201 cutoff) now refers to clean library sizes, and that is the number to report in the methods.



1. Three-way bookkeeping reconciliation (manuscript text vs. old Rmd code vs. new adapted Rmd output)

All counts below are taken from the printed console/tables of the generated PDFs and the samples_keep list of the old Rmd.

Quantity Manuscript text Old Rmd (as coded) New adapted Rmd (this PDF)
Imported 5,980 ASVs × 253 samples 5,980 × 253 5,980 × 253 (Total: 253 \| NTC: 17 \| Positive controls: 11)
Patient-named samples “208 boys” (analysed) 214 in samples_keep 225 (= 253 − 17 NTC − 11 PC)
NTC-like 16 carried, 11 retained 14 in samples_keep 17 (NTC_1…NTC_16 + NTC01)
PC/UR-like excluded from patient analyses 11 in samples_keep 11 (PC_1…PC_8, PC01, UR009768, UR009909)
Subjective (PCoA) exclusions 6 patients + 3 NTC outliers silently re-included (all in samples_keep) none (all retained; audited instead)
Depth filter “12,201 = lowest depth in retained set” (circular, removes nothing) ≥ 12,201 on raw sums → 225 samples (203 pat + 11 NTC + 11 PC) ≥ 12,201 on post-decontam sums → 235 samples (92.89%)
Samples removed by depth 14 (11 patients + 3 NTCs) 14 (same) 18 = 14 patients + 3 NTCs (NTC_1, NTC_5, NTC01) + 1 PC (3 patients + 1 PC fall below 12,201 only after contaminant ASVs are removed)
Analysis backbone 219 (208 pat + 11 NTC) 225 (cached objects actually used 239) 235 = 211 patients + 14 NTC + 10 PC (heatmap: 94 ASVs × 235 samples; groups 78/21/69/10/33)
Decontamination none (directional argument only) none decontam prevalence, model = 242 samples (17 NTCs as negatives); 72/5,980 ASVs flagged at threshold 0.1 → 5,908 ASVs × 253 samples
Rarefaction depth 12,201 (seed 9242) min post-filter depth min post-filter depth = 12,239 (seed 9242)

Identities confirmed by the new PDF:

  • 253 = 225 + 17 + 11 ✔ (printed Total/NTC/Positive controls line)
  • 225 = 208 (manuscript cohort) + 6 (PCoA exclusions) + 11 (classically low-depth patients) ✔
  • 211 patients in the new backbone = 225 − 14 patients below cutoff ✔; 14 NTC = 17 − 3 ✔; 10 PC = 11 − 1 ✔; 211 + 14 + 10 = 235 ✔
  • Old-Rmd audit line Patients excluded by the OLD pipeline: 11 = the 11 low-depth patients (A23060601, A23072501, A23111301, A24040201, O23082401, O23091304, O23100501, O23100502, O23100601, U23071201, U23091101) ✔ — the remaining 6 of the 17 are exactly the +1/+2/+3 excess in Groups 2/3/5 of samples_keep versus manuscript Table 1 ✔
  • Rarefaction removed nothing at import stage: rarefy_even_depth is applied only inside ps_filt

2. Statistical results: old vs. new

Statistic Old (manuscript / old Rmd) New adapted Rmd (this PDF)
Contaminant handling Burkholderiaceae ≈ 97% of NTC reads left in data; “directional argument” only Threshold sweep 0.1–0.9: flagged set shrinks monotonically (72 ASVs at 0.1); mean contaminant relative abundance at 0.1 = 0.0098 (patients) / 0.0268 (normal NTCs) / 0.0763 (outlier NTCs), rising to 0.050/0.073/0.179 at 0.5; one patient sample reaches 0.951
Re-included patients (post-decontam Shannon/Observed) excluded silently 5 clearly biological: O23082401 4.44/145, O23100601 4.32/135, O23100501 4.31/146, O23100502 4.05/109, O23091304 3.77/113; U23091101 2.94/59 intermediate; 5 near-empty: A23060601 0.94/13, A23072501 0.80/16, U23071201 0.74/4, A24040201 0.44/2, A23111301 0.39/14
Alpha diversity (Shannon) KW p = 2.2 × 10⁻⁶; group medians 2.16/2.25/3.51/1.94/4.10; evenness p = 2.4 × 10⁻⁷; types p = 0.14 Pairwise t-tests on the new cohort: 1v3 p = 0.0015, 2v3 p = 0.0035, 1v5 p = 3.4 × 10⁻⁴, 2v5 p = 5.1 × 10⁻⁴, 4v5 p = 0.043*; 1v2, 1v4, 2v4, 3v4, 3v5 ns; vs NTC: 5 p = 6.0 × 10⁻⁵*, 3 p = 3.2 × 10⁻⁴, 1 p = 0.012, 2 p = 0.037, 4 ns; NTC vs PC p = 0.0033same direction and significance pattern as the manuscript**
Beta diversity / PERMANOVA pairwise adj. p ≤ 0.012 for repaired vs all; largest contrast R² = 14.8% not yet recomputed in R (section still references QIIME2 export) — to do
DESeq2 313 significant results / 129 ASVs / 42 genera across 10 comparisons; Burkholderia top hit only Group 1 vs 4 run; top hit 5de1d6… (baseMean 6,779, log2FC 3.68, padj 1.8 × 10⁻³) plus multiple presence/absence ASVs (log2FC 20–25); input line still prints a cached 5,395 × 227 objectto re-run

3. Remaining inconsistencies to fix (cache-related)

  1. rm -rf Phyloseq_v2_decontam_cache and re-knit: the DESeq2 chunk input (227 samples) and part of the alpha table still reflect earlier runs.
  2. Alpha metrics are still merged from the pre-decontamination QIIME2 export (e.g., NTC_13 Shannon 5.23, NTC_6 3.25 still appear); recompute with estimate_richness(ps_rarefied) so they match the decontaminated table.
  3. Run all ten patient-group comparisons (alpha, PERMANOVA, DESeq2) on the 235-sample backbone, not only 1 vs 4.

4. Concise replacement for the “Decontamination” paragraph

Decontamination. All 253 imported samples (225 patients, 17 no-template controls [NTCs], 11 positive/mock controls) were retained; no sample was removed on subjective grounds. Contaminant ASVs were identified with the prevalence method of decontam (Davis et al. 2018) using all 17 NTCs — including the outliers NTC_3, NTC_6 and NTC_13 — as the negative panel; positive controls were excluded from the model (242 samples) but retained for quality control. A threshold sweep (0.1–0.9) confirmed that the flagged set shrinks monotonically, that patient contaminant burden remains low (mean relative abundance 0.010 at threshold 0.1, versus 0.027 in normal and 0.076 in outlier NTCs), and that outlier NTCs are already dominated by flagged ASVs at the strict threshold. The pre-specified threshold of 0.1 was adopted, removing 72 of 5,980 ASVs and yielding a decontaminated table of 5,908 ASVs × 253 samples for all downstream analyses.

(Note the corrected numbers: the current run flags 72 ASVs and retains 5,908, not 76/5,904 as in the stale paragraph — the change arises because positive controls are now excluded from the decontam model.)

Ultra-short version (if space is tight):

Decontamination. No sample was removed subjectively: all 253 imports (225 patients, 17 NTCs, 11 positive controls) were retained. Contaminant ASVs were identified with decontam‘s prevalence method (Davis et al. 2018) against all 17 NTCs (positive controls excluded from the model); a 0.1–0.9 threshold sweep confirmed robustness. At the pre-specified threshold 0.1, 72 of 5,980 ASVs were removed, giving a decontaminated table of 5,908 ASVs × 253 samples.



Good catch — this is exactly the kind of bookkeeping check worth doing. The short answer: the 17 “missing” samples are patient samples that were imported but never entered the analysed cohort of 208. They are not rarefaction losses. Rarefaction (rarefy_even_depth) is applied much later, only for alpha diversity, and only inside the already-filtered object — it never changes the imported 253.

Full reconciliation of the 253 imported samples

Class (by sample-name pattern) Imported Where they went
Patient samples (A…/O…/U… IDs) 225 208 analysed + 6 removed by the pre-specified PCoA rule (1× Group 2, 2× Group 3, 3× Group 5) + 11 removed by the depth filter (< 12,201 reads)
NTC-like (NTC_1…NTC_16, NTC01) 17 11 retained + 3 removed as technical outliers (NTC_3, NTC_6, NTC_13) + 3 removed as low-depth (NTC_1, NTC_5, NTC01)
PC / other non-patient controls (PC_1…PC_8, PC01, UR009768, UR009909) 11 all excluded from patient-level analyses
Total 253 219 retained (208 patients + 11 NTCs) + 34 removed

So your arithmetic resolves as:

  • 253 − 17 NTC − 11 PC = 225 patient samples imported, not 208.
  • 225 − 208 analysed = 17 excluded patient samples = 6 (pre-specified PCoA exclusions) + 11 (low-depth).
  • Your “14 discarded for depth” = 11 of those patients + 3 NTCs (NTC_1, NTC_5, NTC01) — the 3 NTCs are already inside your count of 17 NTCs, which is why they don’t appear in the 17.
  • Cross-check with the manuscript: removed = 20 (“pre-specified exclusions together with the positive and other non-patient controls” = 6 patients + 3 NTC outliers + 11 PC/UR) + 14 (low-depth) = 34 = 253 − 219. ✔
  • Cross-check with group counts: the old Rmd samples_keep set had Group sizes 80/21/69/10/34 = 214 patients, i.e. exactly the manuscript’s 80/20/67/10/31 = 208 plus the 6 pre-specified excluded patients (1+2+3). ✔

Verify it directly from your object

sn     <- sample_names(ps_base)
is_ntc <- grepl("^NTC", sn)                       # 17
is_pc  <- grepl("^PC|^UR", sn) | sn == "PC01"     # 11
pat    <- sn[!is_ntc & !is_pc]                    # 225 patient-named samples
low_pat <- pat[sample_sums(ps_base)[pat] < 12201] # 11 low-depth patients
cat(length(pat), length(low_pat), "\n")
print(sort(low_pat))
# A23060601 A23072501 A23111301 A24040201 O23082401 O23091304
# O23100501 O23100502 O23100601 U23071201 U23091101

The remaining 6 (225 − 11 − 208) are the pre-specified PCoA-based exclusions; the manuscript never names them, but they are exactly the +1/+2/+3 excess in Groups 2/3/5 of the old samples_keep list versus the manuscript’s Table 1.

Two reporting points for the revision

  1. “Catheter urine was collected from 208 boys” is inconsistent with the imported table. Per the feature table, 225 patient samples were imported and 208 survived QC. The methods should say something like: “225 patient samples were imported; after pre-specified exclusions (n = 6) and a library-size filter (n = 11), 208 remained.”
  2. The old Rmd silently re-included the 6 PCoA-excluded patients (they are in samples_keep), so the old Rmd output and the manuscript text were not describing the same cohort. Our re-analysis makes this explicit: all 225 patient samples enter the decontaminated backbone, and exclusions are reported as sensitivity analyses rather than applied silently.

Bottom line: 17 = 6 + 11 excluded patient samples; 14 = 11 of those patients + 3 low-depth NTCs; rarefaction removed nothing at the import stage.

Can You Mix Dorado Versions? The Impact of v5.0.0 Polishing with v5.2.0 Basecalling on Methylation Calling (Data_Tam_Methylation_19606WT_adeAB_adeIJ_craA)

Short Answer: No, this will not cause serious inaccuracy.

The mismatch between your polishing model (v5.0.0) and your basecalling/modification model (v5.2.0) is not a serious problem for your methylation analysis. Here’s why:


Why the Mismatch Doesn’t Matter Much

1. Modification calling is signal-based, not reference-based

The methylation calls (6mA, 4mC, 5mC) are made by comparing the raw nanopore electrical signal to the expected signal for each base context. This happens at the signal level, independent of the reference genome sequence.

Raw signal → Modification model (v5.2.0) → Modification call
                                              ↓
Reference genome → Alignment → Position assignment

The reference genome is only used for alignment (determining where each read maps), not for calling the modifications.

2. Polishing model affects genome accuracy, not modification accuracy

Aspect Affected by polishing model?
Genome sequence accuracy (SNPs/indels) ✅ Yes
Modification calling accuracy ❌ No (signal-based)
Read alignment accuracy ⚠️ Slightly (if polish errors cause misalignment)

If your genome was polished with v5.0.0 instead of v5.2.0, you might have:

  • A few more residual base errors (SNPs/indels) in the genome
  • Slightly lower mapping quality in those specific regions
  • But the modification calls themselves will still be accurate

3. The effect is minimal in practice

Polished genomes are typically >99.9% accurate regardless of whether you used v5.0.0 or v5.2.0. The difference between these versions is small (maybe a few hundred base errors across a ~5 Mb genome), and these errors:

  • Are randomly distributed
  • Don’t systematically bias modification calls
  • Are unlikely to cause widespread misalignment

What You Should Do

Option A: Do nothing (Recommended)

Your current results are fine. The modification landscape will be accurate. Just note in your methods that:

  • Genome polishing: dna_r10.4.1_e8.2_400bps_hac@v5.0.0
  • Basecalling/modification calling: dna_r10.4.1_e8.2_400bps_hac@v5.2.0

Option B: Re-polish with v5.2.0 (If you want maximum consistency)

If you want to be extra careful, you can re-run the polishing step with the v5.2.0 model:

# Example for Medaka polishing with v5.2.0
medaka_consensus -i reads.fastq -d draft_assembly.fasta -o polished_v5.2.0 -m r1041_e82_400bps_hac_v5.2.0

Then re-run your alignment and modification calling with the new polished genome. But this is optional and unlikely to change your biological conclusions.


Summary

Concern Severity
Modification calling accuracy ✅ Not affected (signal-based)
Alignment accuracy ⚠️ Minimal impact (polish errors are rare)
Biological conclusions ✅ Safe

Bottom line: Your methylation results are reliable. The model version mismatch is a minor technical detail, not a serious accuracy problem.



Explanation the process of split_pod5.sh

理解基本正确,但在具体数字分配上有一点小偏差。让我详细解释一下:

✅ 正确的部分

  1. 文件是完整复制的:每个 .pod5 文件都是完整地被复制到 rep1rep2,不会被切割成两半。
  2. 随机分配:通过 shuf -e 命令,41 个文件会被完全随机打乱后再分配。
  3. 大致对半分:由于 41 是奇数,两个 replicate 的数量会相差 1 个。

⚠️ 需要修正的部分

根据脚本的逻辑:

MID=$((TOTAL / 2))  # 41 / 2 = 20 (bash 整数除法向下取整)

for i in "${!SHUFFLED[@]}"; do
    if [ "$i" -lt "$MID" ]; then      # i < 20 → 索引 0~19 (共 20 个)
        cp → rep1
    else                               # i >= 20 → 索引 20~40 (共 21 个)
        cp → rep2
    fi
done
所以实际的分配是: Replicate 文件数量 索引范围
rep1 20 个 0 ~ 19
rep2 21 个 20 ~ 40

也就是说,rep2 会比 rep1 多 1 个文件(当总数为奇数时),而不是您说的 rep1 有 21 个。

📊 通用规律

总文件数 rep1 文件数 rep2 文件数
偶数 (如 40) 20 20
奇数 (如 41) 20 21
奇数 (如 43) 21 22

公式:

  • rep1 = floor(TOTAL / 2)
  • rep2 = TOTAL - floor(TOTAL / 2) = ceil(TOTAL / 2)

💡 这种差异会影响分析吗?

完全不会。在下游的甲基化分析中(如 modkit):

  • rep1rep2 的 reads 数量只差 1 个文件(约占总 reads 的 2-3%)
  • 这种微小的差异在统计学上完全可以忽略
  • 工具会基于每个 replicate 中实际的 reads 数量进行归一化处理

所以您的核心理解是对的:41 个完整的 pod5 文件被随机分成两组,一组 20 个,另一组 21 个,作为两个伪重复进行后续分析。

肠道微生物组多组学:鸟枪法宏基因组学、代谢组学与精准益生菌

解码肠道微生物组。整合多组学。设计精准益生菌策略。


关于本课程

本次为期3天的研讨会将实用性地介绍肠道微生物组多组学,结合鸟枪法宏基因组学、代谢组学、机器学习和精准益生菌设计。参与者将学习如何使用免费获取的计算工具来分析微生物群落、解释代谢物图谱、整合多组学数据集,并识别具有生物学意义的特征。

每天均包含使用 Google Colab 或 Jupyter Notebook 的动手实践活动,使本研讨会非常适合寻求现代微生物组数据分析实践经验的科研人员和专业人士。

目标

旨在为参与者提供实用的知识和计算技能,以分析肠道微生物组宏基因组和代谢组数据,整合多组学数据集,并将微生物特征转化为数据驱动的精准益生菌策略。

研讨会目标

  • 了解肠道微生物组研究和鸟枪法宏基因组学的基础知识。
  • 对微生物组数据集进行分类学和功能分析。
  • 探索关键的肠道微生物代谢物及代谢组学工作流程。
  • 将统计学和机器学习方法应用于微生物组数据。
  • 整合宏基因组和代谢组数据集。
  • 识别微生物、代谢和功能生物标志物。
  • 理解微生物与代谢物之间的关系。
  • 探索数据驱动的方法,用于精准益生菌候选菌株的优先筛选。
  • 获得使用开源和免费生物信息学工具的实践经验。

研讨会结构

📅 第1天:用于肠道微生物组分析的鸟枪法宏基因组学

  • 重点:了解使用鸟枪法宏基因组学进行肠道微生物组分析、分类学分析、微生物多样性及功能通路解释。
  • 介绍健康、疾病、营养和治疗研究中的肠道微生物组及宿主-微生物相互作用。
  • 了解16S rRNA测序与用于微生物组分析的鸟枪法宏基因组学之间的区别。
  • 处理 FASTQ 数据,进行质量控制、预处理和微生物组数据集的序列读取清洗。
  • 在物种和菌株水平分辨率下,对肠道微生物组样本进行分类学分析。
  • 微生物丰度、多样性分析、功能基因分析及通路水平解释。
  • 解释与肠道健康、菌群失调、疾病状态及益生菌相关性相关的微生物组特征。

🛠️ 动手实践

  • 对肠道微生物组数据集进行分类学和功能分析。

🧰 涵盖工具:Google Colab, Python, FastQC, fastp, Kraken2, Bracken, MetaPhlAn, HUMAnN, pandas, Matplotlib

📅 第2天:肠道代谢组学与微生物-代谢物分析

  • 重点:探索肠道代谢组学、微生物代谢物、数据标准化、生物标志物发现以及微生物-代谢物关联概念。
  • 介绍用于肠道微生物组和宿主反应研究的靶向和非靶向代谢组学。
  • 概述用于肠道代谢物分析的 LC-MS(液相色谱-质谱)、GC-MS(气相色谱-质谱)和基于 NMR(核磁共振)的代谢组学平台。
  • 了解代谢组学数据预处理、标准化、缩放和质量评估。
  • 研究关键的肠道相关代谢物,如短链脂肪酸 (SCFAs)、胆汁酸、色氨酸代谢物以及 TMA/TMAO(三甲胺/氧化三甲胺)。
  • 应用主成分分析 (PCA)、样本聚类和差异代谢物分析来识别代谢特征。
  • 了解肠道健康与疾病研究中的生物标志物发现及微生物-代谢物关联概念。

🛠️ 动手实践

  • 识别和可视化关键的肠道代谢组学特征。

🧰 涵盖工具:Google Colab, Python, pandas, NumPy, SciPy, scikit-learn, Matplotlib, MetaboAnalyst, GNPS

📅 第3天:多组学整合、机器学习与精准益生菌

  • 重点:整合宏基因组和代谢组数据以发现生物标志物、构建预测模型,并优先筛选精准益生菌候选菌株。
  • 整合宏基因组和代谢组数据以进行肠道微生物组多组学分析。
  • 微生物-代谢物相关性分析,以识别微生物与代谢物之间的功能关系。
  • 多组学生物标志物发现、特征选择和数据整合策略。
  • 基于随机森林的预测、ROC-AUC 分析以及肠道微生物组数据集的模型评估。
  • 了解特征重要性,并介绍用于可解释机器学习的 SHAP 方法。
  • 识别与肠道健康和疾病相关特征相关的微生物和代谢功能缺陷。
  • 精准益生菌候选菌株优先筛选、下一代益生菌、合生元及微生物群落概念。

🛠️ 动手实践

  • 构建多组学模型以识别关键的微生物/代谢物特征,并优先筛选益生菌候选菌株。

🧰 涵盖工具:Google Colab, Python, pandas, scikit-learn, SHAP, SciPy, Matplotlib, NetworkX, MOFA2, mixOmics


谁应该报名?

  • 研究人员与研究学者
  • 博士及博士后研究人员
  • 学术界人士与教职员工
  • 微生物学家与微生物组研究人员
  • 生物信息学家与计算生物学家
  • 生物技术与生命科学专业人士
  • 代谢组学与多组学研究人员
  • 营养学与食品科学研究人员
  • 益生菌与功能性食品研究人员
  • 制药与生物技术研发专业人士
  • 从事宿主-微生物相互作用及微生物治疗研究的科学家
  • 对多组学、机器学习和精准微生物组研究感兴趣的专业人士

重要日期

注册截止 2026年9月16日 印度标准时间 (IST) 下午 4:30

研讨会日期 2026年9月16日 – 2026年9月18日 印度标准时间 (IST) 下午 5:30


研讨会成果

研讨会结束后,参与者将能够:

  • 解读鸟枪法宏基因组数据集和微生物丰度图谱。
  • 分析肠道微生物组中的功能基因和代谢通路。
  • 处理并可视化肠道代谢组学数据集。
  • 识别重要的代谢物和微生物生物标志物。
  • 进行微生物-代谢物相关性分析。
  • 应用 PCA、随机森林、ROC-AUC 和特征重要性分析。
  • 整合微生物组和代谢组数据集以进行多组学解释。
  • 识别潜在的功能性和代谢性菌群失调特征。
  • 基于多组学证据优先筛选潜在的益生菌菌株或微生物群落。
  • 使用 Google Colab 和开源工具开发可重复的工作流程。

Gut Microbiome Multi-Omics: Shotgun Metagenomics, Metabolomics & Precision Probiotics

September 16, 2026 Registration closes September 16, 2026

Gut Microbiome Multi-Omics: Shotgun Metagenomics, Metabolomics & Precision Probiotics

Decode the Gut Microbiome. Integrate Multi-Omics. Design Precision Probiotic Strategies. Enroll Now Batch Enrolment More Details

Mode:
Virtual / Online
Type:
Mentor Based
Level:
Advanced
Duration:
3 Days(60-90 min per day)
Starts:
16 September 2026
Time:
5:30 PM IST

About This Course

This 3-day workshop provides a practical introduction to gut microbiome multi-omics, combining shotgun metagenomics, metabolomics, machine learning, and precision probiotic design. Participants will learn how to analyze microbial communities, interpret metabolite profiles, integrate multi-omics datasets, and identify biologically meaningful signatures using freely accessible computational tools.

Each day includes a hands-on activity using Google Colab or Jupyter Notebook, making the workshop suitable for researchers and professionals seeking practical exposure to modern microbiome data analysis.

Aim

To equip participants with practical knowledge and computational skills to analyze gut microbiome metagenomic and metabolomic data, integrate multi-omics datasets, and translate microbial signatures into data-driven precision probiotic strategies. Workshop Objectives

Understand the fundamentals of gut microbiome research and shotgun metagenomics.
Perform taxonomic and functional profiling of microbiome datasets.
Explore key gut microbial metabolites and metabolomics workflows.
Apply statistical and machine learning approaches to microbiome data.
Integrate metagenomic and metabolomic datasets.
Identify microbial, metabolic, and functional biomarkers.
Understand microbe–metabolite relationships.
Explore data-driven approaches for precision probiotic candidate prioritization.
Gain hands-on experience with open-source and freely accessible bioinformatics tools.

Workshop Structure

📅 Day 1: Shotgun Metagenomics for Gut Microbiome Profiling

Focus: Understanding gut microbiome profiling using shotgun metagenomics, taxonomic analysis, microbial diversity, and functional pathway interpretation.
Introduction to gut microbiome and host–microbe interactions in health, disease, nutrition, and therapeutic research.
Understanding the difference between 16S rRNA sequencing and shotgun metagenomics for microbiome analysis.
Working with FASTQ data, quality control, preprocessing, and sequence-read cleaning for microbiome datasets.
Taxonomic profiling of gut microbiome samples at species and strain-level resolution.
Microbial abundance, diversity analysis, functional gene profiling, and pathway-level interpretation.
Interpreting microbiome signatures linked with gut health, dysbiosis, disease states, and probiotic relevance.

🛠️ Hands-on:

Taxonomic and functional profiling of a gut microbiome dataset.

🧰 Tools Covered: Google Colab, Python, FastQC, fastp, Kraken2, Bracken, MetaPhlAn, HUMAnN, pandas, Matplotlib

📅 Day 2: Gut Metabolomics & Microbe–Metabolite Analysis

Focus: Exploring gut metabolomics, microbial metabolites, data normalization, biomarker discovery, and microbe–metabolite association concepts.
Introduction to targeted and untargeted metabolomics for gut microbiome and host-response research.
Overview of LC-MS, GC-MS, and NMR-based metabolomics platforms used in gut metabolite profiling.
Understanding metabolomics data preprocessing, normalization, scaling, and quality assessment.
Studying key gut-related metabolites such as SCFAs, bile acids, tryptophan metabolites, and TMA/TMAO.
Applying PCA, sample clustering, and differential metabolite analysis for metabolic signature identification.
Understanding biomarker discovery and microbe–metabolite association concepts in gut health and disease research.

🛠️ Hands-on:

Identification and visualization of key gut metabolomic signatures.

🧰 Tools Covered: Google Colab, Python, pandas, NumPy, SciPy, scikit-learn, Matplotlib, MetaboAnalyst, GNPS

📅 Day 3: Multi-Omics Integration, Machine Learning & Precision Probiotics

Focus: Integrating metagenomics and metabolomics data to discover biomarkers, build prediction models, and prioritize precision probiotic candidates.
Integration of metagenomics and metabolomics data for gut microbiome multi-omics analysis.
Microbe–metabolite correlation analysis for identifying functional relationships between microbes and metabolites.
Multi-omics biomarker discovery, feature selection, and data integration strategies.
Random Forest-based prediction, ROC-AUC analysis, and model evaluation for gut microbiome datasets.
Understanding feature importance and introduction to SHAP for interpretable machine learning.
Identification of microbial and metabolic functional deficits linked with gut health and disease-associated signatures.
Precision probiotic candidate prioritization, next-generation probiotics, synbiotics, and microbial consortia concepts.

🛠️ Hands-on:

Build a multi-omics model to identify key microbial/metabolite features and prioritize probiotic candidates.

🧰 Tools Covered: Google Colab, Python, pandas, scikit-learn, SHAP, SciPy, Matplotlib, NetworkX, MOFA2, mixOmics Who Should Enrol?

Researchers and Research Scholars
PhD and Postdoctoral Researchers
Academicians and Faculty Members
Microbiologists and Microbiome Researchers
Bioinformaticians and Computational Biologists
Biotechnology and Life Science Professionals
Metabolomics and Omics Researchers
Nutrition and Food Science Researchers
Probiotic and Functional Food Researchers
Pharmaceutical and Biotechnology R&D Professionals
Scientists working in host–microbe interactions and microbial therapeutics
Professionals interested in multi-omics, machine learning, and precision microbiome research

Important Dates Registration Ends

September 16, 2026 IST 4:30 PM

Workshop Dates

September 16, 2026 – September 18, 2026 IST 5:30 PM

Workshop Outcomes

By the end of the workshop, participants will be able to:

Interpret shotgun metagenomics datasets and microbial abundance profiles.
Analyze functional genes and metabolic pathways in the gut microbiome.
Process and visualize gut metabolomics datasets.
Identify important metabolites and microbial biomarkers.
Perform microbe–metabolite correlation analysis.
Apply PCA, Random Forest, ROC-AUC, and feature importance analysis.
Integrate microbiome and metabolomics datasets for multi-omics interpretation.
Identify potential functional and metabolic dysbiosis signatures.
Prioritize potential probiotic strains or microbial consortia based on multi-omics evidence.
Develop reproducible workflows using Google Colab and open-source tools.