ASPIRE is a Nextflow DSL2 workflow for ASV generation, taxonomy assignment, decontamination, metadata-linked ASV summaries, ecological analyses, VOC association analyses, network/module analyses, and optional ASV-to-MAG linkage.
The supported entrypoint is run_asv_pipeline.sh. It bootstraps the controller environment, launches asv_pipeline.nf, manages resume behavior, and supports stage-aware reruns with --rerun-from.
run_asv_pipeline.sh: main wrapper for routine runs.asv_pipeline.nf: current Nextflow workflow.asv_pipeline_nextflow.yml: full config template.examples/set1-2.local.yml: local example config with absolute paths for the LMP test dataset.examples/mock.local.yml: full-module template used by the portable mock config generator.examples/configure_mock_run.sh: validates a supplied mock fixture and writes a machine-local YAML.examples/validate_mock_run.sh: validates the completed mock run against its truth contract.examples/MOCK_DATASET_TESTING.md: expanded mock test instructions.processes/: scripts and conda environment YAMLs used by individual stages.
ASPIRE is developed for a 64-bit Linux environment. Before starting, install:
- Bash and standard GNU command-line utilities.
- Conda or Mamba, with
mambaavailable onPATH. - Git for obtaining and identifying the workflow revision.
- Internet access on the first run to solve Conda environments and download configured SINA and QIIME2/SILVA references. Fully offline runs require pre-populated package caches and local reference paths.
The wrapper creates a repository-local controller environment containing
Nextflow and its Java runtime, then creates process-specific environments from
the committed YAML definitions. Users should not manually combine all process
dependencies into one environment. ASPIRE isolates the run's package cache and
serializes Conda environment creation to prevent concurrent repodata-lock
failures. Environment solves use strict channel priority to avoid pathological
cross-channel backtracking, and module-specific environments avoid the legacy
all-in-one dependency search space. Builds are terminated after 30 minutes by
default rather than hanging indefinitely; set ASPIRE_MAMBA_BUILD_TIMEOUT only
when a slower package source is expected. Analysis tasks remain parallel.
Resource needs depend on sample count and sequencing depth. For the complete
mock benchmark, provision at least 8 CPU cores, 32 GB RAM, and 50 GB of free
storage for input data, Conda environments, Nextflow work files, downloaded
references, and final outputs. resources.threads controls per-task CPU use; it
does not limit the total storage used by cached tasks.
Verify the entrypoint prerequisites:
command -v bash
command -v git
command -v mambaIf mamba is unavailable, install a current Miniforge distribution from
https://github.com/conda-forge/miniforge and open a new shell before running
ASPIRE.
Download and extract the ASPIRE mock dataset from Zenodo (DOI: 10.5281/zenodo.21358300). The direct Zenodo record provides the dataset archive used by this test.
Clone ASPIRE and record the exact revision:
git clone https://github.com/hallamlab/ASPIRE.git
cd ASPIRE
git rev-parse HEADUsing the extracted mock_dataset/, generate a portable configuration. Do not
edit the developer paths in examples/mock.local.yml:
No controller-environment setup or activation is required. The configuration
script creates or updates .controller_env, and the run and validation wrappers
reuse it automatically.
./examples/configure_mock_run.sh \
--dataset /absolute/path/to/mock_dataset \
--output /absolute/path/to/aspire_mock_output \
--config-out mock_run.generated.ymlRun every benchmarked module except optional ASV-to-MAG linkage:
./run_asv_pipeline.sh mock_run.generated.yml --no-resumeValidate both technical completion and recovery of the dataset's known signals:
./examples/validate_mock_run.sh \
--dataset /absolute/path/to/mock_dataset \
--results /absolute/path/to/aspire_mock_outputSuccess is reported as All mock-run checks passed. with exit status zero. The
validator derives sample counts from the supplied manifest and metadata, checks
known mitochondrial/contaminant removal, confirms taxonomy and statistical
outputs, rejects a degenerate network, verifies SVG production, and checks every
published module file against its SHA-256 manifest. See
examples/MOCK_DATASET_TESTING.md for the dataset schema, restart instructions,
and interpretation of failed checks.
The visible output directories are created when the run starts and updated only
after the workflow completes successfully. Nextflow work files, Conda environments,
and internal staging persist under <output_dir>/.aspire/, allowing the same command
to resume interrupted, failed, or completed runs without a separate temporary tree.
For a reproducibility record, retain the ASPIRE Git commit, supplied dataset
checksum table, generated YAML and manifest, launch command, and the completed
summary/tables/ directory. The latter records the resolved run configuration,
input manifest, reference checksums, module inventory, output SHA-256 values,
and integrated master tables.
Review the mock outputs: Open
<output_dir>/summary/report/ASPIRE_run_report.html in a web browser as the
starting point for reviewing the completed run. Its opening Data Accounting
Summary reports analyzed samples, participants, study-group counts, sequence
totals, and retained ASVs, followed by the filtering Sankey, read-depth
swarmplot, ASV-overlap UpSet plot, and collector's curves. The Output
Inventory summarizes the number of tables and plots produced by each module
and links directly to their locations under <output_dir>/modules/. The final
Nextflow run details section links the execution report, timeline, trace,
workflow DAG, launch command, version record, controller log, task inventory,
and per-task logs under <output_dir>/logs/. Exact output paths and SHA-256
checksums remain available in <output_dir>/summary/tables/. The report is an
accounting and navigation aid; it does not provide biological interpretation.
Create a run config from the full template, then edit all paths for your environment:
cp asv_pipeline_nextflow.yml my_run.ymlAt minimum, review:
paths.input_dirpaths.output_dirpaths.manifestpaths.runtime_dirpaths.keep_runtime_dirpaths.work_dirpaths.conda_cache_dir- any
/abs/path/...placeholder - enabled optional branches that require metadata, reference databases, VOC tables, or genome/MAG inputs
Run the pipeline:
./run_asv_pipeline.sh my_run.ymlList valid stage names for targeted reruns:
./run_asv_pipeline.sh --list-stagesLegacy stage names from earlier ASPIRE releases are accepted as rerun aliases
for compatibility, but --list-stages reports the canonical current names.
Force a rerun from one stage onward using the retained default runtime cache:
./run_asv_pipeline.sh my_run.yml --rerun-from PLOT_METADATAPass extra Nextflow options after --:
./run_asv_pipeline.sh my_run.yml -- -with-report report.html -with-trace trace.tsvDirect Nextflow invocation is intended only for debugging because public-output finalization is performed by the wrapper:
nextflow run asv_pipeline.nf --params-file my_run.yml --pipeline_config my_run.ymlReview the outputs: After a successful wrapper run, open
<output_dir>/summary/report/ASPIRE_run_report.html in a web browser. This is
the recommended starting point before biological interpretation. Review the
opening Data Accounting Summary for sample and group composition, sequence
and ASV retention, and the Sankey, swarmplot, UpSet, and collector's-curve
figures. Use the Output Inventory to open each enabled module's tables and
plots under <output_dir>/modules/. Use Nextflow run details to inspect task
status and resource use, execution timing, the workflow DAG, trace data,
software/runtime records, and controller or per-task logs under
<output_dir>/logs/. Machine-readable inventories, exact paths, and checksums
are stored under <output_dir>/summary/tables/.
FASTQs can be discovered from paths.input_dir. Every run writes a normalized,
reusable manifest to <output_dir>/summary/tables/run_manifest.tsv, regardless of
whether discovery or paths.manifest supplied the inputs.
Manifest format:
- Tab-separated; the
sample_id,fastq_r1,fastq_r2header is optional. - Column 1:
sample_id. - Column 2: R1 FASTQ.
- Column 3: R2 FASTQ, optional for single-end data.
- Lines starting with
#are ignored. - Relative FASTQ paths are resolved relative to the manifest file.
See examples/manifest.template.tsv for a reusable template.
Metadata is required by enabled metadata-aware branches such as metadata plots, Sankey, diversity, indicator species, VOC correlation, power analysis, taxonomy patient-aware analysis, lung-status analysis, and several network overlays. The configured sample column must match the manifest sample IDs.
Metadata column names are configured per run (sample_col, type_col,
case_col, patient_col, and related settings); ASPIRE does not require fixed
study-specific names. If the configured color column is absent, ASPIRE assigns
deterministic colors and writes both an augmented metadata table and a reusable
two-column palette under <output_dir>/modules/metadata_plots/tables. Set palette_file in
metadata_plots or sankey to override it. See
examples/metadata_palette.template.tsv.
Reference inputs depend on enabled branches:
sina.referenceand taxonomy references are used for SINA alignment and taxonomy assignment. The config can point at local files or URLs.- Mitochondrial/contaminant decontamination accepts existing database prefixes
through
mito.mito_dbandmito.biof_db, or FASTA inputs throughmito.mito_fastaandmito.contaminant_fasta. ASPIRE exports/copies and rebuilds both as run references under<output_dir>/references/reference/blast_databases. mito.run_mitomaster: falseskips the external MITOMASTER service while retaining taxonomy and local BLAST screens, which is useful for offline tests.voc_correlation.voc_tableis required when VOC correlation is enabled.asv_mag_link.*inputs are required only when ASV-to-MAG linkage is enabled.
The mock quick start demonstrates the software, but it is not a substitute for configuring study-specific inputs. For a new dataset:
- Build a TSV manifest with stable, unique sample IDs and readable FASTQ paths, or verify that filename discovery produces those IDs.
- Make every metadata-aware module use the same sample-ID column and ensure its values match the manifest exactly.
- Copy
asv_pipeline_nextflow.yml, replace every active/abs/path/..., and disable modules whose required metadata/reference inputs are unavailable. - Set trimming, expected amplicon length, and merge parameters for the actual assay; the shipped values are not universal sequencing defaults.
- Run core sequence processing first, inspect read retention and taxonomy, then enable statistical modules in groups.
- Treat palettes, group orders, metadata columns, patient-pairing fields, and biological thresholds as examples that must be adapted.
- Preserve the manifest, supplied YAML, Git revision, logs, and summary checksums with the analysis record.
A module with enabled: true is only runnable when its conditional inputs and
metadata columns are present.
See docs/CONFIGURATION.md for the exhaustive
field-by-field reference to asv_pipeline_nextflow.yml. It records types,
defaults, accepted values, conditional requirements, module dependencies, and
study-specific values. Use this README for the operational walkthrough and the
reference while constructing or reviewing a production YAML.
The wrapper's current stage order is:
FASTP_QCMERGE_READSFILTER_READSRELABEL_FILTEREDCONCAT_FASTASDEREPLICATEDENOISECHIMERA_CHECKCREATE_COUNT_MATRIXFILTER_TABLESINA_TRIMTAXONOMYPREPARE_BLAST_DATABASESMITOMASTERMITO_DECONTAMFILTER_COUNTSGENERAL_STATSPLOT_METADATAGROUPING_DIAGNOSTICSGROUP_LABEL_AUGMENTATIONPLOT_UPSETASV_BATCH_CORRECTIONASV_META_FROM_CORRECTEDBUBBLEPLOTTERUMAP_CLUSTERINGOUTLIER_CHECKERCOLLECTORS_CURVEDIVERSITY_ANALYSISINDICSPECIESINDICSPECIES_PLOTSINDICSPECIES_ALIGNED_PLOTSVOC_CORRELATIONMEASUREMENT_ASSOCIATIONCLUSTERMAPSGROUP_POWER_ANALYSISTAXONOMY_GROUP_ASSOCIATIONPAIRED_GROUP_CONTRASTSPIECEASINETWORK_MODULESASV_MAG_LINKASV_MAG_NETWORKGRAPH_NETWORKMODULE_MAG_ANCHORSSANKEYMASTER_SUMMARY
Disabled optional branches are skipped based on the YAML config.
Stages that do not list a custom ASPIRE script are executed directly by Nextflow using command-line tools. In the core ASV path, fastp is used for read trimming, vsearch is used for read merging, quality filtering, dereplication, denoising, chimera removal, and read-to-ASV mapping, SINA is used for sequence alignment before region trimming, seqkit is used for sequence splitting/statistics, and blastn is used for mitochondrial and contaminant database searches.
| Workflow stage | Script used | Purpose |
|---|---|---|
| Pipeline launch | run_asv_pipeline.sh |
Initializes the controller environment, resolves work/cache directories, and launches asv_pipeline.nf with the selected YAML config. |
| Output finalization | processes/output_layout/organize_outputs.py |
Atomically publishes runtime staging into module tables/plots, intermediates, references, logs, and integrated summary manifests. |
| Workflow orchestration | asv_pipeline.nf |
Defines process order, config parsing, inputs/outputs, conda environments, and enabled/disabled analysis branches. |
FILTER_TABLE |
processes/filter_table/filter_ASV_table.py |
Filters the intermediate ASV count table by minimum sample read depth and minimum ASV abundance. |
SINA_TRIM |
processes/sina_trim/parse_sina_log.py |
Parses SINA variable-region annotations from SINA logs. |
SINA_TRIM |
processes/sina_trim/trim_v_sina.py |
Trims dereplicated ASV sequences to configured variable regions. |
TAXONOMY |
processes/taxonomy/qiime_vs_classifier.py |
Calls the QIIME2 Python API and q2-feature-classifier to classify ASVs against configured SILVA artifacts. |
PREPARE_BLAST_DATABASES |
Command-line blastdbcmd and makeblastdb |
Normalizes configured FASTA files or existing nucleotide database prefixes into archived run-specific BLAST databases. |
MITOMASTER |
processes/mitomaster/mitomaster.py |
Queries MITOMASTER for candidate mitochondrial ASVs. |
MITO_DECONTAM |
processes/mito_decontam/mito_checker.py |
Integrates MITOMASTER, mitochondrial blastn, contaminant blastn, and taxonomy evidence into non-target calls and plots. |
FILTER_COUNTS |
processes/filter_counts/filter_nontarget.py |
Removes non-target, mitochondrial, low-abundance, low-quality taxonomy, and explicitly excluded taxa; writes final ASV_target.tsv. |
PLOT_METADATA |
processes/plot_metadata/plot_metadata.py |
Merges ASV counts with metadata, applies configured control subtraction, and writes ASV metadata tables and plots. |
SANKEY |
processes/sankey/sankey_builder.py |
Builds data-loss Sankey and sample-retention summaries from raw, filtered, decontaminated, and final tables. |
PLOT_UPSET |
processes/plot_upset/plot_upset.py |
Produces ASV/sample overlap plots for raw/final microbial and mitochondrial tables. |
BUBBLEPLOTTER |
processes/bubbleplotter/bubbleplotter.py |
Generates metadata-linked ASV bubble plots. |
UMAP_CLUSTERING |
processes/umap_clustering/umap_clustering.py |
Generates UMAP/HDBSCAN summaries from ASV-linked metadata tables. |
ASV_BATCH_CORRECTION |
processes/asv_batch_correction/asv_batch_correction.py |
Performs optional ASV abundance batch correction and diagnostics. |
OUTLIER_CHECKER |
processes/outlier_checker/outlier_checker.py |
Performs optional outlier detection from configured ASV abundance inputs. |
COLLECTORS_CURVE |
processes/collectors_curve/collectors_curve.py |
Produces species/ASV accumulation curves by metadata group. |
DIVERSITY_ANALYSIS |
processes/diversity_analysis/calc_div.py |
Calculates Shannon diversity, Bray-Curtis distance, and Jaccard distance. |
DIVERSITY_ANALYSIS |
processes/diversity_analysis/plot_diversity.py |
Generates diversity plots, UMAPs, heatmaps, and PERMANOVA outputs. |
DIVERSITY_ANALYSIS patient-aware sub-branch |
processes/bray_patient_aware/run_bray_permanova_patient_aware.R |
Runs optional patient-aware Bray-Curtis PERMANOVA analyses. |
DIVERSITY_ANALYSIS patient-aware sub-branch |
processes/bray_patient_aware/plot_bray_permanova_patient_aware.py |
Plots patient-aware Bray-Curtis PERMANOVA outputs. |
INDICSPECIES |
processes/indicspecies/run_indicspecies.R |
Runs indicator species analysis with the R indicspecies package. |
INDICSPECIES_PLOTS |
processes/indicspecies_plots/plot_indicspecies.py |
Generates standard indicator species plots and summaries. |
INDICSPECIES_PLOTS aligned sub-branch |
processes/indicspecies_aligned_plots/plot_indicspecies_aligned.py |
Generates optional aligned indicator species summaries and figures. |
VOC_CORRELATION |
processes/voc_correlation/plot_voc_corr.py |
Matches VOC and ASV samples, filters ASVs, computes ASV-VOC Spearman correlations, applies FDR and direction filtering, and generates VOC/correlation plots. |
MEASUREMENT_ASSOCIATION |
processes/measurement_association/measurement_association.py |
Associates ASV abundances with configured sample measurements using Spearman correlations, clustermaps, and constrained ordination biplots. |
MEASUREMENT_ASSOCIATION ordination sub-branch |
processes/measurement_association/run_measurement_association.R |
Runs CCA, RDA, and dbRDA models with the R vegan package. |
GROUPING_DIAGNOSTICS |
processes/grouping_diagnostics/grouping_diagnostics.py |
Compares metadata groupings against ASV community distances and validates optional non-outlier soft labels. |
GROUP_LABEL_AUGMENTATION |
processes/group_label_augmentation/group_label_augmentation.py |
Applies only cross-validated, confidence-gated soft labels while preserving observed labels and assignment provenance. |
CLUSTERMAPS |
processes/clustermaps/plot_clustermaps.py |
Generates ASV and metadata clustermaps from configured count and metadata inputs. |
GROUP_POWER_ANALYSIS input build |
processes/master_summary/build_master_asv_summary.py |
Builds long-format ASV summary inputs used by the group power-analysis branch. |
GROUP_POWER_ANALYSIS |
processes/power_analysis_pipeline/run_power_analysis_pipeline.sh |
Launches the power-analysis subworkflow. |
GROUP_POWER_ANALYSIS subworkflow |
scripts under processes/power_analysis_pipeline/ |
Runs simulation-based power analyses for diversity, taxonomic abundance, indicator species, and related plotting. |
TAXONOMY_GROUP_ASSOCIATION input build |
processes/master_summary/build_master_asv_summary.py |
Builds long-format ASV summary inputs used by taxonomy group-association analyses. |
TAXONOMY_GROUP_ASSOCIATION |
processes/taxonomy_patient_aware/run_taxonomic_abundance_analysis.py |
Runs taxonomic abundance comparisons between configured metadata groups. |
TAXONOMY_GROUP_ASSOCIATION |
processes/taxonomy_patient_aware/run_taxonomic_sample_type_analysis.py |
Runs paired or sample-type taxonomic abundance comparisons. |
TAXONOMY_GROUP_ASSOCIATION |
processes/taxonomy_patient_aware/plot_taxonomic_observed_analysis.py |
Plots observed taxonomic abundance analysis outputs. |
PAIRED_GROUP_CONTRAST input build |
processes/master_summary/build_master_asv_summary.py |
Builds long-format ASV summary inputs used by paired group-contrast analyses. |
PAIRED_GROUP_CONTRAST |
processes/lung_status_analysis/prepare_lung_status_data.py |
Derives or accepts paired group labels and prepares per-sample/per-subject tables. |
PAIRED_GROUP_CONTRAST |
processes/lung_status_analysis/run_lung_status_analysis.R |
Runs paired group-contrast statistical analyses. |
PAIRED_GROUP_CONTRAST |
processes/lung_status_analysis/plot_lung_status_analysis.py |
Plots paired group-contrast analysis outputs. |
SPIECEASI |
processes/spieceasi/run_spieceasi.R |
Runs SPIEC-EASI graphical lasso network inference and exports graph/network tables. |
NETWORK_MODULES |
processes/network_modules/network_modules.R |
Detects network modules using configured Leiden/Louvain methods. |
ASV_MAG_NETWORK |
processes/asv_mag_network/asv_mag_network.py |
Integrates ASV-MAG links with optional MAG abundance and functional annotations to build heterogeneous network tables and plots. |
GRAPH_NETWORK |
processes/graph_network/graph_network.py |
Generates network visualizations and ASV/node annotations. |
MODULE_MAG_ANCHORS |
processes/module_mag_anchors/summarize_module_mag_anchors.py |
Summarizes MAG-linked ASVs within network modules. |
MASTER_SUMMARY |
processes/master_summary/build_master_asv_summary.py |
Builds final combined ASV summary tables integrating taxonomy, metadata, indicator species, network, VOC, and optional MAG information. |
ASV_MAG_LINK |
processes/asv_mag_link/asv_mag_barrnap_linker.py |
Links ASVs to barrnap-derived SSU/16S sequences from genome/MAG inputs. |
ASV_MAG_LINK |
processes/asv_mag_link/plot_asv_mag_link.py |
Plots ASV-MAG linkage summaries. |
INDICSPECIES always runs the primary analyses listed in indicspecies.group_cols, preserving the standard outputs such as Type_Group_indicator_species_summary.tsv and Case_indicator_species_summary.tsv.
Additional nested ISA runs can be requested with indicspecies.stratified. Each analysis tests group_col separately within each selected within_col value. For example, the VOC-enabled example config tests cancer/control indicators within each respiratory sample type:
indicspecies:
stratified:
enabled: true
analyses:
- within_col: Type_Group
group_col: Case
levels:
- Oral Rinse
- BAL
- Bronchial BrushThese stratified runs write per-level and pooled tables named like stratified_Case_within_Type_Group_Bronchial_Brush_indicator_species_summary.tsv and stratified_Case_within_Type_Group_indicator_species_summary.tsv.
FILTER_COUNTS produces the ASV count tables used by downstream analyses. The important outputs are:
ASV_target.tsv: final microbial ASV table after contaminant removal, mitochondrial removal, abundance/prevalence filtering, taxonomy-quality filtering, and explicit taxon exclusions.ASV_target.micro.tsv: intermediate microbial table before final abundance/taxonomy filtering; kept for audit and data-loss summaries.ASV_target.decon.tsv: intermediate decontaminated table.ASV_target.mito.tsv: mitochondrial table.
Downstream metadata and VOC analyses use ASV_target.tsv, not the intermediate .micro.tsv, so taxa excluded by final filtering should not re-enter later outputs.
Explicit taxon exclusions are configured with filter_counts.exclude_taxa. Entries are exact, case-insensitive matches against parsed taxonomy ranks, and underscores in configured values are normalized to spaces. Supported forms include strings, maps, and mixed lists:
filter_counts:
enabled: true
exclude_taxa:
- "Species:Homo sapiens"
- "Class:Mammalia"
- Order: PrimatesUse this for host or other known non-target ranks that should be removed even if they pass sequence and abundance filters.
PLOT_METADATA builds the run's metadata-linked ASV products. Typical outputs include:
modules/metadata_plots/tables/ASV_meta_micro.tsvmodules/metadata_plots/tables/ASV_final.micro.tsvmodules/metadata_plots/tables/metadata_updated_micro.tsvmodules/metadata_plots/tables/master_table_micro.tsv- run metadata summaries and plots
When batch correction is enabled, ASPIRE writes before/after diagnostics and then selects the downstream count table according to batch_correction.correction_policy. In auto mode, corrected counts are used only if they reduce batch structure while preserving count-space and configured biological structure; otherwise downstream branches receive the raw uncorrected table. The decision is written to batch_correction/batch_correction_decision.tsv.
VOC_CORRELATION links VOC abundances to filtered ASV abundances. It requires voc_correlation.enabled: true, a metadata table, the final filtered ASV counts, and voc_correlation.voc_table.
Direction filtering is controlled by:
voc_correlation:
enabled: true
correlation_direction: positive # positive, negative, or bothThis setting applies to ASV-VOC correlation tables and ASV-VOC correlation heatmaps. For example, positive keeps only positive ASV-VOC correlations in the reported long table and correlation clustermap, allowing statements such as "VOC abundance was positively correlated with ASV X." Multiple-testing q-values are computed across the tested ASV-VOC pairs before direction filtering.
VOC abundance plots are different from correlation plots:
asv_voc_clustermap*shows ASV-VOC correlation values and respectscorrelation_direction.sample_voc_brush_clustermap*shows per-sample VOC abundance z-scores, not correlations. Blue indicates lower-than-average VOC abundance for that VOC, white is near the VOC mean, and orange indicates higher-than-average abundance.patient_case_voc_barplots_brush*displays per-VOC patient z-scores so VOCs are visually comparable on one axis; statistical tests are still run on original patient-level VOC values.
MEASUREMENT_ASSOCIATION is the generalized association layer for VOC-like, biogeochemical, or other sample-level measurement tables. It uses the metadata-linked ASV outputs, optionally joins an external measurement table, filters ASVs, computes ASV-measurement Spearman correlations with FDR correction, and writes CCA/RDA/dbRDA biplot inputs and figures.
Typical configuration:
measurement_association:
enabled: true
measurement_table: /path/to/measurements.tsv
sample_col: Sample
measurement_sample_col: Sample
measurement_cols: [Oxygen, Nitrate, Temperature, Salinity]
group_col: Type_Group
group_palette: "A=#1f78b4,B=#33a02c"
correlation_direction: both
ordination_methods: cca,rda,dbrdaIf measurement_table is omitted, numeric measurement columns are selected from the merged metadata table. Outputs are written under measurement_association/ by default, including tables/asv_measurement_spearman_long.tsv, plots/asv_measurement_spearman_clustermap.*, ordination score tables, ANOVA tables, and CCA/RDA/dbRDA biplots.
Major optional modules are controlled by YAML enabled flags:
mito: BLAST-based mitochondrial and contaminant screening.non_target_filtering: mitochondrial/contaminant screening, count filtering, audit tables, and explicit taxon exclusions.general_stats: run-level ASV and sample summaries.metadata_plots: metadata-linked ASV summary tables and plots.plot_upset,bubbleplotter,umap_clustering: metadata visualization branches.batch_correctionandoutlier_detection: corrected ASV tables and outlier checks.collectors_curve: rarefaction/collector curve summaries.diversity: Shannon, Bray-Curtis, Jaccard, and optional patient-aware diversity workflows.indicator_analysis: indicator species tables, standard plots, and aligned indicator plots.voc_correlation: VOC-ASV association analysis and VOC abundance visualizations.measurement_association: generalized sample-measurement associations, clustermaps, and CCA/RDA/dbRDA biplots.clustermaps: ASV and metadata heatmaps.network_analysis: SPIEC-EASI inference, module detection, network visualization, and optional module/MAG anchor tables.power_analysis: patient-aware power analysis using metadata-linked ASV tables.taxonomy: taxonomic assignment and patient-aware taxonomic comparisons.lung_status_analysis: patient-aware lung-status comparisons.asv_mag_linkandmodule_mag_anchors: ASV-to-MAG/barrnap linkage and module anchoring.sankey: data-loss and filtering Sankey summaries.master_summary: final combined ASV summary export.
Successful wrapper runs atomically publish a clean output tree:
<output_dir>/
├── .aspire/ # persistent Nextflow work, Conda cache, and internal staging
├── modules/
│ └── <module>/
│ ├── tables/
│ └── plots/
├── intermediates/
├── references/
├── summary/
│ ├── tables/
│ ├── plots/
│ └── report/
└── logs/
Each enabled analytical module receives both tables/ and plots/, even when
one is empty. intermediates/ contains core FASTQ, FASTA, and ASV-processing
artifacts. summary/tables/module_output_manifest.tsv inventories and
checksums every module deliverable. The summary also contains the supplied run
configuration, normalized input manifest, per-module file/size totals,
reference checksums, an intermediate-file inventory, and the integrated master
ASV tables when master_summary is enabled. summary/plots/module_output_summary.svg
visualizes the published module inventory, and
summary/report/ASPIRE_run_report.html provides
an integrated, navigable run report. Its opening data-accounting section summarizes
analyzed samples, participants, group membership, retained ASVs, and sequence totals,
and displays the Sankey, read-depth swarmplot, and ASV-overlap UpSet without adding
biological interpretation. A combined collector's curve adds descriptive sampling-
coverage context. The report then inventories module outputs and links to
Nextflow's execution report, timeline, trace table, and workflow DAG. These artifacts are generated by
default under logs/, alongside the recorded launch command and Nextflow
version. logs/controller.log captures the complete Nextflow/controller stream;
logs/task_execution.tsv and logs/tasks/ preserve the command, stdout, stderr,
trace, and exit code available for every task in the completed run. External
Nextflow integrations that require services or credentials, such as Tower,
webhooks, notifications, and telemetry exporters, remain opt-in. The publication
also writes summary/tables/nextflow_artifact_manifest.tsv with paths, sizes,
and SHA-256 checksums for all archived run records. The publication is assembled from runtime
staging only after Nextflow succeeds, so the visible output is never left in a
half-organized state.
By default, an output such as /project/run/ASPIRE_output keeps its runtime
state in a hidden directory inside that output:
ASPIRE_output/.aspire/
├── nf_work/
├── conda_cache/
└── publication_staging/
The wrapper creates the visible modular directories at run start. After a
successful workflow, it atomically replaces only modules/, intermediates/,
references/, summary/, and logs/; .aspire/ is never replaced during
publication. Set paths.runtime_dir to relocate the runtime tree. Runtime state
is retained by default so normal -resume and --rerun-from execution remains
available after successful, failed, and interrupted runs. Set
paths.keep_runtime_dir: false only when the cache should be discarded after a
successful run. Explicit
paths.work_dir and paths.conda_cache_dir values override their respective
derived paths.
Rerunning the same wrapper command resumes from the retained Nextflow cache. If a
branch does not rerun because cached outputs are valid, use --rerun-from STAGE_NAME.
Several stages include checksums of external process scripts in their task commands, so edits to important Python/R helper scripts invalidate the relevant Nextflow task cache. This avoids stale outputs when a script changes but the input filenames stay the same.
If environment creation fails while collecting repodata with
BlockingIOError: [Errno 11] Resource temporarily unavailable, the failure is
a Conda cache-lock collision rather than evidence of an unavailable package.
Current wrapper runs use a run-local package cache and serialize environment
creation through flock. Restart the failed run normally; its retained
Nextflow work directory remains resumable. DNS, connection-timeout, or HTTP
errors instead indicate network or repository availability and are retried by
the controller before the run fails.
Interrupted Nextflow sessions can also leave .env-*.lock marker files even
when no mamba process remains. The wrapper takes an exclusive lock on the
configured Conda cache, rejects concurrent runs that share that cache, and then
removes these orphaned markers automatically. Messages about waiting for the
serialized mamba slot indicate active environment creation, not a deadlock.
No usable entries detected in manifest: check tab separation, sample IDs, and FASTQ paths.metadata file not found: set the branch-specific metadata path or disable that branch.- Host taxa still appear downstream: confirm
filter_counts.exclude_taxais set and rerun fromFILTER_COUNTSor at least fromPLOT_METADATAif the finalASV_target.tsvis already corrected. - VOC direction did not change outputs: rerun from
VOC_CORRELATION. - Sankey complains about intermediates: set
filter_counts.save_intermediates: true. - BLAST database errors: set
mito.mito_dbandmito.biof_dbto valid database prefixes or compatible FASTA paths. - Conda solve errors: confirm
mambais available and review the relevantenvironments.*config entry.