LoginSignup
18
20

More than 3 years have passed since last update.

pythonのpymatgenの使い方を頑張ってまとめてみる①

Last updated at Posted at 2019-06-12

はじめに

こんにちは。今回は材料研究で非常よく用いられるpymatgenの使い方について、公式ドキュメント等を参考にしてまとめていきたいと思います。

pymatgenを使いこなそうと思ったときに、現状は公式ドキュメントを読むしかありません。そこで今回は、pymatgenの公式ドキュメントを読まなくても大丈夫なように、使い方を事細かに解説していこうと思います。
まあでも、公式ドキュメントをきちんと読むという行為は非常に重要な行為でもあるのですが。
それでは頑張ってまとめていきます。長編になりそうなので、何回か分割していきますね。

想定読者

  • 材料研究でpymatgenを使いたいけど、使い方がよくわからない人
  • pymatgenの使い方を結構知ってるけどたまに復習したい人

簡単な使い方

import pymatgen as mg
fe = mg.Element('Fe')
print(fe.atomic_mass)
print(fe.melting_point)

55.845 amu
1811.0 K

このように、pymatgenのElementメソッドを用いると、原子の大きさや融点の情報を得ることができます。

comp = mg.Composition('Fe2O3')
print(comp.weight)
print(comp['O'])
print(comp.get_atomic_fraction('O'))

159.6882 amu
3.0
0.6

このように、pymatgenのcompメソッドを用いると、化合物の情報を得ることができます。weightには化合物の物質量が、元素を指定するとその原子の数が、get_atomic_fractionを用いると指定した原子の化合物中の割合が表示されます。

Structureオブジェクトの作成

lattice = mg.Lattice.cubic(4.2)
structure = mg.Structure(lattice, ["Cs", "Cl"],[[0, 0, 0], [0.5, 0.5, 0.5]])

このようにしてstructureオブジェクトを生成できます。しかし、基本的にこのようにして作ることは稀で、普通はcifファイルを読み込んで作ります。Structureメソッドの引数は(格子定数、原子の種類、原子位置)という感じになっています。この場合はLatticeメソッドを用いて立方晶(cubic)の空間格子を作成していますね。pymatgenはstructureオブジェクトに対する操作が非常に多いので、structureメソッドの作り方はしっかりと押さえておきましょう。

structureオブジェクトから空間群

from pymatgen.symmetry.analyzer import SpacegroupAnalyzer
finder = SpacegroupAnalyzer(structure)
print(finder.get_space_group_symbol())

Pm-3m

このようにpymatgen.wymmetry.analyzer のSpecegroupAnalyzerを用いれば、空間群を得ることができます。

structureオブジェクトの変換

structure.to(filename='POSCAR', fmt="poscar")
structure.to(filename='test.cif', fmt="cif")

structureオブジェクトのtoメソッドを用いれば、structureオブジェクトをcifファイルやposcarファイルに変換することができます。poscar形式は第一原理計算をする際に用いる形式です。

cifファイルからstructureオブジェクトを作成

structure = mg.Structure.from_str(open("CsCl.cif").read(), fmt="cif")
structure = mg.Structure.from_file("CsCl.cif")

今回はカレントディレクトリにCsCl.cifという名前のファイルが存在することを想定しています。from_strメソッドを用いれば、引数に文字列となったposcarやcifなどの情報を入れることでstructureオブジェクトを作成できます。from_fileメソッドを用いれば、cifやposcarなどのファイルをそのまま引数にとることでstructureオブジェクトを作成できます。


今回はここまでにします。次回はstructureオブジェクトの操作について、もっと詳しく触れていきたいと思います。
pythonのpymatgenの使い方を頑張ってまとめてみる②
pythonのpymatgenの使い方を頑張ってまとめてみる③

18
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
20