結晶構造の検索COD GUI&SQL版(2018/12/11作成)(2019/01/08 Win64追加)

OUOperatingGrant.png
sql_win.png

更新

  • (2019/06/28) 注意:プログラムを起動してそのまま長い時間放置した場合は、CODとの接続が切れてしまうため、検索をすると時計マークが出たままで止まらなくなります。この場合は、強制終了してください。これを避けるためには、長い時間使わなかった場合は、一度終了して、再度起動して使ってください。この問題に対応するために少しプログラムを直してはいますが、今のところうまくいってません。
  • (2019/05/17) プログラムのちょっとした更新。Searchボタンを押さなくてもリターンで検索するようにしただけ。
  • (2019/04/06) 今日、Vestaで結晶構造が表示されなくなった。昨日、OSXをupdateしたのが問題だろうか。1つ前のバージョンに戻したら、表示されるようになった。
  • (2019/02/01) 今日、プログラムを使っていて、データがダウンロードされずエラーが出るので、調べてみたらCODウェブサイトが止まっている。sqlサーバー自体は動いているので、検索結果は返ってくるが、cifがダウンロードできないのでエラーが出ます。その後、復活した。
  • (2019/01/08) Mac版に次いでWindows 64bit版も作りました(といってもソース自体は1つですが)。それに応じて内容を改訂してます。

概要

  • 自作プログラム(Mac及びWindows 64bit版ダウンロード可)を紹介してます。このプログラムは、無償の結晶構造データベースCODにアクセスして、鉱物名、化学組成等で検索を行い、その結果をリスト表示します。そのリストの見たい行をダブルクリックすると、その結晶構造情報(cifファイル)をダウンロードして、そのファイルの内容をテキストエディット(Mac標準のエディタ)またはwordpad(Windows)で表示し、Vestaで結晶構造表示させるものです。なお、以前から配布していた同様のものは、私が作った検索用ファイル(cod_list.txt)を利用するものでしたが、このバージョンではそれを必要とせず、CODへ直接SQL queryを出して、帰ってきた結果を表示するようにしてます。
  • 日々の研究でよく使ってます。何か知りたい結晶構造があれば、すぐに検索して結晶構造をVestaで眺められるので便利です。Vestaからvesta形式、またはXTL形式でセーブして、それらのファイルを私のPythonプログラムで処理すると、Quantum-Espressoの入力ファイルができます。ちょっと内容を確認して、すぐに第一原理計算を始めることが可能です。

必要要件

  • 現在Mac版とWindows 64bit版があります。
  • CODサイトとSQL Select文を使ったやりとり及びcifのダウンロードするために、インターネット環境が必要です。またWindows版についてはcurlのインストールが必要になります。
  • また、結晶構造を表示するプログラムVestaがインストールされている必要があります。
  • cifファイルの内容はMacのテキストエディットで開きます。Windowsの場合はwordpadで開きます。どちらも標準アプリなので、インストールする必要はありません。

インストール Mac版

  • こちらからZIPファイルをダウンロードしてください。解凍後は適当なディレクトリーに移動させてください。ダブルクリックをすると、セキュリティの警告が出ます。システム環境設定を開いて、「セキュリティとプライバシー」をクリックします。そこで「ダウンロードしたアプリケーションの実行許可」を与えてください。それで実行可能になります。

インストール Windows 64bit版

  • こちらからZIPファイルをダウンロードしてください。解凍後は適当なディレクトリーに移動させてください。アプリケーション(.exe)とライブラリ(.dll)は同じディレクトリーにいる必要があります。
  • curlはここからインストールできます。私はWin64版をダウンロードしました。解凍して、C:\Program Filesに移動しました。プログラム中でC:\Program Files\curl\bin\curl.exeで呼び出しているので、そうなるようにディレクトリー名(curl部分)に変更を加えてください。
  • また、Vestaはプログラム内でパスをC:\Program Files\VESTA-win64\VESTA.exeと指定しているので、Program Files内へVESTA-win64ディレクトリーを移動してください。

使用方法

  • アプリケーション(またはそのエイリアス)をダブルクリックします。起動時に自動的にCODデータベースに接続します。正常に接続すると下部のリストボックスに接続されたと表示されます。failedと表示された場合は、一度終了して、ネットワークを確認して、再度起動してください。
  • 化学組成で検索する場合は、元素記号を上段の7つのテキストフィールドに左から入れてください。Mg2, O4など、元素名と数値の組み合わせも入力可能です。ただ、例えばringwooditeのような少しstoichiometryからずれるような場合(かつ組成がよく調べられている場合)は、Mg2などとすると、検索結果から漏れる場合がありますので、注意が必要です。中段には、検索したい物質に入っていない元素名を入れてください。これは表示される候補が多すぎる時に、検索結果を制限する上で有用です。鉱物名、空間群、化学組成名、著者名等などのキーワードで検索するときは下段のテキストフィールドに入力してください。元素記号も入力されている場合は、ANDで検索することになります。したがって上の例では、Si AND O AND coesiteで検索していることになります。キーワードのみで検索する場合は、デフォルトで入っているSi, Oを削除してください。
  • 検索条件が設定されたら、Searchボタンをクリックします。検索条件を満たしたものが、下部のlistboxに表示されます。関係ないものが多すぎる場合には、検索条件を変えてみてください。論文情報を見たい場合は、右側にあるラジオボタンの下側をチェックして、もう一度Searchボタンをクリックしてください。なお、検索結果が多い場合、表示件数を越えている場合があり、検索結果の一部しか表示されていないことに注意する必要があります。
  • 検索されたリストの見たい行を選択して、ダブルクリックをすると、そのcifファイルがダウンロードされて、Vestaに表示されます(起動してない場合は起動する)。テキストエディット(wordpad)にチェックした場合(デフォルト設定)には、テキストエディット(Mac)かwordpad(Windows)でcifファイルの内容が表示されます。得られたcifファイルは、Macの場合はホームディレクトリに入っており、Windowsの場合はCOD_search_SQL.exeと同じフォルダーに保存されてますので、後で再利用できます。

やっていること

  • CODサイトではmysqlをデータベースソフトとして使っており、これは外部にも開かれていて、我々でもsql queryを送り、その検索結果を受け取ることができます。このプログラムではこれを利用しています。検索結果から必要とするCODのID番号がわかります。ID番号が分かると、www.crystallography.net/cod/ID番号.cifとすることで、対応するcifファイル(結晶構造が入ったファイル)にアクセスできます。これはWebブラウザでも可能です。ただ、今の場合、プログラムからウェブにアクセスして、cifファイルの内容を得てます。これにはMac上のcurlコマンドを使っているのですが、プログラムからは外部コマンドとして実行させて、その結果(cifファイル)を得てます。同様にプログラムから外部コマンドを実行させることで、Vesta, テキストエディット・Wordpadを起動して、cifファイルを読ませてます。

注意

  • Xojoで作ってます。短時間で作ったものなので、エラー処理などはミニマムです。
  • Windows版はWin7 Pro 64bit版でしか試してません。
  • H, Cで検索すると、膨大な検索結果となります。そのため、表示件数に制約をつけてます(右側にあるポップアップメニューで表示件数を変更することが可能)。元素をなるべく多く入れて、制約する必要があります。また、適切な検索ワードを与えてやる必要があります。
  • 表示数を越えた分はリスト表示されません。なので、越えた分を見たい場合は、さらに絞るか、表示件数を増やすことがさらに必要です。
  • 鉱物で沢山データが出てくる1つの理由は、高温や高圧下での構造データが沢山あるからで、常温常圧のデータが欲しい時はcifファイルを眺めて、測定条件を確認する必要があります。cifには圧力用のタグもあるのですが、多くの場合、測定圧力(温度も)は論文タイトルの最後に追加情報として書かれています。テキストエディットで中身を見てください。連番になっている場合は、最初のものが常圧または常温である可能性が高いはずです。
  • 高圧鉱物の名前で比較的最近付いたものは、例えばbridgemanite, lingunite, libermanniteなど、鉱物名の検索では出てこないか、数が少ないはずです。しかし構造データは実は結構存在します。そのような場合はあきらめずに化学組成や空間群から探してください。
  • 最初、Jedit Omegaでcifを開くようにしてましたが、Jedit Omegaでうまく開かないことがある、有償ソフトであることなどから、Macに最初から入っているテキストエディットでcifファイルを開くように変更しました。Windowsも同じ理由でデフォルトで入っているWordpadで開くようにしてます。

XojoでWindowsのシェルを使う時のメモ:

  • Program Filesなど空白を含む文字列を渡すところが厄介。Shell.Executeを使うとシェルコマンドを渡せるが、空白を含むと" "で囲むだけではうまくいかない。結局"" ""とダブルで使う必要があるが、これだとコンパイル時にエラーとなる。仕方ないので以下のようにした。これだとエラーにならない。
    Dim Sh As New Shell
    Dim s as string
    if TargetWindows then 'For Windows
      s = chr(34) + "C:\Program Files\curl\bin\curl" + chr(34) + " -s -O http://www.crystallography.net/cod/" + cod_id
      Sh.Execute( s )
      if vesta.Value then
        s = chr(34) + "C:\Program Files\VESTA-win64\VESTA.exe" + chr(34) + " " +  cod_id ' Open Vesta 
        Sh.Execute( s )
      end if
      if tedit.Value then
        s =  chr(34) + "C:\Program Files\Windows NT\Accessories\wordpad.exe" + chr(34) + " " + cod_id ' open wordpad
        Sh.Execute( s )
      end if
    end if
  • Mac, Windowsで全く同じプログラムで作っていて、コンパイル時にターゲットOSを変えている。なので、Mac, Windowsで上記のシェルにコマンドを渡す部分はOSによって変えるようにしている。これにはTargetMacOS, Targetwindowsを使っていて、これでOSをチェックして、切り分けた。これらは論理値を返す。上記は処理のWindows処理部分。cod_idにはcurlでダウンロードしたcifファイル名が入っている。

他のCOD関連wikiページ

  • このプログラムが出来たことで必要がなくなったので、以前あった[結晶構造の検索GUI版]は、削除しました。
  • 結晶構造の検索 Macのterminal上からPythonを使って検索する方法を書いてます。CUIの好きな方はご覧ください。こちらも私の作ったインデックスファイルを使ってますが、PythonからCODへ直接SQL queryを送って検索することも可能なはずです。
  • CODへデポジット CODデータベースはフリーですが、ボランティアが構造情報をデポジットすることで成り立ってます(一部雑誌は自動的にデポジットされますが)。皆さんもデポジットしましょう。
  • CODで遊ぶ CODを使い始めた頃作った最初のCOD関係のページ。

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-02-01 (金) 14:16:51 (173d)