コンテンツにスキップ

データセットローダの仕様

新たなデータセットローダを作成する場合,下記の仕様に準拠した実装を行ってください.

  • ファイル名は [データセット名(小文字)].py とする.
  • 必ずload関数・load_raw関数・reformat関数を実装する.

    • load関数は必ず実装し,以下の仕様に従ってください.
    • 他のデータセットではローダクラスが実装されていますが,これらはOptionalです.
    • load関数では可能な限りパスチェックを行うようにしてください.sensorutils.datasets.base.check_pathで基本的なパスチェック機能が実装されているのでこれを活用することを推奨します.

    load関数は次のようにload_raw関数とreformat関数で構成されます.

    1
    2
    3
    4
    5
    6
    7
    8
    def load(path, *options):
    # データセットのロードと簡単な整形のみを行う
    raw = load_raw(path, *options)
    
    # load_raw関数で読み込まれた生のデータを"統一的なデータ構造"に変更
    data = reformat(raw)
    
    return data
    
    • load_raw関数

      この関数ではデータセットからの読み込みのみを行い,返すデータは任意の型とする.ここではデータセット間の形式の違いを考慮せず, 返すデータはデータセットの形式から大きく離れないようにする.

      例えば,データセットが2つのcsvファイルからなる場合, それぞれのデータが格納されたDataFrameのリストにして返すようにする.

    • reformat関数

      この関数ではload_raw関数で返された値を受け取り, (sensor data, meta data)の型に整形する. センサデータの型はデータセットによらずList[DataFrame]とするが, メタデータの型はデータセットの形式に依存し,(pattern 1) DataFrameか(pattern 2) List[DataFrame]としている.

      大半のデータセットはどちらかの形で対応可能であると思われますが, これらの形で対応できないようなデータセットがある場合はIssue等で相談してください

  • ローダクラスを実装する場合,sensorutils.datasets.base.BaseDatasetクラスを継承し,loadメソッドをオーバーライドする.

  • ローダクラスを実装する場合はload関数あるいはload_raw関数を用いた実装を行う.

  • ドキュメントを書く

    これは仕様というよりルールですが,可能な限りドキュメント(docstring等)を充実させてください. 少なくとも,load関数の説明とデータセットのソースを明らかにする記述を入れてるようにしてください.