設定¶
SOPRANの設定で主に決めるのは、データの保存先(Store)とダウンロード方針の2つです。
設定はセッション・ユーザー設定ファイル・環境変数・Projectのsopran.tomlから読み、引数で明示した値が常に優先します。
まず保存先を決める¶
何も設定しないと、spn.kaguya・spn.Kaguya()・spn.Store()のどれも、Projectのルートの下のsopran_data/を使います。
sopran.tomlが無ければProjectのルートはカレントディレクトリなので、作業場所ごとに別のStoreができてしまいます。
最初に次のどれかで保存先を決めてください。
| 方法 | 効く範囲 | 書き方 |
|---|---|---|
| セッション設定 | 実行中のPythonプロセス | spn.config.use(store="/path/to/sopran_data") |
| ユーザー設定ファイル | そのユーザーの全プロセス | spn.config.save_user(store="/path/to/sopran_data") |
| 環境変数 | 環境変数を引き継ぐプロセス | SOPRAN_DATA_ROOT=/path/to/sopran_data |
Projectのsopran.toml |
そのProjectの中 | [store] data_root = "data" |
セッション設定¶
import sopran as spn
spn.config.use(store="/path/to/sopran_data", download="never")
with spn.config.using(store="/path/to/other_data"):
spn.kaguya.esa1.counts.load(time) # この中だけ別のStore
spn.config.reset() # セッション設定を消す
useとusingはstore(またはdata_rootとcache_root)、project、artifact_root、download、
frame、cache、backendsを受け取ります。設定ファイルは書き換えません。
spn.Store("/path")はStoreのオブジェクトを作るだけで、spn.kaguyaが使うStoreは変わりません。
短い入口の保存先を変えるにはspn.config.use(store=...)を使います。
ユーザー設定ファイル¶
spn.config.save_user(...)は、同じ引数をユーザー設定ファイルに保存します。直接編集しても構いません。
| OS | 場所 |
|---|---|
| Windows | %APPDATA%\sopran\config.toml |
| macOS | ~/Library/Application Support/sopran/config.toml |
| Linux | $XDG_CONFIG_HOME/sopran/config.toml(未設定なら~/.config/sopran/config.toml) |
環境変数SOPRAN_CONFIGでファイルを指定することもできます。上の場所にファイルが無く、
古い~/.sopran/config.tomlがある場合はそちらを読みます。相対パスは設定ファイルのディレクトリを基準に解決します。
[store]
data_root = "/path/to/sopran_data"
cache_root = "/path/to/sopran_cache" # 省略時は <data_root>/cache
[defaults]
download = "missing"
frame = "SSE"
cache = true
[backends]
frames = "spiceypy"
plot = "matplotlib"
[project]
root = "/path/to/default_project" # 短い入口が使う既定のProject
artifact_root = "artifacts"
Projectのsopran.toml¶
spn.view(...)とspn.kaguyaなどの短い入口は、カレントディレクトリから親へたどって最初に見つかった
sopran.tomlをProjectの設定にします。相対パスはProjectのディレクトリを基準に解決します。
[project]
artifact_root = "artifacts"
[store]
data_root = "data"
cache_root = "cache"
[defaults]
frame = "SSE"
download = "never"
[defaults.region]
body = "moon"
lon = [350, 10]
lat = [-5, 5]
lon_domain = "0_360"
[backends]
frames = "spiceypy"
[cases.example]
start = "2008-02-01T00:00:00"
stop = "2008-02-02T00:00:00"
[cases.*]の書き方は期間・領域・解析条件にあります。
環境変数¶
| 変数 | 役割 |
|---|---|
SOPRAN_CONFIG |
ユーザー設定ファイルのパス |
SOPRAN_DATA_ROOT |
Storeのルート |
SOPRAN_CACHE_ROOT |
キャッシュのルート。未指定なら<Storeのルート>/cache |
SOPRAN_ARTIFACT_ROOT |
project.save()の保存先 |
SOPRAN_DOWNLOAD_MODE |
ダウンロード方針の既定 |
SOPRAN_OFFLINE |
1、true、yes、onのとき、ダウンロード方針の既定をneverにする |
ダウンロード方針¶
| 値 | 動作 |
|---|---|
missing(既定) |
Storeに無い元ファイルだけを取得する |
never |
通信しない。必要なファイルが無ければ例外、または空の結果(missing=の指定による) |
always |
既存のファイルがあっても取得し直す |
ミッションのオブジェクト(spn.Kaguya(download=...))、View、各load(download=...)で指定できます。
スーパーコンピューターの計算ノードのように外部へ通信できない環境では、SOPRAN_OFFLINE=1を設定してください。
環境変数は設定ファイル(sopran.toml、ユーザー設定)より優先するので、ファイルにdownload = "missing"と書いてあっても
その計算機では通信しません。コードで明示した値(引数、spn.config.use)は環境変数より優先します。
優先順位¶
上にある値ほど優先します。
| 設定 | 優先順位 |
|---|---|
| Storeのルート | 引数(Store(root)、store=) > セッション > SOPRAN_DATA_ROOT > Projectの[store] > ユーザー設定の[store] > <Projectのルート>/sopran_data |
| キャッシュのルート | 上と同じ順でcache_root・SOPRAN_CACHE_ROOTを探し、無ければ<Storeのルート>/cache |
Projectのルート(短い入口・spn.view・spn.Store()) |
セッションのproject= > 親方向で最初に見つかったsopran.toml > ユーザー設定の[project].root > カレントディレクトリ |
| 成果物の保存先 | 引数 > セッション > SOPRAN_ARTIFACT_ROOT > Projectの[project] > ユーザー設定の[project] > Projectのルート |
| ダウンロード | 引数(load・ミッション・View) > セッション > SOPRAN_OFFLINE > SOPRAN_DOWNLOAD_MODE > Caseの値 > Projectの[defaults] > ユーザー設定の[defaults] > missing |
frame・cache |
引数 > セッション > Projectの[defaults] > ユーザー設定の[defaults] |
| バックエンド | 引数 > セッション > Projectの[backends] > ユーザー設定の[backends] > 自動選択 |
| Caseの領域 | [cases.<name>.region] > [defaults.region] |
Storeのルートとダウンロード方針は、spn.kaguyaのような短い入口、spn.Kaguya()のような明示的なオブジェクト、
spn.Store()、View・Caseのどこから使っても同じ順で決まります。
バックエンドは通常指定しません。座標変換では変換元と変換先の座標系から自動で選びます (座標変換)。
不正な値(未知のダウンロード方針、表でないはずのキーなど)はConfigErrorになります。