import importlib from pathlib import Path import pandas as pd import streamlit as st from mlip_arena.models import REGISTRY as MODELS from mlip_arena.tasks import REGISTRY as TASKS DATA_DIR = Path("mlip_arena/tasks/diatomics") dfs = [ pd.read_json(DATA_DIR / MODELS[model].get("family") / "homonuclear-diatomics.json") for model in MODELS ] df = pd.concat(dfs, ignore_index=True) table = pd.DataFrame( columns=[ "Model", "Element Coverage", # "No. of reversed forces", # "Energy-consistent forces", "Prediction", "NVT", "NPT", "Code", "Paper", "First Release", ] ) for model in MODELS: rows = df[df["method"] == model] metadata = MODELS.get(model, {}) new_row = { "Model": model, "Element Coverage": len(rows["name"].unique()), # "No. of reversed forces": None, # Replace with actual logic if available # "Energy-consistent forces": None, # Replace with actual logic if available "Prediction": metadata.get("prediction", None), "NVT": "✅" if metadata.get("nvt", False) else "❌", "NPT": "✅" if metadata.get("npt", False) else "❌", "Code": metadata.get("github", None) if metadata else None, "Paper": metadata.get("doi", None) if metadata else None, "First Release": metadata.get("date", None), } table = pd.concat([table, pd.DataFrame([new_row])], ignore_index=True) table.set_index("Model", inplace=True) s = table.style.background_gradient( cmap="PuRd", subset=["Element Coverage"], vmin=0, vmax=120 ) st.warning( "MLIP Arena is currently in **pre-alpha**. The results are not stable. Please interpret them with care.", icon="⚠️", ) st.info( "Contributions are welcome. For more information, visit https://github.com/atomind-ai/mlip-arena.", icon="🤗", ) st.markdown( """