haniwers.dataset#
解析用データ読み込みのモジュール
- TODO:
作りはじめてみましたが、config.RunManagerに統合できそうな気がしてきました。 できることを比べながら、こちらを削除する予定にします。
Module Contents#
Classes#
データセットのパス設定 |
|
ラン設定 |
Functions#
日時を変換する |
|
(削除予定)DAQで取得したデータ形式を |
|
(削除予定)複数のファイルを読み込み、単一のデータフレームに変換する |
API#
- class haniwers.dataset.PathSettings(/, **data: Any)#
Bases:
pydantic.BaseModelデータセットのパス設定
- TODO:
データセットの配置を変更したら、パスのデフォルト値を変更する
Initialization
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.- drive: str#
‘.’
測定データがあるルートディレクトリ。デフォルトは
.(カレントディレクトリ)
- _get_path(path: str) pathlib.Path#
(プライベート関数)データのパスを取得
driveとpathを使って読み込みたいデータのパスを取得します。- Args:
path (str): パス名
- Exception:
指定したパスが存在しない場合は
driveに設定
- Returns:
p (Path): データのパス
- raw_data_path(path: str = 'raw_data') pathlib.Path#
測定データのパス
- Args:
path (str, optional): パス名. Defaults to “raw_data”.
- Returns:
p (Path): 測定データのパス
- preprocessed_data_path(path: str = 'parsed') pathlib.Path#
前処理したデータのパス
- Args:
path (str, optional): パス名. Defaults to “parsed”.
- Returns:
p (Path): 前処理したデータのパス
- resampled_data_path(path: str = 'parsed') pathlib.Path#
リサンプルしたデータのパス
- class haniwers.dataset.Run(/, **data: Any)#
Bases:
haniwers.dataset.PathSettingsラン設定
- Examples:
run = Run(run_id=65, date="20240521") data1 = run.preprocessed_data() data2 = run.resample_data() data3 = run.ondotori_data()
実行する場所からデータセットまでのパスを
driveで変更できます。run = Run(run_id=65, date="20240521", drive="../data") data = run.resample_data()
Initialization
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.- run_id: int#
None
ラン番号
- date: str#
None
測定日
- name: str | None#
None
ファイル名
- model_post_init(__context: Any) None#
- _stem() str#
(プライベート関数)ファイル名のstemを取得する
- _osechi_raw_data(search_pattern='osechi_data_*.csv') list[pathlib.Path]#
(プライベート関数)前処理したファイル名のリストを取得する
- _osechi_preprocessed_data() list[pathlib.Path]#
(プライベート関数)前処理したファイル名のリストを取得する
- _osechi_resampled_data() list[pathlib.Path]#
(プライベート関数)リサンプルしたファイル名のリストを取得する
- _ondotori_raw_data() list[pathlib.Path]#
(プライベート関数)おんどとりのデータを取得する
- _threshlod_logs_data() list[pathlib.Path]#
(プライベート関数)スレッショルド設定のログを取得する
- _threshold_scan_data(search_pattern) list[pathlib.Path]#
(プライベート関数)スレッショルド測定のデータを取得する
- _to_dataframe(fnames, **kwargs) pandas.DataFrame#
(プライベート関数)すべてのファイルをデータフレームに変換する
- Args:
fnames (list[Path]): ファイル名のリスト**kwargs: pd.DataFrameのオプション
- Returns:
data (pd.DataFrame): データフレーム
- preprocessed_data() pandas.DataFrame#
前処理したデータフレーム
- resampled_data() pandas.DataFrame#
リサンプルしたデータフレーム
- ondotori_data() pandas.DataFrame#
おんどとりのデータフレーム
- threshold_logs() pandas.DataFrame#
スレッショルド設定のデータフレーム
- threshold_scan(search_pattern, **kwargs) pandas.DataFrame#
スレッショルド測定のデータフレーム
- __str__()#
- haniwers.dataset.reformat_datetime(datetime: str) str#
日時を変換する
- Examples:
>>> reformat_datetime("2022-05-18T20:48:14") 2022-05-18T20:48:14 >>> reformat_datetime("2022-06-02T18:52:36.442190+09:00") 2022-06-02T18:52:36
- haniwers.dataset.load_raw_data(fname: pathlib.Path, **kwargs) pandas.DataFrame#
(削除予定)DAQで取得したデータ形式を
pd.DataFrameに変換して読み込む- Args:
fname (Path): 測定データのファイル名**kwargs:pd.read_csvのオプション
- Returns:
data (pd.DataFrame): データフレーム
- Notes:
ファイルの保存形式(=拡張子)で
pd.read_csvの引数をちょっと変える必要がある。拡張子は.dat/.csvだけOKにしてあり、それ以外の場合はsys.exitする。.csvはそのままカンマ区切り、.datはスペース区切り(sep=" ")として、pd.read_csvする。ファイル内のカラム名は適当だったり、なかったりする。適切なカラム名を付与する。カラム名はこの関数内にハードコードしている。
イベント時刻(
time)はpd.datetimeオブジェクトに変換する。使ったDAQのバージョンによって記録された日時の形式が異なるので、それを内部で変換している。各レイヤーのヒットの有無(
True/False)を確認して、ヒット用のカラム(hit_top/hit_mid/hit_btm)に保存する。現在、各レイヤーの値自体には意味がない。そのうち光量など意味を持たせる可能性はあるかも?ヒットのあったレイヤーのパターンを計算して 8ビット で表現する。
hit_type = hit_top * 4 + hit_mid * 2 + hit_btm * 1
- haniwers.dataset.load_files(fnames: list[pathlib.Path]) pandas.DataFrame#
(削除予定)複数のファイルを読み込み、単一のデータフレームに変換する
- Args:
fnames (list[Path]): 測定データのファイルの一覧
- Returns:
data (pd.DataFrame): すべてのファイルを結合したデータフレーム
- Notes:
fnamesで列挙されたファイルごとに、データフレームに変換するファイル名の一覧が空の場合は終了する
個々のデータフレームを結合して単一のデータフレームを作成する
結合したデータフレームは、時刻(
time)でソートしておく