# reeper316099/sequencescope architecture

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

- Interactive diagram: https://gitdiagram.com/reeper316099/sequencescope
- Repository: https://github.com/reeper316099/sequencescope

## Overview

SequenceScope is an offline educational desktop application for sequence alignment and evolutionary-tree workflows. Users enter or load sequences, inspect pairwise or multiple alignments, derive distances and trees, and explore results through interactive views; projects can also be saved and reopened. The TypeScript interface delegates computation through a Rust-backed Tauri layer to a Rust bioinformatics core. The README documents the broader feature set, while sampled source excerpts show selected UI wiring and core behavior; some backend dispatch details are therefore left unconnected.

Main entry points: [`src-tauri/src/compute.rs`](https://github.com/reeper316099/sequencescope/blob/main/src-tauri/src/compute.rs) (Job compute), [`src/main.ts`](https://github.com/reeper316099/sequencescope/blob/main/src/main.ts) (App orchestration), [`src/backend/api.ts`](https://github.com/reeper316099/sequencescope/blob/main/src/backend/api.ts) (Bio API), [`src/ui/treesView.ts`](https://github.com/reeper316099/sequencescope/blob/main/src/ui/treesView.ts) (Trees view)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_app["App orchestration<br/>[main.ts]"]
  node_pairview["Align view<br/>[alignView.ts]"]
  node_distanceview["Distances view<br/>[distancesView.ts]"]
  node_treesview["Trees view<br/>[treesView.ts]"]
  node_msaview["MSA view<br/>[msaView.ts]"]
  node_treevisual["Tree viewer<br/>[treeView.ts]"]
  node_learnview["Learn view<br/>[learnView.ts]"]
end

subgraph group_workflow["Sequence workflows"]
  node_compare["Tree comparison<br/>[compareView.ts]"]
end

subgraph group_engine["Rust algorithms"]
  node_pairwise["Pairwise alignment<br/>[pairwise.rs]"]
  node_distances["Distance models<br/>[distance.rs]"]
  node_trees["Tree inference<br/>[upgma.rs]"]
  node_nj["Neighbor joining<br/>[nj.rs]"]
  node_bootstrap["Column bootstrap<br/>[bootstrap.rs]"]
  node_msa["Progressive alignment<br/>[msa.rs]"]
  node_newick["Newick and trees<br/>[newick.rs]"]
  node_treecompare["Tree comparison core<br/>[treecompare.rs]"]
end

subgraph group_bridge["Desktop bridge"]
  node_api["Bio API<br/>[api.ts]"]
  node_workers["Job workers<br/>[index.ts]"]
  node_rustworker["Rust worker adapter<br/>[rust.ts]"]
  node_tauri["Tauri commands<br/>[lib.rs]"]
  node_compute["Job compute<br/>[compute.rs]"]
end

subgraph group_state["Files and state"]
  node_projects["Project files<br/>[project.ts]"]
  node_results["Shared result types<br/>[results.ts]"]
end

node_user(("Researcher"))

node_user -->|"uses"| node_app
node_app -->|"creates"| node_pairview
node_app -->|"creates"| node_distanceview
node_app -->|"creates"| node_treesview
node_app -->|"creates"| node_msaview
node_app -->|"saves and loads"| node_projects
node_msaview -->|"sends alignment"| node_distanceview
node_treesview -->|"renders trees"| node_treevisual
node_treesview -->|"offers comparison"| node_compare
node_compare -->|"renders comparison"| node_treevisual
node_compare -->|"compares trees"| node_api
node_user -->|"explores concepts"| node_learnview
node_pairview -.->|"requests alignment"| node_api
node_distanceview -.->|"requests distances"| node_api
node_treesview -->|"requests trees"| node_api
node_api -->|"creates jobs"| node_workers
node_workers -->|"instantiates"| node_rustworker
node_rustworker -.->|"invokes commands"| node_tauri
node_tauri -->|"registers compute"| node_compute
node_compute -.->|"runs alignment"| node_pairwise
node_compute -.->|"computes distances"| node_distances
node_compute -.->|"builds trees"| node_trees
node_compute -.->|"builds trees"| node_nj
node_compute -.->|"runs bootstrap"| node_bootstrap
node_compute -.->|"runs alignment"| node_msa
node_compute -.->|"tree operations"| node_newick
node_compute -.->|"tree operations"| node_treecompare
node_api -->|"uses contracts"| node_results

click node_app "https://github.com/reeper316099/sequencescope/blob/main/src/main.ts"
click node_pairview "https://github.com/reeper316099/sequencescope/blob/main/src/ui/alignView.ts"
click node_distanceview "https://github.com/reeper316099/sequencescope/blob/main/src/ui/distancesView.ts"
click node_treesview "https://github.com/reeper316099/sequencescope/blob/main/src/ui/treesView.ts"
click node_msaview "https://github.com/reeper316099/sequencescope/blob/main/src/ui/msaView.ts"
click node_treevisual "https://github.com/reeper316099/sequencescope/blob/main/src/ui/treeView.ts"
click node_learnview "https://github.com/reeper316099/sequencescope/blob/main/src/ui/learnView.ts"
click node_compare "https://github.com/reeper316099/sequencescope/blob/main/src/ui/compareView.ts"
click node_api "https://github.com/reeper316099/sequencescope/blob/main/src/backend/api.ts"
click node_workers "https://github.com/reeper316099/sequencescope/blob/main/src/backend/index.ts"
click node_rustworker "https://github.com/reeper316099/sequencescope/blob/main/src/backend/rust.ts"
click node_tauri "https://github.com/reeper316099/sequencescope/blob/main/src-tauri/src/lib.rs"
click node_compute "https://github.com/reeper316099/sequencescope/blob/main/src-tauri/src/compute.rs"
click node_pairwise "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/pairwise.rs"
click node_distances "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/distance.rs"
click node_trees "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/upgma.rs"
click node_nj "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/nj.rs"
click node_bootstrap "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/bootstrap.rs"
click node_msa "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/msa.rs"
click node_newick "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/newick.rs"
click node_treecompare "https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/treecompare.rs"
click node_projects "https://github.com/reeper316099/sequencescope/blob/main/src/io/project.ts"
click node_results "https://github.com/reeper316099/sequencescope/blob/main/src/shared/results.ts"

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_app,node_pairview,node_distanceview,node_treesview,node_msaview,node_treevisual,node_learnview toneBlue
class node_compare toneAmber
class node_pairwise,node_distances,node_trees,node_nj,node_bootstrap,node_msa,node_newick,node_treecompare toneMint
class node_api,node_workers,node_rustworker,node_tauri,node_compute toneRose
class node_projects,node_results,node_user toneIndigo
```

## Components

### User interface

- [App orchestration](https://github.com/reeper316099/sequencescope/blob/main/src/main.ts): `src/main.ts`
- [Align view](https://github.com/reeper316099/sequencescope/blob/main/src/ui/alignView.ts): `src/ui/alignView.ts`
- [Distances view](https://github.com/reeper316099/sequencescope/blob/main/src/ui/distancesView.ts): `src/ui/distancesView.ts`
- [Trees view](https://github.com/reeper316099/sequencescope/blob/main/src/ui/treesView.ts): `src/ui/treesView.ts`
- [MSA view](https://github.com/reeper316099/sequencescope/blob/main/src/ui/msaView.ts): `src/ui/msaView.ts`
- [Tree viewer](https://github.com/reeper316099/sequencescope/blob/main/src/ui/treeView.ts): `src/ui/treeView.ts`
- [Learn view](https://github.com/reeper316099/sequencescope/blob/main/src/ui/learnView.ts): `src/ui/learnView.ts`

### Sequence workflows

- [Tree comparison](https://github.com/reeper316099/sequencescope/blob/main/src/ui/compareView.ts): `src/ui/compareView.ts`

### Rust algorithms

- [Pairwise alignment](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/pairwise.rs): `crates/sequencescope-core/src/pairwise.rs`
- [Distance models](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/distance.rs): `crates/sequencescope-core/src/distance.rs`
- [Tree inference](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/upgma.rs): `crates/sequencescope-core/src/upgma.rs`
- [Neighbor joining](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/nj.rs): `crates/sequencescope-core/src/nj.rs`
- [Column bootstrap](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/bootstrap.rs): `crates/sequencescope-core/src/bootstrap.rs`
- [Progressive alignment](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/msa.rs): `crates/sequencescope-core/src/msa.rs`
- [Newick and trees](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/newick.rs): `crates/sequencescope-core/src/newick.rs`
- [Tree comparison core](https://github.com/reeper316099/sequencescope/blob/main/crates/sequencescope-core/src/treecompare.rs): `crates/sequencescope-core/src/treecompare.rs`

### Desktop bridge

- [Bio API](https://github.com/reeper316099/sequencescope/blob/main/src/backend/api.ts): `src/backend/api.ts`
- [Job workers](https://github.com/reeper316099/sequencescope/blob/main/src/backend/index.ts): `src/backend/index.ts`
- [Rust worker adapter](https://github.com/reeper316099/sequencescope/blob/main/src/backend/rust.ts): `src/backend/rust.ts`
- [Tauri commands](https://github.com/reeper316099/sequencescope/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Job compute](https://github.com/reeper316099/sequencescope/blob/main/src-tauri/src/compute.rs): `src-tauri/src/compute.rs`

### Files and state

- [Project files](https://github.com/reeper316099/sequencescope/blob/main/src/io/project.ts): `src/io/project.ts`
- [Shared result types](https://github.com/reeper316099/sequencescope/blob/main/src/shared/results.ts): `src/shared/results.ts`

### Other components

- **Researcher**

## Connections

- Researcher → App orchestration: uses (evidence: `README.md`)
- App orchestration → Align view: creates (evidence: `src/main.ts`)
- App orchestration → Distances view: creates (evidence: `src/main.ts`)
- App orchestration → Trees view: creates (evidence: `src/main.ts`)
- App orchestration → MSA view: creates (evidence: `src/main.ts`)
- App orchestration → Project files: saves and loads (evidence: `src/main.ts`)
- MSA view → Distances view: sends alignment (evidence: `src/main.ts`)
- Trees view → Tree viewer: renders trees (evidence: `src/ui/treesView.ts`)
- Trees view → Tree comparison: offers comparison (evidence: `src/ui/treesView.ts`)
- Tree comparison → Tree viewer: renders comparison (evidence: `src/ui/compareView.ts`)
- Tree comparison → Bio API: compares trees (evidence: `src/ui/compareView.ts`)
- Researcher → Learn view: explores concepts (evidence: `README.md`)
- Align view → Bio API: requests alignment
- Distances view → Bio API: requests distances
- Trees view → Bio API: requests trees (evidence: `src/ui/treesView.ts`)
- Bio API → Job workers: creates jobs (evidence: `src/backend/api.ts`)
- Job workers → Rust worker adapter: instantiates (evidence: `src/backend/index.ts`)
- Rust worker adapter → Tauri commands: invokes commands
- Tauri commands → Job compute: registers compute (evidence: `src-tauri/src/lib.rs`)
- Job compute → Pairwise alignment: runs alignment
- Job compute → Distance models: computes distances
- Job compute → Tree inference: builds trees
- Job compute → Neighbor joining: builds trees
- Job compute → Column bootstrap: runs bootstrap
- Job compute → Progressive alignment: runs alignment
- Job compute → Newick and trees: tree operations
- Job compute → Tree comparison core: tree operations
- Bio API → Shared result types: uses contracts (evidence: `src/backend/api.ts`)
