# ruben-hayrapetyan/dsi_repo architecture

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

- Interactive diagram: https://gitdiagram.com/ruben-hayrapetyan/dsi_repo
- Repository: https://github.com/ruben-hayrapetyan/dsi_repo
- Video tour (about a minute): https://gitdiagram.com/ruben-hayrapetyan/dsi_repo/video

## Overview

This repository is a research collection of differential-privacy training algorithms and similarity metrics, with dataset-specific image and text variants. The visible AdaDPS entry point accepts training and privacy parameters, dynamically selects a trainer, and starts training; the tree also documents DP-ACE, Wasserstein DP-ACE, mirror descent, PATE, and cross-dataset similarity implementations. A separate vendored Opacus package supplies reusable DP-training machinery. README content is absent, and most implementations were not sampled, so uncertain internal wiring is omitted.

Main entry points: [`Junk Folder/DP Algorithm Implementations/PATE/Syft Implementations of PATE/Main.py`](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Main.py) (PATE Training), [`Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores`](https://github.com/ruben-hayrapetyan/dsi_repo/tree/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores) (Dataset Scores), [`Junk Folder/Similarity Metric Implementations/All_GSD_Code/opacus/privacy_engine.py`](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/privacy_engine.py) (Privacy Engine), [`Dataset_Testing_Eval_Text/Basic_AdaDPS/main.py`](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/main.py) (AdaDPS Runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experiments["DP Experiments"]
  node_adadps_main["AdaDPS Runner<br/>[main.py]"]
  node_adadps_data["Data Generation<br/>[generate_data.py]"]
  node_adadps_methods["Training Methods"]
  node_adadps_model["Model Base<br/>[model_base.py]"]
  node_dp_ace["DP-ACE<br/>[DP_ACE.py]"]
  node_wasserstein_ace["Wasserstein ACE"]
  node_mirror_descent["Mirror Descent<br/>[mirror_descent.py]"]
  node_pate["PATE Training<br/>[Main.py]"]
  node_pate_teacher["Teacher Models<br/>[Teacher.py]"]
  node_pate_student["Student Model<br/>[Student.py]"]
  node_pate_data["PATE Data<br/>[data.py]"]
end

subgraph group_analysis["Privacy Analysis"]
  node_accounting["RDP Accounting<br/>[rdp_accountant.py]"]
  node_privacy_conversion["Privacy Conversion"]
end

subgraph group_similarity["Similarity Metrics"]
  node_similarity_scores["Dataset Scores"]
  node_similarity_kernels["Kernels<br/>[kernels.py]"]
  node_wasserstein["Wasserstein Metrics"]
  node_distributions["Distribution Metrics<br/>[distributions.py]"]
end

subgraph group_opacus["Opacus Runtime"]
  node_privacy_engine["Privacy Engine<br/>[privacy_engine.py]"]
  node_dp_optimizer["DP Optimizers<br/>[optimizer.py]"]
  node_grad_sampling["Gradient Sampling"]
  node_accountant_runtime["Runtime Accountants<br/>[accountant.py]"]
  node_batch_manager["Batch Manager"]
end

node_user(("Researcher"))

node_user -->|"configures and runs"| node_adadps_main
node_adadps_main -->|"dynamically selects"| node_adadps_methods
node_adadps_main -->|"starts training"| node_adadps_methods
node_pate -->|"loads data"| node_pate_data
node_pate -->|"trains and predicts"| node_pate_teacher
node_pate -->|"trains and predicts"| node_pate_student
node_pate -.->|"analyzes privacy"| node_accounting
node_wasserstein_ace -.->|"extends algorithm"| node_dp_ace
node_wasserstein_ace -.->|"uses metric"| node_wasserstein
node_similarity_scores -->|"uses"| node_similarity_kernels
node_similarity_scores -->|"uses"| node_wasserstein
node_similarity_scores -->|"uses"| node_distributions
node_privacy_engine -->|"prepares model"| node_grad_sampling
node_privacy_engine -->|"wraps optimizer"| node_dp_optimizer
node_privacy_engine -->|"tracks privacy"| node_accountant_runtime
node_batch_manager -->|"coordinates steps"| node_dp_optimizer

click node_adadps_main "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/main.py"
click node_adadps_data "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/generate_data.py"
click node_adadps_methods "https://github.com/ruben-hayrapetyan/dsi_repo/tree/main/Dataset_Testing_Eval_Text/Basic_AdaDPS"
click node_adadps_model "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/model_base.py"
click node_dp_ace "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_DP-ACE_80_20/DP_ACE_Materials/DP_ACE.py"
click node_wasserstein_ace "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_Wass_DP-ACE_80_20/DP_ACE_Materials/Wasserstein_DP_ACE.py"
click node_mirror_descent "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_Mirror_Descent/Mirror_Descent_Materials/mirror_descent.py"
click node_pate "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Main.py"
click node_pate_teacher "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Teacher.py"
click node_pate_student "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Student.py"
click node_pate_data "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/data.py"
click node_accounting "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/privacy_analysis/rdp_accountant.py"
click node_privacy_conversion "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/privacy_analysis/compute_privacy_sgm.py"
click node_similarity_scores "https://github.com/ruben-hayrapetyan/dsi_repo/tree/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores"
click node_similarity_kernels "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/kernels.py"
click node_wasserstein "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/sliced_wasserstein.py"
click node_distributions "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/distributions.py"
click node_privacy_engine "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/privacy_engine.py"
click node_dp_optimizer "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/optimizers/optimizer.py"
click node_grad_sampling "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/grad_sample/grad_sample_module.py"
click node_accountant_runtime "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/accountants/accountant.py"
click node_batch_manager "https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/utils/batch_memory_manager.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_adadps_main,node_adadps_data,node_adadps_methods,node_adadps_model,node_dp_ace,node_wasserstein_ace,node_mirror_descent,node_pate,node_pate_teacher,node_pate_student,node_pate_data toneBlue
class node_accounting,node_privacy_conversion toneAmber
class node_similarity_scores,node_similarity_kernels,node_wasserstein,node_distributions toneMint
class node_privacy_engine,node_dp_optimizer,node_grad_sampling,node_accountant_runtime,node_batch_manager toneRose
class node_user toneIndigo
```

## Components

### DP Experiments

- [AdaDPS Runner](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/main.py): `Dataset_Testing_Eval_Text/Basic_AdaDPS/main.py`
- [Data Generation](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/generate_data.py): `Dataset_Testing_Eval_Text/Basic_AdaDPS/generate_data.py`
- [Training Methods](https://github.com/ruben-hayrapetyan/dsi_repo/tree/main/Dataset_Testing_Eval_Text/Basic_AdaDPS): `Dataset_Testing_Eval_Text/Basic_AdaDPS`
- [Model Base](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/model_base.py): `Dataset_Testing_Eval_Text/Basic_AdaDPS/model_base.py`
- [DP-ACE](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_DP-ACE_80_20/DP_ACE_Materials/DP_ACE.py): `Dataset_Testing_Eval_Text/Basic_DP-ACE_80_20/DP_ACE_Materials/DP_ACE.py`
- [Wasserstein ACE](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_Wass_DP-ACE_80_20/DP_ACE_Materials/Wasserstein_DP_ACE.py): `Dataset_Testing_Eval_Text/Basic_Wass_DP-ACE_80_20/DP_ACE_Materials/Wasserstein_DP_ACE.py`
- [Mirror Descent](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_Mirror_Descent/Mirror_Descent_Materials/mirror_descent.py): `Dataset_Testing_Eval_Text/Basic_Mirror_Descent/Mirror_Descent_Materials/mirror_descent.py`
- [PATE Training](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Main.py): `Junk Folder/DP Algorithm Implementations/PATE/Syft Implementations of PATE/Main.py`
- [Teacher Models](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Teacher.py): `Junk Folder/DP Algorithm Implementations/PATE/Syft Implementations of PATE/Teacher.py`
- [Student Model](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/Student.py): `Junk Folder/DP Algorithm Implementations/PATE/Syft Implementations of PATE/Student.py`
- [PATE Data](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/DP%20Algorithm%20Implementations/PATE/Syft%20Implementations%20of%20PATE/data.py): `Junk Folder/DP Algorithm Implementations/PATE/Syft Implementations of PATE/data.py`

### Privacy Analysis

- [RDP Accounting](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/privacy_analysis/rdp_accountant.py): `Dataset_Testing_Eval_Text/Basic_AdaDPS/privacy_analysis/rdp_accountant.py`
- [Privacy Conversion](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Text/Basic_AdaDPS/privacy_analysis/compute_privacy_sgm.py): `Dataset_Testing_Eval_Text/Basic_AdaDPS/privacy_analysis/compute_privacy_sgm.py`

### Similarity Metrics

- [Dataset Scores](https://github.com/ruben-hayrapetyan/dsi_repo/tree/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores): `Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores`
- [Kernels](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/kernels.py): `Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/kernels.py`
- [Wasserstein Metrics](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/sliced_wasserstein.py): `Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/sliced_wasserstein.py`
- [Distribution Metrics](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/distributions.py): `Dataset_Testing_Eval_Images/MNIST_PRIVATE/Similarity_Scores/distributions.py`

### Opacus Runtime

- [Privacy Engine](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/privacy_engine.py): `Junk Folder/Similarity Metric Implementations/All_GSD_Code/opacus/privacy_engine.py`
- [DP Optimizers](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/optimizers/optimizer.py): `Junk Folder/Similarity Metric Implementations/All_GSD_Code/opacus/optimizers/optimizer.py`
- [Gradient Sampling](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/grad_sample/grad_sample_module.py): `Junk Folder/Similarity Metric Implementations/All_GSD_Code/opacus/grad_sample/grad_sample_module.py`
- [Runtime Accountants](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/accountants/accountant.py): `Junk Folder/Similarity Metric Implementations/All_GSD_Code/opacus/accountants/accountant.py`
- [Batch Manager](https://github.com/ruben-hayrapetyan/dsi_repo/blob/main/Junk%20Folder/Similarity%20Metric%20Implementations/All_GSD_Code/opacus/utils/batch_memory_manager.py): `Junk Folder/Similarity Metric Implementations/All_GSD_Code/opacus/utils/batch_memory_manager.py`

### Other components

- **Researcher**

## Connections

- Researcher → AdaDPS Runner: configures and runs
- AdaDPS Runner → Training Methods: dynamically selects
- AdaDPS Runner → Training Methods: starts training
- PATE Training → PATE Data: loads data
- PATE Training → Teacher Models: trains and predicts
- PATE Training → Student Model: trains and predicts
- PATE Training → RDP Accounting: analyzes privacy
- Wasserstein ACE → DP-ACE: extends algorithm
- Wasserstein ACE → Wasserstein Metrics: uses metric
- Dataset Scores → Kernels: uses
- Dataset Scores → Wasserstein Metrics: uses
- Dataset Scores → Distribution Metrics: uses
- Privacy Engine → Gradient Sampling: prepares model
- Privacy Engine → DP Optimizers: wraps optimizer
- Privacy Engine → Runtime Accountants: tracks privacy
- Batch Manager → DP Optimizers: coordinates steps
