# ulton321/protein-language-model-steering architecture

> Architecture diagram of the GitHub repository ulton321/protein-language-model-steering, 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/ulton321/protein-language-model-steering
- Repository: https://github.com/ulton321/protein-language-model-steering

## Overview

This is a research repository for protein-language-model steering and fine-tuning, with notebooks for ProGen2, ProLLaMA, and ESM. The documented workflow is to prepare protein data, configure and run a notebook, then evaluate and visualize results. The tree also contains an execution script and analysis outputs, but the sampled script refers to a different notebook path than the tree; connections between it and the listed notebooks are therefore not asserted. Notebook internals were not sampled, so model-specific calls and data flow remain unverified.

Main entry points: [`Scripts/run_pipeline.py`](https://github.com/ulton321/protein-language-model-steering/blob/main/Scripts/run_pipeline.py) (Notebook runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Research workflow"]
  node_runner["Notebook runner<br/>[run_pipeline.py]"]
  node_input_scores[("Protein scores")]
end

subgraph group_models["Model notebooks"]
  node_progen_base["ProGen2 base<br/>[BaseProleg2.ipynb]"]
  node_progen_tuned["ProGen2 fine-tuning"]
  node_progen_taskvec["ProGen2 task vectors"]
  node_prollama_base["ProLLaMA base"]
  node_prollama_tuned["ProLLaMA fine-tuning"]
  node_esm_base["ESM base<br/>[base.ipynb]"]
  node_esm_tuned["ESM fine-tuning"]
end

subgraph group_analysis["Analysis outputs"]
  node_property_results["Property results"]
  node_best_means["Best mean summary"]
  node_fdr_tests["FDR tests"]
  node_plot["Results plot<br/>[results.pdf]"]
end

node_researcher(("Researcher"))

node_researcher -->|"runs pipeline"| node_runner

click node_runner "https://github.com/ulton321/protein-language-model-steering/blob/main/Scripts/run_pipeline.py"
click node_progen_base "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Progen2/BaseProleg2.ipynb"
click node_progen_tuned "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Progen2/Fine_Tuned_Progen.ipynb"
click node_progen_taskvec "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Progen2/ProGen2_TaskVec.ipynb"
click node_prollama_base "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Prollama/Base_Prollama%20(1).ipynb"
click node_prollama_tuned "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Prollama/Fine_Tuned_Prollama%20(1).ipynb"
click node_esm_base "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/esm/base.ipynb"
click node_esm_tuned "https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/esm/Fine_Tuned_ESM3.ipynb"
click node_input_scores "https://github.com/ulton321/protein-language-model-steering/blob/main/data/progen2_200_sequences_scores.csv"
click node_property_results "https://github.com/ulton321/protein-language-model-steering/blob/main/Output/model_property_results.csv"
click node_best_means "https://github.com/ulton321/protein-language-model-steering/blob/main/Output/summary_best_by_mean.csv"
click node_fdr_tests "https://github.com/ulton321/protein-language-model-steering/blob/main/Output/ttest_results_FDR.csv"
click node_plot "https://github.com/ulton321/protein-language-model-steering/blob/main/Output/plot/results.pdf"

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_runner,node_input_scores toneBlue
class node_progen_base,node_progen_tuned,node_progen_taskvec,node_prollama_base,node_prollama_tuned,node_esm_base,node_esm_tuned toneAmber
class node_property_results,node_best_means,node_fdr_tests,node_plot toneMint
class node_researcher toneIndigo
```

## Components

### Research workflow

- [Notebook runner](https://github.com/ulton321/protein-language-model-steering/blob/main/Scripts/run_pipeline.py): `Scripts/run_pipeline.py`
- [Protein scores](https://github.com/ulton321/protein-language-model-steering/blob/main/data/progen2_200_sequences_scores.csv): `data/progen2_200_sequences_scores.csv`

### Model notebooks

- [ProGen2 base](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Progen2/BaseProleg2.ipynb): `notebook/Progen2/BaseProleg2.ipynb`
- [ProGen2 fine-tuning](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Progen2/Fine_Tuned_Progen.ipynb): `notebook/Progen2/Fine_Tuned_Progen.ipynb`
- [ProGen2 task vectors](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Progen2/ProGen2_TaskVec.ipynb): `notebook/Progen2/ProGen2_TaskVec.ipynb`
- [ProLLaMA base](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Prollama/Base_Prollama%20(1).ipynb): `notebook/Prollama/Base_Prollama (1).ipynb`
- [ProLLaMA fine-tuning](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/Prollama/Fine_Tuned_Prollama%20(1).ipynb): `notebook/Prollama/Fine_Tuned_Prollama (1).ipynb`
- [ESM base](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/esm/base.ipynb): `notebook/esm/base.ipynb`
- [ESM fine-tuning](https://github.com/ulton321/protein-language-model-steering/blob/main/notebook/esm/Fine_Tuned_ESM3.ipynb): `notebook/esm/Fine_Tuned_ESM3.ipynb`

### Analysis outputs

- [Property results](https://github.com/ulton321/protein-language-model-steering/blob/main/Output/model_property_results.csv): `Output/model_property_results.csv`
- [Best mean summary](https://github.com/ulton321/protein-language-model-steering/blob/main/Output/summary_best_by_mean.csv): `Output/summary_best_by_mean.csv`
- [FDR tests](https://github.com/ulton321/protein-language-model-steering/blob/main/Output/ttest_results_FDR.csv): `Output/ttest_results_FDR.csv`
- [Results plot](https://github.com/ulton321/protein-language-model-steering/blob/main/Output/plot/results.pdf): `Output/plot/results.pdf`

### Other components

- **Researcher**

## Connections

- Researcher → Notebook runner: runs pipeline (evidence: `Scripts/run_pipeline.py`)
