====== mdrXAFS : MDR XAFS データベース利用プログラム ====== [[https://mdr.nims.go.jp/collections/qz20st57x|{{ :tabuchi:mdr_xafs_db.png?200|}}]] [[https://mdr.nims.go.jp/collections/qz20st57x|NIMS のデータベース(MDR)に公開されている XAFSデータ]]にアクセスし、 手元のスペクトルと比較するような作業を簡単に行うための仕組みを検討中です。\\ 2024年7月23日現在でまだ開発中ですが、ご意見やフィードバックを頂く目的で公開することにしました。 ===== - ダウンロード ===== 上にあるものほど新しいです。「環境込み」と書かれているものは必要な DLL や設定ファイル等を含んでいます。 最新版が「exeのみ」の場合は、なるべく新しい「環境込み」もダウンロードして、その中に最新版の exe ファイルを入れて下さい。 ==== - Win64版 ==== - {{ :tabuchi:mdrxafs-deploy-qt6-20240819.zip | 環境込み }} 2024.08.19版、Qt6.7.2、win64版 - {{ :tabuchi:mdrxafs-deploy-qt6-20240812.zip | 環境込み }} 2024.08.12版、Qt6.7.2、win64版\\ いろいろ改良+安定版 - {{ :tabuchi:mdrxafs-deploy-qt6-20240807.zip | 環境込み }} 2024.08.07版、Qt6.7.2、win64版\\ 数日分のアップデート=> 手違いがあったので一次公開停止 => 再公開 - 2024.08.01版、Qt6.7.2使用、win64bit版 多少改良\\ ローカルデータをドロップするエリアのサイズを可変に。他... - 2024.07.29版、Qt6.7.2使用、win64bit版 小さなバグとり - 2024.07.29版、Qt6.7.2使用、win64bit版 吸収端の判断ほか多数改良 - 2024.07.27版、Qt6.7.2使用、win64bit版 少しずつ改良しています - 2024.07.25版、Qt6.7.2使用、win64bit版 - 2024.07.24版、Qt6.7.2使用、win64bit版\\ 初期に想定していた機能がある程度実装できたバージョンです。 - 2024.07.23版、Qt6.7.2使用、win64bit版\\ とりあえず公開版 ==== - MacOS版 ==== まずは一回ダウンロードしてダメ元で普通に実行してみて下さい。おそらくそのままでは実行できないと思います。 その場合には、ダウンロード後に「ターミナル」からコマンドライン次の操作をしてください。 もしかしたら macOS のバージョンによってはこの操作は不要かも知れません(古いとOKで、多分どんどんセキュリティーがキツくなって厳しくなってると思われます)。 cd ~/Downloads (ここの Downloads は mdrXAFS.app をダウンロードして置いた場所の名前にしてください) xattr -d com.apple.quarantine ./mdrXAFS.app 単純にダウンロードすると、「元のバイナリそのままではなく何か改造されたものだ」という認識になるようです。 「元と同じかどうか」はそのファイルの「拡張属性」を見て判断するようで、問題になる「拡張属性(com.apple.quarantine, 隔離対象!!)」を 消してしまうと OK になるみたいです。 その「拡張属性を消す」操作が、上記の "xttr -d ..." です。 - {{ :tabuchi:mdrxafs-mac-20240920-01.tgz | M3 Mac でビルド }} 2024.09.20、Qt6.7.2、MacOS版(Win版 2024.08.19 とコアは同じソースコードです)\\ 死屍累々を越えました(諦めました)。上記 "xattr -d ..." の操作を行ってください。\\ 多分動くと信じてますが、試してみてレポート頂けると嬉しいです。 - 死屍累々 : {{ :tabuchi:mdrxafs-20240919-05.dmg | ほっほ〜 }}, {{ :tabuchi:mdrxafs-20240919-04.tgz | なんでやねん }}, {{ :tabuchi:mdrxafs-20240919-03.tar | だめよね? }}, {{ :tabuchi:mdrxafs-20240919-02.tgz | やーー }}, {{ :tabuchi:mdrxafs-20240919.tgz | どげん? }}, {{ :tabuchi:mdrxafs.zip | だめ? }}, {{ :tabuchi:mdrxafs.dmg | dmgだとどう? }} だめね。そうね。そうだよね。 - まだダメっす : {{ :tabuchi:mdrxafs-20240916-01.tgz | 環境込み }} 2024.09.16、Qt6.7.2 (Win版 2024.08.19とコアは同じコード)\\ Mac/Apple CPU の Mac でコンパイルしました。Intel CPU で動くのかどうか不明です。レポート頂けると嬉しいです。\\ config 読めない問題は解決したのですが、「壊れてるのでゴミ箱に入れてください」になってしまいます。 - ゴリ押しの解決法は発見。Mac家のお作法に従った上品な振る舞いをしたいので、まだ花嫁修行中です。 - まだダメっす : {{ :tabuchi:mdrxafs.tgz | 環境込み }} 2024.09.15、Qt6.7.2、MacOS版(Win版 2024.08.19 と同じソースコードです)\\ MacOS版初リリースです。このような受け渡し方で機能するのかまだよくわからないのでお試版とお考えください。\\ tar + gzip でアーカイブ + 圧縮した .tgz ファイルです。一回クリックすると tar ファイルに、二回目のクリックで 元の mdrXAFS.app に戻ると思います。\\ Mac/Apple CPU の Mac でコンパイルしました。Intel CPU で動くのかどうか不明です。レポート頂けると嬉しいです。\\ 起動はして MDR にもアクセスできるのですが、config ファイルを読めないため meta ファイルを同定できず残念なことになるのが判明。 ===== - とりあえず使ってみる ===== ==== - まずは起動 ==== - 「環境込み」と書かれているものの中で一番新しいものをダウンロードし、zip ファイルを展開します。 - 「Exeのみ」と書かれているもので、自分がダウンロードしたものより新しいものがあればダウンロードして、展開したフォルダの中に入れます。 - 展開したフォルダにある「mdrXAFS-日付等の情報.exe」が起動すべきファイルです(ここでは mdrXAFS.exe と呼びます)。 - その他にも複数のファイルやフォルダがありますが、mdrXAFS を実行するために必要なものなので、そのまま同じフォルダの中に入れておいてください。 - ダブルクリックなりなんなりで mdrXAFS.exe を起動してください。 ==== - 試しに使う ==== このプログラムで想定している主な用途は二つです。 - 自分の測定結果と見比べて、それが、何のスペクトルと似てるのか判断したい。 - MDR から特定の元素/状態の標準スペクトルを入手したいが、同じようなデータが複数あってどれを入手すればいいか判断が難しい。 以下、それぞれのケースで想定される操作を簡単に書きます。 (ほとんど同じですが...) ==== - 自分の測定結果と見比べたい ==== - mdrXAFS の「検索」画面下側の「ドラッグドロップしてください」と書かれたエリアに、見比べたいと思ってる自分の測定データをドラッグドロップしてください。 - 自分のデータは「スペクトル表示」画面に赤系の色でプロットされます。 - 「検索」画面で対象の吸収端だけを指定して(「Fe」「K」とか)「検索」ボタンを押してください。 - MDR を検索してヒットしたデータが「スペクトル表示」画面に青系の色で表示されます。 - 「検索」画面の右上を見ると、何件ヒットして、何件手元で表示できているかがわかります。件数が多いと全部表示されるのに数分以上かかることがあります。 - 「ドラッグドロップしてください」エリアに表示されたファイル名の少し右の「単独」選択ボタンを押してください。 - 「ドラッグドロップしてください」エリア右上の「スペクトル比較」ボタンを押してください。 - 「スペクトル表示」画面の一番下に「単独」選択したスペクトルが表示され、その上に「似ている順」に MDR のスペクトルが並びます。 - 「検索」画面のスペクトルのリストには「類似度」と「似ている順のランキング」も表示されます。 - 「ドラッグドロップしてください」エリア上の「似ているものをどこまで表示するか」の条件を適当に設定して(何もしないとランキング上位5位まで) 「スペクトル表示」画面下の「単/複選択のみ表示」を押すと、問題にしてるスペクトルとそれに似ているものだけ表示されます。 - ご照覧あれ。 「スペクトルの比較」は純粋に形だけで行っています(それぞれ規格化したスペクトル同士のコサイン類似度)。スペクトルの位置(エネルギー方向のズレ)は無視していますのでこの点注意してください。 ==== - MDR のスペクトルから良さげなものを物色したい ==== - 「検索」画面で対象の吸収端(「Fe」「K」とか)に加えて、「追加検索語句」を入力してください。Fe2O3 とか TiO2 とか、もしかすると物質名になると思います。 - 「検索」ボタンを押すと、MDR を検索してヒットしたデータが「スペクトル表示」画面に青系の色で表示されます。 - 「検索」画面の右上を見ると、何件ヒットして、何件手元で表示できているかがわかります。件数が多いと全部表示されるのに数分以上かかることがあります。 - 表示されたスペクトルを見比べて、質の良いものを選択したり、駄目なものを判断したりする助けになるはずです。 - ご照覧あれ。 「追加検索語句」に複数の語句を入れると(たぶん) and で検索されます。例えば吸収端「Cu」「K」で、「追加検索語句」に「CuO Cu2O」と入れると何も出てきません。 もし、「CuO」と「Cu2O」を or で選びたい場合には少し面倒ですが以下のようにしてください。 - 吸収端「Cu」「K」、「追加検索語句」「CuO」としていったん「検索」ボタンを押す。 - 「検索」画面右上(2行目ぐらい)にある「検索時自動クリア」のチェックボックスを外す。 - 吸収端「Cu」「K」、「追加検索語句」「Cu2O」として「検索」ボタンを押す。するとさっきの「CuO」の検索結果を消さず追加で検索されます。 対象物質を指定するのに、「化学式の指定と物質名の指定両方試したい」、「物質名の通称が複数ある」などの時に有効だと思います。 ===== - 簡単(?)な説明 (2024.07.24版対応)===== - 「MDR検索」画面 * 「MDR検索」画面上部 * 初期値で「XAFS」と入っているボックスの内容、「元素名」、「吸収端」、「追加検索語句」の4つの内容を組み合わせて検索語句とし、MDRで検索を行います。 *「追加語句」の「and/or」指定を「and」にすると、「元素名/吸収端 and 追加語句」の検索になります。「or」なら「元素名/吸収端 or 追加語句」です。 * 「最大同時DL数」: 検索結果一覧が表示された後、各項目の内容(実際のデータ)をダウンロードする際、同時にダウンロードのリクエストを出す件数を制限しています。 * 「リトライ/Retry」: 検索の結果リストには現れたのにダウンロードできなかったワーク(「データファイル名」の部分が灰色になったもの)に対して、 再度ダウンロードを試みます。 * 「検索時自動クリア」: 通常はチェックが入っていて、新しい検索を行うたびに以前の検索結果はクリアされます。\\ 「追加語句」等で制限の強い検索を行うときなどにこのチェックを外して、\\ 例えば「Ni K」+「NiO」(検索)、「Ni K」+「Ni2O」(検索)と2回検索をかけると「Ni K」+「NiO or Ni2O」の様に\\ 「追加語句」の部分を or にした検索結果が得られます。 * 「クリア」: 検索結果がクリアされます * 「シフト0」: 設定されている各スペクトルのエネルギーシフトが全て 0 クリアされます。 * 「ログ表示」: このボタンを押すと「ログ表示」画面が現れます。 * 「スペクトル表示」: 「スペクトル表示」画面が消えている時、このボタンを押すと現れます。 * 「MDR検索」画面下部 * 「クリア」: ローカルファイルのリストをクリアします。 * 「スペクトル比較」: * 「単独選択」(スペクトル名のリストの右にある丸い選択ボタン)で選択されているファイルに「類似した」スペクトルを探します。 * 「単独選択」する対象は MDRで検索したファイルでも、ローカルのファイルでも構いません。 * 「類似度上位」: 類似したスペクトルを探した後、より類似しているものから上位、指定した数のスペクトルに「複数選択」のチェックを入れます。\\ (このチェックが入っていると「スペクトル表示」で強調表示されます) * 「類似度閾値」: 類似したスペクトルを探した後、類似度の閾値が指定した数値より小さいもの(小さいほうが類似度が高い)に「複数選択」のチェックを入れます。 * 「事前にピーク整列」: 類似スペクトルを探す前に各スペクトルの吸収端後の最初のピーク位置を揃えます。\\ (「スペクトル表示」のウインドウで「ピーク整列」のボタンを押したのと同じことになります) * 「MDR検索」検索結果リスト * 番号の後のチェックボックス : ここにチェックを入れたファイルだけが「スペクトル表示」に表示されます。\\ (他にも条件がありますが、最低限これがチェックされていないと表示されません) * 「Eシフト[eV]」スペクトルを表示する際に、横軸をどれだけずらすかの指定です。\\ 正の数字だとスペクトルは見た目で左に、負の数字だと右に動きます。 * 「データファイル名」: 検索して得られたデータファイル名です。\\ ここで右クリックすると「Retry」と表示され、これを選ぶとこのワークのみ再度ダウンロードを試みます(2024/08/08追記)。 * 「メタタイプ」: MDR に登録されているメタファイルのタイプです(現在は、標準:STD、PF型:PF、SPring-8型:SP8、北大型:HUがあります)。 * 「吸収端」: 当該のスペクトルをどの吸収端のスペクトルと認識しているかの表示です。\\ 「スペクトル表示」画面で「対象吸収端のみ」にチェックを入れたとき、表示するかしないかはこの「吸収端」の欄の内容で決まります。\\ ここで右クリックすると現れる周期表で元素やK, Lを選ぶことで変更できます(2024/08/08追記)。 * 「複」: 複数選択の対象にするためのチェックボックスです(「スペクトル比較」すると自動的に類似度の高いスペクトルにチェックが入ります)。\\ 選択されているスペクトルは「スペクトル表示」部で強調表示されます。 * 「単」: 単独選択の対象にするためのチェックボックスです。「スペクトル比較」の対象にするファイルの選択に使います。 * 「類似」: 類似スペクトルを探した結果の類似度の数値(小さいほうが似ている)が表示されます。 値は「コサイン類似度を角度に直したもの」です。\\ (スペクトルを $f_1$、$f_2$ とした時、$「コサイン類似度」= f_1 \cdot f_2 / |f_1||f_2|$に対して$\cos^{-1}(コサイン類似度)/\pi\times 180$です。) * 「順位」: 「スペクトル比較」の結果の「似ているスペクトルランキング」の順位です。順位の数字が小さいほど似ているスペクトルです。 * スペクトルの測定エネルギー範囲が狭いなど、何らかの理由でプリエッジライン/ポストエッジラインを推定できなかった場合、スペクトルの規格化ができないので 「スペクトル比較」の対象にすることができません。その場合「類似」、「順位」の欄は赤系の警告色になります。 * 「日付」、「キーワード」: MDR に登録された日付と、MDR側で準備されたキーワードです * 「ID」: 9桁の英数字です。これを使うと MDR に登録されたデータ(ワーク)をユニークに指定できます。 * 「MDR検索」画面 ローカルデータリスト * ここに手元のデータファイルをドラッグドロップすると MDR から持ってきたデータと同様に表示されます。 * ここに表示されるデータリストは、項目が少し省かれていますがだいたい「検索結果」と同じです。 - 「スペクトル表示」画面 * 「スペクトル表示」画面上部 * 吸収端選択: 「検索」画面で検索したり、ドラッグドロップしたりしたスペクトルの吸収端のリストが表示されます。 * 「吸収端エネルギー」: 3つの数字で吸収端位置と、「XANES」表示を選択した時の表示範囲を指定します。 * 「XANES」: XANES領域を表示するか、スペクトル全体を表示するかの選択です。 * 「規格化」: これにチェックが入っていないときには$\log(I_0/I_1)$(蛍光型の場合は$I_1/I_0$)で計算した$\mu t$をそのまま表示します。\\       これにチェックが入っているときには、$(\mu t - [プリエッジライン]) / ([ポストエッジライン] - [プリエッジライン])$ の形で 規格化されたスペクトルを表示します。 * 「積上表示」: 各スペクトルを一定の値ずつ$y$軸方向にずらして表示します。「規格化」の時だけ意味が有ります。 * 「ピーク整列」: 吸収端のピーク位置が揃うように全スペクトルのエネルギーシフトを調整します(元に戻すには「MDR検索」画面の「シフト0」を押します)。 * 「閾値」: 吸収端のピーク位置を揃える際に使用します。大抵は 0.9 にしておいて下さい。 * 「スペクトル表示」画面下部 * 「E[eV]」、「値」、「値(規格化)」: マウスカーソルがある位置のスペクトルの情報です。 * 「単/複選択のみ表示」: 「スペクトル比較」を行うと着目したスペクトルは「単独選択」されていて、類似度が高いと判断されたスペクトルは「複数選択」されます。 「単/複選択のみ表示」をチェックすると、この結果だけを(似ているものだけを)表示することができます。 * 「自動スケール」: これにチェックが入っていると、表示画面の x, y 方向のスケール(表示範囲)は適宜自動的に決定されます。 * 「スケールリセット」: 「自動スケール」のチェックを外して手動でスケール変更している時、このボタンを押すことで「自動スケール」のときのスケールに戻ります。 * スペクトルに関する情報表示 * スペクトル表示部でマウスを動かすと適宜、マウスカーソルに近いスペクトルが選択され、強調表示に変わると同時に画面上部にそのデータの名前等が表示されます。 * マウスカーソルのそばにも、選択されたデータに関連した情報が表示されます。現在表示されるのは「数字1(R数字2,S数字3)」ですが、 * 「数字1」はリストの中でのそのスペクトルの番号(MDRのリストとローカルのリストは独立の番号) * 「数字2」は「スペクトル比較」を行った結果のランキング(1〜) * 「数字3」は同じくスペクトル比較を行った結果の類似度(小さいほうが類似度している)です。 * スペクトル表示部 : 現在、MDR から持ってきたデータは青系、ローカルのデータは赤系で表示していますがこれは将来変わるかも知れません。 * スペクトル表示画面でのマウス操作 * 関連データ表示 : ボタンを何も押さずマウスカーソルを動かすと、カーソル近くのスペクトルが強調表示され、そのスペクトルの情報が画面上部やカーソル近辺に表示されます。 * スペクトルを隠す : マウスを右クリックするとその時強調表示されているスペクトルの「表示」のチェックが外れ、表示されなくなります。 * エネルギーシフト : マウスの左ボタンでスペクトルを掴むと、スペクトルを左右に動かせます(エネルギーシフトできる)。 * 表示範囲の移動 : (「自動スケール」のチェックが外れている時)「シフト」キーを押しながら、マウスの左ボタンを押して動かすと表示範囲が移動します(グラフ全体が動く)。 * グラフの拡大縮小 : (「自動スケール」のチェックが外れている時)マウスのホイールを回すと、マウスカーソルがある点を中心にグラフ全体が拡大縮小します。\\ グラフの左右端に近い位置でホイールを回すと $y$ 軸のスケールだけが変化して、縦方向に拡大縮小されます。\\ グラフの上下端に近い位置でホイールを回すと $x$ 軸のスケールだけが変化して、横方向に拡大縮小されます。\\ それ以外の場所では $x$, $y$軸両方向に同時に拡大縮小されます。 ===== - インターフェイス言語の指定(英語表記版/日本語表記版) ===== 次のような方法で GUI 上に表示される単語等の言語指定を行うことができます(現在日本語と英語のみ)。 - デフォルトは日本語です - 設定ファイル(デフォルトでは config.cfg)に一行\\ LANG Japanese\\ あるいは\\ LANG English\\ の様に書くことで言語を選べます。 - 実行ファイル名を mdrXAFSj とすると日本語、mdrXAFSe とすると英語になります。\\ (Windows では、mdrXAFSj.exe, mdrXAFSe.exe) - コマンドラインオプションとして '-j' を指定すると日本語、'-e' を指定すると英語になります。\\ コマンドラインオプションは CMD、PowerShell 等から実行するときは "mdrXAFS -e" の様に実行ファイル名の後に指定します。\\ GUI から実行するときはプロパティで設定できます。 複数の方法で指定した場合は、上のリストで下にある指定方法が優先的に働きます。 ===== - 不具合等 ===== - Windows でダークモードで使うと背景色と文字の色が適切でなくなり、表示される文字がほとんど見えなくなることが判明。\\ 全体のテーマに合わせて、個々のアプリケーションのテーマを変更することぐらい OS 側でやってほしいものだが...\\ 対応策(必要か??)検討中 ------ [[start|田渕のページのルート]]\\ 当 web ページとその下のページに関するお問い合わせ等ございましたら、[[連絡先|連絡先]]にご連絡をお願いします。 \\ 今日: {{counter|today}} / 昨日: {{counter|yesterday}} / 総計: {{counter|total}} ~~NOCACHE~~