Matminer

Matminerは、データ駆動材料探索を加速するオープンソースPythonライブラリである。利用しやすいデータセット、データ取得ユーティリティ、特徴量化(featurizer)のカタログを統合し、組成や構造データから機械学習用のテーブルへ最小限の定型コードで到達できるようにする。

MatDaCs ツールレビュー: Matminer

概要

Matminerは、データセット取得、特徴量エンジニアリング、pandasユーティリティを統合し、構造データから機械学習モデルまでを素早くつなぐ材料インフォマティクス向けツールキットである。本レビューでは、macOS(Apple M4 Pro)上で0.9.3を導入し、MatDaCs執筆者が初日から使えるかを確認した。

Matminerとは

MatminerはLBNLのHackingMaterialsグループにより公開されたBSD系ライセンスのPythonツールであり、表形式の材料解析を主目的とする。主な構成要素は以下である。

  • matminer.datasets: 由来情報付きのベンチマークデータセット(40+)を提供する。
  • matminer.data_retrieval: Materials Project、Citrination、MPDSなどのクライアントを提供する。
  • matminer.featurizers: 組成・構造・サイト・電子状態(DOS/バンド構造)などの記述子(70+)と、ASE/pymatgen/pandas間の変換を提供する。

Matminerはpandas DataFrameを共通言語として扱うため、scikit-learnやPyTorch系の表形式バックエンド、matplotlib/plotlyなどの可視化スタックと容易に統合できる。

主な機能

  • キュレーション重視のデータセット: getavailabledatasets()により、誘電テンソル、実験バンドギャップ、熱電輸送、金属ガラススクリーニングなどを一覧化でき、文献再現が行いやすい。
  • 合成可能なfeaturizer: 例としてStrToComposition → ElementProperty → SiteStatsFingerprintのように連結し、化学式/構造からベクトル化を定型化できる。
  • 取得ヘルパー: MaterialsProjectDataRetrievalCitrineDataRetrievalがAPI制約や正規化を支援する。
  • 引用情報: 各featurizerがcitations()を持ち、BibTeXの自動生成に役立つ。
  • 並列化: 多くのfeaturizerがn_jobsを受け取り、joblibでマルチコア実行できる。

インストール

python3 -m pip install --user matminer

pymatgen、pandas、scikit-learnなどの依存が導入され、Apple siliconでも追加コンパイルなしで導入できた。

公式ギャラリーの例

MatminerのサイトにあるExamplesでは、データ取得、特徴量化、可視化までのノートブックが整備されている。

例1 · 体積弾性率の予測

machinelearning-nb/bulkmodulus.ipynbは、弾性テンソルデータセットの読み込み、化学式→組成への変換、Magpie統計付与、可視化という流れを示す。ローカルで同様の流れを再現すると、1,181行・135特徴量のテーブルと、RandomForestRegressorによるベースライン(MAE = 14.5 GPaR^2 = 0.916)が得られた。

# matminer_bulk_modulus_demo.py
from matminer.datasets.convenience_loaders import load_elastic_tensor
from matminer.featurizers.conversions import StrToComposition
from matminer.featurizers.composition import ElementProperty
from matminer.featurizers.structure import DensityFeatures

df = load_elastic_tensor()[["formula", "structure", "K_VRH"]].dropna()
df = StrToComposition().featurize_dataframe(df, "formula")
df = ElementProperty.from_preset("magpie").featurize_dataframe(df, "composition")
df = DensityFeatures().featurize_dataframe(df, "structure")

例2 · 実験値と計算値のバンドギャップ比較

dataretrieval-nb/exptvscompbandgap.ipynbは、CitrinationとMaterials Projectから値を取得してパリティプロットを作る例である。トークンが必要な場合でも、異なるソースをpandasテーブルへ揃え、列ごとのBibTeX情報を付与し、図作成へつなぐ流れが示されている。

DScribeとの比較

  • 記述子の粒度: Matminerはグローバル/表形式の記述子に強く、DScribeは局所環境(SOAP、MBTR、ACSF)に強い。併用によりグローバル文脈と局所表現を同時に扱える。
  • データセット統合: Matminerはキュレート済みデータセットとAPI取得が強みであり、DScribeは構造が既にあることを前提に軽量に設計されている。
  • 性能面: DScribeは3D環境記述子をC++で最適化している。Matminerはpandas処理がボトルネックになりやすい。目的に応じて選択する。

適用領域

  • MLパイプラインの迅速なベンチマーク(MatBench等)。
  • 自動合成/設計キャンペーン向けの特徴量スクリーニング。
  • 材料インフォマティクス教育(データセットとfeaturizerによる再現可能な演習)。
  • DScribeやGNNに入力する前処理層。

所感

  • macOSのLibreSSL由来でNotOpenSSLWarningが出る場合があるが、機能に大きな影響はない。
  • StrToCompositionElementPropertyは進捗表示があり、大規模データで便利である。
  • サブプロセスを起動するfeaturizerでは、macOSではfork設定や.py実行が安定する場合がある。
  • 既定でimpute_nan=Falseのため、欠損が出る場合は補完を検討すべきである。

まとめ

Matminerは、キュレート済みデータセットと特徴量パイプラインを一体で提供する、MatDaCs執筆者にとって信頼できる基盤である。グローバル記述子に加え、局所環境が必要な場合はDScribeと併用することで、より広い比較が可能になる。

参考

  • Matminer documentation: <https://hackingmaterials.lbl.gov/matminer>
  • Matminer examples gallery: <https://hackingmaterials.lbl.gov/matminer/index.html#examples>
  • Matminer GitHub repository: <https://github.com/hackingmaterials/matminer>
  • Ward et al., Comput. Mater. Sci. 152, 60–69 (2018)
  • Official notebook – bulk modulus regression: <https://nbviewer.jupyter.org/github/hackingmaterials/matminerexamples/blob/main/matminerexamples/machinelearning-nb/bulkmodulus.ipynb>
  • Official notebook – experimental vs. computed band gap: <https://nbviewer.jupyter.org/github/hackingmaterials/matminerexamples/blob/main/matminerexamples/dataretrieval-nb/exptvscompbandgap.ipynb>