DEV Community

Cover image for ssb-validate v0.1.0: cribado honesto de electrolitos solidos con ground truth de Materials Project
Fenix
Fenix

Posted on

ssb-validate v0.1.0: cribado honesto de electrolitos solidos con ground truth de Materials Project

ssb-validate v0.1.0: cribado honesto de electrolitos solidos con ground truth de Materials Project

Validador de coherencia para electrolitos solidos (SSE). Contrasta candidatos contra dos ground truth independientes: el convex hull de Materials Project (estabilidad) y el benchmark publico arXiv 2601.10997 (conductividad). No predice propiedades; valida que lo que tu modelo generativo propone tiene sentido antes de sintetizar.

El problema

Las baterias de estado solido prometen mas seguridad y densidad energetica, pero su cuello de botella es la baja conductividad ionica a temperatura ambiente. El descubrimiento de electrolitos solidos (SSE) ya tiene modelos generativos maduros (MLIPs, modelos de estructura), pero falta una capa de confianza reutilizable que las empresas necesitan para decidir que sintetizar.

Tres subproblemas, dificultad distinta:

  • Estabilidad termodinamica: abordable si usas el convex hull de Materials Project.
  • Conductividad ionica: predecirla de verdad (NEB/MD de barreras de migracion) es simulacion cara.
  • Interfaz Li/electrolito: el mas duro; no hay dataset publico amplio ni heurística barata conocida.

El gap real no es "no existe nada" (hay 4 competidores 0 estrella en GitHub). El gap es una herramienta mantenida que valida contra ground truth externo y declara su alcance con honestidad.

La solucion

ssb-validate es un validador de coherencia, no un predictor. Toma un candidato (estructura CIF o valores aportados por tu pipeline) y valida dos cosas contra fuentes independientes:

Qué valida Ground truth Estado
Estabilidad termodinamica Materials Project energy_above_hull (convex hull) Verificado en vivo
Coherencia de conductividad ionica Benchmark 2601.10997 (Zenodo, n=499) Oráculo GBR entrenado

Cómo funciona

Validación de estabilidad contra el convex hull de Materials Project:

ssb-validate check --material Li7La3Zr2O12
Enter fullscreen mode Exit fullscreen mode

Salida:

Formula:        Li7La3Zr2O12
Material ID:    mp-aaacbqoz
E_above_hull:  0.006846009531249031 eV/atom
E_form:        -3.1241169363888894 eV/atom
Inestable:     False
Enter fullscreen mode Exit fullscreen mode

El valor de E_above_hull para LLZO garnet se midió contra la API real de Materials Project: 0.0068 eV/átomo (prácticamente en el convex hull, estable). Eso es la base de la regla: materiales con energy_above_hull > 0.1 eV/átomo se marcan inestables.

Para conductividad, el CLI acepta el valor aportado y lo contrasta con un oráculo entrenado sobre el dataset público:

ssb-validate check --material Li10SiP2S12 \
  --conductivity-log -2.638 --poav 0.05 --a 8.57 --b 8.85 --c 12.94
Enter fullscreen mode Exit fullscreen mode

Resultados

Numeros reales, no promesas:

  • 16 tests pasando (fast + slow), CI verde en los 4 jobs (lint / test / slow / SonarCloud).
  • Oráculo de conductividad: GBR entrenado sobre el dataset 2601.10997, MAE 1.464 log(S/cm) medido en holdout. Peor que el 0.543 de los autores (ellos usan GNN/LLM + más descriptores), pero real y reproducible.
  • Estabilidad: verificada contra Materials Project real (LLZO estable).
  • Reproducibilidad: el dataset se descarga solo de Zenodo en el CI; la API key de MP se resuelve del credentials store local, nunca del repo.

Limitaciones (declaradas a propósito)

Sin transparencia esto seria otra herramienta que promete mas de lo que cumple:

  • El filtro de conductividad es un DETECTOR DE DISPARATES, no una validación fina. El umbral es 4.0 log(S/cm) (~4 órdenes de magnitud) porque el oráculo MVP es ruidoso (MAE 1.464). Detecta valores absurdos; NO certifica que un valor modestamente distinto sea correcto. Un oráculo fino requeriría el modelo GNN/LLM de los autores (fuera de este MVP).
  • Interfaz Li/electrolito: fuera de alcance. No hay dataset público ni heurística conocida. No lo prometemos.
  • No es un predictor. No genera candidatos ni calcula conductividad desde cero.

Pruébalo

python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
python -m ssb_validate.train_conductivity   # descarga dataset 2601.10997 y entrena
ssb-validate check --material Li7La3Zr2O12
Enter fullscreen mode Exit fullscreen mode

Enlaces


Licencia: AGPL-3.0-or-later — Pedro Sordo Martínez (amurlaniakea@gmail.com)

Top comments (0)