# jinxedhuracan/frag-ml architecture

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

## Overview

FRAG-ML is a computational drug-repurposing workflow that ranks candidate compounds against the ML2177c uridine nucleoside phosphorylase target. Its documented stages run from target/grid preparation through virtual screening, refined redocking, interaction and drug-likeness analysis, and fragment-informed rescoring, with a Streamlit interface for reviewing results. The sampled scripts support the interaction, ADMET, MCDA, FBDD, rescoring, complex-building, and visualization links; other stage ordering follows the README’s documented pipeline.

Main entry points: [`ML/app.py`](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/app.py) (Streamlit App), [`ML/run_ml_rescorer.py`](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_ml_rescorer.py) (ML Rescoring), [`ML/PDB and PDBQT files`](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/PDB%20and%20PDBQT%20files) (Prepared Receptor), [`ML/complexes_pdb`](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/complexes_pdb) (Protein-Ligand Complexes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_target["Target Setup"]
  node_structures["Target Structures"]
  node_receptor["Prepared Receptor"]
end

subgraph group_screen["Docking Workflow"]
  node_screening["Virtual Screening"]
  node_screen_results["Screen Results"]
  node_redocking["Top-Hit Redocking<br/>[redock_top15.py]"]
  node_redock_results["Refined Poses"]
  node_complex_builder["Complex Builder"]
  node_complexes["Protein-Ligand Complexes"]
end

subgraph group_analysis["Candidate Analysis"]
  node_plip["PLIP Profiling"]
  node_interactions["Interaction Tables"]
  node_admet["ADMET Profiling"]
  node_admet_data["ADMET Profile"]
end

subgraph group_ranking["Ranking"]
  node_mcda["MCDA Ranking"]
  node_ranked["Repurposing Ranks"]
  node_fbdd["Fragment Metrics"]
  node_fbdd_data["FBDD Results"]
  node_rescoring["ML Rescoring<br/>[run_ml_rescorer.py]"]
  node_ml_results["Corrected Ranks"]
end

subgraph group_ui["Visualization"]
  node_app["Streamlit App<br/>[app.py]"]
  node_viewer_data["3D Views"]
end

node_researcher(("Researcher"))
node_library["Drug Library"]

node_structures -->|"prepares receptor"| node_receptor
node_library -->|"screens compounds"| node_screening
node_receptor -->|"docks against"| node_screening
node_screening -->|"writes poses"| node_screen_results
node_screen_results -->|"selects hits"| node_redocking
node_receptor -->|"redocks against"| node_redocking
node_redocking -->|"writes refined poses"| node_redock_results
node_redock_results -->|"assembles poses"| node_complex_builder
node_receptor -->|"combines receptor"| node_complex_builder
node_complex_builder -->|"writes complexes"| node_complexes
node_complexes -->|"profiles interactions"| node_plip
node_plip -->|"writes interaction data"| node_interactions
node_interactions -->|"supplies contacts"| node_mcda
node_admet -->|"writes descriptors"| node_admet_data
node_admet_data -->|"supplies drug properties"| node_mcda
node_mcda -->|"writes ranking"| node_ranked
node_ranked -->|"profiles ranked hits"| node_fbdd
node_fbdd -->|"writes fragment metrics"| node_fbdd_data
node_ranked -->|"supplies candidates"| node_rescoring
node_admet_data -->|"supplies descriptors"| node_rescoring
node_fbdd_data -->|"supplies efficiency metrics"| node_rescoring
node_interactions -->|"supplies contacts"| node_rescoring
node_rescoring -->|"writes corrected ranks"| node_ml_results
node_researcher -->|"reviews candidates"| node_app
node_app -->|"loads results"| node_ranked
node_app -->|"loads results"| node_ml_results
node_app -->|"loads profiles"| node_admet_data
node_app -->|"loads metrics"| node_fbdd_data
node_app -->|"loads interactions"| node_interactions
node_app -->|"loads complexes"| node_complexes
node_complexes -->|"provides structures"| node_viewer_data

click node_structures "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/01_structure"
click node_receptor "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/PDB%20and%20PDBQT%20files"
click node_screening "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_screen_Final_attempt.py"
click node_screen_results "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/docking_results"
click node_redocking "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/scripts/redock_top15.py"
click node_redock_results "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/redock_top15_results"
click node_complex_builder "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/build_complexes_mac.py"
click node_complexes "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/complexes_pdb"
click node_plip "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_plip_analysis.py"
click node_interactions "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/interaction_tables"
click node_admet "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_admet_profiling.py"
click node_admet_data "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/admet_results"
click node_mcda "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_mcda_ranking.py"
click node_ranked "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/final_submission_results"
click node_fbdd "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_fragment_fbdd_analysis.py"
click node_fbdd_data "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/fbdd_results"
click node_rescoring "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_ml_rescorer.py"
click node_ml_results "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/ml_rescoring_results"
click node_app "https://github.com/jinxedhuracan/frag-ml/blob/main/ML/app.py"
click node_viewer_data "https://github.com/jinxedhuracan/frag-ml/tree/main/ML/complexes_pdb"

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_structures,node_receptor toneBlue
class node_screening,node_screen_results,node_redocking,node_redock_results,node_complex_builder,node_complexes toneAmber
class node_plip,node_interactions,node_admet,node_admet_data toneMint
class node_mcda,node_ranked,node_fbdd,node_fbdd_data,node_rescoring,node_ml_results toneRose
class node_app,node_viewer_data,node_researcher,node_library toneIndigo
```

## Components

### Target Setup

- [Target Structures](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/01_structure): `ML/01_structure`
- [Prepared Receptor](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/PDB%20and%20PDBQT%20files): `ML/PDB and PDBQT files`

### Docking Workflow

- [Virtual Screening](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_screen_Final_attempt.py): `ML/run_screen_Final_attempt.py`
- [Screen Results](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/docking_results): `ML/docking_results`
- [Top-Hit Redocking](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/scripts/redock_top15.py): `ML/scripts/redock_top15.py`
- [Refined Poses](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/redock_top15_results): `ML/redock_top15_results`
- [Complex Builder](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/build_complexes_mac.py): `ML/build_complexes_mac.py`
- [Protein-Ligand Complexes](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/complexes_pdb): `ML/complexes_pdb`

### Candidate Analysis

- [PLIP Profiling](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_plip_analysis.py): `ML/run_plip_analysis.py`
- [Interaction Tables](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/interaction_tables): `ML/interaction_tables`
- [ADMET Profiling](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_admet_profiling.py): `ML/run_admet_profiling.py`
- [ADMET Profile](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/admet_results): `ML/admet_results`

### Ranking

- [MCDA Ranking](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_mcda_ranking.py): `ML/run_mcda_ranking.py`
- [Repurposing Ranks](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/final_submission_results): `ML/final_submission_results`
- [Fragment Metrics](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_fragment_fbdd_analysis.py): `ML/run_fragment_fbdd_analysis.py`
- [FBDD Results](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/fbdd_results): `ML/fbdd_results`
- [ML Rescoring](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/run_ml_rescorer.py): `ML/run_ml_rescorer.py`
- [Corrected Ranks](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/ml_rescoring_results): `ML/ml_rescoring_results`

### Visualization

- [Streamlit App](https://github.com/jinxedhuracan/frag-ml/blob/main/ML/app.py): `ML/app.py`
- [3D Views](https://github.com/jinxedhuracan/frag-ml/tree/main/ML/complexes_pdb): `ML/complexes_pdb`

### Other components

- **Researcher**
- **Drug Library**

## Connections

- Target Structures → Prepared Receptor: prepares receptor
- Drug Library → Virtual Screening: screens compounds
- Prepared Receptor → Virtual Screening: docks against
- Virtual Screening → Screen Results: writes poses
- Screen Results → Top-Hit Redocking: selects hits
- Prepared Receptor → Top-Hit Redocking: redocks against
- Top-Hit Redocking → Refined Poses: writes refined poses
- Refined Poses → Complex Builder: assembles poses
- Prepared Receptor → Complex Builder: combines receptor
- Complex Builder → Protein-Ligand Complexes: writes complexes
- Protein-Ligand Complexes → PLIP Profiling: profiles interactions
- PLIP Profiling → Interaction Tables: writes interaction data
- Interaction Tables → MCDA Ranking: supplies contacts
- ADMET Profiling → ADMET Profile: writes descriptors
- ADMET Profile → MCDA Ranking: supplies drug properties
- MCDA Ranking → Repurposing Ranks: writes ranking
- Repurposing Ranks → Fragment Metrics: profiles ranked hits
- Fragment Metrics → FBDD Results: writes fragment metrics
- Repurposing Ranks → ML Rescoring: supplies candidates
- ADMET Profile → ML Rescoring: supplies descriptors
- FBDD Results → ML Rescoring: supplies efficiency metrics
- Interaction Tables → ML Rescoring: supplies contacts
- ML Rescoring → Corrected Ranks: writes corrected ranks
- Researcher → Streamlit App: reviews candidates
- Streamlit App → Repurposing Ranks: loads results
- Streamlit App → Corrected Ranks: loads results
- Streamlit App → ADMET Profile: loads profiles
- Streamlit App → FBDD Results: loads metrics
- Streamlit App → Interaction Tables: loads interactions
- Streamlit App → Protein-Ligand Complexes: loads complexes
- Protein-Ligand Complexes → 3D Views: provides structures
