Adapter API

Adapter API

概述

Adapter 層是 PETsARD 架構中的關鍵組件,負責將各個模組包裝成統一的執行介面,供 Executor 調用。每個 Adapter 為其對應的模組提供標準化的生命週期方法和資料流管理。

Adapter 整體架構

classDiagram

    class BaseAdapter {
        <<抽象類別>>
        +config: dict
        +name: str
        +run()
    }

    class LoaderAdapter {
        +loader: Loader
        +benchmarker: Benchmarker
        +run() tuple[DataFrame, Schema]
    }

    class MetadaterAdapter {
        +metadater: SchemaMetadater
        +run() Schema
    }

    class DperAdapter {
        +dper: Dper
        +run() DataFrame
    }

    class SynthesizerAdapter {
        +synthesizer: Synthesizer
        +run() DataFrame
    }

    class EvaluatorAdapter {
        +evaluator: Evaluator
        +run() dict
    }

    class VisualizerAdapter {
        +visualizer: Visualizer
        +run() None
    }

    class DatalabAdapter {
        +datalab: Datalab
        +run() dict
    }

    BaseAdapter <|-- LoaderAdapter
    BaseAdapter <|-- MetadaterAdapter
    BaseAdapter <|-- DperAdapter
    BaseAdapter <|-- SynthesizerAdapter
    BaseAdapter <|-- EvaluatorAdapter
    BaseAdapter <|-- VisualizerAdapter
    BaseAdapter <|-- DatalabAdapter

    %% 樣式定義
    style BaseAdapter fill:#F0F0F0
    style LoaderAdapter fill:#E6E6FA
    style MetadaterAdapter fill:#E6E6FA
    style DperAdapter fill:#E6E6FA
    style SynthesizerAdapter fill:#E6E6FA
    style EvaluatorAdapter fill:#E6E6FA
    style VisualizerAdapter fill:#E6E6FA
    style DatalabAdapter fill:#E6E6FA

圖例說明:

  • 灰色框:抽象基底類別
  • 淺紫框:具體 Adapter 實作類別
  • <|--:繼承關係 (inheritance)

架構

所有 Adapter 類別都繼承自 BaseAdapter,並實作以下核心介面:

核心方法

工具方法

BaseAdapter 提供多個工具方法用於常見操作:

Adapter 類別

Adapter對應模組主要特色
LoaderAdapterLoader資料載入,支援 benchmark:// 協議
SplitterAdapterSplitter資料分割,支援 custom_data 方法
PreprocessorAdapterProcessor前處理,支援全域離群值配置展開
SynthesizerAdapterSynthesizer資料合成,支援 custom_data 方法
PostprocessorAdapterProcessor後處理,支援資料型別復原
ConstrainerAdapterConstrainer約束應用,支援 resample/validate 模式
EvaluatorAdapterEvaluator評估,支援自動資料型別對齊
DescriberAdapterDescriber描述統計,支援 describe/compare 模式
ReporterAdapterReporter報告產生,支援計時和驗證結果

基本使用模式

from petsard.adapter import LoaderAdapter

# 創建 adapter
adapter = LoaderAdapter(config)

# 從 Status 設定輸入
input_data = adapter.set_input(status)

# 執行並計時
adapter.run(input_data)

# 取得結果
result = adapter.get_result()
metadata = adapter.get_metadata()  # 如適用

錯誤處理

所有 Adapter 都使用裝飾器模式處理錯誤:

資料流

Adapter 透過 Status 物件管理模組間的資料流:

  1. 輸入階段set_input() 透過 Status 從前置模組取得資料
  2. 執行階段run() 執行包裝的模組並計時
  3. 輸出階段get_result()get_metadata() 將結果提供給 Status

注意事項

  • Adapter 層是內部架構 - 不建議直接使用
  • 優先使用 YAML 配置檔搭配 Executor
  • 所有資料修改都遵守 Schema 的精度和統計設定
  • Benchmark 下載透過 benchmark:// 協議自動處理
  • 各 Adapter 的詳細配置選項請參考個別頁面