# t-bickley/mphys_project architecture

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

- Interactive diagram: https://gitdiagram.com/t-bickley/mphys_project
- Repository: https://github.com/t-bickley/mphys_project

## Overview

MPhys_Project investigates the circumgalactic medium of COLIBRE galactic haloes. Its central workflow selects haloes from simulation snapshots and catalogues, masks and aligns gas, projects gas mass, computes anisotropy and halo properties, and saves tabular results for notebook analysis. The repository also documents feedback and image-alignment investigations. Sampled HPC scripts establish the computation and output flow; notebook internals were not sampled, so notebook-to-data links are limited to the README’s stated analysis workflow and notebook names.

Main entry points: [`hpc/aniso_track_L025m5.py`](https://github.com/t-bickley/mphys_project/blob/main/hpc/aniso_track_L025m5.py) (L025m5 tracker), [`hpc/L025m5_evo.py`](https://github.com/t-bickley/mphys_project/blob/main/hpc/L025m5_evo.py) (L025m5 evolution), [`hpc/L200m6_anisotropies.py`](https://github.com/t-bickley/mphys_project/blob/main/hpc/L200m6_anisotropies.py) (L200m6 anisotropy), [`modules/physics_utils.py`](https://github.com/t-bickley/mphys_project/blob/main/modules/physics_utils.py) (Shared physics utilities)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_compute["HPC computation"]
  node_evolution["L025m5 evolution<br/>[L025m5_evo.py]"]
  node_l200["L200m6 anisotropy"]
  node_legacy["L025m5 tracker"]
end

subgraph group_physics["Physics analysis"]
  node_physicsutils["Shared physics utilities<br/>[physics_utils.py]"]
end

subgraph group_notebooks["Notebook analysis"]
  node_l025analysis["L025m5 analysis"]
  node_l025images["L025m5 images"]
  node_feedbackanalysis["Feedback analysis"]
  node_feedbackcalc["Feedback calculations"]
  node_anisotropy["Anisotropy analysis<br/>[anisotropy.ipynb]"]
  node_alignment["Alignment images"]
end

node_researcher(("Researcher"))
node_simdata[("Snapshots and catalogues")]
node_scheduler(("SLURM array task"))
node_results["Computed CSV results"]

node_researcher -->|"submits tasks"| node_scheduler
node_scheduler -->|"dispatches"| node_evolution
node_scheduler -->|"dispatches"| node_l200
node_scheduler -->|"dispatches"| node_legacy
node_simdata -->|"loads snapshots and catalogues"| node_evolution
node_simdata -->|"loads snapshots and catalogues"| node_l200
node_simdata -->|"loads snapshots and catalogues"| node_legacy
node_legacy -->|"calls analysis"| node_physicsutils
node_evolution -->|"writes CSV"| node_results
node_l200 -->|"writes CSV"| node_results
node_legacy -->|"writes CSV"| node_results
node_results -->|"analyzed in"| node_l025analysis
node_results -.->|"analyzed in"| node_l025images
node_results -.->|"analyzed in"| node_feedbackanalysis
node_results -.->|"analyzed in"| node_feedbackcalc
node_results -.->|"analyzed in"| node_anisotropy
node_researcher -->|"investigates"| node_alignment

click node_evolution "https://github.com/t-bickley/mphys_project/blob/main/hpc/L025m5_evo.py"
click node_l200 "https://github.com/t-bickley/mphys_project/blob/main/hpc/L200m6_anisotropies.py"
click node_legacy "https://github.com/t-bickley/mphys_project/blob/main/hpc/aniso_track_L025m5.py"
click node_physicsutils "https://github.com/t-bickley/mphys_project/blob/main/modules/physics_utils.py"
click node_l025analysis "https://github.com/t-bickley/mphys_project/blob/main/notebooks/L025m5_analysis.ipynb"
click node_l025images "https://github.com/t-bickley/mphys_project/blob/main/notebooks/L025m5_images.ipynb"
click node_feedbackanalysis "https://github.com/t-bickley/mphys_project/blob/main/notebooks/L200m6_feedback_analysis.ipynb"
click node_feedbackcalc "https://github.com/t-bickley/mphys_project/blob/main/notebooks/L200m6_feedback_calculations.ipynb"
click node_anisotropy "https://github.com/t-bickley/mphys_project/blob/main/notebooks/anisotropy.ipynb"
click node_alignment "https://github.com/t-bickley/mphys_project/blob/main/notebooks/Report_Alignment_Images.ipynb"

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_evolution,node_l200,node_legacy toneBlue
class node_physicsutils,node_simdata toneAmber
class node_l025analysis,node_l025images,node_feedbackanalysis,node_feedbackcalc,node_anisotropy,node_alignment toneMint
class node_researcher,node_results toneIndigo
class node_scheduler toneRose
```

## Components

### HPC computation

- [L025m5 evolution](https://github.com/t-bickley/mphys_project/blob/main/hpc/L025m5_evo.py): `hpc/L025m5_evo.py`
- [L200m6 anisotropy](https://github.com/t-bickley/mphys_project/blob/main/hpc/L200m6_anisotropies.py): `hpc/L200m6_anisotropies.py`
- [L025m5 tracker](https://github.com/t-bickley/mphys_project/blob/main/hpc/aniso_track_L025m5.py): `hpc/aniso_track_L025m5.py`

### Physics analysis

- [Shared physics utilities](https://github.com/t-bickley/mphys_project/blob/main/modules/physics_utils.py): `modules/physics_utils.py`

### Notebook analysis

- [L025m5 analysis](https://github.com/t-bickley/mphys_project/blob/main/notebooks/L025m5_analysis.ipynb): `notebooks/L025m5_analysis.ipynb`
- [L025m5 images](https://github.com/t-bickley/mphys_project/blob/main/notebooks/L025m5_images.ipynb): `notebooks/L025m5_images.ipynb`
- [Feedback analysis](https://github.com/t-bickley/mphys_project/blob/main/notebooks/L200m6_feedback_analysis.ipynb): `notebooks/L200m6_feedback_analysis.ipynb`
- [Feedback calculations](https://github.com/t-bickley/mphys_project/blob/main/notebooks/L200m6_feedback_calculations.ipynb): `notebooks/L200m6_feedback_calculations.ipynb`
- [Anisotropy analysis](https://github.com/t-bickley/mphys_project/blob/main/notebooks/anisotropy.ipynb): `notebooks/anisotropy.ipynb`
- [Alignment images](https://github.com/t-bickley/mphys_project/blob/main/notebooks/Report_Alignment_Images.ipynb): `notebooks/Report_Alignment_Images.ipynb`

### Other components

- **Researcher**
- **Snapshots and catalogues**
- **SLURM array task**
- **Computed CSV results**

## Connections

- Researcher → SLURM array task: submits tasks
- SLURM array task → L025m5 evolution: dispatches
- SLURM array task → L200m6 anisotropy: dispatches
- SLURM array task → L025m5 tracker: dispatches
- Snapshots and catalogues → L025m5 evolution: loads snapshots and catalogues
- Snapshots and catalogues → L200m6 anisotropy: loads snapshots and catalogues
- Snapshots and catalogues → L025m5 tracker: loads snapshots and catalogues
- L025m5 tracker → Shared physics utilities: calls analysis
- L025m5 evolution → Computed CSV results: writes CSV
- L200m6 anisotropy → Computed CSV results: writes CSV
- L025m5 tracker → Computed CSV results: writes CSV
- Computed CSV results → L025m5 analysis: analyzed in
- Computed CSV results → L025m5 images: analyzed in
- Computed CSV results → Feedback analysis: analyzed in
- Computed CSV results → Feedback calculations: analyzed in
- Computed CSV results → Anisotropy analysis: analyzed in
- Researcher → Alignment images: investigates
