Materials Projectで取得できるデータを徹底的に理解する！

## はじめに
**[Materials Project](https://materialsproject.org/)で取得できるデータについて詳細に解説していきます。**Materials Projectの概要やデータの取得方法は[こちら](https://qiita.com/oki_kosuke/items/6be3d1dbe1c7e16a5276)にて解説していますので、是非参考にして下さい。

※マテリアルズインフォマティクス関係の内容を他にも投稿していますので、よろしければ[こちら](https://qiita.com/oki_kosuke/items/34b1071224953776c211#%E6%8A%95%E7%A8%BF%E4%B8%80%E8%A6%A7)の一覧から他の投稿も見て頂けますと幸いです。

## Materials Projectからのデータの取得
データの取得方法は[前回の投稿](https://qiita.com/oki_kosuke/items/6be3d1dbe1c7e16a5276)や[こちら](https://qiita.com/tukki0210/items/f46a487e5eb6a92ee84f)に詳しく書かれていますので、参考にしてみてください。

### 環境
- windows10
- conda 4.9.2
- python 3.7.1
- rdkit 2020.03.2.0
- pymatgen 2020.4.29
- pandas 1.1.5

### NaClのデータの取得
例として、NaClのデータを以下のコードで取得していきます。[こちら](https://qiita.com/tukki0210/items/8b194d64e5ecb8d7c19e)の投稿を参考にさせて頂きました。

```python
# ライブラリのインポート
import pandas as pd
from pymatgen.ext.matproj import MPRester

# Materials Project の API キーの入力（自分のAPI keyを入力）
API_KEY = 'Your API'   

# m.get_data(chemsys_formula_id)は Material Projectから指定化合物のデータを取得
# chemsys_formula_id は、元素の組み合わせ(e.g.,Li-Fe-O)、化合物名(e.g.,Fe2O3)、
# Material Projectの材料id (e.g., mp-1234)のいずれかを入力
with MPRester(API_KEY) as m:
    NaCl_df = pd.DataFrame(m.get_data('NaCl',data_type='vasp'))

# 結果を保存
NaCl_df.to_csv('NaCl_df.csv')
# 結果を出力
NaCl_df
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1057114/b799366f-4ca9-7777-d36e-cec9639fe57b.png" width="100%">

2つのデータが取得されたことが分かります。この2つについてもう少し詳しく見ていきます。

```python
NaCl_df[["e_above_hull", "band_gap"]]
```

![Nacl_df.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1057114/51f67bac-39c8-c382-0a2d-202c7a9569b9.png)

2行目の1のデータの方がe_above_hullが小さく、より安定であることが分かります。（e_above_hullの意味は以下で解説していきます）今回は2行目の1のデータを題材として採用します。参考にさせて頂いたページでは結晶構造に着目し、2行目の1のデータの方がより一般的であると結論づけていました。なお、Materials Projectで検索した結果が以下です。赤枠でNaClを示していますが、この2つが取得できていることが分かります。

![mp_NaCl.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1057114/81d2ef5b-cf78-4ed5-b1f4-7834e9897770.png)

## Materials Projectから取得したデータの解説
取得したNaClのデータを詳しく見ていきます。

### NaClのデータの詳細

|PROPERTIES|NaClの値|
|---|---|
|energy|-6.77627872|
|energy_per_atom|-3.38813936|
|volume|46.0961483324369|
|formation_energy_per_atom|-2.10388776329666|
|nsites|2|
|unit_cell_formula|{'Na': 1.0, 'Cl': 1.0}|
|pretty_formula|NaCl|
|is_hubbard|FALSE|
|elements|['Na', 'Cl']|
|nelements|2|
|e_above_hull|0|
|hubbards|{}|
|is_compatible|TRUE|
|spacegroup|{'symprec': 0.1, 'source': 'spglib', 'symbol': 'Fm-3m', 'number': 225, 'point_group': 'm-3m', 'crystal_system': 'cubic', 'hall': '-F 4 2 3'}|
|task_ids|['mp-655654', 'mp-656552', 'mp-656209', 'mp-22862', 'mp-1141489', 'mp-1440825', 'mp-1593596', 'mp-1592749', 'mp-1686774', 'mp-1792313']|
|band_gap|5.14509999999999|
|density|2.10530608435761|
|icsd_id|   |
|icsd_ids|[18189, 240599, 240604, 61662, 53816, 240598, 100633, 240601, 52232, 622369, 41411, 44277, 240603, 52233, 165592, 240602, 240600, 181148, 162800, 169462, 28948, 41439, 60280, 655785, 53815]|
|cif|# generated using pymatgen <br> data_NaCl <br> _symmetry_space_group_name_H-M   'P 1' <br> _cell_length_a   4.02463542 <br> _cell_length_b   4.02463542 <br> _cell_length_c   4.02463542 <br> _cell_angle_alpha   60.00000000 <br> _cell_angle_beta   60.00000000 <br> _cell_angle_gamma   60.00000000 <br> _symmetry_Int_Tables_number   1 <br> _chemical_formula_structural   NaCl <br> _chemical_formula_sum   'Na1 Cl1' <br> _cell_volume   46.09614833 <br> _cell_formula_units_Z   1 <br> loop_ <br>  _symmetry_equiv_pos_site_id <br>  _symmetry_equiv_pos_as_xyz <br>   1  'x, y, z' <br> loop_ <br>  _atom_site_type_symbol <br>  _atom_site_label <br>  _atom_site_symmetry_multiplicity <br>  _atom_site_fract_x <br>  _atom_site_fract_y <br>  _atom_site_fract_z <br>  _atom_site_occupancy <br>   Na  Na0  1  0.00000000  0.00000000  0.00000000  1 <br>   Cl  Cl1  1  0.50000000  0.50000000  0.50000000  1|
|total_magnetization|0.0000508|
|material_id|mp-22862|
|oxide_type|None|
|tags|['Sodium chloride', 'Halite', 'High pressure experimental phase']|
|elasticity|{'G_Reuss': 14.0, 'G_VRH': 14.0, 'G_Voigt': 15.0, 'G_Voigt_Reuss_Hill': 14.0, 'K_Reuss': 23.0, 'K_VRH': 23.0, 'K_Voigt': 23.0, 'K_Voigt_Reuss_Hill': 23.0, 'elastic_anisotropy': 0.17, 'elastic_tensor': [[46.0, 11.0, 11.0, 0.0, 0.0, 0.0], [11.0, 46.0, 11.0, 0.0, 0.0, 0.0], [11.0, 11.0, 46.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 12.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 12.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 12.0]], 'homogeneous_poisson': 0.24, 'poisson_ratio': 0.24, 'universal_anisotropy': 0.17, 'elastic_tensor_original': [[46.34615434739699, 10.709055272479805, 10.709055272479805, 0.0, 0.0, 0.0], [10.709101919737014, 46.34659526138915, 10.709101919737014, 0.0, 0.0, 0.0], [10.709005258895582, 10.709005258895582, 46.34634908080158, 0.0, 0.0, 0.0], [-3.3994077816060055e-07, -6.969950030705446e-06, 5.7313416741614496e-05, 12.301509494016342, 0.0, 0.0], [-3.0123300583534208e-05, -1.1249930949851892e-05, -2.8823318810698234e-05, 0.0, 12.301596650705338, 0.0], [-2.9323392471349104e-05, -8.94008426681169e-06, -2.3540043928489777e-05, 0.0, 0.0, 12.30160224398984]], 'compliance_tensor': [[23.6, -4.4, -4.4, -0.0, 0.0, 0.0], [-4.4, 23.6, -4.4, 0.0, -0.0, -0.0], [-4.4, -4.4, 23.6, -0.0, 0.0, -0.0], [-0.0, 0.0, -0.0, 81.3, -0.0, -0.0], [0.0, -0.0, 0.0, -0.0, 81.3, 0.0], [0.0, -0.0, -0.0, -0.0, 0.0, 81.3]], 'warnings': [], 'nsites': 2}|
|piezo|   |
|diel|{'e_electronic': [[2.488147000000011, 0.0, 0.0], [0.0, 2.488147000000011, 0.0], [0.0, 0.0, 2.488147000000011]], 'e_total': [[6.530282000000013, 0.0, 0.0], [0.0, 6.530282000000007, 0.0], [0.0, 0.0, 6.530282000000012]], 'n': 1.577386129012174, 'poly_electronic': 2.488147000000011, 'poly_total': 6.530282000000011}|
|full_formula|Na1Cl1|

### 取得したデータに含まれる特性の解説

PROPERTIESの意味について以下に記載していきます。[公式サイト](https://docs.materialsproject.org/open-apis/the-materials-api/#materials_.28calculated_materials_data.29)の説明は引用として記載します。（記載のない特性もあります）
<br />

**energy** (BASIC PROPERTIES)
> Calculated vasp energy for structure

vasp（第一原理計算ソフト）で計算した生成エネルギー
<br />
<br />

**energy_per_atom** (BASIC PROPERTIES)
> Calculated vasp energy normalized to per atom in the unit cell

energyを単位格子内の原子ごとに正規化した値。
（energy）÷（nsites）の計算結果。
<br />
<br />

**volume** (BASIC PROPERTIES)
> Final relaxed volume of the material

体積
<br />
<br />

**formation_energy_per_atom** (THERMODYNAMIC PROPERTIES)
> Calculated formation energy from the elements normalized to per atom in the unit cell

formation energyは生成熱の意味。
<br />
<br />

**nsites** (BASIC PROPERTIES)
> Number of sites in the unit cell

構成している元素の数の合計数。例えばBe<sub>2</sub>H<sub>2</sub>ではBeの2とHの2の合計4。
<br />
<br />

**unit_cell_formula** (BASIC PROPERTIES)
> The full explicit formula for the unit cell

完全な化学式。リスト形式。pretty_formulaと比較して、正規化しない化学式といった意味合いでしょうか。Be<sub>2</sub>H<sub>2</sub>では{'Be': 2.0, 'H': 2.0}です。
<br />
<br />

**pretty_formula** (BASIC PROPERTIES)
> A nice formula where the element amounts are normalized

正規化された化学式。例えば、Be<sub>6</sub>H<sub>12</sub>ではBeH<sub>2</sub>、B<sub>64</sub>H<sub>80</sub>ではB<sub>4</sub>H<sub>5</sub>と表される。
<br />
<br />

**is_hubbard** (CALCULATION PARAMETERS)
> A boolean indicating whether the structure was calculated using the Hubbard U extension to DFT

構造がDFT（離散フーリエ変換）のHubbard U拡張を使用して計算されたかどうかを示すブール値。
<br />
<br />

**elements** (BASIC PROPERTIES)
> A array of the elements in the material

構成している元素。NaClでは['Na', 'Cl']となります。
<br />
<br />

**nelements** (BASIC PROPERTIES)
> The number of elements in the material

構成している元素の種類数。例えばBe<sub>2</sub>H<sub>2</sub>ではBeとHの合計2。
<br />
<br />

**e_above_hull** (THERMODYNAMIC PROPERTIES)
> Calculated energy above convex hull for structure. Please see Phase Diagram Manual for the interpretation of this quantity.

熱力学的凸包（Convex Hull）からどのくらいエネルギー的に不利であるかを表す指標。安定相では0であり、Energy Above Hullが小さいということは実験上最も生成しやすい（安定である）ことを表している。
<br />
<br />

**hubbards** (CALCULATION PARAMETERS)
> An array of Hubbard U values, where applicable.

is_hubbardが"TRUE"の際にHubbard Uの値が返ってくるという感じでしょうか。
<br />
<br />

**is_compatible** (CALCULATION PARAMETERS)
> Whether this calculation is considered compatible under the GGA/GGA+U mixing scheme.

GGA / GGA + U混合スキームにて、この計算が互換性があると見なされるか否か。ブール値。
<br />
<br />

**spacegroup** (BASIC PROPERTIES)
> An associative array containing basic space group information.

結晶構造に関する情報を含む。space groupは空間群の意味。
<br />
<br />

**task_ids**
ここは解読できませんでしたが、上のNaCl（mp-22862）では```['mp-655654', 'mp-656552', 'mp-656209', 'mp-22862', 'mp-1141489', 'mp-1440825', 'mp-1593596', 'mp-1592749', 'mp-1686774', 'mp-1792313']```と複数のidが表示されました。これらの材料を検索すると全て以下のようにmp-22862が表示されました。このことから取得した材料（今回であればNaCl）に結びつくMaterials Projectのid（材料？）といった感じでしょうか。

![taskid.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1057114/ddf3359f-8640-4691-5bf3-cac14d8b84a9.png)


<br />
<br />

**band_gap** (ELECTRONIC STRUCTURE)
> The calculated band gap

バンドギャップ。結晶のバンド構造において電子が存在できない領域。単位はeV。
<br />
<br />

**density** (BASIC PROPERTIES)
> Final relaxed density of the material

密度。単位はg/cm<sup>3</sup>。
<br />
<br />

**icsd_id** (BASIC PROPERTIES)
> The Inorganic Crystal Structure Database id for the initial structure, if any.

[ICSD (無機結晶構造データベース)](https://www.jaici.or.jp/wcas/wcas_icsd2.htm) でのid。
<br />
<br />

**icsd_ids** (BASIC PROPERTIES)
> List of Inorganic Crystal Structure Database (ICSD) ids for structures that have been deemed to be structurally similar to this material based on pymatgen's StructureMatcher algorithm, if any.

pymatgenのアルゴリズムにて構造的に似ているとみなされた構造のICSDのidのリスト。
<br />
<br />

**cif** (BASIC PROPERTIES)
> A string containing the structure in the CIF format.

cif(Crystallographic Information File)形式にて結晶構造の情報を含んでいる。
cifについては[こちら](https://qiita.com/oki_kosuke/items/220ad8d0b5b720dd83f0)に記事を投稿をしています。
<br />
<br />

**total_magnetization** (OTHER PROPERTIES)
> total magnetic moment of the unit cell

総磁気モーメント。
<br />
<br />

**material_id**
Materials Projectのid
<br />
<br />

**oxide_type**
酸化状態を表す。酸化(oxide)、超酸化(superoxide)、オゾン化(ozonide)、過酸化(peroxide)、水酸化(hydroxide)。
<br />
<br />

**tags**
取得した材料を表すキーワードといった感じでしょうか。NaClの場合は'Sodium chloride', 'Halite', 'High pressure experimental phase'でした。ちなみに、'Halite'は鉱物として産する塩化ナトリウム（岩塩）の意味です。

<br />
<br />

**elasticity** (MECHANICAL PROPERTIES)
> Mechanical properties in the elastic limit. Contains the full elastic tensor as well as derived properties, e.g. Poisson ratio and bulk (K) and shear (G) moduli. Consult our hierarchical documentation for the particular names of sub-keys.

弾性率。変形のしにくさを表す値。Kは体積弾性率。Gはせん断弾性率。
<br />
<br />

**piezo** (MECHANICAL PROPERTIES)
> Piezoelectric properties. Contains a tensor and derived properties. Again, consult our repository for the names of sub-keys.

圧電効果に関する特性。圧電素子の場合は性能が入っている。
<br />
<br />

**diel** (MECHANICAL PROPERTIES)
> Dielectric properties. Contains a tensor (one each for total and electronic contribution) and derived properties, e.g. dielectric constant, refractive index, and recognized potential for ferroelectricity.

誘電特性。誘電率、屈折率、強誘電性などの特性を含む。
<br />
<br />

**full_formula**
完全な化学式。"unit_cell_formula"がリスト形式であるのに対して、full_formulaは通常の化学式の形式で表されます。
<br />

## まとめ
Materials Projectで取得できるデータについて詳細に解説致しました。

### 参考
- [Materials Project](https://materialsproject.org/)
- [Materials Project Documentation](https://docs.materialsproject.org/open-apis/the-materials-api/#materials_.28calculated_materials_data.29)
- [ゼロから始めるマテリアルズ・インフォマティクス①](https://qiita.com/tukki0210/items/f46a487e5eb6a92ee84f)
- [ゼロから始めるマテリアルズ・インフォマティクス②](https://qiita.com/tukki0210/items/8b194d64e5ecb8d7c19e)
- [ICSD (無機結晶構造データベース)](https://www.jaici.or.jp/wcas/wcas_icsd2.htm)