#author("2019-05-27T16:20:43+09:00","default:masami","masami")
#author("2020-03-03T09:47:50+09:00","default:masami","masami")
*COD_POW(粉末X線回折データベース) [#g3f9728d]
**COD_POWについて [#lf9e0089]
-COD_POWは粉末X線回折データベースである。EXPO2014やSIR2019と同じくイタリアの結晶学研究所が開発しており、アカデミックユーザーの場合は無料で入手できる。同じところが開発している粉末X線回折法定性分析ソフトQualX2のデータベースとして使用される。COD_POWはその名前にもあるように、結晶構造データベースのCODから、EXPOを使って粉末回折強度を計算させて、データベース化したものである。ダウンロード方法は[[QualX2]]の方をご覧ください。
-COD_POWは粉末X線回折データベースである。EXPO2014やSIR2019と同じくイタリアの結晶学研究所が開発しており、アカデミックユーザーの場合は無料で入手できる。同じところが開発している粉末X線回折法定性分析ソフトQualX2のデータベースとして使用される。COD_POWはその名前にもあるように、結晶構造データベースのCODから、EXPOを使って粉末回折強度を計算させて、データベース化したものである。ダウンロード方法は[[QualX2]]の方をご覧ください。最新版は1906。
**COD_POWのなかみ [#r926bd4e]
-COD_POWはSQLite3で作られている。QualX2の論文(Altomare, A., Corriero, N., Cuocci, C., Falcicchio, A., Moliterni, A. & Rizzi, R. (2015). QUALX2.0: a quantitative phase analysis software using the freely available database POW_COD, J. Appl. Cryst. 48, 598-603.)に内容の説明が多少ある。ダウンロードして、解凍すると、4つのファイルに分かれていて、cod*.sq, cod*.sq.search, cod*.sq.info, cod*.sq.infostat(これは論文には出てこない)がある。
-cod*.sq.searchには、topという名前のテーブルがあり、id, n, dvalの3つのコラムがある。idはCODのデータに対応する7桁の数字。nは次のdvalのデータ数(デフォルト3)、dvalは、最強線のd値でこの場合3個がカンマ区切りで入っている(文字型)。inorganicの方を見たが、全部で7.8万のデータがあった(COD_POWのfullは有機物も含めて40万超)。これが最初にsearch & matchで使われているのだろう。
-cod*.sqはメインのデータベースである。chemical, id, infodb, subfiles, warn, warningcifの6つのテーブルからなる。
--chemicalテーブルの中には、id, chemical_elementの2つのコラムがある。idはid番号で、chemical_elementにはそこに含まれる元素が1つだけ書かれている。そのため、CaTiO3なら、3つ元素があるため、3つのエントリーがあることになる。
--idテーブルの中には、id, name, mineralname, chemical_formula, spacegroup, quality, rir, nrec, nd, dvalue, intensita, nの12のコラムがある。id番号の相について、各データが入っている。rirは定量分析の時に使う係数。qualityはこの場合Cだけである。nrec, ndは何かよく分からなかった。nrecはほとんど0が入っている。dvalue, intensitaにはもちろん、d値と強度がカンマ区切りで沢山入っている(文字型)。QualX2で同定した相の位置と強度の表示はこのデータを使っているのだろう。FoMの計算の時も。
--infodbテーブルは単にこのデータベースの情報が入っているだけ。id, date, ncard, type, sourceの5コラムで、エントリーは1つだけ。
--subfilesテーブルは、id, subfileの2つのコラムがある。どうもinorganicのファイルのidには、subfileの値としてIが入っているようだ。なお、現在のところのsubfileはinorganicだけ。
--warnテーブルには、id, stringaの2つのコラムがある。これはwarningを格納しているだけで、2つだけエントリーがあった。stringaにはエラー表示用のテキストが入っている。空間群が認識できないとか。
--warningcifテーブルには、id, idw, idlabelの3つのコラムがある。多分、CODのcifから粉末回折パターンを計算した時のwarningの情報で、idlabelには、warnテーブルのエラーのidが入っている様に見える。idwの方はよく分からない。
-cod*.sq.infoには、infoとspgrsatの2つのテーブルがある。search & matchには使われてなく、その相の情報を、カード形式で出すときに使われているそうだ。
--infoテーブルには27のコラムがあり、id, authors, journal, journal_year, journal_volume, journal_issue, page_start, page_end, color, crystal_density, z, spacegroup, type, volume, density, mu(Cuka)(kは大文字), a, b, c, alpha, beta, gamma, rir, h, k,l,mulである。説明なしで大体分かると思うが、typeは晶系、rirは定量分析の時に使う係数。h,k,l,mulは50個くらいの値があり、カンマ区切り。mulは多重度。*.sqにあるd値に対応するh,k,l,mulだと思われる。
--spagrsatテーブルには4つのコラムがあり、spacegroup, type, ids, nである。typeは上と同じ。これは各space groupの属するデータ(id)をまとめたもの。ただし、space groupは軸の取り替えたものやセッテイングの異なるものも別ものとして扱われているので、230でなくて、521エントリーある。また、アルファベットオーダーになっている。idsのところには、その空間群に属するidのリストがカンマ区切りで入っている。nはそのidの数である。
-cod*.sq.infostatは、論文に説明がない。12のテーブルがある。stat_a, stat_alpha, stat_b, stat_beta, stat_c, stat_cdens, stat_color, stat_dens, stat_gamma, stat_spgr, stat_type, stat_volである。各デーブルは同じ構造で、val, ids, nの3つのコラムがある。どうも格子常数などからidを求めるために使うテーブルのようである。これもsearch & matchでは使ってないはずだが、格子常数等から可能な相を検索するような目的で作られたと思われる。
**COD_POWの利用 [#z2c42151]
-多くのプログラム言語がSQLite3をサポートしているので、内容が分かれば、これを使って自分でsearch & matchソフトを作ることは難しくなさそう。結晶構造はidからすぐCODからダウンロードできるので、検索後、すぐRietveldに移行するとか可能になる。
-Macにはsqlite3が入っているので、terminalでcod*.sq.searchをちょっと遊んでみた。d値のコラムを検索して、一致したデータのidを返すように、select文を書いてみた。
 > sqlite3 cod1901ino.sq.search 
 SQLite version 3.24.0 2018-06-04 14:10:15
 Enter ".help" for usage hints.
 sqlite> .table
 top
 sqlite> select id from top where dval like '4.221%';
 7221286
 1507134
 9014489
 1537605
 1518034
 1539530
 1523580
-dvalコラムには文字型でd値が3つカンマ区切りで入っているので、文字型での検索をしないといけない。globを使って、3つのd値で検索する場合はこれでいいのかな。1つヒットした。
  sqlite> select id, dval from top where dval glob '*2.466*' and 
 dval glob '*2.312*' and dval glob '*2.695*';
 1509304|2.695700,2.466800,2.312000
-今度はcod**.sqへつないで、検索で出てきた1509304のd値と強度のリストを引き出してみる。
 >sqlite3 cod1901ino.sq
 SQLite version 3.24.0 2018-06-04 14:10:15
 Enter ".help" for usage hints.
 sqlite> .table
 chemical    id          infodb      subfiles    warn        warningcif
 sqlite> select intensita from id where id like '1509304'; 
 14.929700,41.058300,114.790600,3.875600, (以下略)
 sqlite> select dvalue from id where id like '1509304';
 6.117100,4.172700,3.531700,3.447100,3.058500, (以下略)
これらを実測値と比べて、figure of meritを計算してやれば、簡単なsearch & matchができるだろう。
-POW_CODはCOD結晶構造データベースから作られているので、POW_CODを充実させるには、まずCODを充実させることが必要である。CODへの結晶構造のデポジットの方法については、[[CODへデポジット]]に書いてます。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS