結晶構造の検索 「旧 鉱物結晶構造の検索」(2016/04/26作成)(2017/04/13更新)

  • (2017/11/08) 最近のFoxにCODの検索機能が付きました。Foxユーザーの方はそちらを使っても、結晶構造の検索ができます。
  • (2017/10/18) cod_list.txtをupdateした。
  • (2017/09/06) cod_list.txtをupdateした。
  • (2017/08/07) cod_list.txtをupdateした。
  • (2017/05/26) Xojoで簡単なGUI検索プログラムを作ってみた(Mac, Win)。そちらは結晶構造の検索GUI版を参照

概要

  • 以下には、無料で結晶構造を鉱物名や化学組成で検索して、サクッとVestaで表示するための方法が書いてあります。最近、フリーの結晶構造データベースCODから鉱物名、化学組成等を抽出したリストを作りました。また、そのリストを検索して、Vestaに表示させるための簡単なPythonコードを作りました。それが案外便利で、私の研究・教育になくてはならないものとなっており、公開することにしました。ただし、Macのターミナル上での使用を前提にしてます。Linuxでは少しだけコードの変更が必要です(Vestaをオープンするところ)。利用には、結晶構造を表示するプログラムVestaがインストールされている必要があります。また、cifデータをダウンロードするためにインターネット環境が必要です。
  • なお、ここの内容のほとんどはCODで遊ぶに既に書いてあるのですが、そちらはテクニカルな部分や仕組みを解説している所が多いので、ここではそれらは省いて、利用方法を主に書いてます。仕組みが知りたい方はCODで遊ぶをご覧ください。CODデータベース本体のダウンロード(40 GB弱)はこちらの利用方法では不要です。なお、無機結晶(鉱物)の例のみが出てますが、COD自体は有機結晶を含んでますので、有機結晶の検索にも利用できます。
  • 地球科学系の学生さんへのメモ:高圧鉱物の名前は比較的最近ついたものが多いので、例えばbridgemanite, lingunite, libermanniteなどは鉱物名の検索では出てこないか、数が少ないはずです。しかしデータは実は沢山収録されています。そのような場合はあきらめずに化学組成から探してください。または構造名から検索できることもあります。
  • 文字だけでは便利さが伝わらないかもしれないので、使っているところのmovieを置いておきます。これはmelanophlogiteという鉱物を検索して、Vestaで表示されるところを、Quicktimeで画面キャプチャーしたものです。検索からVestaでの表示までに10秒もかかりません。最新版は組成でも検索できます。

準備:

  • まず、鉱物名、組成等とその結晶構造データファイル名(*******.cif)をリストにしたものをここからダウンロードしてください。これは全cifデータから抽出したテキストファイル(最新2017/09/06更新)で、37万件ほどあり、17 MBの容量になります。これは、私がダウンロードしたCODデータベースから、Pythonで処理して作成したものです。テキストファイルなので、エディタで内容を見ることもできますが、あまりに大きいのでエディタによっては結構大変です。中にはファイル名、化学組成、空間群、化合物名、鉱物名が1行毎に書いてあります。なお化合物名や鉱物名はほとんどの場合には与えられてないので、空白(実際には'-')になっていることが多いはずです。エディタで例えば鉱物名を検索して対応するCODのcifファイル名(結晶構造の情報が書かれている)を知ることができます。そのcifファイルを見る最も簡単な方法は、以下のようにブラウザでそのファイルに直接アクセスすることです。/以降にcifファイル名を入れることで、cifファイルがダウンロードできます。
    http://www.crystallography.net/cod/9000166.cif
    これをVestaでオープンすれば結晶構造が表示されます。しかし、それでは能がないので、ここでは検索、ダウンロードを含めてPythonで自動化したものを提供します。
  • Python(インタープリタタイプのプログラム言語)で書かれたコードをここからダウンロードしてください。これはごく短いものです。Python自体はMac OS Xに最初から入っているので、インストールする必要はありません。ダウンロードするのは上記リストとこれの2つだけです。
  • 以下、cod_list.txtとvesta_chem.pyが同じディレクトリにあると仮定して、説明します。なお、ダウンロードしたファイルは「ダウンロード」ディレクトリに入ってます。また、Vestaもインストール済みと仮定してます。
  • ターミナルは、アプリケーションのユーティリティ内にあります。それをダブルクリックします。ターミナル起動時点では最初ホームディレクトリにいるはずですので、上記の2ファイルをホームディレクトリに移動しておけば、以下の例のコマンドをそのままタイプして使えます。フォントや大きさは環境設定で変えられます。最初に出ている~ >はプロンプトで、~は現在ホームディレクトリにいることを示します。プロンプトが出ている時はコマンドをタイプできます。以下の例ではまず確認を兼ねて、現在のディレクトリ名を表示させてます。これにはpwdとタイプします。現在のパス名(以下は私の環境)が表示されます。cdしてなければ、それはホームディレクトリのはずです。そこの/Usersの次がユーザー名になります。次にvesta_chem.pyに実行権限をつけるために以下を入力します。ls -al vesta_chem.pyで実行権限を確認できます。rwxr-xr-xとなっていればOKです。また、ファイル名に*が付いているのも実行できることを意味してます。vesta_chem.pyは適当に名前を変えてください(.pyは残して)。
    ~ > pwd
    /Users/masami
    ~ > chmod 755 vesta_chem.py
    ~ > ls -al vesta_chem.py 
    -rwxr-xr-x@ 1 masami  staff  1261  4 26 14:47 vesta_chem.py*
  • もしcod_list.txtを別ディレクトリに移動させたい場合は、vesta.pyをJeditのようなエディタで開いて、以下の例のように、5行目を移動先のディレクトリに合わせて変更してください。そしてセーブしてください。
    list_file = '/Users/masami/Desktop/cod_list.txt' # 例
    以上で使用準備は完了です。

使用方法

  • 使用方法はごく簡単で、ターミナルから./vesta_chem.pyをタイプするだけです。実際の使用状況は以下のリストのような感じになります。鉱物名で検索する時は1、化学式で検索する場合は2を選びます。以下の例ではcoesiteという鉱物を検索してます。この場合、22もあるので、そのリストが出てきて止まります。先頭に表示されている番号を選んで、入力してください。この例では1番目を選んでいます。対応するcifファイルがCODサイトから自動的にダウンロードされて、Vesta上に表示されます(ネットワーク環境によっては少し時間がかかります)。もちろん存在しない場合はまたプロンプトがでてきます。Vestaで表示されたcifファイルは現在ディレクトリに保存されていますので、後で利用することができます。化学式での検索は「Mg2 Si O4」のように元素名+数を使いますが、各項目はスペースで分けて入力します。この検索部分はまだ単純なので、さらに絞るなど各自書き換えてもらえば、もう少し賢い検索が可能になります。H, Cなど単純な検索ワードで検索すると、膨大なリストが出てくるので、絞って検索した方がいいと思います。Pythonのいいところはすぐ変更して試せるので、気に入らないところは変えてください。なお、鉱物で沢山データが出てくる1つの理由は高温や高圧下での構造データが結構あるからで、常温常圧のデータが欲しい時はcifファイルを少し覗いて測定条件を確認する必要があります。
    # search by mineral name
    ~ > ./vesta_chem.py 
    Search by 1:mineral; 2:formula; Other: exit
    >>> 1
    Provide mineral name for search. (0 to stop)
    >>> coesite
    1:coesite  O2 Si  C 1 2/c 1  -
    2:coesite  O2 Si  C 1 2/c 1  -
    3:coesite  O2 Si  C 1 2/c 1  -
    途中省略
    22:coesite  O2 Si  C 1 2/c 1  -
    Select by number? (0 to skip)
    >>> 1   # Vestaで表示される
    Provide mineral name for search. (0 to stop)
    >>> 0
    ~ >
    
    # search by chemistry
    ~ > ./vesta_chem.py 
    Search by 1:mineral; 2:formula; Other: exit
    >>> 2
    Provide elements for search (0 to stop)
    Example: O4 Mg2 Si
    >>> Mg2 Si O4
    1:Mg2 O4 Si  forsterite  P b n m  -
    2:Mg2 O4 Si  wadsleyite  I b m m  -
    3:Mg2 O4 Si  ringwoodite  F d -3 m :2  -
    4:Mg2 O4 Si  ringwoodite  F d -3 m :2  -
    途中省略
    61:Mg2 O4 Si  wadsleyite  I m m a  -
    Select by number? (0 to skip)
    >>> 61     # Vestaで表示される
    Provide elements for search (0 to stop)
    Example: O4 Mg2 Si
    >>> 0
    ~ >
  • 現在、GUI版を作っているところ。
    COD_search.png

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-15 (土) 10:56:08 (220d)