データセットローダの仕様
新たなデータセットローダを作成する場合,下記の仕様に準拠した実装を行ってください.
- ファイル名は
[データセット名(小文字)].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
関数の説明とデータセットのソースを明らかにする記述を入れてるようにしてください.