# anuragsingz/diamond-price-prediction-main architecture

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

- Interactive diagram: https://gitdiagram.com/anuragsingz/diamond-price-prediction-main
- Repository: https://github.com/anuragsingz/diamond-price-prediction-main

## Overview

This repository is a diamond-price regression application with a Flask prediction interface and a separate model-training workflow. A user submits diamond attributes through the form; the app converts them to a dataframe, loads saved preprocessing and model artifacts, predicts a price, and renders the result. Training ingests and splits gemstone data, transforms features, trains candidate regressors, and evaluates the model with MLflow tracking. The source shows these component calls, but there are artifact path/name inconsistencies, so the graph does not assume training artifacts successfully feed evaluation or inference. The MLflow capability is also documented in the README; unsampled integrations are not inferred.

Main entry points: [`src/DiamondPricePrediction/components/Model_trainer.py`](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Model_trainer.py) (Model trainer), [`app.py`](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/app.py) (Flask routes), [`src/DiamondPricePrediction/components/Data_transformation.py`](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Data_transformation.py) (Feature transformation), [`src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py`](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py) (Prediction pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Prediction web app"]
  node_flask["Flask routes<br/>[app.py]"]
  node_form["Input form<br/>[form.html]"]
  node_result["Price result<br/>[result.html]"]
  node_customdata["Input dataframe"]
  node_predict["Prediction pipeline"]
end

subgraph group_training["Model training"]
  node_ingestion["Data ingestion<br/>[Data_ingestion.py]"]
  node_source_data["Gemstone dataset<br/>[gemstone.csv]"]
  node_split_data["Train/test CSVs"]
  node_transform["Feature transformation"]
  node_trainer["Model trainer<br/>[Model_trainer.py]"]
  node_evaluation["Model evaluation"]
end

subgraph group_artifacts["Model artifacts"]
  node_artifact_files["Model artifacts"]
end

subgraph group_support["Shared internals"]
  node_utilities["Serialization and scoring<br/>[utils.py]"]
  node_logging["Application logging<br/>[logger.py]"]
  node_exceptions["Custom exceptions<br/>[exception.py]"]
end

node_visitor(("Browser user"))
node_tracking["MLflow tracking"]

node_visitor -->|"submits attributes"| node_flask
node_flask -->|"renders form"| node_form
node_flask -->|"creates input"| node_customdata
node_customdata -->|"provides dataframe"| node_predict
node_flask -->|"requests prediction"| node_predict
node_flask -->|"renders price"| node_result
node_visitor -->|"views result"| node_result
node_ingestion -->|"reads dataset"| node_source_data
node_ingestion -->|"writes splits"| node_split_data
node_ingestion -->|"returns split paths"| node_transform
node_transform -->|"reads splits"| node_split_data
node_transform -->|"saves preprocessor"| node_utilities
node_transform -->|"provides arrays"| node_trainer
node_trainer -->|"evaluates candidates"| node_utilities
node_trainer -->|"saves selected model"| node_utilities
node_trainer -->|"writes model"| node_artifact_files
node_trainer -->|"starts evaluation"| node_evaluation
node_evaluation -->|"loads model"| node_utilities
node_evaluation -->|"logs metrics and model"| node_tracking
node_predict -->|"loads artifacts"| node_utilities
node_predict -->|"reads model and preprocessor"| node_artifact_files
node_ingestion -->|"logs progress"| node_logging
node_transform -->|"raises errors"| node_exceptions
node_trainer -->|"raises errors"| node_exceptions
node_predict -->|"raises errors"| node_exceptions

click node_flask "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/app.py"
click node_form "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/templates/form.html"
click node_result "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/templates/result.html"
click node_customdata "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py"
click node_predict "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py"
click node_ingestion "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Data_ingestion.py"
click node_source_data "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/Notebook_Experiments/Data/gemstone.csv"
click node_split_data "https://github.com/anuragsingz/diamond-price-prediction-main/tree/main/Artifacts"
click node_transform "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Data_transformation.py"
click node_trainer "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Model_trainer.py"
click node_evaluation "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Model_evaluation.py"
click node_artifact_files "https://github.com/anuragsingz/diamond-price-prediction-main/tree/main/Artifacts"
click node_utilities "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/utils/utils.py"
click node_logging "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/logger.py"
click node_exceptions "https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/exception.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_flask,node_form,node_result,node_customdata,node_predict,node_visitor toneBlue
class node_ingestion,node_source_data,node_split_data,node_transform,node_trainer,node_evaluation toneAmber
class node_artifact_files toneMint
class node_utilities,node_logging,node_exceptions toneRose
class node_tracking toneIndigo
```

## Components

### Prediction web app

- [Flask routes](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/app.py): `app.py`
- [Input form](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/templates/form.html): `templates/form.html`
- [Price result](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/templates/result.html): `templates/result.html`
- [Input dataframe](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py): `src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py`
- [Prediction pipeline](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py): `src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py`

### Model training

- [Data ingestion](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Data_ingestion.py): `src/DiamondPricePrediction/components/Data_ingestion.py`
- [Gemstone dataset](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/Notebook_Experiments/Data/gemstone.csv): `Notebook_Experiments/Data/gemstone.csv`
- [Train/test CSVs](https://github.com/anuragsingz/diamond-price-prediction-main/tree/main/Artifacts): `Artifacts`
- [Feature transformation](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Data_transformation.py): `src/DiamondPricePrediction/components/Data_transformation.py`
- [Model trainer](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Model_trainer.py): `src/DiamondPricePrediction/components/Model_trainer.py`
- [Model evaluation](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/components/Model_evaluation.py): `src/DiamondPricePrediction/components/Model_evaluation.py`

### Model artifacts

- [Model artifacts](https://github.com/anuragsingz/diamond-price-prediction-main/tree/main/Artifacts): `Artifacts`

### Shared internals

- [Serialization and scoring](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/utils/utils.py): `src/DiamondPricePrediction/utils/utils.py`
- [Application logging](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/logger.py): `src/DiamondPricePrediction/logger.py`
- [Custom exceptions](https://github.com/anuragsingz/diamond-price-prediction-main/blob/main/src/DiamondPricePrediction/exception.py): `src/DiamondPricePrediction/exception.py`

### Other components

- **Browser user**
- **MLflow tracking**

## Connections

- Browser user → Flask routes: submits attributes (evidence: `app.py`)
- Flask routes → Input form: renders form (evidence: `app.py`)
- Flask routes → Input dataframe: creates input (evidence: `app.py`)
- Input dataframe → Prediction pipeline: provides dataframe (evidence: `app.py`)
- Flask routes → Prediction pipeline: requests prediction (evidence: `app.py`)
- Flask routes → Price result: renders price (evidence: `app.py`)
- Browser user → Price result: views result
- Data ingestion → Gemstone dataset: reads dataset (evidence: `src/DiamondPricePrediction/components/Data_ingestion.py`)
- Data ingestion → Train/test CSVs: writes splits (evidence: `src/DiamondPricePrediction/components/Data_ingestion.py`)
- Data ingestion → Feature transformation: returns split paths (evidence: `src/DiamondPricePrediction/pipelines/Training_pipeline.py`)
- Feature transformation → Train/test CSVs: reads splits (evidence: `src/DiamondPricePrediction/components/Data_transformation.py`)
- Feature transformation → Serialization and scoring: saves preprocessor (evidence: `src/DiamondPricePrediction/components/Data_transformation.py`)
- Feature transformation → Model trainer: provides arrays (evidence: `src/DiamondPricePrediction/pipelines/Training_pipeline.py`)
- Model trainer → Serialization and scoring: evaluates candidates (evidence: `src/DiamondPricePrediction/components/Model_trainer.py`)
- Model trainer → Serialization and scoring: saves selected model (evidence: `src/DiamondPricePrediction/components/Model_trainer.py`)
- Model trainer → Model artifacts: writes model (evidence: `src/DiamondPricePrediction/components/Model_trainer.py`)
- Model trainer → Model evaluation: starts evaluation (evidence: `src/DiamondPricePrediction/pipelines/Training_pipeline.py`)
- Model evaluation → Serialization and scoring: loads model (evidence: `src/DiamondPricePrediction/components/Model_evaluation.py`)
- Model evaluation → MLflow tracking: logs metrics and model (evidence: `src/DiamondPricePrediction/components/Model_evaluation.py`)
- Prediction pipeline → Serialization and scoring: loads artifacts (evidence: `src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py`)
- Prediction pipeline → Model artifacts: reads model and preprocessor (evidence: `src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py`)
- Data ingestion → Application logging: logs progress (evidence: `src/DiamondPricePrediction/components/Data_ingestion.py`)
- Feature transformation → Custom exceptions: raises errors (evidence: `src/DiamondPricePrediction/components/Data_transformation.py`)
- Model trainer → Custom exceptions: raises errors (evidence: `src/DiamondPricePrediction/components/Model_trainer.py`)
- Prediction pipeline → Custom exceptions: raises errors (evidence: `src/DiamondPricePrediction/pipelines/Prediction_Pipeline.py`)
