# mateusfkschenato/arcanum architecture

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

- Interactive diagram: https://gitdiagram.com/mateusfkschenato/arcanum
- Repository: https://github.com/mateusfkschenato/arcanum

## Overview

Arcanum is a high-load prediction project for electric-arc-furnace scrap baskets, with a Streamlit race simulator and a batch train/predict pipeline. The documented analytical workflow runs from raw EVCOMX data through cleaning, feature engineering, model selection, evaluation, validation, and interpretation; the operational workflow lets an operator assemble a race and inspect the model’s risk result. Edges reflect README-documented stages or sampled imports/calls; some analytical stage internals and batch wiring are unsampled, so their links are documented rather than inferred from names.

Main entry points: [`comum/protocolo.py`](https://github.com/mateusfkschenato/arcanum/blob/main/comum/protocolo.py) (Model protocol), [`src/selecao_algoritmos/selecao_algoritmos.py`](https://github.com/mateusfkschenato/arcanum/blob/main/src/selecao_algoritmos/selecao_algoritmos.py) (Model selection), [`app_streamlit/motor.py`](https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/motor.py) (Simulation engine), [`app_streamlit/app.py`](https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/app.py) (Race builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analysis["Model development"]
  node_eda["Clean and explore<br/>[EDA.py]"]
  node_features["Feature selection"]
  node_selection["Model selection"]
  node_metrics["Model analysis<br/>[analise_modelos.py]"]
  node_validation["Verification"]
  node_interpretation["Model interpretation"]
  node_optimize["Operational scenarios"]
end

subgraph group_pipeline["Batch prediction"]
  node_trainer["Train model<br/>[treinar.py]"]
  node_batch_features["Race features"]
  node_predict["Batch prediction<br/>[prever.py]"]
end

subgraph group_simulator["Race simulator"]
  node_operator_ui["Race builder<br/>[app.py]"]
  node_engine["Simulation engine<br/>[motor.py]"]
  node_drawing["Basket display<br/>[desenho.py]"]
  node_materials[("Simulator data")]
end

subgraph group_shared["Shared model logic"]
  node_protocol["Model protocol<br/>[protocolo.py]"]
  node_recipe["Recipe recalculation<br/>[receita.py]"]
end

node_operator(("Operator"))
node_raw[("EVCOMX raw data")]
node_race_input["Race files"]
node_race_output["Prediction files"]

node_raw -->|"clean and explore"| node_eda
node_eda -->|"prepare data"| node_features
node_features -->|"provide features"| node_selection
node_selection -->|"provide predictions"| node_metrics
node_metrics -->|"evaluate results"| node_validation
node_validation -->|"validate first"| node_interpretation
node_selection -.->|"inform scenarios"| node_optimize
node_features -->|"use rules"| node_protocol
node_selection -->|"use protocol"| node_protocol
node_metrics -->|"use metrics"| node_protocol
node_validation -->|"use protocol"| node_protocol
node_interpretation -->|"load model rules"| node_protocol
node_trainer -.->|"read inputs"| node_race_input
node_trainer -.->|"use model recipe"| node_protocol
node_race_input -.->|"provide races"| node_predict
node_predict -->|"build features"| node_batch_features
node_batch_features -->|"calculate recipe"| node_recipe
node_predict -.->|"write predictions"| node_race_output
node_operator -->|"assemble race"| node_operator_ui
node_operator_ui -->|"validate and score"| node_engine
node_operator_ui -.->|"render display"| node_drawing
node_engine -.->|"use material data"| node_materials
node_engine -->|"reuse recipe logic"| node_recipe
node_engine -.->|"return risk"| node_operator_ui

click node_raw "https://github.com/mateusfkschenato/arcanum/tree/main/original_dataset"
click node_eda "https://github.com/mateusfkschenato/arcanum/blob/main/src/EDA/EDA.py"
click node_features "https://github.com/mateusfkschenato/arcanum/blob/main/src/feature_selection/feature_selection.py"
click node_selection "https://github.com/mateusfkschenato/arcanum/blob/main/src/selecao_algoritmos/selecao_algoritmos.py"
click node_metrics "https://github.com/mateusfkschenato/arcanum/blob/main/src/analise_modelos/analise_modelos.py"
click node_validation "https://github.com/mateusfkschenato/arcanum/blob/main/src/verificacao_validacao/verificacao_validacao.py"
click node_interpretation "https://github.com/mateusfkschenato/arcanum/blob/main/src/interpretacao_modelos/interpretacao_modelos.py"
click node_optimize "https://github.com/mateusfkschenato/arcanum/blob/main/src/otimizacao_minutos/cenarios_operacionais.py"
click node_trainer "https://github.com/mateusfkschenato/arcanum/blob/main/pipeline/treinar.py"
click node_batch_features "https://github.com/mateusfkschenato/arcanum/blob/main/pipeline/features_corrida.py"
click node_predict "https://github.com/mateusfkschenato/arcanum/blob/main/pipeline/prever.py"
click node_race_input "https://github.com/mateusfkschenato/arcanum/tree/main/previsao/entrada"
click node_race_output "https://github.com/mateusfkschenato/arcanum/tree/main/previsao/saida"
click node_protocol "https://github.com/mateusfkschenato/arcanum/blob/main/comum/protocolo.py"
click node_recipe "https://github.com/mateusfkschenato/arcanum/blob/main/comum/receita.py"
click node_operator_ui "https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/app.py"
click node_engine "https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/motor.py"
click node_drawing "https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/desenho.py"
click node_materials "https://github.com/mateusfkschenato/arcanum/tree/main/app_streamlit/dados_app"

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_eda,node_features,node_selection,node_metrics,node_validation,node_interpretation,node_optimize toneBlue
class node_trainer,node_batch_features,node_predict,node_raw toneAmber
class node_operator_ui,node_engine,node_drawing,node_materials toneMint
class node_protocol,node_recipe toneRose
class node_operator toneIndigo
class node_race_input,node_race_output toneTeal
```

## Components

### Model development

- [Clean and explore](https://github.com/mateusfkschenato/arcanum/blob/main/src/EDA/EDA.py): `src/EDA/EDA.py`
- [Feature selection](https://github.com/mateusfkschenato/arcanum/blob/main/src/feature_selection/feature_selection.py): `src/feature_selection/feature_selection.py`
- [Model selection](https://github.com/mateusfkschenato/arcanum/blob/main/src/selecao_algoritmos/selecao_algoritmos.py): `src/selecao_algoritmos/selecao_algoritmos.py`
- [Model analysis](https://github.com/mateusfkschenato/arcanum/blob/main/src/analise_modelos/analise_modelos.py): `src/analise_modelos/analise_modelos.py`
- [Verification](https://github.com/mateusfkschenato/arcanum/blob/main/src/verificacao_validacao/verificacao_validacao.py): `src/verificacao_validacao/verificacao_validacao.py`
- [Model interpretation](https://github.com/mateusfkschenato/arcanum/blob/main/src/interpretacao_modelos/interpretacao_modelos.py): `src/interpretacao_modelos/interpretacao_modelos.py`
- [Operational scenarios](https://github.com/mateusfkschenato/arcanum/blob/main/src/otimizacao_minutos/cenarios_operacionais.py): `src/otimizacao_minutos/cenarios_operacionais.py`

### Batch prediction

- [Train model](https://github.com/mateusfkschenato/arcanum/blob/main/pipeline/treinar.py): `pipeline/treinar.py`
- [Race features](https://github.com/mateusfkschenato/arcanum/blob/main/pipeline/features_corrida.py): `pipeline/features_corrida.py`
- [Batch prediction](https://github.com/mateusfkschenato/arcanum/blob/main/pipeline/prever.py): `pipeline/prever.py`

### Race simulator

- [Race builder](https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/app.py): `app_streamlit/app.py`
- [Simulation engine](https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/motor.py): `app_streamlit/motor.py`
- [Basket display](https://github.com/mateusfkschenato/arcanum/blob/main/app_streamlit/desenho.py): `app_streamlit/desenho.py`
- [Simulator data](https://github.com/mateusfkschenato/arcanum/tree/main/app_streamlit/dados_app): `app_streamlit/dados_app`

### Shared model logic

- [Model protocol](https://github.com/mateusfkschenato/arcanum/blob/main/comum/protocolo.py): `comum/protocolo.py`
- [Recipe recalculation](https://github.com/mateusfkschenato/arcanum/blob/main/comum/receita.py): `comum/receita.py`

### Other components

- **Operator**
- [EVCOMX raw data](https://github.com/mateusfkschenato/arcanum/tree/main/original_dataset): `original_dataset`
- [Race files](https://github.com/mateusfkschenato/arcanum/tree/main/previsao/entrada): `previsao/entrada`
- [Prediction files](https://github.com/mateusfkschenato/arcanum/tree/main/previsao/saida): `previsao/saida`

## Connections

- EVCOMX raw data → Clean and explore: clean and explore (evidence: `README.md`)
- Clean and explore → Feature selection: prepare data (evidence: `README.md`)
- Feature selection → Model selection: provide features (evidence: `README.md`)
- Model selection → Model analysis: provide predictions (evidence: `src/analise_modelos/analise_modelos.py`)
- Model analysis → Verification: evaluate results (evidence: `README.md`)
- Verification → Model interpretation: validate first (evidence: `src/interpretacao_modelos/interpretacao_modelos.py`)
- Model selection → Operational scenarios: inform scenarios
- Feature selection → Model protocol: use rules (evidence: `src/feature_selection/feature_selection.py`)
- Model selection → Model protocol: use protocol (evidence: `src/selecao_algoritmos/selecao_algoritmos.py`)
- Model analysis → Model protocol: use metrics (evidence: `src/analise_modelos/analise_modelos.py`)
- Verification → Model protocol: use protocol (evidence: `src/verificacao_validacao/verificacao_validacao.py`)
- Model interpretation → Model protocol: load model rules (evidence: `src/interpretacao_modelos/interpretacao_modelos.py`)
- Train model → Race files: read inputs
- Train model → Model protocol: use model recipe
- Race files → Batch prediction: provide races
- Batch prediction → Race features: build features (evidence: `pipeline/prever.py`)
- Race features → Recipe recalculation: calculate recipe (evidence: `pipeline/features_corrida.py`)
- Batch prediction → Prediction files: write predictions
- Operator → Race builder: assemble race (evidence: `README.md`)
- Race builder → Simulation engine: validate and score (evidence: `app_streamlit/app.py`)
- Race builder → Basket display: render display (evidence: `app_streamlit/app.py`)
- Simulation engine → Simulator data: use material data
- Simulation engine → Recipe recalculation: reuse recipe logic (evidence: `comum/receita.py`)
- Simulation engine → Race builder: return risk (evidence: `app_streamlit/app.py`)
