# ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya architecture

> Architecture diagram of the GitHub repository ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-07). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya
- Repository: https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya

## Overview

This repository implements station-data quality and reliability analytics: it derives rule-based detector evidence and hourly fault models, classifies availability and outage events, scores station health, forecasts health and risk, and presents results through a dashboard. Model training and tuning are a substantial supporting branch. The graph follows relationships named in the SOURCE INDEX or visible in excerpts; unsampled scripts and modules are represented only where their role is clear, and uncertain connections are omitted.

Main entry points: [`src/availability/build_availability_events.py`](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_availability_events.py) (Availability events), [`src/availability/risk_dataset.py`](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_dataset.py) (Risk datasets), [`src/model/hourly_detection.py`](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_detection.py) (Hourly detection), [`src/availability/health_score.py`](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/health_score.py) (Health scoring)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_quality["Data Quality"]
  node_data_audit["Data audit<br/>[run_data_audit.py]"]
  node_row_state["Row state<br/>[row_state.py]"]
  node_rule_evidence["Rule evidence features"]
  node_rule_handlers["Channel handling"]
  node_rule_config["Rule configuration<br/>[config.py]"]
end

subgraph group_detection["Fault Detection"]
  node_hourly_detection["Hourly detection"]
  node_hourly_baseline["Hourly baseline<br/>[hourly_baseline.py]"]
  node_feature_spec["Model feature specification<br/>[feature_spec.py]"]
  node_rgfn["Reliability-aware fusion model<br/>[hourly_rgfn.py]"]
  node_rgfn_training["RGFN training"]
  node_rgfn_tuning["RGFN tuning"]
  node_tuning_workflow["Hourly tuning workflow"]
  node_training_workflow["RGFN training workflow"]
end

subgraph group_reliability["Availability &amp; Health"]
  node_availability_events["Availability events"]
  node_outage_windows["Network outage windows"]
  node_reliability_summary["Station reliability summary"]
  node_health_score["Health scoring<br/>[health_score.py]"]
  node_scorecard["Operational scorecard"]
end

subgraph group_forecast["Risk Forecasting"]
  node_risk_dataset["Risk datasets<br/>[risk_dataset.py]"]
  node_risk_model["Risk model<br/>[risk_model.py]"]
  node_risk_eval["Risk evaluation<br/>[risk_eval.py]"]
  node_health_forecast["Health forecasting<br/>[health_forecast.py]"]
end

subgraph group_presentation["Results &amp; Dashboard"]
  node_dashboard_replay["Dashboard replay<br/>[replay.py]"]
  node_dashboard_presentation["Dashboard presentation<br/>[presentation.py]"]
  node_weather_context["Weather context<br/>[weather_context.py]"]
end

node_operator(("Analyst / operator"))

node_operator -.->|"views results"| node_dashboard_presentation
node_data_audit -->|"uses row states"| node_row_state
node_rule_evidence -->|"uses settings"| node_rule_config
node_rule_evidence -->|"uses channel handling"| node_rule_handlers
node_availability_events -->|"uses row states"| node_row_state
node_availability_events -->|"groups channels"| node_rule_handlers
node_availability_events -->|"uses settings"| node_rule_config
node_availability_events -->|"classifies outages"| node_outage_windows
node_availability_events -->|"builds summary"| node_reliability_summary
node_risk_dataset -->|"uses row states"| node_row_state
node_risk_dataset -->|"uses channel groups"| node_rule_handlers
node_risk_dataset -->|"uses settings"| node_rule_config
node_risk_dataset -->|"uses detector features"| node_hourly_detection
node_risk_dataset -->|"uses availability"| node_availability_events
node_health_score -->|"uses events"| node_availability_events
node_health_score -->|"uses risk data"| node_risk_dataset
node_risk_eval -->|"evaluates datasets"| node_risk_dataset
node_risk_eval -->|"evaluates model"| node_risk_model
node_risk_model -->|"uses datasets"| node_risk_dataset
node_health_forecast -->|"uses events"| node_availability_events
node_health_forecast -->|"uses health scores"| node_health_score
node_health_forecast -->|"uses risk data"| node_risk_dataset
node_hourly_detection -->|"uses feature spec"| node_feature_spec
node_hourly_detection -.->|"uses rule labels"| node_rule_evidence
node_hourly_baseline -->|"uses hourly detection"| node_hourly_detection
node_rgfn -->|"uses feature spec"| node_feature_spec
node_rgfn -->|"uses detection features"| node_hourly_detection
node_rgfn_training -->|"trains model"| node_rgfn
node_tuning_workflow -->|"uses baseline"| node_hourly_baseline
node_tuning_workflow -->|"uses detector"| node_hourly_detection
node_tuning_workflow -->|"runs training"| node_rgfn_training
node_tuning_workflow -->|"runs tuning"| node_rgfn_tuning
node_training_workflow -->|"uses baseline"| node_hourly_baseline
node_training_workflow -->|"uses detector"| node_hourly_detection
node_training_workflow -->|"runs training"| node_rgfn_training
node_dashboard_replay -->|"loads events"| node_availability_events
node_dashboard_replay -->|"loads forecasts"| node_health_forecast
node_dashboard_replay -->|"loads health scores"| node_health_score
node_dashboard_presentation -->|"presents replay"| node_dashboard_replay
node_dashboard_presentation -->|"presents health"| node_health_score
node_weather_context -.->|"context mapping"| node_rule_handlers

click node_data_audit "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/features/run_data_audit.py"
click node_row_state "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/features/row_state.py"
click node_rule_evidence "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/features/detection_features.py"
click node_rule_handlers "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/rules/channel_handlers.py"
click node_rule_config "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/rules/config.py"
click node_availability_events "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_availability_events.py"
click node_outage_windows "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_network_outage_windows.py"
click node_reliability_summary "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_station_reliability_summary.py"
click node_health_score "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/health_score.py"
click node_scorecard "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/operational_scorecard.py"
click node_risk_dataset "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_dataset.py"
click node_risk_model "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_model.py"
click node_risk_eval "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_eval.py"
click node_health_forecast "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/health_forecast.py"
click node_hourly_detection "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_detection.py"
click node_hourly_baseline "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_baseline.py"
click node_feature_spec "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/feature_spec.py"
click node_rgfn "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_rgfn.py"
click node_rgfn_training "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_rgfn_training.py"
click node_rgfn_tuning "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_rgfn_tuning.py"
click node_tuning_workflow "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/workflows/tune_hourly_detection.py"
click node_training_workflow "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/workflows/train_hourly_rgfn.py"
click node_dashboard_replay "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/dashboard/replay.py"
click node_dashboard_presentation "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/dashboard/presentation.py"
click node_weather_context "https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/dashboard/weather_context.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_data_audit,node_row_state,node_rule_evidence,node_rule_handlers,node_rule_config toneBlue
class node_hourly_detection,node_hourly_baseline,node_feature_spec,node_rgfn,node_rgfn_training,node_rgfn_tuning,node_tuning_workflow,node_training_workflow toneAmber
class node_availability_events,node_outage_windows,node_reliability_summary,node_health_score,node_scorecard toneMint
class node_risk_dataset,node_risk_model,node_risk_eval,node_health_forecast toneRose
class node_dashboard_replay,node_dashboard_presentation,node_weather_context,node_operator toneIndigo
```

## Components

### Data Quality

- [Data audit](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/features/run_data_audit.py): `src/features/run_data_audit.py`
- [Row state](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/features/row_state.py): `src/features/row_state.py`
- [Rule evidence features](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/features/detection_features.py): `src/features/detection_features.py`
- [Channel handling](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/rules/channel_handlers.py): `src/rules/channel_handlers.py`
- [Rule configuration](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/rules/config.py): `src/rules/config.py`

### Fault Detection

- [Hourly detection](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_detection.py): `src/model/hourly_detection.py`
- [Hourly baseline](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_baseline.py): `src/model/hourly_baseline.py`
- [Model feature specification](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/feature_spec.py): `src/model/feature_spec.py`
- [Reliability-aware fusion model](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_rgfn.py): `src/model/hourly_rgfn.py`
- [RGFN training](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_rgfn_training.py): `src/model/hourly_rgfn_training.py`
- [RGFN tuning](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/model/hourly_rgfn_tuning.py): `src/model/hourly_rgfn_tuning.py`
- [Hourly tuning workflow](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/workflows/tune_hourly_detection.py): `src/workflows/tune_hourly_detection.py`
- [RGFN training workflow](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/workflows/train_hourly_rgfn.py): `src/workflows/train_hourly_rgfn.py`

### Availability & Health

- [Availability events](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_availability_events.py): `src/availability/build_availability_events.py`
- [Network outage windows](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_network_outage_windows.py): `src/availability/build_network_outage_windows.py`
- [Station reliability summary](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/build_station_reliability_summary.py): `src/availability/build_station_reliability_summary.py`
- [Health scoring](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/health_score.py): `src/availability/health_score.py`
- [Operational scorecard](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/operational_scorecard.py): `src/availability/operational_scorecard.py`

### Risk Forecasting

- [Risk datasets](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_dataset.py): `src/availability/risk_dataset.py`
- [Risk model](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_model.py): `src/availability/risk_model.py`
- [Risk evaluation](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/risk_eval.py): `src/availability/risk_eval.py`
- [Health forecasting](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/availability/health_forecast.py): `src/availability/health_forecast.py`

### Results & Dashboard

- [Dashboard replay](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/dashboard/replay.py): `src/dashboard/replay.py`
- [Dashboard presentation](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/dashboard/presentation.py): `src/dashboard/presentation.py`
- [Weather context](https://github.com/ayatelawej/fault-detection-and-reliability-monitoring-for-a-newly-deployed-weather-station-network-in-libya/blob/main/src/dashboard/weather_context.py): `src/dashboard/weather_context.py`

### Other components

- **Analyst / operator**

## Connections

- Analyst / operator → Dashboard presentation: views results
- Data audit → Row state: uses row states (evidence: `src/features/run_data_audit.py`)
- Rule evidence features → Rule configuration: uses settings (evidence: `src/features/detection_features.py`)
- Rule evidence features → Channel handling: uses channel handling (evidence: `src/features/detection_features.py`)
- Availability events → Row state: uses row states (evidence: `src/availability/build_availability_events.py`)
- Availability events → Channel handling: groups channels (evidence: `src/availability/build_availability_events.py`)
- Availability events → Rule configuration: uses settings (evidence: `src/availability/build_availability_events.py`)
- Availability events → Network outage windows: classifies outages (evidence: `src/availability/build_availability_events.py`)
- Availability events → Station reliability summary: builds summary (evidence: `src/availability/build_availability_events.py`)
- Risk datasets → Row state: uses row states (evidence: `src/availability/risk_dataset.py`)
- Risk datasets → Channel handling: uses channel groups (evidence: `src/availability/risk_dataset.py`)
- Risk datasets → Rule configuration: uses settings (evidence: `src/availability/risk_dataset.py`)
- Risk datasets → Hourly detection: uses detector features (evidence: `src/availability/risk_dataset.py`)
- Risk datasets → Availability events: uses availability (evidence: `src/availability/risk_dataset.py`)
- Health scoring → Availability events: uses events (evidence: `src/availability/health_score.py`)
- Health scoring → Risk datasets: uses risk data (evidence: `src/availability/health_score.py`)
- Risk evaluation → Risk datasets: evaluates datasets (evidence: `src/availability/risk_eval.py`)
- Risk evaluation → Risk model: evaluates model (evidence: `src/availability/risk_eval.py`)
- Risk model → Risk datasets: uses datasets (evidence: `src/availability/risk_model.py`)
- Health forecasting → Availability events: uses events (evidence: `src/availability/health_forecast.py`)
- Health forecasting → Health scoring: uses health scores (evidence: `src/availability/health_forecast.py`)
- Health forecasting → Risk datasets: uses risk data (evidence: `src/availability/health_forecast.py`)
- Hourly detection → Model feature specification: uses feature spec (evidence: `src/model/hourly_detection.py`)
- Hourly detection → Rule evidence features: uses rule labels
- Hourly baseline → Hourly detection: uses hourly detection (evidence: `src/model/hourly_baseline.py`)
- Reliability-aware fusion model → Model feature specification: uses feature spec (evidence: `src/model/hourly_rgfn.py`)
- Reliability-aware fusion model → Hourly detection: uses detection features (evidence: `src/model/hourly_rgfn.py`)
- RGFN training → Reliability-aware fusion model: trains model (evidence: `src/model/hourly_rgfn_training.py`)
- Hourly tuning workflow → Hourly baseline: uses baseline (evidence: `src/workflows/tune_hourly_detection.py`)
- Hourly tuning workflow → Hourly detection: uses detector (evidence: `src/workflows/tune_hourly_detection.py`)
- Hourly tuning workflow → RGFN training: runs training (evidence: `src/workflows/tune_hourly_detection.py`)
- Hourly tuning workflow → RGFN tuning: runs tuning (evidence: `src/workflows/tune_hourly_detection.py`)
- RGFN training workflow → Hourly baseline: uses baseline (evidence: `src/workflows/train_hourly_rgfn.py`)
- RGFN training workflow → Hourly detection: uses detector (evidence: `src/workflows/train_hourly_rgfn.py`)
- RGFN training workflow → RGFN training: runs training (evidence: `src/workflows/train_hourly_rgfn.py`)
- Dashboard replay → Availability events: loads events (evidence: `src/dashboard/replay.py`)
- Dashboard replay → Health forecasting: loads forecasts (evidence: `src/dashboard/replay.py`)
- Dashboard replay → Health scoring: loads health scores (evidence: `src/dashboard/replay.py`)
- Dashboard presentation → Dashboard replay: presents replay (evidence: `src/dashboard/presentation.py`)
- Dashboard presentation → Health scoring: presents health (evidence: `src/dashboard/presentation.py`)
- Weather context → Channel handling: context mapping
