pymatgenのインストール手順と使用方法

クロスアビリティ [Winmostar](https://winmostar.com/jp/)サポートチームです。

# 目次
* pymatgenとは
* pymatgenのインストール
* pymatgenの基本機能

# pymatgenとは
pymatgenとは、材料解析のためのオープンソースのpythonライブラリであり、以下の特徴があげられます。  
  
* 原子や分子の構造をPythonのクラスで柔軟に表現  
* VASPやGaussianといった多くのフォーマットに対応
* 位相図の作成や拡散解析などが可能な強力な解析ツール
* 状態密度やバンド構造など、電子構造解析も可能
* 結晶学のオープンデータベースであるMaterials Project REST APIと連動
<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/de66d90e-cb3c-16a0-f12d-d7f880c44db1.jpeg" width=50%>  
引用：http://pymatgen.org/

# pymatgenのインストール

## 1 : Anacondaのインストール
AnacondaはPython本体とその他豊富なライブラリが一括で内蔵された便利なパッケージです。
ダウンロードサイトからPCに対応するインストーラをダウンロードし、インストールします。
ダウンロードサイト：https://www.anaconda.com/download/#windows
## 2 : pymatgenのインストール
* condaを利用してpymatgenをインストール  
初めにAnacondaのコマンドプロンプトを立ち上げます。そこで以下のコマンドを入力し実行します。

　`conda install --channel matsci pymatgen`

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/efcc2dce-d902-3402-8673-f1c626c9ed8a.png" width=50%>

pymatgenは、Anaconda cloudというAnacodndaで利用できるパッケージなどが公開されているクラウド上のmatsciというチャンネルにあり、そこからインストールするという形になります。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/cec06e27-4644-d48a-86d7-d057d3b84e69.png" width=50%>

無事にインストールが済むと、このような画面になります。

## 3 : 開発環境の構成・pymatgenの導入

* PyCharmのインストール
pymatgen自体はAnacondaのコマンドプロンプトで扱うこともできますが、ここではPython IDEの一種であるPyCharmと連携させて扱いたいと思います。ダウンロードサイトからCommunityバージョンをダウンロードし、インストールします。
ダウンロードサイト：https://www.jetbrains.com/pycharm/download/#section=windows 

* PyCharmとAnacondaの連携
インストール終了後、PyCharmを開くと以下のような画面が開きます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/c3257038-a971-fffd-3da8-3d04dda6900e.png" width=50%>

　右下のConfiguresからSettingsを選択すると以下の画面が開きます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/307dc5fe-af3f-b7ed-fa5d-5b6d7f6451c3.png" width=50%>

　Project Interpreterを選択します。
表示された画面右上のProject InterpreterのバーをクリックしShow Allを選択すると以下の画面が開きます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/1991a4c0-4965-97e8-14e4-1c1823060f21.png" width=50%>

右上の＋を押すと、

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/efbe6527-ba6d-723a-84b9-1e7b4fcf195d.png" width=50%>

このような画面が開くので、New Environmentを選択します。
LocationでAnacondaを保存した場所を選択し、Base interpreterでpython.exeを選択しOKを押します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/16decc90-2531-b4a8-830d-10dd617b275b.png" width=50%>

　内蔵されているパッケージの一覧が表示されたらOKを押します。
するとアップデートが開始されます。これでPyCharmとAnacondaが連携されたことになります。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/971b29bd-9c01-201d-7598-1949416d5b98.png" width=50%>

　さらにPyCharmにpymatgenを連携させます。改めてSettingsからProject Interpreterを選択し、右上の＋をクリックします。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/64e81791-cf53-ea5e-1955-5b256d794dfa.png" width=50%>

　検索バーにpymatgenと打つと左の欄にpymatgenが現れるので、それを選択し左下のInstall Packageをクリックします。これで完了です。
　最初の画面でCreate New Projectを選択し、Projectを始めましょう。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/7c9624ad-b433-dc1c-8390-123015dfdac0.png" width=50%>

# pymatgenの基本機能
* 元素クラス : Element class  
Element classを利用することで元素に関する物性値を見ることができます。

```
import pymatgen as mg

si = mg.Element('Si')
print(si.atomic_mass)
print(si.melting_point)
```

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/bc5a3a6b-ff9c-3281-f525-ba0c65064754.png" width=50%>

　このように簡単に元素に関する物性値を見ることができます。

* 組成クラス : Composition class  
使い方はElement classとほとんど同じです。

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/53098dab-7e4e-eb1f-3f77-07e5a81ac616.png" width=50%>

```
import pymatgen as mg

fe2o3 = mg.Composition("Fe2O3")
print(fe2o3.formula)
print(fe2o3.weight)
print(fe2o3.total_electrons)
```

* 結晶構造クラス : Structure class  
結晶格子に関するオブジェクトです。以下ではCsClの単位格子について考えます。

```
import pymatgen as mg

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

<img src="https://qiita-image-store.s3.amazonaws.com/0/267104/0c3165de-a59f-f0ce-fe52-0cf9ab3e1bc9.png" width=50%>

 * 3行目 : 格子定数$a=4.2$の立方格子を定義し、lattice変数に代入しています。
 * 4行目 : 3行目で定義した格子と原子の座標情報を定義し、structure変数に代入しています。  
　　　 [0, 0, 0], [0.5, 0.5, 0.5]はそれぞれCs原子とCl原子の分率座標を意味しています。
 * 5行目 : 定義した単位格子の体積を表示しています。$ a^3 = 74.088$ と検算できますね。
 * 6行目 : structure変数には配列としてアクセスできます。0番目にCsが、1番目にClが格納されています。  
　　　 1番目の要素を表示すると、カーテシアン座標と元素記号を確認することができます。