# impressio/antipsychotics architecture

> Architecture diagram of the GitHub repository impressio/antipsychotics, 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/impressio/antipsychotics
- Repository: https://github.com/impressio/antipsychotics

## Overview

AP·D₂ is a static interactive teaching app. The browser workflow starts at the main page, loads the pharmacology dataset, and coordinates interactive receptor, pathway/distribution, substance, administration-route, pharmacodynamics, and pharmacokinetics views; a separate data page exposes sourced values and model validation. The graph preserves documented capabilities, but source excerpts do not show all startup wiring, so unsampled links are omitted rather than inferred.

Main entry points: [`assets/data/properties.json`](https://github.com/impressio/antipsychotics/blob/master/assets/data/properties.json) (Pharmacology data), [`js/distribution.js`](https://github.com/impressio/antipsychotics/blob/master/js/distribution.js) (Regional distribution), [`js/structure.js`](https://github.com/impressio/antipsychotics/blob/master/js/structure.js) (3D receptor), [`js/pk.js`](https://github.com/impressio/antipsychotics/blob/master/js/pk.js) (Pharmacokinetics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App coordination"]
  node_main["App coordinator<br/>[main.js]"]
  node_model_files["Model file loader<br/>[model-files.js]"]
  node_i18n["English Swedish text<br/>[en.json]"]
end

subgraph group_science["Pharmacology exploration"]
  node_receptor["Receptor mechanism<br/>[receptor.js]"]
  node_structure["3D receptor<br/>[structure.js]"]
  node_receptor_assets["Receptor assets<br/>[6CM4.pdb.gz]"]
  node_pose_assets["Ligand poses<br/>[d2-poses.json]"]
  node_distribution["Regional distribution<br/>[distribution.js]"]
  node_brain3d["3D brain viewer<br/>[brain3d.js]"]
  node_brain_assets["Brain model assets<br/>[brain-mesh.json]"]
  node_brain_map["2D brain map assets<br/>[brain-2d.json]"]
  node_substrates["Substances metabolism<br/>[substrates.js]"]
  node_routes["Administration routes<br/>[routes.js]"]
end

subgraph group_models["Quantitative models"]
  node_pd["Pharmacodynamics<br/>[pd.js]"]
  node_pk["Pharmacokinetics<br/>[pk.js]"]
  node_models_logic["PD and PK models<br/>[models.js]"]
end

subgraph group_data["Data and sources"]
  node_data_loader["Data loader<br/>[data.js]"]
  node_domain_data["Pharmacology data<br/>[properties.json]"]
  node_properties["Data tables validation<br/>[properties.js]"]
  node_source_check["Source verification<br/>[check_sources.py]"]
  node_references["Source references<br/>[properties.json]"]
end

node_learner(("Learner"))

node_learner -->|"opens app"| node_main
node_main -->|"loads data"| node_data_loader
node_data_loader -->|"fetches"| node_domain_data
node_structure -->|"loads assets"| node_model_files
node_structure -->|"loads structure"| node_receptor_assets
node_structure -->|"loads poses"| node_pose_assets
node_distribution -->|"loads assets"| node_model_files
node_distribution -->|"loads map"| node_brain_map
node_distribution -->|"updates selection"| node_brain3d
node_distribution -.->|"renders meshes"| node_brain_assets
node_pd -->|"syncs concentration"| node_receptor
node_routes -->|"syncs route"| node_main
node_routes -->|"reads route model"| node_pk
node_pk -->|"simulates"| node_models_logic
node_pk -.->|"uses parameters"| node_domain_data
node_properties -->|"reads values"| node_domain_data
node_properties -->|"validates predictions"| node_models_logic
node_source_check -->|"checks sources"| node_domain_data
node_domain_data -->|"records citations"| node_references
node_learner -->|"opens data page"| node_properties
node_domain_data -->|"translates descriptions"| node_i18n

click node_main "https://github.com/impressio/antipsychotics/blob/master/js/main.js"
click node_data_loader "https://github.com/impressio/antipsychotics/blob/master/js/data.js"
click node_domain_data "https://github.com/impressio/antipsychotics/blob/master/assets/data/properties.json"
click node_receptor "https://github.com/impressio/antipsychotics/blob/master/js/receptor.js"
click node_structure "https://github.com/impressio/antipsychotics/blob/master/js/structure.js"
click node_model_files "https://github.com/impressio/antipsychotics/blob/master/js/model-files.js"
click node_receptor_assets "https://github.com/impressio/antipsychotics/blob/master/assets/models/6CM4.pdb.gz"
click node_pose_assets "https://github.com/impressio/antipsychotics/blob/master/assets/models/d2-poses.json"
click node_pd "https://github.com/impressio/antipsychotics/blob/master/js/pd.js"
click node_distribution "https://github.com/impressio/antipsychotics/blob/master/js/distribution.js"
click node_brain3d "https://github.com/impressio/antipsychotics/blob/master/js/brain3d.js"
click node_brain_assets "https://github.com/impressio/antipsychotics/blob/master/assets/models/brain-mesh.json"
click node_brain_map "https://github.com/impressio/antipsychotics/blob/master/assets/models/brain-2d.json"
click node_substrates "https://github.com/impressio/antipsychotics/blob/master/js/substrates.js"
click node_routes "https://github.com/impressio/antipsychotics/blob/master/js/routes.js"
click node_pk "https://github.com/impressio/antipsychotics/blob/master/js/pk.js"
click node_models_logic "https://github.com/impressio/antipsychotics/blob/master/js/models.js"
click node_properties "https://github.com/impressio/antipsychotics/blob/master/js/properties.js"
click node_source_check "https://github.com/impressio/antipsychotics/blob/master/tools/check_sources.py"
click node_references "https://github.com/impressio/antipsychotics/blob/master/assets/data/properties.json"
click node_i18n "https://github.com/impressio/antipsychotics/blob/master/assets/i18n/en.json"

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_main,node_model_files,node_i18n toneBlue
class node_receptor,node_structure,node_receptor_assets,node_pose_assets,node_distribution,node_brain3d,node_brain_assets,node_brain_map,node_substrates,node_routes toneAmber
class node_pd,node_pk,node_models_logic toneMint
class node_data_loader,node_domain_data,node_properties,node_source_check,node_references toneRose
class node_learner toneIndigo
```

## Components

### App coordination

- [App coordinator](https://github.com/impressio/antipsychotics/blob/master/js/main.js): `js/main.js`
- [Model file loader](https://github.com/impressio/antipsychotics/blob/master/js/model-files.js): `js/model-files.js`
- [English Swedish text](https://github.com/impressio/antipsychotics/blob/master/assets/i18n/en.json): `assets/i18n/en.json`

### Pharmacology exploration

- [Receptor mechanism](https://github.com/impressio/antipsychotics/blob/master/js/receptor.js): `js/receptor.js`
- [3D receptor](https://github.com/impressio/antipsychotics/blob/master/js/structure.js): `js/structure.js`
- [Receptor assets](https://github.com/impressio/antipsychotics/blob/master/assets/models/6CM4.pdb.gz): `assets/models/6CM4.pdb.gz`
- [Ligand poses](https://github.com/impressio/antipsychotics/blob/master/assets/models/d2-poses.json): `assets/models/d2-poses.json`
- [Regional distribution](https://github.com/impressio/antipsychotics/blob/master/js/distribution.js): `js/distribution.js`
- [3D brain viewer](https://github.com/impressio/antipsychotics/blob/master/js/brain3d.js): `js/brain3d.js`
- [Brain model assets](https://github.com/impressio/antipsychotics/blob/master/assets/models/brain-mesh.json): `assets/models/brain-mesh.json`
- [2D brain map assets](https://github.com/impressio/antipsychotics/blob/master/assets/models/brain-2d.json): `assets/models/brain-2d.json`
- [Substances metabolism](https://github.com/impressio/antipsychotics/blob/master/js/substrates.js): `js/substrates.js`
- [Administration routes](https://github.com/impressio/antipsychotics/blob/master/js/routes.js): `js/routes.js`

### Quantitative models

- [Pharmacodynamics](https://github.com/impressio/antipsychotics/blob/master/js/pd.js): `js/pd.js`
- [Pharmacokinetics](https://github.com/impressio/antipsychotics/blob/master/js/pk.js): `js/pk.js`
- [PD and PK models](https://github.com/impressio/antipsychotics/blob/master/js/models.js): `js/models.js`

### Data and sources

- [Data loader](https://github.com/impressio/antipsychotics/blob/master/js/data.js): `js/data.js`
- [Pharmacology data](https://github.com/impressio/antipsychotics/blob/master/assets/data/properties.json): `assets/data/properties.json`
- [Data tables validation](https://github.com/impressio/antipsychotics/blob/master/js/properties.js): `js/properties.js`
- [Source verification](https://github.com/impressio/antipsychotics/blob/master/tools/check_sources.py): `tools/check_sources.py`
- [Source references](https://github.com/impressio/antipsychotics/blob/master/assets/data/properties.json): `assets/data/properties.json`

### Other components

- **Learner**

## Connections

- Learner → App coordinator: opens app (evidence: `README.md`)
- App coordinator → Data loader: loads data (evidence: `README.md`)
- Data loader → Pharmacology data: fetches (evidence: `README.md`)
- 3D receptor → Model file loader: loads assets (evidence: `js/structure.js`)
- 3D receptor → Receptor assets: loads structure (evidence: `js/structure.js`)
- 3D receptor → Ligand poses: loads poses (evidence: `js/structure.js`)
- Regional distribution → Model file loader: loads assets (evidence: `js/distribution.js`)
- Regional distribution → 2D brain map assets: loads map (evidence: `js/distribution.js`)
- Regional distribution → 3D brain viewer: updates selection (evidence: `js/distribution.js`)
- Regional distribution → Brain model assets: renders meshes
- Pharmacodynamics → Receptor mechanism: syncs concentration (evidence: `js/pd.js`)
- Administration routes → App coordinator: syncs route (evidence: `js/routes.js`)
- Administration routes → Pharmacokinetics: reads route model (evidence: `js/routes.js`)
- Pharmacokinetics → PD and PK models: simulates (evidence: `README.md`)
- Pharmacokinetics → Pharmacology data: uses parameters
- Data tables validation → Pharmacology data: reads values (evidence: `README.md`)
- Data tables validation → PD and PK models: validates predictions (evidence: `README.md`)
- Source verification → Pharmacology data: checks sources (evidence: `README.md`)
- Pharmacology data → Source references: records citations (evidence: `README.md`)
- Learner → Data tables validation: opens data page (evidence: `README.md`)
- Pharmacology data → English Swedish text: translates descriptions (evidence: `README.md`)
