Materials Projectのmaterial_idとtask_id
Materials Project に登録されているデータはmaterial_id(mp-****みたいなやつ)で指定される。だが、2018年の半ばからmaterial_idが一部の結晶では変更されたようなので注意が必要。
それぞれの計算系にはmaterial_id
が振られている。そして各計算系には(single-shotとか構造緩和とかの)複数の計算条件(task_id
)が対応している。material_id
はtask_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)
参考
- https://matsci.org/t/significant-release-of-new-database-schema-and-additional-data/1259/7
- https://matsci.org/t/change-in-materials-project-ids/1268/2
- https://matsci.org/t/merge-of-material-id/1631/2
- https://matsci.org/t/some-entries-seem-not-to-be-queryable/1279/2
- https://pymatgen.org/pymatgen.ext.matproj.html