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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.