Blog

Original, educational, and honest writing on materials informatics, AI for materials discovery, and scientific data quality. When fixing a bug lowers a model's score, the lower number gets published.

Materials Project API: common mp-api errors and fixes

Fixes for the errors people hit on the Materials Project API: 403s, API keys, legacy vs new mp-api client, material_ids, and get_dos_by_material_id.

27 Jul 2026

Materials informatics: a practical guide

What materials informatics is, how it turns data into material property predictions, the tools and databases behind it, and where it quietly breaks.

25 Jul 2026

AI for materials: how it actually works

AI for materials discovery, explained: property prediction, generative design, and machine-learning potentials, plus the honest limits of each.

24 Jul 2026

Materials data engineering, explained

Why materials data is messy, and how data engineering (pipelines, dbt, testing, orchestration) turns scattered scientific data into something you can model.

23 Jul 2026

Scientific data quality: why it decides your model

Scientific data is less trustworthy than the models built on it assume. Why quality, leakage, and provenance decide your result, and how to check them.

22 Jul 2026

Graph neural networks for materials, explained

Composition-based models cannot tell polymorphs apart. A graph neural network that reads crystal structure finally can. How GNNs work for materials.

20 Jul 2026

Physics-informed neural networks, explained

A network recovered a full cooling curve from six noisy points, refused to predict the impossible, and read a physical constant from the data. How PINNs work.

20 Jul 2026

Six ways to put physics into machine learning

Ordinary machine learning learns only from data. Scientific ML also respects physics. Here are the six places to inject it, one use case each.

20 Jul 2026

ML on the Materials Project, part 7: knowing what you don't know

A Gaussian Process predicts a value and an honest error bar. We audited whether the bars can be trusted, and found the model measured its own noise floor.

13 Jul 2026

ML on the Materials Project, part 8: opening the box

The series finale: which features does the model actually use, and did it learn real chemistry? Yes, worn as a proxy nobody expected.

13 Jul 2026

ML on the Materials Project, part 5: the map of chemical space

Unsupervised learning turns 26,566 materials into a 2D map with no labels, finds groups nobody defined, and shows why data's folds rarely match your question.

12 Jul 2026

ML on the Materials Project, part 6: the statistical auditor

An Isolation Forest given zero rules flags the dataset's strangest entries on geometry alone, including a formation energy twenty times past any sane threshold.

12 Jul 2026

ML on the Materials Project, part 3: is it even a metal?

Same features, a different question. Classification exposes the accuracy trap live, and asks why metallicity is hard to predict from composition.

11 Jul 2026

ML on the Materials Project, part 4: were we lying to ourselves?

Grouped cross-validation measures how much a model's score was flattered by polymorph twins leaking between train and test. The answer: thirty percent.

11 Jul 2026

ML on the Materials Project, part 2: trees, and overfitting caught

Same data, one change of model, and R2 jumps from 0.095 to 0.637. Plus the train-versus-test gap that shows memorization as a number.

10 Jul 2026

ML on the Materials Project, part 1: the honest floor

Fetching 26,568 real oxides, turning formulas into numbers a model can learn from, and why a first score of R2 = 0.095 is a good start.

09 Jul 2026

Materials Project API tutorial: mp-api, keys, Python

A beginner Materials Project API tutorial: get your API key, install mp-api, run your first Python request, and dodge the Cloudflare 403 gotcha.

08 Jul 2026

How to audit a materials database entry: a six-check list

A practical checklist for deciding whether a value from the Materials Project deserves your trust, with the reasoning behind each check.

07 Jul 2026

Properties belong to structures, not formulas

Diamond and graphite share a formula and agree on almost nothing else. Why polymorphism breaks naive materials data, and how to handle it.

06 Jul 2026

Automatic tests for scientific data: a dbt primer

How to attach rules to a materials dataset, no negative band gaps, one entry per polymorph, that run on every refresh and fail loudly.

04 Jul 2026

The data engineering stack, translated for materials science

What ETL, SQL, dbt, Airflow, Kafka and Spark actually do, each explained with a concrete materials use case, and the two worth learning first.

02 Jul 2026

Why AI-predicted materials rarely get made

Models have predicted millions of new materials, yet only hundreds exist. Understanding the gap between a predicted structure and a real one.

30 Jun 2026