# wazer24/group_2_v_b_model_deployment architecture

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

- Interactive diagram: https://gitdiagram.com/wazer24/group_2_v_b_model_deployment
- Repository: https://github.com/wazer24/group_2_v_b_model_deployment

## Overview

This repository is a malware concept-drift research project: it compares static classifiers with a latent Neural ODE on chronologically split malware features, then reports metrics and visualizations. The main experiment path runs from feature data through temporal preparation, model training, and shared evaluation. A separate Streamlit dashboard presents research results and architecture/ablation material. The tree and excerpts support the experiment’s core call paths; dashboard links to generated artifacts are not shown, so it is represented independently.

Main entry points: [`src/train_ode.py`](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/train_ode.py) (Neural ODE training), [`src/chronology.py`](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/chronology.py) (Temporal splits), [`src/train_baselines.py`](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/train_baselines.py) (Static baselines), [`notebooks/results`](https://github.com/wazer24/group_2_v_b_model_deployment/tree/main/notebooks/results) (Experiment metrics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_feature_data[("Malware features")]
  node_drift_ranking["Drift ranking"]
  node_chronology["Temporal splits<br/>[chronology.py]"]
end

subgraph group_models["Model experiments"]
  node_baseline_training["Static baselines<br/>[train_baselines.py]"]
  node_ode_training["Neural ODE training<br/>[train_ode.py]"]
  node_ode_model["ODE architecture<br/>[ode_model.py]"]
end

subgraph group_analysis["Evaluation and analysis"]
  node_evaluation["Shared evaluation<br/>[evaluate.py]"]
  node_metrics["Experiment metrics"]
  node_visualization["Metric visualizations<br/>[visualize.py]"]
  node_deliverable_graphs["Deliverable figures"]
end

subgraph group_presentation["Research presentation"]
  node_dashboard["Research dashboard<br/>[app.py]"]
end

node_researcher(("Researcher"))
node_dashboard_user(("Dashboard user"))

node_feature_data -->|"loads features"| node_chronology
node_drift_ranking -->|"selects features"| node_chronology
node_chronology -->|"provides splits"| node_baseline_training
node_chronology -->|"provides splits"| node_ode_training
node_baseline_training -->|"evaluates predictions"| node_evaluation
node_ode_training -->|"evaluates predictions"| node_evaluation
node_ode_training -->|"trains model"| node_ode_model
node_baseline_training -->|"writes metrics"| node_metrics
node_ode_training -->|"writes metrics"| node_metrics
node_metrics -->|"reads metrics"| node_visualization
node_researcher -.->|"runs experiments"| node_baseline_training
node_researcher -.->|"runs experiments"| node_ode_training
node_researcher -.->|"generates figures"| node_deliverable_graphs
node_dashboard_user -.->|"views research"| node_dashboard

click node_drift_ranking "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/dataset/feature_drift_ranking.csv"
click node_chronology "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/chronology.py"
click node_baseline_training "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/train_baselines.py"
click node_ode_training "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/train_ode.py"
click node_ode_model "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/ode_model.py"
click node_evaluation "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/evaluate.py"
click node_metrics "https://github.com/wazer24/group_2_v_b_model_deployment/tree/main/notebooks/results"
click node_visualization "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/visualize.py"
click node_deliverable_graphs "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/generate_deliverable_graphs.py"
click node_dashboard "https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/malware-concept-drift-dashboard/app.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_feature_data,node_drift_ranking,node_chronology,node_dashboard_user toneBlue
class node_baseline_training,node_ode_training,node_ode_model toneAmber
class node_evaluation,node_metrics,node_visualization,node_deliverable_graphs toneMint
class node_dashboard toneRose
class node_researcher toneIndigo
```

## Components

### Data preparation

- **Malware features**
- [Drift ranking](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/dataset/feature_drift_ranking.csv): `dataset/feature_drift_ranking.csv`
- [Temporal splits](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/chronology.py): `src/chronology.py`

### Model experiments

- [Static baselines](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/train_baselines.py): `src/train_baselines.py`
- [Neural ODE training](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/train_ode.py): `src/train_ode.py`
- [ODE architecture](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/ode_model.py): `src/ode_model.py`

### Evaluation and analysis

- [Shared evaluation](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/evaluate.py): `src/evaluate.py`
- [Experiment metrics](https://github.com/wazer24/group_2_v_b_model_deployment/tree/main/notebooks/results): `notebooks/results`
- [Metric visualizations](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/visualize.py): `src/visualize.py`
- [Deliverable figures](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/src/generate_deliverable_graphs.py): `src/generate_deliverable_graphs.py`

### Research presentation

- [Research dashboard](https://github.com/wazer24/group_2_v_b_model_deployment/blob/main/malware-concept-drift-dashboard/app.py): `malware-concept-drift-dashboard/app.py`

### Other components

- **Researcher**
- **Dashboard user**

## Connections

- Malware features → Temporal splits: loads features (evidence: `src/chronology.py`)
- Drift ranking → Temporal splits: selects features (evidence: `src/chronology.py`)
- Temporal splits → Static baselines: provides splits (evidence: `src/train_baselines.py`)
- Temporal splits → Neural ODE training: provides splits (evidence: `src/train_ode.py`)
- Static baselines → Shared evaluation: evaluates predictions (evidence: `src/train_baselines.py`)
- Neural ODE training → Shared evaluation: evaluates predictions (evidence: `src/train_ode.py`)
- Neural ODE training → ODE architecture: trains model (evidence: `src/train_ode.py`)
- Static baselines → Experiment metrics: writes metrics (evidence: `src/train_baselines.py`)
- Neural ODE training → Experiment metrics: writes metrics (evidence: `src/train_ode.py`)
- Experiment metrics → Metric visualizations: reads metrics (evidence: `src/visualize.py`)
- Researcher → Static baselines: runs experiments
- Researcher → Neural ODE training: runs experiments
- Researcher → Deliverable figures: generates figures
- Dashboard user → Research dashboard: views research
