haniwers.v0.preprocess#
Module Contents#
Functions#
測定データの一覧を取得 |
|
pd.DataFrameに変換 |
|
pl.DataFrameに変換 |
|
測定データをデータフレームに変換 |
|
|
|
|
|
|
|
測定データをリサンプル |
|
測定データをリサンプル |
|
測定データを前処理する |
|
測定データを指定してデータフレームに変換する |
|
ランを指定してデータフレームに変換する |
API#
- haniwers.v0.preprocess.get_fnames(read_from: str, search_pattern: str) list[pathlib.Path]#
測定データの一覧を取得
測定データのファイル名の一覧を取得します。 ファイル名はPathオブジェクトに変換しています。 リストはファイル名で昇順ソートします。
- Args:
read_from (str): 測定データがあるパスsearch_pattern (str): ファイル名の検索パターン
- Returns:
fnames (list[Path]): 測定データの一覧
- Example:
fnames = get_fnames( read_from="../data/raw_data/20240601_run80", search_pattern="osechi_data_*.csv")
- haniwers.v0.preprocess.read_data_with_pandas(fnames: list[pathlib.Path]) pandas.DataFrame#
pd.DataFrameに変換
複数の測定ファイルを読み込んでpd.DataFrameに変換します。 測定ファイルの拡張子は
.datと.csvに限定しています。- Args:
fnames (list[Path]): 測定データのファイル名のリスト
- Exception:
.dat/.csv以外の拡張子の場合は中断(break)
- Returns:
merged (pd.DataFrame): 結合したデータフレーム
- haniwers.v0.preprocess.read_data_with_polars(fnames: list[pathlib.Path]) pandas.DataFrame#
pl.DataFrameに変換
複数のファイルを読み込んでpl.DataFrameに変換します。 polarsで読み込んだ方が、少し処理が速くなります。
ただし、そのままpl.DataFrameを返すと、あとの処理がうまくいかないので、 最後にpl.DataFrameからpd.DataFrameに変換しています。
- Args:
fnames (list[Path]): 測定データのファイル名のリスト
- Returns:
merged (pd.DataFrame): 結合したデータフレーム
- haniwers.v0.preprocess.read_data(fnames: list[pathlib.Path]) pandas.DataFrame#
測定データをデータフレームに変換
read_data_with_polarsを使ってデータフレームに変換します。- Example:
fnames = get_fnames( read_from=..., search_pattern=".csv" ) data = read_data(fnames)
- haniwers.v0.preprocess.add_time(data: pandas.DataFrame, offset: int, timezone: str) pandas.DataFrame#
timeカラムを追加測定データのデータフレームに
timeカラムを追加します。timeカラムはdatetimeカラムをタイムゾーン付き日時オブジェクトに変換したものです。 また、offset(秒)の分、測定時刻を正しい時刻に修正します。- Args:
data (pd.DataFrame): 測定データoffset (int): 測定時刻のオフセット(秒)
- Returns:
data (pd.DataFrame):timeカラムを追加した測定データ
- Example:
data = read_data(fnames) data = add_time(data)
注意
Raspberry Pi 4はRTCを内蔵していません。電源を切ると時計がストップします。 測定を開始する前に、ネットワークに接続してNTPから時刻を自動取得するか、
dateコマンドなどで時刻を手動設定する必要があります。 その作業を忘れてしまった場合のために、offsetオプションがあります。
- haniwers.v0.preprocess.add_hit(data: pandas.DataFrame) pandas.DataFrame#
hitカラムを追加各シンチのレイヤーにヒットがあったかどうかを確認し、
hit_レイヤー名カラムを追加します。 ヒットがある場合は1、ヒットがない場合は0です。- Args:
data (pd.DataFrame): 測定データ
- Returns:
data (pd.DataFrame):hitカラムを追加したデータフレーム
- Example:
data = read_data(fnames) data = add_time(data) data = add_hit(data)
- haniwers.v0.preprocess.add_hit_type(data: pandas.DataFrame) pandas.DataFrame#
hit_typeカラムを追加レイヤーごとのヒット情報から、ヒットの種類を計算します。 ヒット情報が計算できてない場合は、警告を表示し、元のデータを返します。
- Args:
data (pd.DataFrame):add_hitしたあとの測定データ
- Returns:
data (pd.DataFrame):hit_typeを追加したデータフレーム
- Example:
data = read_data(fnames) data = add_time(data) data = add_hit(data) data = add_hit_type(data)
- haniwers.v0.preprocess.resample_data(data: pandas.DataFrame, interval: int)#
測定データをリサンプル
dataに指定した測定データをpandas.DataFrame.resampleでリサンプルします。 データは前処理済みのデータを指定してください。 再集計したデータをさらに、再集計することもできます。- Note:
入力データに必要なカラム:
["time", "hit_type", "hit_top", "hit_mid", "hit_btm", "adc", "tmp", "atm", "hmd"]出力データに追加されるカラム:
["interval", "event_rate", "event_rate_top", "event_rate_mid", "event_rate_btm"]
- Args:
data (pd.DataFrame): 前処理済みのデータフレームinterval (int): リサンプル間隔(秒)
- Returns:
merged (pd.DataFrame): 再集計後のデータフレーム
- haniwers.v0.preprocess.resample_data_with_hit_type(data: pandas.DataFrame, interval: int) pandas.DataFrame#
測定データをリサンプル
ヒット種類(
hit_type)ごとにリサンプルします。- Args:
data (pd.DataFrame):hit_typeを持つデータフレームinterval (int): リサンプルの間隔(秒)
- Returns:
resampled (pd.DataFrame):hit_typeごとにリサンプルしたデータフレーム
- haniwers.v0.preprocess.preprocess_data(data: pandas.DataFrame, interval: int, datetime_offset: int, timezone: str) tuple[pandas.DataFrame, pandas.DataFrame]#
測定データを前処理する
- Args:
data (pd.DataFrame): 測定データinterval (int): リサンプル間隔(秒)datetime_offset (int): 時刻のオフセット(秒)timezone (str): タイムゾーン情報
- Returns:
data (pd.DataFrame): 前処理したあとのデータresampled (pd.DataFrame): リサンプルしたデータ
- haniwers.v0.preprocess.raw2csv(fnames: list[pathlib.Path], interval: int, datetime_offset: int, timezone: str) tuple[pandas.DataFrame, pandas.DataFrame]#
測定データを指定してデータフレームに変換する
- Args:
fnames (list[Path]): 前処理するファイル名のリストinterval (int): リサンプル間隔(秒)datetime_offset (int): 時刻のオフセット(秒)timezone (str): タイムゾーン情報
- Returns:
data (pd.DataFrame): 前処理したあとのデータresampled (pd.DataFrame): リサンプルしたデータ
- haniwers.v0.preprocess.run2csv(run: haniwers.v0.config.RunData) tuple[pandas.DataFrame, pandas.DataFrame]#
ランを指定してデータフレームに変換する
- Args:
run (RunData): RunDataオブジェクト
- Returns:
data (pd.DataFrame): 前処理したあとのデータresampled (pd.DataFrame): リサンプルしたデータ
- Example:
run = RunData(...) data, resampled = run2csv(run) print(f"gzip={len(data)}") print(f"csv ={len(resampled)}")