# evotools/nf-lo architecture

> Architecture diagram of the GitHub repository evotools/nf-lo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/evotools/nf-lo
- Repository: https://github.com/evotools/nf-lo

## Overview

nf-LO is a Nextflow pipeline that turns source and target genome assemblies into UCSC liftOver-compatible chain files. Users provide FASTA inputs or identify assemblies for retrieval, select an aligner and distance preset, then run alignment and downstream processing. The repository separates acquisition, preprocessing, aligner-specific workflows, and postprocessing. The README documents these capabilities, but no source excerpts were provided, so implementation-level call ownership cannot be verified; uncertain module links are omitted or marked unverified.

Main entry points: [`main.nf`](https://github.com/evotools/nf-lo/blob/main/main.nf) (nf-LO workflow), [`modules/subworkflows/data.nf`](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/data.nf) (Genome acquisition), [`modules/subworkflows/preprocess.nf`](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/preprocess.nf) (Genome preprocessing), [`modules/subworkflows/lastz.nf`](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/lastz.nf) (lastz alignment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Genome inputs"]
  node_workflow["nf-LO workflow<br/>[main.nf]"]
  node_dataflow["Genome acquisition<br/>[data.nf]"]
  node_dataset["NCBI datasets<br/>[main.nf]"]
  node_igenomes["iGenomes inputs<br/>[main.nf]"]
end

subgraph group_prep["Preparation"]
  node_preprocess["Genome preprocessing<br/>[preprocess.nf]"]
  node_preprocess_task["Preprocess task<br/>[main.nf]"]
end

subgraph group_alignment["Genome alignment"]
  node_lastz["lastz alignment<br/>[lastz.nf]"]
  node_lastz_task["lastz task<br/>[main.nf]"]
  node_blat["BLAT alignment<br/>[blat.nf]"]
  node_blat_task["BLAT task<br/>[main.nf]"]
  node_minimap2["minimap2 alignment<br/>[minimap2.nf]"]
  node_minimap2_task["minimap2 task<br/>[main.nf]"]
  node_gsalign["GSAlign alignment<br/>[GSAlign.nf]"]
  node_gsalign_task["GSAlign task<br/>[main.nf]"]
end

subgraph group_results["Chain output"]
  node_liftover["Chain generation<br/>[liftover.nf]"]
  node_postprocess["Alignment postprocess<br/>[main.nf]"]
end

node_user(("Pipeline user"))

node_user -->|"runs"| node_workflow
node_workflow -.->|"selects genomes"| node_dataflow
node_dataflow -.->|"retrieves assemblies"| node_dataset
node_dataflow -.->|"retrieves assemblies"| node_igenomes
node_workflow -.->|"prepares genomes"| node_preprocess
node_preprocess -.->|"runs"| node_preprocess_task
node_workflow -->|"selects aligner"| node_lastz
node_workflow -->|"selects aligner"| node_blat
node_workflow -->|"selects aligner"| node_minimap2
node_workflow -->|"selects aligner"| node_gsalign
node_lastz -.->|"runs"| node_lastz_task
node_blat -.->|"runs"| node_blat_task
node_minimap2 -.->|"runs"| node_minimap2_task
node_gsalign -.->|"runs"| node_gsalign_task
node_workflow -->|"produces chain"| node_liftover
node_liftover -.->|"uses processing"| node_postprocess

click node_workflow "https://github.com/evotools/nf-lo/blob/main/main.nf"
click node_dataflow "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/data.nf"
click node_dataset "https://github.com/evotools/nf-lo/blob/main/modules/processes/datasets/main.nf"
click node_igenomes "https://github.com/evotools/nf-lo/blob/main/modules/processes/datasets/main.nf"
click node_preprocess "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/preprocess.nf"
click node_preprocess_task "https://github.com/evotools/nf-lo/blob/main/modules/processes/preprocess/main.nf"
click node_lastz "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/lastz.nf"
click node_lastz_task "https://github.com/evotools/nf-lo/blob/main/modules/processes/lastz/main.nf"
click node_blat "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/blat.nf"
click node_blat_task "https://github.com/evotools/nf-lo/blob/main/modules/processes/blat/main.nf"
click node_minimap2 "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/minimap2.nf"
click node_minimap2_task "https://github.com/evotools/nf-lo/blob/main/modules/processes/minimap2/main.nf"
click node_gsalign "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/GSAlign.nf"
click node_gsalign_task "https://github.com/evotools/nf-lo/blob/main/modules/processes/GSAlign/main.nf"
click node_liftover "https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/liftover.nf"
click node_postprocess "https://github.com/evotools/nf-lo/blob/main/modules/processes/postprocess/main.nf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_workflow,node_dataflow,node_dataset,node_igenomes,node_user toneBlue
class node_preprocess,node_preprocess_task toneAmber
class node_lastz,node_lastz_task,node_blat,node_blat_task,node_minimap2,node_minimap2_task,node_gsalign,node_gsalign_task toneMint
class node_liftover,node_postprocess toneRose
```

## Components

### Genome inputs

- [nf-LO workflow](https://github.com/evotools/nf-lo/blob/main/main.nf): `main.nf`
- [Genome acquisition](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/data.nf): `modules/subworkflows/data.nf`
- [NCBI datasets](https://github.com/evotools/nf-lo/blob/main/modules/processes/datasets/main.nf): `modules/processes/datasets/main.nf`
- [iGenomes inputs](https://github.com/evotools/nf-lo/blob/main/modules/processes/datasets/main.nf): `modules/processes/datasets/main.nf`

### Preparation

- [Genome preprocessing](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/preprocess.nf): `modules/subworkflows/preprocess.nf`
- [Preprocess task](https://github.com/evotools/nf-lo/blob/main/modules/processes/preprocess/main.nf): `modules/processes/preprocess/main.nf`

### Genome alignment

- [lastz alignment](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/lastz.nf): `modules/subworkflows/lastz.nf`
- [lastz task](https://github.com/evotools/nf-lo/blob/main/modules/processes/lastz/main.nf): `modules/processes/lastz/main.nf`
- [BLAT alignment](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/blat.nf): `modules/subworkflows/blat.nf`
- [BLAT task](https://github.com/evotools/nf-lo/blob/main/modules/processes/blat/main.nf): `modules/processes/blat/main.nf`
- [minimap2 alignment](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/minimap2.nf): `modules/subworkflows/minimap2.nf`
- [minimap2 task](https://github.com/evotools/nf-lo/blob/main/modules/processes/minimap2/main.nf): `modules/processes/minimap2/main.nf`
- [GSAlign alignment](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/GSAlign.nf): `modules/subworkflows/GSAlign.nf`
- [GSAlign task](https://github.com/evotools/nf-lo/blob/main/modules/processes/GSAlign/main.nf): `modules/processes/GSAlign/main.nf`

### Chain output

- [Chain generation](https://github.com/evotools/nf-lo/blob/main/modules/subworkflows/liftover.nf): `modules/subworkflows/liftover.nf`
- [Alignment postprocess](https://github.com/evotools/nf-lo/blob/main/modules/processes/postprocess/main.nf): `modules/processes/postprocess/main.nf`

### Other components

- **Pipeline user**

## Connections

- Pipeline user → nf-LO workflow: runs (evidence: `README.md`)
- nf-LO workflow → Genome acquisition: selects genomes
- Genome acquisition → NCBI datasets: retrieves assemblies
- Genome acquisition → iGenomes inputs: retrieves assemblies
- nf-LO workflow → Genome preprocessing: prepares genomes
- Genome preprocessing → Preprocess task: runs
- nf-LO workflow → lastz alignment: selects aligner (evidence: `README.md`)
- nf-LO workflow → BLAT alignment: selects aligner (evidence: `README.md`)
- nf-LO workflow → minimap2 alignment: selects aligner (evidence: `README.md`)
- nf-LO workflow → GSAlign alignment: selects aligner (evidence: `README.md`)
- lastz alignment → lastz task: runs
- BLAT alignment → BLAT task: runs
- minimap2 alignment → minimap2 task: runs
- GSAlign alignment → GSAlign task: runs
- nf-LO workflow → Chain generation: produces chain (evidence: `README.md`)
- Chain generation → Alignment postprocess: uses processing
