物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

Microsoft フォトの動画(ビデオプロジェクト)のプロジェクトファイルの保存場所について

Microsoft フォトは、画像から簡単なムービーを作成する機能が充実している。

しかし、クラウドではなくローカルに保存した場合(特に何もしなかった場合)は、ムービーの設定を保存するためのプロジェクトファイルは自動でローカルに保存される。しかし、ユーザーがそのファイルを明示的に知る手段はなかった。

先日パソコンがクラッシュした際にWindowsの初期化をしたのだが、作成していた動画(ビデオプロジェクト)が消されてしまって困った。しかし色々調べていくと、復活させられる可能性があることがわかった。

初期化をした際に過去のアプリケーションデータは

C:\Windows.old\ に保存されている。

フォトのムービーデータはC:\Windows.old\Users\Masahiro\AppData\Local\Packages\Microsoft.Windows.Photos_8wekyb3d8bbwe\LocalState に保存されている。どのファイルがムービーのプロジェクトファイルか分からなかったため、全てのファイルを現行のフォルダに上書きコピーした

%USERPROFILE%\AppData\Local\Packages\Microsoft.Windows.Photos_8wekyb3d8bbwe\LocalState

これで、作りかけのムービーが復活できた。

ユーザー名は適宜自分のものに置き換えられたし。

Linux シェルスクリプト1行でSlackに投稿する

以下、sample-teamというチーム名のURLなので、適宜自分のチーム名に変えてください。

Incoming Webhook であるチャンネルに投稿するための Webhook URL を取得する。

https://sample-team.slack.com/apps/A0F7XDUAZ--incoming-webhook-

既に取得しているなら、Custom Integrations からWebhook URLを確認する。

https://sample-team.slack.com/apps/manage/custom-integrations

f:id:onsanai:20181214164844p:plain

で、curlで叩くだけ。簡単だね。

curl -X POST -H 'Content-type: application/json' --data '{"text":"This is a pen."}' https://hooks.slack.com/services/XXXX/XXXX/XXXXXXXX

キッチンのコンピューター 仕事用コンピューター の怪

Windowsでは、システムのプロパティのコンピュータ名の設定画面において、コンピューターの説明の例として次のように記述されている。

f:id:onsanai:20181122123851p:plain:w400

例: "キッチンのコンピューター"、"仕事用コンピューター"

僕の記憶では、これはWindowsXPの時代から存在している。仕事用コンピュータは分かるが、キッチンのコンピューターとは何だろうか。キッチン置くコンピューターの目的は? 濡れないの?

謎である。

Python scipyのcurve_fit で導出したパラメータと標準誤差をCERN ROOTの結果と比較

まずはCERN ROOT + C++ で実装する。

お手本通り、平均値0、標準偏差1、ガウス分布(正規分布)に沿う乱数を10000個作り、ROOTのヒストグラムに詰め、 TF1 の ガウス分布 gaus でフィッティングした。オプション等は何もつけていない。\chi^{2}も普通に結果を引用した。

正規分布の関数は、


f(x)=const. \exp \! \left( -\frac{(x-mean)^2}{sigma^2} \right)

である。

Constant 402.531 +/- 4.95816
Mean     -0.00397889 +/- 0.00989405
Sigma    0.983115 +/- 0.00704207
Chi2     83.6418

次に、全く同じデータを使うために出力しておいたテキストデータを使って、 scipy.optimize.curve_fit でフィッティングさせる。 テキストデータはC++で発生させることが可能だが、C++のコンパイル環境がない人のためにファイルも提供する。

ガウス分布のフィッティング用のサンプルデータ Sample data

ガウス分布の式は自分で作成し与えた。また、\chi^{2}scipy.stats.chisquare を使って計算した。ここでポイントは、誤差を適切に与えることである。ビンあたりのエントリー数Nに対して、誤差\sqrt{N}の配列を curve_fitsigma に与えるとよい。

Chi2 83.641822
            Estimate  Std. error
Constant  402.530641    4.963109
Mean       -0.003979    0.009894
Sigma       0.983115    0.007064

推定値は完全に一致。誤差は若干異なるがなぜだろう。愛嬌でしょうか。誤差の3桁目までは一致しているので、実用上は問題ないだろう。 scipy.optimize.curve_fit においても、誤差を適切に与えることでROOTの結果と推定値は完全に一致することが分かった。

p値(p-value)を求めるときは、カイ二乗をc、自由度数をndfとすると、ROOTだとTMath::Prob(c, ndf)、Pythonだと

from scipy.stats import chi2
chi2.sf(c, ndf)

とする。今回の例だと TMath::Prob(83.641822, 69)=chi2.sf(83.641822, 69)=0.11055024 である。

以下ソースコード。

C++ と ROOT版 C++ と ROOT5版 ガウス分布をフィッティング ($1781181) · Snippets · GitLab

Python3版 Python3版 ガウス分布をフィッティング ($1781185) · Snippets · GitLab

ウェブの情報をいっぱい参考にしたが、その一部。

https://omedstu.jimdo.com/2018/07/16/python%E3%81%A7gaussian-fitting/

scipy.stats.chisquare — SciPy v1.11.1 Manual