Optimade for MP only has limited properties: formation energies, energy above the hull

Hello Materials Project developer and community!

Will MP plan to increase the amount of structure properties given by the Optimade endpoint on MP in the future?

Pulling a structure from the Optimade endpoint:
https://optimade.materialsproject.org/v1/structures?page_limit=1

Leads to the following results:

"_mp_chemical_system": "Ga-Mg-O",
        "_mp_stability": {
          "gga_gga+u_r2scan": {
            "thermo_id": "mp-35712_GGA_GGA+U_R2SCAN",
            "energy_above_hull": 0.003970400952375108,
            "formation_energy_per_atom": -2.526637671190476,
            "last_updated_thermo": "2023-04-27T01:44:28.078000"
          },
          "gga_gga+u": {
            "thermo_id": "mp-35712_GGA_GGA+U",
            "energy_above_hull": 0.003970400952377773,
            "formation_energy_per_atom": -2.5341362440476196,
            "last_updated_thermo": "2023-04-27T01:44:32.784000"
          }
        }

While the MP page for the same material (https://next-gen.materialsproject.org/materials/mp-35712) has bandgap, magnetization, experimentally observed information, electronic structure info, and I’m assuming if there is a MPTrj entry point we might have forces, magnetic moment, and perhaps even stress tensor?

Will MP plan on integrating these properties in their Optimade endpoint in future?

Thanks all!!

Martin

Hi @Martin_Siron1, thanks for reaching out. There are currently no plans to add more data to our Optimade API or to keep it in sync with upcoming data releases. We recommend using our main API in general. Is anything keeping you from using the MP API?

Hi @tschaume, nothing per say, just curious if this standard would be adopted in the future! Its easier to get a list of all MP IDs existing in the database from Optimade endpoint, I have not found a way to do this via MP API rather than prong iteratively.

@Martin_Siron1 the following snippet would give you a list of all MP IDs in the database. Is that what you’re looking for?

from mp_api.client import MPRester
mpr = MPRester(monty_decode=False, use_document_model=False)
mp_ids = [
    doc["material_id"] for doc in mpr.materials.summary.search(
        num_elements=(1,9), fields=["material_id"]
    )
]

Note that including a query on the full range of possible num_elements is actually much faster in this case (18s vs 2.5min) than running the search without any query since material_id field is the only field included in the response. Searches without queries are re-routed by the client to direct full file downloads from a different source and are designed to allow retrieval of the full summary collection in a few minutes. HTH