LoginSignup
25
34

More than 3 years have passed since last update.

ゼロから始めるマテリアルズ・インフォマティクス①

Last updated at Posted at 2019-09-30

はじめに

仕事で材料開発の研究を行うことになり、それなら機械学習を取り入れた材料開発であるマテリアルズ・インフォマティクスに取り組みたいと思いました。2019年の現在、機械学習に関する記事や書籍は大量に世の中に出回っていますが、マテリアルズ・インフォマティクスに関するものはまだまだ少ないです。折角なので、自分がこの技術に取り組む過程を記事にしていきたいと思います。

参考
Quita:機械学習でなんとなく材料研究者の気分を味わおう
書籍 :マテリアルズ・インフォマティクス-材料開発のための機械学習超入門

マテリアルズ・インフォマティクスの目的

そもそもマテリアルズ・インフォマティクスの目的ですが、端的に言うと「ラクしてスゴイ材料を作りたい!!」だと思います。笑
新しい材料を開発したい場合、先行論文やこれまでの経験、時には勘を頼りに合成に使う素材を決め、何時間もかかる実験を行い、失敗すればまた1からという過程を繰り返すのが普通ですが、これを機械学習によって成功する可能性の高い素材を予測したり、実験結果を早い段階で予測することで実験全体でかかる時間を短縮することが目的になります。

まずはデータ集めから

機械学習には何よりデータが必要です。マテリアルズ・インフォマティクスで利用するデータは、主に下記の二種類になります。
・実験による測定データ
・計算による解析データ

実験による測定データを用いる場合、それらが研究室に十分に蓄積されていれば良いのですが、機械学習を行うのに十分な量のデータを自前で揃えるのはなかなか大変なのが現状のようです。
計算による解析データというのは、第一原理計算という量子力学のシュレーディンガー方程式に則って、物質の電子の運動をコンピューターの力を借りて計算し、計算結果から物質の性質を求めたものです。第一原理計算によって、実際に合成しなくても理論上は物質の性質がわかります。ただしめちゃくちゃ複雑で大きな計算コストが必要になります。

オープンなデータベースを利用しよう

そもそもマテリアルズ・インフォマティクスの始まりは、2011年に米国のオバマ大統領によって開始されたMaterials Genome Initiative(MGI)と言われています。それ以降、世界中で同様のプロジェクトが立ち上がり始め、多くのオープンな材料データベースが整備されてきました。それらは発表された論文から地道にデータを取得している場合もあれば、第一原理計算によって片っ端からデータを揃えている場合もあります。日本では国立研究開発法人_物質・材料研究機構(NIMS)のMatNaviがありますが、今回はアメリカのカリフォルニア大学を中心に整備を進めているデータベースであるMaterials Projectを利用していきます。

Materials Projectからデータを取得する

必要なもの
・python3.X
・Pandas
・pymatgen
・Materials ProjectのAPI

pymatgenは材料データを扱うのに便利なモジュールです。Materials Projectからデータを取得することもできます。
Materials ProjectのAPIは公式サイトからユーザー登録することで取得可能です。

まず、指定した元素の中から二種類を選ぶ組み合わせの化合物のデータを取得していきます。

getElements.py

from pymatgen import MPRester
import itertools
import pandas as pd

API_KEY = 'Your API' # Materials Project の API をここに入れる

#とりあえず第二周期まで。希ガスは省略
symbols = ["H", "Li", "Be", "B", "C", "N", "O", "F"]

#8種の元素から二種を選ぶ組み合わせ C(8,2)=28組み
Comb_2 = itertools.combinations(symbols, 2) 

with MPRester(API_KEY) as m:

    df_COM = pd.DataFrame()

    for elements in Comb_2:

        compound = m.get_data(elements[0]+'-'+elements[1] , data_type='vasp')
        df_com = pd.DataFrame(compound)           
        df_COM = df_COM.append(df_com)

#結果を保存
df_COM.to_csv('compound_2.csv')

df_COMの要素数を調べると

df_COM.shape
>>(302, 28)

10種の元素から2個を選ぶ組み合わせから、302個の化合物の28項目に関するデータが取得できたようです。
300個もあるのは、一酸化炭素COと二酸化炭素CO2のような元素が同じで組成比が異なる化合物が大量にあるからですね。

次回は取得したデータの中身を読み解いていこうと思います。

25
34
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
25
34