The temperature correction inflates the signal-to-noise ratio of the LEDs: the noise is not divided by the reduction factor
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
まず ExtinctionCoefficients.apply_temperature_correction から始め、参照強度とノイズ列をどのように更新するかを追ってください。次に calc_and_set_coefficients と calc_and_set_coefficients_mp を確認し、SNR の算出方法を調べてください。温度補正ありとなしで同じ抽出データを使うテストを追加し、calc_coefficients_of_img に渡される SNR が変わらないことを確認してください。
索引モデルが issue の本文から書いたものです。
説明
ExtinctionCoefficients.apply_temperature_correction divides the reference property by the reduction factor of every value, but leaves its noise column as it was extracted:
corrected_intensities = self.calculated_img_data[self.reference_property] / factors
self.calculated_img_data = self.calculated_img_data.assign(
**{self.reference_property: corrected_intensities})
The signal-to-noise ratio that weights the LEDs in the linear solver is then formed from the corrected intensity and the uncorrected noise (calc_and_set_coefficients and calc_and_set_coefficients_mp):
snr = single_img_array / single_img_data[self.noise_property].to_numpy()
So with a temperature correction every SNR comes out too high by 1/factor. The correction rescales the signal, it does not add any: the SNR of a measured value is I/σ before and after it. The weight min(1, SNR / snr_full_weight) is meant to be the inverse standard deviation of the optical depth -ln(I_e/I_0), and the correction does not change that either.
Effect
Only LEDs below snr_full_weight are affected, because the weight is capped at 1. With a reduction factor of 0.8 and the default snr_full_weight = 10:
| true SNR | weight now | correct weight |
|---|---|---|
| 8 | 1.0 | 0.8 |
| 4 | 0.5 | 0.4 |
| 1 | 0.125 | 0.1 |
The min_layer_weight cut-off is computed from the same weights, so layers are set to NaN later than they should be. The error grows with the reduction, i.e. with the LED temperature, which is highest where the smoke is densest and the LEDs approach the noise floor, so it hits exactly the LEDs the weighting exists for.
Runs without a temperature correction, and runs of a reference property without a noise column, are not affected.
Fix
Divide noise_sum_col_val by the same factors in apply_temperature_correction whenever self.noise_property is loaded. The moving average runs before the correction for both columns, so they stay consistent.
A test: for the same extracted data, the SNR passed to calc_coefficients_of_img should be the same with and without a temperature correction.
- 主要言語
- Python
- スター
- 7
- フォーク
- 4
- 平均マージ
- 3時間 58分
- マージ済み PR(30日)
- 35
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
FireDynamics/LEDSmokeAnalysis のほかの issue
-
-s3_fast with -r, -g or -b also runs the full step 3 with LED fits対応中かも @imshah-id が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
FireDynamics/LEDSmokeAnalysis#176 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
FireDynamics/LEDSmokeAnalysis#177 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
FireDynamics/LEDSmokeAnalysis#98 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 3/5 1〜2日 初心者へのやさしさ 25/100
FireDynamics/LEDSmokeAnalysis#91 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
FireDynamics/LEDSmokeAnalysis#90 ·
メンテナーはふだん 1 日以内に返信
FireDynamics/LEDSmokeAnalysis の issue をすべて見る
似ている issue
-
good first issue test
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
ANCORATE/EncryptHome#8 ·
-
PluginProvider.storeInstance races and clobbers the dedup cache for concurrent loads対応中かも @Wilson0511 が今日担当しました。 オープンneeds-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 2 日以内に返信
-
Bug: failed Together chat calls do not record operation duration or error.type対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
community documentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100