matminer: a featurizer and dataset layer for materials informatics
Data mining for materials science
At a glance
- What is it?
- matminer is a Python library that turns crystal structures and compositions into numeric descriptors and pulls community datasets through one interface. Its value is breadth and citation hygiene, not speed, and the licence is not identified in the repository metadata.
- Who is it for?
- Adopt matminer if your pipeline needs many composition and structure descriptors behind a single API, and if you are willing to pin a version and carry the dependency weight that comes with it. Do not adopt it as a modelling framework or as a substitute for automatminer, which is a separate package in the same organisation.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The gap matminer fills between a crystal structure and a feature matrix
A structure file describes atoms, lattice vectors and symmetry. A machine learning estimator wants a fixed-length vector of numbers. The distance between those two representations is where most materials informatics projects lose time, because every group writes its own descriptor code, and the definitions drift between papers. matminer occupies that gap. The README describes it as a library for performing data mining in the field of materials science, and the surrounding material shows two distinct jobs bundled together: converting materials objects into descriptors, and retrieving community datasets through a common interface. The intended user is a researcher or engineer who already has structures or compositions in a Python workflow and needs numerical inputs for a model. It is not aimed at someone who wants a pretrained predictor, and it is not a replacement for a framework such as automatminer, which the README lists as a related package rather than part of this one.
Featurizers, dataset retrieval and the citations() contract
The architecture visible in the README is organised around two object families. Featurizers take a materials object and return descriptors; data retrieval classes fetch datasets. Both families expose a citations() method. For featurizers, the README states that every featurizer has this function; for retrieval classes, the method returns a list of BibTeX-formatted citations. That is a deliberate design decision, and it is the most interesting thing about the package. Descriptor definitions in this field come from individual papers, and a library that ships the descriptor without shipping the reference makes correct attribution harder. matminer pushes the reference into the API surface, so a user can programmatically collect the bibliography for whatever they actually ran. The README also points users to dataset metadata for the original dataset citations, which implies the retrieval layer is a wrapper over sources maintained elsewhere rather than a single curated store. The repository's primary language is reported as HTML, which is consistent with a project whose documentation site and notebooks make up a large share of the tree; the library itself is Python, and the README states support for Python 3.11 and above.
Installing matminer and the version floor you have to respect
The README gives the Python requirement directly: matminer supports Python 3.11+. There is no pip command, conda command or environment file quoted in the supplied material, so the installation invocation is not something I can reproduce here without guessing. What can be confirmed is the release cadence: v0.10.0 and its release candidate landed on 2026-01-22, and v0.10.1 followed on 2026-04-14, with the default branch receiving commits as recently as 2026-09-07. That pattern matters for pinning. A project that ships point releases within a few months of each other will occasionally change descriptor behaviour, and a materials model trained on a feature matrix is sensitive to exactly that. Pin the version in your environment file and record it alongside any published result. The README also directs users to a separate examples repository and a support forum at matsci.org, which is where usage questions are meant to go rather than the issue tracker.
Where matminer is the wrong tool
The README's own framing is a limitation. It says matminer helps users apply methods and data sets developed by the community, and asks users to cite the original sources in addition to matminer itself. That is honest, and it also means the package is a conduit. If a dataset you need is not wrapped by a retrieval class, matminer does not help you get it. If a descriptor you need is not implemented as a featurizer, you are writing it yourself, and the citations() machinery does nothing for you. The second limitation is scope. Nothing in the supplied material describes model training, cross-validation, hyperparameter search or error estimation. A reader who picks up matminer expecting an end-to-end materials machine learning toolkit will be disappointed; the README points to automatminer for that adjacent role. The third is the licence. Repository metadata reports NOASSERTION, meaning no standard licence identifier was detected. That is not the same as having no licence, but it does mean you cannot determine your obligations from the metadata alone, and for a library that may end up inside a commercial materials pipeline that is a real blocker until someone reads the actual licence file.
automatminer and matbench sit in different layers
The README names two related packages, and the distinction is worth stating precisely because the names invite confusion. automatminer is described as something to try if you like matminer, which places it a level up: it assumes the featurization problem is already solved by a library like this one and handles the modelling workflow around it. matbench is described as being for people interested in furthering development of datasets in matminer, which places it at the data layer, focused on benchmark datasets rather than on descriptor generation. So the three packages are not competing implementations of the same thing. If your problem is that you have structures and no features, matminer is the relevant layer. If your problem is that you have features and no repeatable model selection procedure, automatminer is. Choosing between them is not a matter of preference; it depends on which end of the pipeline is missing. The README also notes that figrecipes, previously part of this ecosystem, now lives in its own repository, which is a reminder that the surrounding package set has been reorganised before and may be again.
Maintenance cost and the citation obligation in practice
Two ongoing costs are visible in the material. The first is version tracking. Releases v0.10.0 and v0.10.1 are close together, and the default branch is active, so a long-lived project should expect to re-validate feature matrices when upgrading rather than assuming numeric stability. The second is attribution. The README asks users to cite the 2018 Computational Materials Science paper for matminer itself, and separately to cite the original sources behind any dataset or featurizer used. Because citations() exists on both featurizers and retrieval classes, this is at least automatable: the README explicitly frames the method as a way to keep track of and cite the original publications. Teams that treat bibliography collection as an afterthought will find that obligation arrives at submission time, when it is most expensive to reconstruct. On licensing, the only defensible statement is that the repository metadata does not report a recognised licence identifier, so the terms must be read from the repository itself before matminer is bundled into anything distributed.
Editorial conclusion
Adopt matminer if your pipeline needs many composition and structure descriptors behind a single API, and if you are willing to pin a version and carry the dependency weight that comes with it. Do not adopt it as a modelling framework or as a substitute for automatminer, which is a separate package in the same organisation. Before committing, verify three things: the licence terms, since the repository metadata reports NOASSERTION; the Python version floor against your own environment, since the README states 3.11+; and whether the specific featurizers you plan to use expose citations() output you can carry into publication.
Community notes