Architecture#
This page contains architecture diagrams that illustrate the structure and relationships between Tab-right’s main components.
Core Components#
Tab-right consists of several core modules and classes that work together to provide data analysis functionality:
classDiagram
class BaseSegmentationCalc {
+df: pd.DataFrame
+label_col: str
+prediction_col: str
+__call__(metric: Callable) -> pd.DataFrame
}
class DoubleSegmentation {
+df: pd.DataFrame
+label_col: str
+prediction_col: str
+_group_2_features(feature1, feature2, bins_1, bins_2) -> BaseSegmentationCalc
+__call__(feature1_col, feature2_col, score_metric, bins_1, bins_2) -> pd.DataFrame
}
class DriftCalcP {
+df1: pd.DataFrame
+df2: pd.DataFrame
+kind: Optional[Dict[str, str]]
+__call__(columns, bins) -> pd.DataFrame
+get_prob_density(columns, bins) -> pd.DataFrame
+_categorical_drift_calc(s1, s2) -> float
+_continuous_drift_calc(s1, s2, bins) -> float
}
class DriftPlotP {
+drift_calc: DriftCalcP
+plot_multiple(columns, bins, figsize, sort_by, ascending, top_n, threshold) -> Figure
+plot_single(column, bins, figsize, show_metrics) -> Figure
+get_distribution_plots(columns, bins) -> Dict[str, Figure]
}
class DoubleSegmPlottingP {
+df: pd.DataFrame
+metric_name: str
+lower_is_better: bool
+get_heatmap_df() -> pd.DataFrame
+plot_heatmap() -> Figure
}
DoubleSegmentation --|> BaseSegmentationCalc : uses
DriftPlotP --|> DriftCalcP : uses
DoubleSegmPlottingP ..> DoubleSegmentation : uses results from
Module Structure#
The following diagram shows the high-level module organization of Tab-right:
graph TD
A[tab_right] --> B[base_architecture]
A --> C[segmentations]
A --> D[drift]
A --> E[plotting]
A --> F[task_detection]
B --> B1[seg_protocols.py]
B --> B2[seg_plotting_protocols.py]
B --> B3[drift_protocols.py]
B --> B4[drift_plot_protocols.py]
C --> C1[calc_seg.py]
C --> C2[double_seg.py]
D --> D1[drift_calculator.py]
D --> D2[univariate.py]
D --> D3[cramer_v.py]
E --> E1[plot_segmentations.py]
E --> E2[drift_plotter.py]
Protocol Relationships#
The following diagram illustrates the relationships between the main protocol interfaces:
flowchart LR
A[BaseSegmentationCalc] --> B[SegmentationCalc]
A --> C[DoubleSegmentation]
C --> D[DoubleSegmentationImp]
E[DoubleSegmPlottingP] --> F[DoubleSegmPlotting]
H[DriftCalcP] --> I[DriftCalculator]
J[DriftPlotP] --> K[DriftPlotter]
B -.-> F
D -.-> F
I -.-> K
Data Flow#
This diagram shows the typical data flow when using Tab-right:
sequenceDiagram
participant User
participant Segmentation
participant Metrics
participant Plotting
User->>Segmentation: Create segmentation with df, labels, predictions
Segmentation->>Segmentation: Group data by features
Segmentation->>Metrics: Calculate metrics per segment
Metrics->>Segmentation: Return segment metrics
Segmentation->>User: Return segmentation results
User->>Plotting: Create visualization with results
Plotting->>User: Return charts/figures
How to Update These Diagrams#
These architecture diagrams can be updated by modifying the Mermaid syntax directly in this file. To update:
Edit this file (architecture.rst)
Update the Mermaid diagram code between the .. mermaid:: directive blocks
Run make html to preview changes
Run make doctest to verify documentation integrity
For more information on Mermaid syntax, visit the Mermaid documentation.