Materials Projectのmaterial_idとtask_id

Materials Project に登録されているデータはmaterial_id(mp-****みたいなやつ)で指定される。だが、2018年の半ばからmaterial_idが一部の結晶では変更されたようなので注意が必要。

それぞれの計算系にはmaterial_idが振られている。そして各計算系には(single-shotとか構造緩和とかの)複数の計算条件(task_id)が対応している。material_idtask_idの中で一番精度の高い構造緩和に対応するものが選ばれる(らしい)。で、2018年にデータベースがアップデートされて、それに伴って一部のmaterial_idが以前とは違うtask_idを指すようになった。

例えばCs2CrH2Cl5O(material_id=mp-542535)は以前はmp-633688がmaterial_idとして使われていた。Materials ExplorerでみるときはどちらのIDを使っても同じページにリダイレクトされるので問題ないが、古い方のIDしか知らないときにAPIを叩きたい時は以下のようにする必要がある。

m = MPRester()
material_id_old = 'mp-633688'

material_id_new = m.get_materials_id_from_task_id(material_id_old)  # -> 'mp-542535'

# get property
formation_energy_per_atom = m.get_data(material_id_new, prop='energy_per_atom')
# get structure
structure = m.get_structure_by_material_id(material_id_new)

参考