update.こんにちは。前回の記事では、機械学習をテーマに材料研究を紹介しました。Genomics)を紹介しながら、手軽に材料研究に触れていただきたいと思っています。想定読者プログラマだけど。余談ですが、マテリアルズインフォマティクス若手の会というFacebookグループを作りました。メール)までお気軽にご連絡ください〜。informaticsに関する情報共有とか、勉強会とかもやりたいと思ってます。他ツールとの連携pymatgenのインストール実際に動かしてみよういますぐ材料研究者の気分を味わいたい人は、いきなりインストールに飛んでもらって構いません。基本は、pymatgenの公式ドキュメントに則ってるので、英語読むのが苦でない方はこっちを読んだようがちゃんと理解できると思います。材料研究ってそもそも何なの?前記事からの引用です。読んだ方は飛ばしてください。→pymatgenとはまず、材料研究って何やねん、何の材料やねんって感じだと思います。おっしゃる通り、材料と言ってもセラミックス、高分子、金属など様々なものがあります。iPhoneこの中には、こんな小さなセラミックコンデンサが数百個入っています。・どんな元素を組み合わせよう?・どんなプロセスで作ろう?という難しい問題を解くことになります。解き方の一例を示します。過去の偉人が作ってたやつちょっと変えて作ってみるか意外とできない・・・もっと混ぜ時間増やしたほうがいいのかな(プロセス最適化)できた!色々測定したり観察したりしよ(測定)なるほど、こんな物理現象で高性能でてるんや(理論、解析)理論と解析で傾向がわかったし、これなら次はこんな元素で作ってみるか・・・(探索)という感じです。フル活用してすごい材料を作ることめちゃくちゃ雑ですが、こんな感じです。pymatgenとは簡単に言うと、材料を解析する便利なツールです。材料の解析についてざっくり理解するために下の図を見てみてください。Wikipediaより高校でもやったと思いますが、物質は原子で構成されていて、それぞれ多種多様な構造を持っています。材料解析の目的は、どんな種類の原子がどんな割合でどんな構造を持っていたら、どんな性質を持つんだろう?これを、物理を使って解決することです。そこで本題のpymatgenですが、1材料の可視化や解析データの利用に便利なツールがたくさん2現在材料の解析に使われているツールとの連携が簡単という強みを持ったオープンソースのpythonライブラリです。GUIで動かす解析ソフトではないのでご注意を。APIとの連携が可能が公式ドキュメントで挙げられています。ここから、実際にpymatgenを使うことで材料研究者の気分を味わってみましょう。参考:http://pymatgen.org/pymatgen.core.html#module-pymatgen.coreまずはpymatgenで提供されている原子や構造の表現に用いるmoduleを見ていきます。tableとは、みなさんご存知の周期表です。classを紹介します。classでは、Enumクラスを継承して、周期表に対応して原子を定義できます。いろんな情報を持つオブジェクトが作れます。それぞれアクセスしたい時は、以下のように属性を指定して取得してください。属性一覧もソースとかドキュメントとかみればわかります。classを見ていきます。classでは、酸化数を考慮して原子を表現できます。property".format(k))元素に酸化数と特性を持たせることができます。単純に、Elementの拡張版だと考えてもらって良いと思います。Specieオブジェクトには、理想的な酸化数や特性を持たせることを推奨されており、後述するSiteオブジェクトでは、結晶構造中の元素の酸化状態やスピンの状態を表現できるので、シミュレーション結果を保存するためにはSiteオブジェクトを使います。pymatgen.core.compositionhttp://pymatgen.org/pymatgen.core.composition.html#module-pymatgen.core.compositionこのモジュールでは、H2OやNaClといった物質の組成(composition)を表現するモジュールです。classクラスを紹介します。...パッと見てもわかりにくいし説明大変なので、使い方だけ見ましょう。comp.get_atomic_fraction(Element("Li"))0.14285714285714285などなど、定義も簡単で、便利な組成オブジェクトが作れます。他にもたくさん機能があるので、是非ドキュメントを参考にしてみてください。pymatgen.core.latticehttp://pymatgen.org/pymatgen.core.lattice.html#module-pymatgen.core.latticelaticeとは、格子という意味で、高校でも習う単位格子など覚えている人も少なくないのではないでしょうか。{n}_1{a}_1+{n}_2{a}_2+{n}_3{a}_3で、格子ベクトルが表現されます。この3次元のベクトルを、次のような多次元配列で定義します。classを用いるともっと便利になります。arrayに対応しています。1)上は、単純な立方晶(立方体)です。1.]])このように、Latticeオブジェクトを使うと角度や長さなどにアクセスできます。その他にも便利な機能を持っているので、ドキュメントを読むことをお勧めします。http://pymatgen.org/pymatgen.core.lattice.htmlpymatgen.core.structurehttp://pymatgen.org/pymatgen.core.structure.htmlこのモジュールでは、結晶構造の表現を可能にする機能を提供しています。classを見ていきます。...いろいろと引数をとっているので、それぞれ見ていきましょう。latticepymatgen.core.lattice.Latticeクラスも使うことができます。speciesこれは、原子の種類です。以下のように様々な形式に対応しています。coordsこれは、各原子の座標を指定します。0.5]]これらを踏まえて、Structureはこのように定義できます。0.5000]>このように、構造中の距離や位置関係、密度などにアクセスできるようになります。次に解析機能はどんなものがあるのかを見ていきましょう。解析用modules一覧どんなモジュールがあるかだけ軽く紹介します。この中からいくつかピックアップして、実際に動かしてみます。この画像の右側が、pymatgenが提供している解析機能です。電子構造解析だと、バンド構造の解析とかできます。相図も出力できたりします。それぞれ細かくソースから機能紹介する記事も、需要がある&気が向いたら書こうと思っていますので、要望がありましたらコメントとかください。基本的に、計算量の大きいシミュレーションなどはその他のソフトを用いますが、それらのデータを組み合わせた解析や、可視化の際にpymatgenを使うと効率が増します。この画像の左側に、よく使われるデータ形式やツールとの連携が書かれてます。上記のファイルやソフトを使っている人なんかは是非導入してみてください。apiに関しては、使い方を前回の記事にも書いたので是非参考にしてみてください。Projectというところが大量のデータを公開してくれてて、自由にガンガンデータを取れちゃうので、機械学習とかやりたかったら必須です。長くなりましたが、みんなでpymatgenを使っていきましょう!pymatgenのインストールインストールの基本的な流れは、pythonが使える環境(3系がおすすめ)condaをインストールpymatgenをcondaでインストールです。condaのインストールまでは、下記の記事などを参考にしてください。pymatgen動作確認が終わったら、インストール完了です。pymatgen.__version__'4.5.4'これで準備も整ったので、実際に試してみましょう!実際に動かしてみようバンド構造解析バンド構造とは、結晶の周期構造の中で電子などの分散を表します。バンド構造を図示する際縦軸はエネルギーなのですが、横軸は逆格子空間の点になっていてかなり理解しづらいと思います。興味がない方は、"電子がどう分散しているのかがわかる"程度にご理解ください。pymatgenでは、解析済みのバンド構造を可視化したり、データとして処理することできます。必要なライブラリをインポートします。BSPlotter次に、解析済みのバンド構造を入手します。databaseからダウンロードします。keyを取得してください。MPRester("自分のAPIkey")#欲しい材料のidを指定して、http通信で取得。projectから直接BandStructureオブジェクトが取れました。project上ではこのように材料の情報を取得できます。これらの情報を、python上で処理していきます。bs.is_metal()False金属ではないみたいですね。bs.get_direct_band_gap()18.0201直接遷移のバンドギャップは18.021eV。バンド図をプロットしてみましょう。project上のデータですが、普段は研究している物質などのシミュレーション結果などを出力できます。いうことで、他の材料との比較や機械学習、探索などにおいてpymatgenのオブジェクトが有用そうなのがだんだん伝わっていると嬉しいです。できることは多いですが、今回はここで終わりにしておきます。project勉強会とかvasp勉強会とかマテリアルズインフォマティクス若手の会で開きたいと思ってるので、興味ある方は是非入ってみてくださいね〜また次回もマテリアルズインフォマティクス系で記事書こうと思ってます。upLoginユーザーは見つかりませんでした。