# aadisrimenon/protmind-ai-upgraded architecture

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

- Interactive diagram: https://gitdiagram.com/aadisrimenon/protmind-ai-upgraded
- Repository: https://github.com/aadisrimenon/protmind-ai-upgraded

## Overview

ProtMind AI is a Streamlit application for analyzing one protein substitution and producing an explainable, downloadable report. The user supplies a UniProt accession, mutation, and sequence; the app then exposes data retrieval, feature comparison, mutation/network analysis, structure viewing, stability and geometry assessment, risk scoring, therapeutic-target lookup, and reporting as separate pages. Pages share inputs and computed results through Streamlit session state. The README documents all ten stages; several page implementations and backend sections were not sampled, so their internal call wiring is shown only where documented or evidenced.

Main entry points: [`app.py`](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/app.py) (Session payload/results), [`backend.py`](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py) (Shared backend), [`pages/10_Clinical_Report.py`](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/10_Clinical_Report.py) (Clinical report), [`pages/8_Explainable_AI.py`](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/8_Explainable_AI.py) (Risk summary)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Analysis workflow"]
  node_home["Dashboard<br/>[app.py]"]
  node_input["User input<br/>[1__User_Input.py]"]
  node_retrieval["Data retrieval"]
  node_preprocess["Preprocessing<br/>[3_Preprocessing.py]"]
  node_mutation["Mutation analysis"]
  node_structure["Structure viewer"]
  node_stability["Stability assessment"]
  node_stereo["Geometry validation"]
  node_explain["Risk summary"]
end

subgraph group_analysis["Analysis services"]
  node_backend["Shared backend<br/>[backend.py]"]
  node_features["Feature extraction<br/>[backend.py]"]
  node_pathogenicity["Pathogenicity estimate<br/>[backend.py]"]
  node_ppi["Interaction lookup<br/>[backend.py]"]
  node_energy["Stability estimate<br/>[backend.py]"]
  node_geometry["Torsion calculation<br/>[backend.py]"]
  node_risk["Composite risk<br/>[backend.py]"]
end

subgraph group_reporting["Therapeutic and report"]
  node_targeting["Therapeutic targeting"]
  node_report["Clinical report"]
  node_pdf["PDF generation<br/>[backend.py]"]
end

subgraph group_state["Session state"]
  node_session[("Session payload/results<br/>[app.py]")]
end

node_user(("Researcher"))
node_uniprot["UniProt"]
node_alphafold["AlphaFold"]
node_string["STRING"]
node_chembl["ChEMBL"]

node_user -->|"submits data"| node_input
node_home -->|"initializes state"| node_session
node_input -->|"validates and parses"| node_backend
node_input -->|"writes payload"| node_session
node_retrieval -->|"reads payload"| node_session
node_retrieval -->|"requests records"| node_backend
node_backend -->|"queries metadata"| node_uniprot
node_backend -->|"fetches structure"| node_alphafold
node_backend -->|"checks variant"| node_uniprot
node_preprocess -->|"reads payload"| node_session
node_preprocess -->|"extracts features"| node_backend
node_mutation -->|"reads and writes results"| node_session
node_mutation -->|"estimates impact"| node_pathogenicity
node_mutation -->|"looks up partners"| node_ppi
node_pathogenicity -->|"checks records"| node_uniprot
node_ppi -->|"queries interactions"| node_string
node_structure -->|"fetches structure"| node_backend
node_structure -->|"retrieves model"| node_alphafold
node_stability -->|"extracts properties"| node_features
node_stability -->|"estimates ΔΔG"| node_energy
node_stability -->|"writes results"| node_session
node_stereo -->|"reads angles"| node_session
node_geometry -->|"uses coordinates"| node_alphafold
node_explain -->|"reads and writes results"| node_session
node_explain -->|"gets features"| node_features
node_explain -->|"gets estimate"| node_pathogenicity
node_explain -->|"gets stability"| node_energy
node_explain -->|"gets partners"| node_ppi
node_explain -->|"computes score"| node_risk
node_targeting -->|"requests mechanisms"| node_backend
node_backend -->|"queries targets"| node_chembl
node_targeting -->|"writes results"| node_session
node_report -->|"reads results"| node_session
node_report -->|"fills missing features"| node_features
node_report -->|"fills missing estimate"| node_pathogenicity
node_report -->|"fills missing stability"| node_energy
node_report -->|"fills missing partners"| node_ppi
node_report -->|"fills missing angles"| node_geometry
node_report -->|"fills missing score"| node_risk
node_report -->|"generates document"| node_pdf

click node_home "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/app.py"
click node_input "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/1__User_Input.py"
click node_retrieval "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/2_Data_Retrieval.py"
click node_preprocess "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/3_Preprocessing.py"
click node_mutation "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/4_Mutation_Analysis.py"
click node_structure "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/5_Structure_Prediction.py"
click node_stability "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/6_Thermodynamic_Stability.py"
click node_stereo "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/7_Stereochemical_Validation.py"
click node_explain "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/8_Explainable_AI.py"
click node_targeting "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/9_Therapeutic_Targeting.py"
click node_report "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/10_Clinical_Report.py"
click node_session "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/app.py"
click node_backend "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_features "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_pathogenicity "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_ppi "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_energy "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_geometry "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_risk "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"
click node_pdf "https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py"

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_home,node_input,node_retrieval,node_preprocess,node_mutation,node_structure,node_stability,node_stereo,node_explain toneBlue
class node_backend,node_features,node_pathogenicity,node_ppi,node_energy,node_geometry,node_risk toneAmber
class node_targeting,node_report,node_pdf toneMint
class node_session toneRose
class node_user,node_uniprot,node_alphafold,node_string,node_chembl toneIndigo
```

## Components

### Analysis workflow

- [Dashboard](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/app.py): `app.py`
- [User input](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/1__User_Input.py): `pages/1__User_Input.py`
- [Data retrieval](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/2_Data_Retrieval.py): `pages/2_Data_Retrieval.py`
- [Preprocessing](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/3_Preprocessing.py): `pages/3_Preprocessing.py`
- [Mutation analysis](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/4_Mutation_Analysis.py): `pages/4_Mutation_Analysis.py`
- [Structure viewer](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/5_Structure_Prediction.py): `pages/5_Structure_Prediction.py`
- [Stability assessment](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/6_Thermodynamic_Stability.py): `pages/6_Thermodynamic_Stability.py`
- [Geometry validation](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/7_Stereochemical_Validation.py): `pages/7_Stereochemical_Validation.py`
- [Risk summary](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/8_Explainable_AI.py): `pages/8_Explainable_AI.py`

### Analysis services

- [Shared backend](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`
- [Feature extraction](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`
- [Pathogenicity estimate](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`
- [Interaction lookup](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`
- [Stability estimate](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`
- [Torsion calculation](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`
- [Composite risk](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`

### Therapeutic and report

- [Therapeutic targeting](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/9_Therapeutic_Targeting.py): `pages/9_Therapeutic_Targeting.py`
- [Clinical report](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/pages/10_Clinical_Report.py): `pages/10_Clinical_Report.py`
- [PDF generation](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/backend.py): `backend.py`

### Session state

- [Session payload/results](https://github.com/aadisrimenon/protmind-ai-upgraded/blob/main/app.py): `app.py`

### Other components

- **Researcher**
- **UniProt**
- **AlphaFold**
- **STRING**
- **ChEMBL**

## Connections

- Researcher → User input: submits data
- Dashboard → Session payload/results: initializes state
- User input → Shared backend: validates and parses
- User input → Session payload/results: writes payload
- Data retrieval → Session payload/results: reads payload
- Data retrieval → Shared backend: requests records
- Shared backend → UniProt: queries metadata
- Shared backend → AlphaFold: fetches structure
- Shared backend → UniProt: checks variant
- Preprocessing → Session payload/results: reads payload
- Preprocessing → Shared backend: extracts features
- Mutation analysis → Session payload/results: reads and writes results
- Mutation analysis → Pathogenicity estimate: estimates impact
- Mutation analysis → Interaction lookup: looks up partners
- Pathogenicity estimate → UniProt: checks records
- Interaction lookup → STRING: queries interactions
- Structure viewer → Shared backend: fetches structure
- Structure viewer → AlphaFold: retrieves model
- Stability assessment → Feature extraction: extracts properties
- Stability assessment → Stability estimate: estimates ΔΔG
- Stability assessment → Session payload/results: writes results
- Geometry validation → Session payload/results: reads angles
- Torsion calculation → AlphaFold: uses coordinates
- Risk summary → Session payload/results: reads and writes results
- Risk summary → Feature extraction: gets features
- Risk summary → Pathogenicity estimate: gets estimate
- Risk summary → Stability estimate: gets stability
- Risk summary → Interaction lookup: gets partners
- Risk summary → Composite risk: computes score
- Therapeutic targeting → Shared backend: requests mechanisms
- Shared backend → ChEMBL: queries targets
- Therapeutic targeting → Session payload/results: writes results
- Clinical report → Session payload/results: reads results
- Clinical report → Feature extraction: fills missing features
- Clinical report → Pathogenicity estimate: fills missing estimate
- Clinical report → Stability estimate: fills missing stability
- Clinical report → Interaction lookup: fills missing partners
- Clinical report → Torsion calculation: fills missing angles
- Clinical report → Composite risk: fills missing score
- Clinical report → PDF generation: generates document
