Skip to content

Outputs

What each step of the workflow writes, and why it is useful. Everything lands under post_processing_outdir (set in config.yaml); per-sample results live in Samples/<sample>/.

Output directory structure

The tag after each folder marks which CoreBlock step produces it — (pre) preprocessing, (post) postprocessing, (expl) exploration.

<post_processing_outdir>/
├── Samples/<sample>/
│   ├── <sample>_unfiltered.h5ad                    (contract — head or decoupled input)
│   ├── validation/                                 (pre)   input_validation.json
│   ├── qc_sweep/                                    (pre)   optional pre-filter QC diagnostics
│   ├── adata_<sample>.h5ad, metadata_<sample>.tsv   (pre)
│   ├── <sample>_report.tsv                          (pre)
│   ├── leiden_resolution_<r>/                        (pre)
│   ├── adata_<sample>_ingested.h5ad, ingest/         (pre)   optional
│   ├── adata_<sample>_annotated.h5ad, annotation/    (post)
│   └── neighbourhood_analysis/<annot_type>/          (post)
├── spatial_niches/                                  (pre)   optional
├── cluster_annotations_template.tsv                 (pre)   fill this in, then annotate
├── integrated_samples/                              (post)  concatenated + integrated objects, report
├── pseudobulk/<annot_type>/<analysis_level>/        (post)  aggregated/ + de_results/
├── Subcompartments/<name>/                          (post)  optional
└── gene_exploration/                                (expl)

Preprocessing outputs

Rule File What it is
validate_input validation/input_validation.json Confirms the contract is valid and records what was found
qc_sweep qc_sweep/qc_*.png Shows where candidate QC thresholds would remove cells, before filtering
preprocess_umap adata_<sample>.h5ad Filtered, normalised object with PCA, UMAP and multi-resolution clusters
preprocess_umap metadata_<sample>.tsv Per-cell table of clusters and QC metrics
preprocess_umap <sample>_report.tsv Cells before vs after filtering and the cut-offs applied
leiden_analysis leiden_resolution_<r>/ UMAP and spatial plots for each clustering resolution
generate_annotation_template cluster_annotations_template.tsv Empty cluster to cell-type sheet for you to fill in
ingest_ref adata_<sample>_ingested.h5ad, ingest/ Optional reference-based cell-type labels and plots
spatial_niches spatial_niches/tsv/niche_<sample>.tsv, plots/ Optional spatial niches per cell and their plots

Postprocessing outputs

Rule File What it is
annotate_cells adata_<sample>_annotated.h5ad Object with final cell-type labels applied
annotate_cells annotation/ Per-sample annotation and marker plots
integrate_samples integrated_samples/harmony_integrated.h5ad All samples concatenated and batch-integrated
integrate_samples integrated_samples/sketched.h5ad Geometric-sketch subsample for fast plotting
pseudobulk_aggregate pseudobulk/<annot_type>/<analysis_level>/aggregated/ Pseudobulk count matrices and their PCA QC
pseudobulk_de pseudobulk/<annot_type>/<analysis_level>/de_results/ Differential-expression tables and plots
neighbourhood_analysis neighbourhood_analysis/<annot_type>/ Cell-type co-occurrence and enrichment per sample
subcluster Subcompartments/<name>/ Optional re-clustering of a chosen compartment
sample_report integrated_samples/samples_report.pdf One page per sample with UMAP, spatial, dotplot and barplot

Exploration outputs

Rule File What it is
explore_genes_integrated gene_exploration/expression_ranges.tsv Shared expression ranges so plots use one colour scale
explore_genes_integrated gene_exploration/<entry>/Integrated/ Signature scores and dotplots on the integrated object
explore_genes_sample gene_exploration/<entry>/Spatial/ Spatial maps of each gene or signature per sample
explore_genes_sample gene_exploration/<entry>/Dotplots/ Per-sample dotplot composites