Skip to main content

DESHIMA merge code for observed datasets

Project description

de:merge

Release Python Downloads DOI Tests

DESHIMA merge code for observed datasets

MergeToDfits()クラスの代わりとなるmerge_to_dems()関数を実装し、DEMSオブジェクトを生成できるようにしました。今回の更新では、付属のPythonパッケージdemergeをPython環境にインストールすることで、同名のコマンドdemergeが利用可能となります(demerge/run.shのラッパースクリプトです)。これを実行するとmerge_to_dems()関数が実行され、解析結果がまとまったZarrファイルが生成されます。DEMSの構造についてはdeshima-dev/demsをご覧ください。

動作環境

  • CPython: 3.9-3.12
  • Dependent packages: pyproject.tomlをご確認ください

インストール

一般ユーザ

pipでPyPIからインストールしてください。

pip install demerge==2.12.0

インストール後、demergeコマンドが利用可能になります。

開発者

以下のコマンドで実行環境にダウンロード(クローン)してください。

# テストデータを含める場合
git clone --recursive https://github.com/deshima-dev/demerge.git
cd demerge && git checkout v2.12.0

# 最小構成でダウンロードする場合
git clone --depth=1 https://github.com/deshima-dev/demerge.git
cd demerge && git checkout v2.12.0

続けて、demergeパッケージのPython環境へのインストールを行います。

cd /path/to/demerge

# pipでインストールする場合
pip install -e .

# Poetryでインストールする場合
poetry install

インストール後、demergeコマンドが利用可能になります。

解析の実行例

以下のコマンドでOBSID=20171103184436の解析を行います。観測データはdataに格納されているものとします。

demerge -d data 20171103184436

以下のコマンドでテスト用のデータをダウンロードすることができます。

deshima-rawdata download 20171103184436 -d data -e

どのデータがダウンロードできるかは、データリストをご確認ください。

deshima-rawdata list

demergeコマンドの引数

以下の引数を指定すると、データの取得ディレクトリや保存先などを変更することができます。

引数 説明 デフォルト
-d 観測データディレクトリの指定 data
-c キャッシュディレクトリを指定 cache
-g グラフディレクトリを指定 graph
-b DDBファイルを指定 dmerge/ddb_20231123.fits.gz(パッケージに同梱)
-i Master-to-KID ID対応ファイルを指定 なし(なしの場合、DDBファイル中の対応関係を使用)
-o 出力データディレクトリを指定 cache
-m マージオプションを指定(例:-m "--coordinate radec" なし

観測データの保存先の構造

data
├── cosmos_20171103184436
│   ├── 20171103184436_info.txt
│   ├── 20171103184436.ant
│   ├── 20171103184436.cabin
│   ├── 20171103184436.fits.gz
│   ├── 20171103184436.misti
│   ├── 20171103184436.obs
│   ├── 20171103184436.roomchop
│   ├── 20171103184436.skychop
│   ├── 20171103184436.tsky
│   ├── 20171103184436.wea
│   ├── kids.list
│   ├── localsweep_info.txt
│   ├── localsweep.sweep
│   └── pretune
│       ├── kids.list
│       ├── localsweep_info.txt
│       └── localsweep.sweep

((( 続く )))

解析結果の保存場所

demergeコマンドを実行すると、デフォルトでは直下にcacheとgraphというディレクトリが作成されます。これらのディレクトリの中にはさらにobsidのディレクトリが作成され、そこに解析結果が保存されます。最終結果のZarrファイルもcache/dems_((OBSID))/((OBSID)).zarr.zipというパスに保存されます。

以下にOBSID=20171103184436を解析した時のcache内のファイル構造を示します。

cache
├── 20171103184436
│   ├── dems_20171103184436.zarr.zip <--- これがmerge_to_dems.pyで生成されるファイル
│   ├── kid00000.pkl
│   ├── kid00001.pkl
│   ├── kid00002.pkl
│   ├── kid00003.pkl
│   ├── kid00004.pkl
│   ├── kid00005.pkl

(((中略)))

│   ├── kid00057.pkl
│   ├── kid00058.pkl
│   ├── kid00059.pkl
│   ├── kid00060.pkl
│   ├── kid00061.pkl
│   ├── kid00062.pkl
│   └── reduced_20171103184436.fits

(((続く)))

以下にOBSID=20171103184436を解析した時のgraph内のファイル構造を示します。

graph
├── 20171103184436
│   ├── sweep_kid00000.png
│   ├── sweep_kid00001.png
│   ├── sweep_kid00002.png
│   ├── sweep_kid00003.png
│   ├── sweep_kid00004.png
│   ├── sweep_kid00005.png

(((中略)))

│   ├── sweep_kid00059.png
│   ├── sweep_kid00060.png
│   ├── sweep_kid00061.png
│   ├── sweep_kid00062.png
│   ├── tod_kid00000.png
│   ├── tod_kid00001.png
│   ├── tod_kid00002.png
│   ├── tod_kid00003.png
│   ├── tod_kid00004.png
│   ├── tod_kid00005.png

(((中略)))

│   ├── tod_kid00059.png
│   ├── tod_kid00060.png
│   ├── tod_kid00061.png
│   └── tod_kid00062.png

(((続く)))

テストの実行方法

cd /path/to/demerge/test
./mktd.sh                # テストに必要なダミーデータを生成します
python -m unittest       # merge_to_dems関数およびmerge_functionモジュールのテストを実行します

テストを実行するにはダミーデータとテストデータが必要になります。ダミーデータはmktd.shスクリプトを実行することで生成されます。テストデータはdata/cosmos_20171103184436/の中のものを使いますので、上記の手順であらかじめダウンロードしてください。

merge_to_dems.pyについて

merge_to_dems()関数が定義されています。この関数は以下の8つのファイルからDEMSオブジェクトを生成します。

  • DDBファイル(.fits.gz)
  • Master-to-KID ID対応ファイル(.json)
  • obsファイル(.obs)
  • antennaファイル(.ant)
  • skychopファイル(.skychop)
  • weatherファイル(.wea)
  • mistiファイル(.misti)
  • cabinファイル(.cabin)
  • reduced readoutファイル(.fits)

reduced readoutファイルはdemerge/run.shを実行することによって生成されます。DDBファイルはdemergeのリポジトリに含まれているキャリブレーションデータです。その他のファイルは観測とともに得られるデータです。

merge_to_dems()関数は以下の必須引数とオプション引数をとることができます。

必須引数

引数名 説明
filename 文字列 出力ファイルへのパスを指定して下さい(.zarr.zip)
--ddb 文字列 DDBファイルへのパスを指定して下さい(.fits.gz)
--corresp 文字列 Master-to-KID ID対応ファイルへのパスを指定して下さい(.json)
--obs 文字列 obsファイルへのパスを指定して下さい(.obs)
--antenna 文字列 antennaファイルへのパスを指定して下さい(.antenna)
--readout 文字列 reduced readoutファイルへのパスを指定して下さい(.fits)
--skychop 文字列 skychopファイルへのパスを指定して下さい(.skychop)
--weather 文字列 weatherファイルへのパスを指定して下さい(.weather)
--misti 文字列 mistiファイルへのパスを指定して下さい(.misti)
--cabin 文字列 cabinファイルへのパスを指定して下さい(.cabin)

オプション引数

引数名 既定値 説明
--coordinate 文字列 'azel' 座標系(azel/radec)を文字列で指定します
--loadtype 文字列 'fshift' 読み込むデータを文字列で指定します
--findR フラグ なし 指定するとFindR, Skyを実行します
--ch 整数 0 findRに利用するチャネルを整数で指定します
--Rth 実数 280.0 R閾値を実数で指定します
--skyth 実数 150.0 sky閾値を実数で指定します
--cutnum 整数 1 findRでのカット数を整数で指定します
--still フラグ なし 指定するとstill観測用の解析を行います
--period 整数 2 still観測の1/2周期(秒)を整数で指定します
--shuttle フラグ なし 指定するとshuttle観測用の解析を行います
--lon_min_off 実数 0.0 shuttle観測時のOFFにするlongitudeの最小値を実数で指定します
--lon_max_off 実数 0.0 shuttle観測時のOFFにするlongitudeの最大値を実数で指定します
--lon_min_on 実数 0.0 shuttle観測時のONにするlongitudeの最小値を実数で指定します
--lon_max_on 実数 0.0 shuttle観測時のONにするlongitudeの最大値を実数で指定します
--offset_time_antenna 整数 0 TODデータとAntennaログの時刻のずれの補正値(ms)を整数で指定します
--debug フラグ なし 指定すると全ての引数の値をログとして表示します

--loadtypeはTsignal(空の輝度温度)とfshift(MKIDのdf/f)を指定できます。demerge/run.shでは上記オプション引数を文字列として-m "--coordinate radec --findR --debug"のように指定することができます。

tdmaker.pyについて

tdmaker.pyにはTestDataMakerクラスが定義されています。このクラスを利用するとmerge_to_dems()関数のテストに必要なダミーデータを生成することができます。以下のファイルを個別に生成することができます。

ファイルの種類 周期(秒) 拡張子
ddb - .fits.gz
antenna 0.1 .ant
readout 0.00625 .fits
skychop 0.001 .skychop
weather 10 .wea
misti 0.1 .misti
cabin 60 .cabin
dfits - .fits.gz

dfitsファイル(.fits.gz) (dfitsファイルはdeshima1.0のdemergeで生成されていたファイルです。これらのファイルの測定開始時刻は同一時刻に設定されます。同じ時刻から始まり各ファイル毎の周期でデータが記録されます。

TestDataMakerクラスはオプションを指定することで様々なデータを生成することができます。以下にtdmaker.pyで指定できる引数を示します。

引数名 既定値 説明
data_name 文字列 - 個別にデータを生成する場合はデータ名を指定します。指定しない場合は全てのデータが生成されます。
--time 整数 3 観測時間(分)を整数で指定して下さい
--p0 実数 1.0 p0をfloatで指定して下さい
--etaf 実数 0.5 etafをfloatで指定して下さい
--T0 実数 1.0 T0をfloatで指定して下さい
--Qr 実数 1.1 Qrをfloatで指定して下さい
--linyfc 実数 0.25 linyfcをfloatで指定して下さい
--linear_readout 文字列 - readoutの値を線形に変化させる場合はinc/decのいずれかを指定して下さい
--linear_antenna 真理値 False antennaのlonを線形に変化させる場合はTrueを指定して下さい
--all_grad 真理値 False すべてのSCAN状態をGRADにする場合はTrueを指定して下さい
--lower_cabin_temp 実数 15.0 MainCabinの温度(degC)をfloatで指定して下さい
--prefix 文字列 'testdata' 生成されるファイル名のprefixを指定して下さい
--measure_time 整数 - 環境測定時間(分)を整数で指定して下さい

data_nameを指定すると指定されたデータだけが生成されます。指定しない場合は全ての種類のデータが生成されます。--timeは観測時間(分)を指定します。--measure_timeを指定しなければ観測時間と環境測定時間は同じになります。観測時間とはreadoutの時間であり、環境測定時間はreadout以外のcabinやweatherなどの測定時間になります。通常--timeだけを指定した場合、または--time--measure_timeも省略した場合は環境測定時間が観測時間よりも少し長くなるように生成されます。このようなデータではreadoutの時刻に合わせて環境測定時間を補間する場合に外挿処理は発生しません。外挿処理が発生した場合の振る舞いを調べる場合に--measure_timeオプションで--timeよりも短い時間を指定します。

--p0, --etaf, --T0, --Qr, --linyfcはmerge_function.pyで定義されているTlos_model()関数とcalibrate_to_power()関数で計算に利用される係数を設定します。mktd.shでは計算値のTsignalが定数になるように設定したり、0Kから300Kまで3分間で線形に変化するように係数を設定しています。

計算結果のTsignalを線形に変化させるためには--linear_readoutにincまたはdecの文字列を指定します。incはTsignalが単調増加し、decは単調減少します。 同様にantennaのlongitudeも線形に変化させることができます。--linear_antennaにTrueを設定するとantennaのlongitudeが線形に増加します。

--all_gradをTrueにするとSCAN状態が全てGRADのantennaデータができます。省略(Falseを設定すると)すると観測時間の半分でGRADからONに切り替わるデータとなります。--lower_cabin_tempはMainCabinの温度を指定します。--prefixには生成するデータの接頭語を指定します。用途に合わせてわかりやすい名前を付けます。

TestDataMakerクラスの詳細な使い方はmktd.shスクリプトをご覧下さい。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

demerge-2.12.0.tar.gz (6.8 MB view hashes)

Uploaded Source

Built Distribution

demerge-2.12.0-py3-none-any.whl (6.8 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page