Deploy MEIDNet Studio
Browse filesThis view is limited to 50 files because it contains too many changes. ย See raw diff
- README.md +7 -1
- meidnet/studio/landing.html +15 -9
- meidnet/studio/studio.html +7 -7
- site/404.html +3 -3
- site/assets/extra.css +4 -12
- site/assets/learn.js +38 -27
- site/benchmarks/carbon24.html +3 -3
- site/benchmarks/index.html +3 -3
- site/benchmarks/mp20.html +3 -3
- site/benchmarks/perov5.html +4 -4
- site/benchmarks/results/paper-inverse-design.html +3 -3
- site/benchmarks/results/paper-representation.html +3 -3
- site/benchmarks/results/paper-results-mace-screen.html +3 -3
- site/benchmarks/results/shipped-checkpoint-train-split.html +3 -3
- site/benchmarks/results/shipped-checkpoint-val-split.html +3 -3
- site/community/contribute.html +11 -11
- site/community/index.html +3 -3
- site/examples/double-perovskite.html +3 -3
- site/examples/perov5.html +3 -3
- site/explore/capabilities.html +10 -10
- site/explore/databases.html +3 -3
- site/explore/datasets.html +21 -23
- site/index.html +23 -17
- site/learn/architectures.html +30 -27
- site/learn/index.html +31 -24
- site/learn/recipes.html +52 -34
- site/recipes/add-constraint.html +3 -3
- site/recipes/add-property.html +3 -3
- site/recipes/change-family.html +3 -3
- site/recipes/change-targets.html +3 -3
- site/recipes/elements.html +3 -3
- site/recipes/screen.html +3 -3
- site/reference/api.html +3 -3
- site/reference/cli.html +3 -3
- site/reference/config.html +3 -3
- site/reference/families.html +3 -3
- site/reference/rules.html +3 -3
- site/research/paper.html +12 -3
- site/search/search_index.json +0 -0
- site/start/colab.html +3 -3
- site/start/quickstart.html +8 -8
- site/start/what-data.html +4 -4
- site/studio.html +7 -7
- site/understand/how-it-works.html +3 -3
- site/understand/interpretability.html +13 -13
- site/understand/limits.html +13 -13
- site/use/config.html +3 -3
- site/use/explore-3d.html +3 -3
- site/use/reports.html +3 -3
- site/use/studio.html +7 -7
README.md
CHANGED
|
@@ -31,7 +31,7 @@ with the properties you want. Six connected layers:
|
|
| 31 |
one for your data; [recipes by problem](https://babu09-meidnet.hf.space/docs/learn/recipes.html).
|
| 32 |
* **[Build: Studio](https://babu09-meidnet.hf.space/studio/)** โ the live workbench: seven colour-coded blocks
|
| 33 |
*Data โ Model โ Family โ Rules โ Targets โ Search โ Candidates*. Change a rule, exclude an element or
|
| 34 |
-
move a target and
|
| 35 |
JSON + CIFs), train a model in the browser, run the search, inspect every candidate in 3D, export the
|
| 36 |
`meidnet.yaml` that reproduces it on your machine.
|
| 37 |
* **[Datasets](https://babu09-meidnet.hf.space/docs/explore/datasets.html)** โ datasets that work with
|
|
@@ -47,6 +47,12 @@ with the properties you want. Six connected layers:
|
|
| 47 |
**Paper:** A. Babu, R. A. Gouvรชa, P. Vandergheynst, G.-M. Rignanese, *npj Computational Materials* (2026),
|
| 48 |
[doi:10.1038/s41524-026-02153-3](https://doi.org/10.1038/s41524-026-02153-3).
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
This public Space is shared: uploads are capped (8 MB, 1,500 rows, 30 epochs), one training at a time,
|
| 51 |
sessions are private per browser tab and removed after an hour. Predicted properties are the model's
|
| 52 |
estimates โ confirm candidates by DFT or experiment.
|
|
|
|
| 31 |
one for your data; [recipes by problem](https://babu09-meidnet.hf.space/docs/learn/recipes.html).
|
| 32 |
* **[Build: Studio](https://babu09-meidnet.hf.space/studio/)** โ the live workbench: seven colour-coded blocks
|
| 33 |
*Data โ Model โ Family โ Rules โ Targets โ Search โ Candidates*. Change a rule, exclude an element or
|
| 34 |
+
move a target and see the effect on the later blocks. Bring your own table (CSV / Excel /
|
| 35 |
JSON + CIFs), train a model in the browser, run the search, inspect every candidate in 3D, export the
|
| 36 |
`meidnet.yaml` that reproduces it on your machine.
|
| 37 |
* **[Datasets](https://babu09-meidnet.hf.space/docs/explore/datasets.html)** โ datasets that work with
|
|
|
|
| 47 |
**Paper:** A. Babu, R. A. Gouvรชa, P. Vandergheynst, G.-M. Rignanese, *npj Computational Materials* (2026),
|
| 48 |
[doi:10.1038/s41524-026-02153-3](https://doi.org/10.1038/s41524-026-02153-3).
|
| 49 |
|
| 50 |
+
**Further reading:** A. Babu, N. M. A. Krishnan, *Multimodal and cross-modal learning techniques*, APL Machine
|
| 51 |
+
Learning 4, 030901 (2026), [doi:10.1063/5.0346744](https://doi.org/10.1063/5.0346744) ยท A. Babu,
|
| 52 |
+
R. Almeida Gouvรชa, G.-M. Rignanese, *Toward automated discovery with generative models multimodal learning and
|
| 53 |
+
closed loop workflows in inverse materials design*, Cell Reports Physical Science 7, 103561 (2026),
|
| 54 |
+
[doi:10.1016/j.xcrp.2026.103561](https://doi.org/10.1016/j.xcrp.2026.103561).
|
| 55 |
+
|
| 56 |
This public Space is shared: uploads are capped (8 MB, 1,500 rows, 30 epochs), one training at a time,
|
| 57 |
sessions are private per browser tab and removed after an hour. Predicted properties are the model's
|
| 58 |
estimates โ confirm candidates by DFT or experiment.
|
meidnet/studio/landing.html
CHANGED
|
@@ -63,6 +63,7 @@ h2.sec{font-size:24px;margin:0 0 6px}.sec-sub{color:var(--muted);margin:0 0 14px
|
|
| 63 |
.how small{display:block;font-weight:500;opacity:.9;font-size:12px}
|
| 64 |
.cite{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin:0 0 28px}
|
| 65 |
.cite pre{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;overflow:auto;font-size:13px;margin:10px 0 0}
|
|
|
|
| 66 |
.cite button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:6px 12px;cursor:pointer}
|
| 67 |
footer{color:var(--faint);font-size:13.5px;padding:10px 0 40px;display:flex;gap:16px;flex-wrap:wrap}
|
| 68 |
.theme{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:5px 9px;cursor:pointer}
|
|
@@ -85,7 +86,7 @@ footer{color:var(--faint);font-size:13.5px;padding:10px 0 40px;display:flex;gap:
|
|
| 85 |
<div>
|
| 86 |
<p class="eyebrow">MEIDNet Prism</p>
|
| 87 |
<h1>Learn, build and benchmark <span class="prism">multimodal AI</span> for materials discovery</h1>
|
| 88 |
-
<p class="tag">From
|
| 89 |
<div class="btns"><a class="btn primary" href="/studio/">โถ Try MEIDNet</a><a class="btn" href="/studio/?panel=data">Use your dataset</a><a class="btn" href="/docs/learn/index.html">Learn multimodality</a></div>
|
| 90 |
<p class="pub"><b>Published in npj Computational Materials (2026)</b> ยท <a href="https://doi.org/10.1038/s41524-026-02153-3">doi 10.1038/s41524-026-02153-3</a> ยท <a href="https://github.com/ABnano/MEIDNet">GitHub</a> ยท MIT licence</p>
|
| 91 |
</div>
|
|
@@ -104,7 +105,7 @@ footer{color:var(--faint);font-size:13.5px;padding:10px 0 40px;display:flex;gap:
|
|
| 104 |
</figure>
|
| 105 |
|
| 106 |
<h2 class="sec">Six connected layers</h2>
|
| 107 |
-
<p class="sec-sub">
|
| 108 |
<div class="flow" aria-label="The six layers in order">
|
| 109 |
<a href="/docs/learn/index.html" style="--accent:var(--c-data)">Learn</a><span>โ</span>
|
| 110 |
<a href="/docs/learn/architectures.html" style="--accent:var(--c-model)">Architectures</a><span>โ</span>
|
|
@@ -118,18 +119,18 @@ footer{color:var(--faint);font-size:13.5px;padding:10px 0 40px;display:flex;gap:
|
|
| 118 |
<p><a class="more" href="/docs/learn/index.html">Learn multimodality โ</a></p></div>
|
| 119 |
<div class="card" style="--accent:var(--c-model)"><h2><small>2 ยท Architectures</small>Which design fits my data?</h2><p>Early and late fusion, shared latent spaces, cross-attention and contrastive learning, drawn side by side, with an advisor that recommends one.</p>
|
| 120 |
<p><a class="more" href="/docs/learn/architectures.html">Architecture Atlas โ</a> <a class="more" href="/docs/learn/architectures.html#advisor">Advisor โ</a></p></div>
|
| 121 |
-
<div class="card" style="--accent:var(--c-family)"><h2><small>3 ยท Build</small>MEIDNet Studio</h2><p>Upload structures and properties, train in the browser, set targets and rules, run the search and inspect every candidate in 3D.
|
| 122 |
<p><a class="more" href="/studio/">Try MEIDNet โ</a> <a class="more" href="/docs/learn/recipes.html">Recipes by problem โ</a></p></div>
|
| 123 |
-
<div class="card" style="--accent:var(--c-rules)"><h2><small>4 ยท Datasets</small>
|
| 124 |
<p><a class="more" href="/docs/explore/datasets.html">Datasets โ</a> <a class="more" href="/docs/explore/databases.html">Databases โ</a></p></div>
|
| 125 |
-
<div class="card" style="--accent:var(--c-targets)"><h2><small>5 ยท Benchmarks</small>
|
| 126 |
<p><a class="more" href="/docs/benchmarks/index.html">Benchmarks โ</a></p></div>
|
| 127 |
-
<div class="card" style="--accent:var(--c-candidates)"><h2><small>6 ยท Community</small>
|
| 128 |
<p><a class="more" href="/docs/community/contribute.html">Contribute a result โ</a></p></div>
|
| 129 |
</section>
|
| 130 |
|
| 131 |
-
<h2 class="sec">
|
| 132 |
-
<p class="sec-sub">
|
| 133 |
<div class="how" aria-label="The seven blocks of the Studio">
|
| 134 |
<div style="--bc:var(--c-data)">Data<small>your materials</small></div><div style="--bc:var(--c-model)">Model<small>shared space</small></div>
|
| 135 |
<div style="--bc:var(--c-family)">Family<small>crystal type</small></div><div style="--bc:var(--c-rules)">Rules<small>chemistry</small></div>
|
|
@@ -153,8 +154,13 @@ footer{color:var(--faint);font-size:13.5px;padding:10px 0 40px;display:flex;gap:
|
|
| 153 |
year = {2026},
|
| 154 |
doi = {10.1038/s41524-026-02153-3}
|
| 155 |
}</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
</section>
|
| 157 |
-
<footer><span>MEIDNet Prism: learn, build and benchmark multimodal AI for materials discovery. MEIDNet is its reference implementation.</span><a href="https://github.com/ABnano/MEIDNet">Code</a><a href="/docs/">Documentation</a><a href="/docs/understand/limits.html">
|
| 158 |
</main>
|
| 159 |
<script>
|
| 160 |
(function(){
|
|
|
|
| 63 |
.how small{display:block;font-weight:500;opacity:.9;font-size:12px}
|
| 64 |
.cite{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin:0 0 28px}
|
| 65 |
.cite pre{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;overflow:auto;font-size:13px;margin:10px 0 0}
|
| 66 |
+
.reading{margin:0;padding-left:18px;color:var(--muted);font-size:14.5px}.reading li{margin:4px 0}
|
| 67 |
.cite button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:6px 12px;cursor:pointer}
|
| 68 |
footer{color:var(--faint);font-size:13.5px;padding:10px 0 40px;display:flex;gap:16px;flex-wrap:wrap}
|
| 69 |
.theme{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:5px 9px;cursor:pointer}
|
|
|
|
| 86 |
<div>
|
| 87 |
<p class="eyebrow">MEIDNet Prism</p>
|
| 88 |
<h1>Learn, build and benchmark <span class="prism">multimodal AI</span> for materials discovery</h1>
|
| 89 |
+
<p class="tag">From the concepts of multimodal learning to a trained model and reproducible results. MEIDNet, the reference implementation, learns one space shared by crystal structures and their properties, and searches it for materials with target properties.</p>
|
| 90 |
<div class="btns"><a class="btn primary" href="/studio/">โถ Try MEIDNet</a><a class="btn" href="/studio/?panel=data">Use your dataset</a><a class="btn" href="/docs/learn/index.html">Learn multimodality</a></div>
|
| 91 |
<p class="pub"><b>Published in npj Computational Materials (2026)</b> ยท <a href="https://doi.org/10.1038/s41524-026-02153-3">doi 10.1038/s41524-026-02153-3</a> ยท <a href="https://github.com/ABnano/MEIDNet">GitHub</a> ยท MIT licence</p>
|
| 92 |
</div>
|
|
|
|
| 105 |
</figure>
|
| 106 |
|
| 107 |
<h2 class="sec">Six connected layers</h2>
|
| 108 |
+
<p class="sec-sub">From concepts to reproducible results: the methods, the choice of architecture, a model trained on your data, and results compared on shared benchmarks.</p>
|
| 109 |
<div class="flow" aria-label="The six layers in order">
|
| 110 |
<a href="/docs/learn/index.html" style="--accent:var(--c-data)">Learn</a><span>โ</span>
|
| 111 |
<a href="/docs/learn/architectures.html" style="--accent:var(--c-model)">Architectures</a><span>โ</span>
|
|
|
|
| 119 |
<p><a class="more" href="/docs/learn/index.html">Learn multimodality โ</a></p></div>
|
| 120 |
<div class="card" style="--accent:var(--c-model)"><h2><small>2 ยท Architectures</small>Which design fits my data?</h2><p>Early and late fusion, shared latent spaces, cross-attention and contrastive learning, drawn side by side, with an advisor that recommends one.</p>
|
| 121 |
<p><a class="more" href="/docs/learn/architectures.html">Architecture Atlas โ</a> <a class="more" href="/docs/learn/architectures.html#advisor">Advisor โ</a></p></div>
|
| 122 |
+
<div class="card" style="--accent:var(--c-family)"><h2><small>3 ยท Build</small>MEIDNet Studio</h2><p>Upload structures and properties, train in the browser, set targets and rules, run the search and inspect every candidate in 3D. Every setting is saved in one YAML file.</p>
|
| 123 |
<p><a class="more" href="/studio/">Try MEIDNet โ</a> <a class="more" href="/docs/learn/recipes.html">Recipes by problem โ</a></p></div>
|
| 124 |
+
<div class="card" style="--accent:var(--c-rules)"><h2><small>4 ยท Datasets</small>Datasets and databases</h2><p>Perov-5, the published multimodal benchmark, other datasets used with MEIDNet, and 31 computed and experimental databases grouped by application.</p>
|
| 125 |
<p><a class="more" href="/docs/explore/datasets.html">Datasets โ</a> <a class="more" href="/docs/explore/databases.html">Databases โ</a></p></div>
|
| 126 |
+
<div class="card" style="--accent:var(--c-targets)"><h2><small>5 ยท Benchmarks</small>Reproducible results</h2><p>One leaderboard per dataset, an evidence ladder from โgeneratedโ to โexperimentally validatedโ, and rows re-run here marked verified.</p>
|
| 127 |
<p><a class="more" href="/docs/benchmarks/index.html">Benchmarks โ</a></p></div>
|
| 128 |
+
<div class="card" style="--accent:var(--c-candidates)"><h2><small>6 ยท Community</small>Contribute results</h2><p>Results are submitted through GitHub, re-run by the maintainer and marked as verified when they reproduce. Re-runs that disagree are published as well.</p>
|
| 129 |
<p><a class="more" href="/docs/community/contribute.html">Contribute a result โ</a></p></div>
|
| 130 |
</section>
|
| 131 |
|
| 132 |
+
<h2 class="sec">MEIDNet Studio: from data to candidates in seven blocks</h2>
|
| 133 |
+
<p class="sec-sub">A change in one block updates every block after it.</p>
|
| 134 |
<div class="how" aria-label="The seven blocks of the Studio">
|
| 135 |
<div style="--bc:var(--c-data)">Data<small>your materials</small></div><div style="--bc:var(--c-model)">Model<small>shared space</small></div>
|
| 136 |
<div style="--bc:var(--c-family)">Family<small>crystal type</small></div><div style="--bc:var(--c-rules)">Rules<small>chemistry</small></div>
|
|
|
|
| 154 |
year = {2026},
|
| 155 |
doi = {10.1038/s41524-026-02153-3}
|
| 156 |
}</pre>
|
| 157 |
+
<h3 style="margin:16px 0 4px;font-size:17px">Further reading</h3>
|
| 158 |
+
<ul class="reading">
|
| 159 |
+
<li>A. Babu and N. M. A. Krishnan, <i>Multimodal and cross-modal learning techniques</i>, APL Machine Learning <b>4</b>, 030901 (2026). <a href="https://doi.org/10.1063/5.0346744">doi:10.1063/5.0346744</a></li>
|
| 160 |
+
<li>A. Babu, R. Almeida Gouvรชa and G.-M. Rignanese, <i>Toward automated discovery with generative models multimodal learning and closed loop workflows in inverse materials design</i>, Cell Reports Physical Science <b>7</b>, 103561 (2026). <a href="https://doi.org/10.1016/j.xcrp.2026.103561">doi:10.1016/j.xcrp.2026.103561</a></li>
|
| 161 |
+
</ul>
|
| 162 |
</section>
|
| 163 |
+
<footer><span>MEIDNet Prism: learn, build and benchmark multimodal AI for materials discovery. MEIDNet is its reference implementation.</span><a href="https://github.com/ABnano/MEIDNet">Code</a><a href="/docs/">Documentation</a><a href="/docs/understand/limits.html">Scope and roadmap</a><a href="https://huggingface.co/spaces/Babu09/MEIDNet">Hugging Face Space</a></footer>
|
| 164 |
</main>
|
| 165 |
<script>
|
| 166 |
(function(){
|
meidnet/studio/studio.html
CHANGED
|
@@ -198,7 +198,7 @@ body>div:empty:not([id]):not([class]){position:absolute;top:0;left:0;width:0;hei
|
|
| 198 |
</div>
|
| 199 |
</section>
|
| 200 |
<div class="card strip"><div class="strip-scroll"><svg id="pipe" viewBox="0 0 1270 150" aria-label="MEIDNet workflow"></svg></div></div>
|
| 201 |
-
<div class="chain" id="chain"><span class="lead">
|
| 202 |
<details id="flowlog"><summary>Flow log (0)</summary><ol id="flowlog-list"></ol></details>
|
| 203 |
<div class="cols">
|
| 204 |
<div id="panel"><div class="card loading-card"><h2>Loading MEIDNet Studioโฆ</h2><p class="muted">Fetching the model and every composition of the perovskite family. This takes a few seconds; on the hosted Studio the very first visit can take up to a minute while the server wakes up.</p><div class="prog"><i class="indeterminate"></i></div></div></div>
|
|
@@ -330,7 +330,7 @@ async function boot(){
|
|
| 330 |
if(BLOCKS.some(b=>b.id===qs.get('panel'))) S.panel = qs.get('panel');
|
| 331 |
await loadFamily();
|
| 332 |
render();
|
| 333 |
-
chainText(`Ready: ${nfmt(S.ev.rows.length)} compositions, ${nfmt(S.ev.alive.length)} pass every rule.
|
| 334 |
if(!STATIC) await resumeJobs();
|
| 335 |
if(['space','candidates','data'].includes(qs.get('explore'))) openExplore(qs.get('explore'));
|
| 336 |
api('/api/data').then(d=>{ S.data=d; S.dataOwn = !!(S.state.session && S.state.session.checked); statusAll(); updateEdges(); render(); }).catch(()=>{});
|
|
@@ -651,7 +651,7 @@ function render(){
|
|
| 651 |
const b=BLOCKS.find(x=>x.id===S.panel); const n=BLOCKS.indexOf(b)+1;
|
| 652 |
P.dataset.block=S.panel;
|
| 653 |
P.innerHTML = `<div class="card"><div class="eyebrow">Block ${n} of 7 ยท ${esc(b.name)}</div><h2>${esc(b.name)}</h2><p class="purpose">${esc(b.purpose)}</p>
|
| 654 |
-
<div class="plain beginner-only"><b>In
|
| 655 |
document.querySelectorAll('.node').forEach(nd=>nd.classList.toggle('sel', nd.id==='node-'+S.panel));
|
| 656 |
if(!S.ev && S.fam) recompute(null, null); else { statusAll(); updateEdges(); renderLive(); }
|
| 657 |
renderLegend(); mountAll3d();
|
|
@@ -859,7 +859,7 @@ function trainBox(){
|
|
| 859 |
<tr><td>typical error (MAE)</td>${Object.entries(p.val.mae).map(([k,v])=>`<td>${fmt(v)}${esc(unit(k))}</td>`).join('')}<td>${(100*p.val.retrieval_top1).toFixed(0)}%</td></tr>
|
| 860 |
<tr><td>quality</td>${q.map(x=>`<td class="${x.css}">${x.word}</td>`).join('')}<td></td></tr></table>
|
| 861 |
<p class="small muted beginner-only">The typical error is compared with how much each property varies in your data: under 25% of that spread is <b>good</b>, under 50% <b>fair</b>, otherwise <b>weak</b>. "Matched correctly" is how often a material's structure and its properties land closest to each other in the model's hidden space (higher is better). A few epochs give a rough model; more epochs or more data usually help.</p>`; }
|
| 862 |
-
if(st.done&&!st.error) b+=`<div class="verdict good">
|
| 863 |
return b;
|
| 864 |
}
|
| 865 |
async function startTrain(){
|
|
@@ -912,13 +912,13 @@ function panelFamily(){
|
|
| 912 |
b+=`<h3>Elements per site group <span class="muted small">(click to exclude / include)</span></h3>`;
|
| 913 |
for(const [g,grp] of Object.entries(f.groups)){ b+=`<h4>${esc(g)} โ ${esc(grp.description)} ยท ${grp.slots.length} site${grp.slots.length>1?'s':''}</h4><div>`;
|
| 914 |
for(const el of grp.sample){ const off=S.ui.exclude.has(el); const ox=(grp.oxidation_states[el]||[]).map(q=>(q>0?'+':'')+q).join('/'); b+=`<span class="chip ${off?'off':''}" onclick="toggleEl(${jsq(el)})" title="charges ${esc(ox)}"><span style="display:inline-block;width:9px;height:9px;border-radius:50%;background:${CPK[el]||'#999'};border:1px solid var(--line);margin-right:5px;vertical-align:-1px"></span>${esc(el)}<small class="muted"> ${esc(ox)}</small></span>`; } b+='</div>'; }
|
| 915 |
-
b+=`<div class="help beginner-only">Excluding an element removes every composition
|
| 916 |
return b;
|
| 917 |
}
|
| 918 |
|
| 919 |
/* โโ Rules โโ */
|
| 920 |
function panelRules(){
|
| 921 |
-
const ev=S.ev||evaluateSpace(); let b=`<p class="muted small">
|
| 922 |
for(const c of S.fam.constraints){ const key=ruleKey(c); const r=S.ui.rules[key]; const d=S.fam.space.rows.map(x=>x.d[key]).filter(Number.isFinite);
|
| 923 |
b+=`<div class="rule ${r.enabled?'':'off'}"><div class="hd"><input type="checkbox" ${r.enabled?'checked':''} onchange="toggleRule(${jsq(key)},this.checked)"><b>${esc(ruleTitle(key))}</b><span class="muted small"><b style="color:var(--accent-text)">${nfmt(ev.perRule[key]??0)}</b> of ${nfmt(ev.rows.length)} pass</span></div><p class="small muted">${esc(ruleText(key))}</p>`;
|
| 924 |
const num=Object.entries(r.params).filter(([k,v])=>typeof v==='number' && !['cutoff'].includes(k));
|
|
@@ -1004,7 +1004,7 @@ function renderLive(){
|
|
| 1004 |
L.innerHTML=b;
|
| 1005 |
}
|
| 1006 |
function renderLegend(){ const beg=document.body.classList.contains('beginner');
|
| 1007 |
-
$('legend').innerHTML = beg ? `<h4>Glossary</h4><dl class="gloss"><dt>Composition</dt><dd>one element per site of the prototype, e.g. CsPbBrโ.</dd><dt>Rule</dt><dd>a hard check with a measured value and an allowed window.</dd><dt>Target</dt><dd>a property value you want; the model predicts how close each composition gets.</dd><dt>Latent space</dt><dd>the hidden coordinates where structures and properties meet; the search moves through it.</dd><dt>Extrapolation</dt><dd>a target outside the training range
|
| 1008 |
: `<h4>How to use</h4><ol class="small" style="padding-left:18px;margin:4px 0"><li><b>Family</b>: pick the crystal type; exclude elements.</li><li><b>Rules</b>: move limits; counts update live.</li><li><b>Targets</b>: set values; see the closest compositions.</li><li><b>Search</b> runs the latent optimisation; <b>Candidates</b> explains each result.</li><li><b>Data/Model</b>: upload your table, train, and design with your own properties.</li></ol>`; }
|
| 1009 |
|
| 1010 |
/* โโโโโโโโโโโโโโโโโโโโโโโโโโโ actions โโโโโโโโโโโโโโโโโโโโโโโโโโโ */
|
|
|
|
| 198 |
</div>
|
| 199 |
</section>
|
| 200 |
<div class="card strip"><div class="strip-scroll"><svg id="pipe" viewBox="0 0 1270 150" aria-label="MEIDNet workflow"></svg></div></div>
|
| 201 |
+
<div class="chain" id="chain"><span class="lead">Changes made above or in a block are listed here, with their effect on the blocks after it.</span></div>
|
| 202 |
<details id="flowlog"><summary>Flow log (0)</summary><ol id="flowlog-list"></ol></details>
|
| 203 |
<div class="cols">
|
| 204 |
<div id="panel"><div class="card loading-card"><h2>Loading MEIDNet Studioโฆ</h2><p class="muted">Fetching the model and every composition of the perovskite family. This takes a few seconds; on the hosted Studio the very first visit can take up to a minute while the server wakes up.</p><div class="prog"><i class="indeterminate"></i></div></div></div>
|
|
|
|
| 330 |
if(BLOCKS.some(b=>b.id===qs.get('panel'))) S.panel = qs.get('panel');
|
| 331 |
await loadFamily();
|
| 332 |
render();
|
| 333 |
+
chainText(`Ready: ${nfmt(S.ev.rows.length)} compositions, ${nfmt(S.ev.alive.length)} pass every rule. Changes and their effect on the later blocks are listed here.`);
|
| 334 |
if(!STATIC) await resumeJobs();
|
| 335 |
if(['space','candidates','data'].includes(qs.get('explore'))) openExplore(qs.get('explore'));
|
| 336 |
api('/api/data').then(d=>{ S.data=d; S.dataOwn = !!(S.state.session && S.state.session.checked); statusAll(); updateEdges(); render(); }).catch(()=>{});
|
|
|
|
| 651 |
const b=BLOCKS.find(x=>x.id===S.panel); const n=BLOCKS.indexOf(b)+1;
|
| 652 |
P.dataset.block=S.panel;
|
| 653 |
P.innerHTML = `<div class="card"><div class="eyebrow">Block ${n} of 7 ยท ${esc(b.name)}</div><h2>${esc(b.name)}</h2><p class="purpose">${esc(b.purpose)}</p>
|
| 654 |
+
<div class="plain beginner-only"><b>In short.</b> ${esc(b.plain)}</div>${ioStrip(S.panel)}${f?f():''}${behind(S.panel)}</div>`;
|
| 655 |
document.querySelectorAll('.node').forEach(nd=>nd.classList.toggle('sel', nd.id==='node-'+S.panel));
|
| 656 |
if(!S.ev && S.fam) recompute(null, null); else { statusAll(); updateEdges(); renderLive(); }
|
| 657 |
renderLegend(); mountAll3d();
|
|
|
|
| 859 |
<tr><td>typical error (MAE)</td>${Object.entries(p.val.mae).map(([k,v])=>`<td>${fmt(v)}${esc(unit(k))}</td>`).join('')}<td>${(100*p.val.retrieval_top1).toFixed(0)}%</td></tr>
|
| 860 |
<tr><td>quality</td>${q.map(x=>`<td class="${x.css}">${x.word}</td>`).join('')}<td></td></tr></table>
|
| 861 |
<p class="small muted beginner-only">The typical error is compared with how much each property varies in your data: under 25% of that spread is <b>good</b>, under 50% <b>fair</b>, otherwise <b>weak</b>. "Matched correctly" is how often a material's structure and its properties land closest to each other in the model's hidden space (higher is better). A few epochs give a rough model; more epochs or more data usually help.</p>`; }
|
| 862 |
+
if(st.done&&!st.error) b+=`<div class="verdict good">Model ready. The blocks below now use <b>your</b> model and properties.${st.report?` <a href="/files/${esc(st.report)}" target="_blank">training report</a> ยท <a href="/files/${esc(st.report.replace('training_report.html','model.pt'))}" download="model.pt">download model.pt</a>`:''}</div>`; }
|
| 863 |
return b;
|
| 864 |
}
|
| 865 |
async function startTrain(){
|
|
|
|
| 912 |
b+=`<h3>Elements per site group <span class="muted small">(click to exclude / include)</span></h3>`;
|
| 913 |
for(const [g,grp] of Object.entries(f.groups)){ b+=`<h4>${esc(g)} โ ${esc(grp.description)} ยท ${grp.slots.length} site${grp.slots.length>1?'s':''}</h4><div>`;
|
| 914 |
for(const el of grp.sample){ const off=S.ui.exclude.has(el); const ox=(grp.oxidation_states[el]||[]).map(q=>(q>0?'+':'')+q).join('/'); b+=`<span class="chip ${off?'off':''}" onclick="toggleEl(${jsq(el)})" title="charges ${esc(ox)}"><span style="display:inline-block;width:9px;height:9px;border-radius:50%;background:${CPK[el]||'#999'};border:1px solid var(--line);margin-right:5px;vertical-align:-1px"></span>${esc(el)}<small class="muted"> ${esc(ox)}</small></span>`; } b+='</div>'; }
|
| 915 |
+
b+=`<div class="help beginner-only">Excluding an element removes every composition that contains it; the Family and Rules counts update accordingly. To change which elements a family allows at all, copy <code>${esc(S.ui.family)}.yaml</code> and edit its <code>groups:</code>.</div>`;
|
| 916 |
return b;
|
| 917 |
}
|
| 918 |
|
| 919 |
/* โโ Rules โโ */
|
| 920 |
function panelRules(){
|
| 921 |
+
const ev=S.ev||evaluateSpace(); let b=`<p class="muted small">Moving a limit updates the count; the search applies exactly these windows.</p>`;
|
| 922 |
for(const c of S.fam.constraints){ const key=ruleKey(c); const r=S.ui.rules[key]; const d=S.fam.space.rows.map(x=>x.d[key]).filter(Number.isFinite);
|
| 923 |
b+=`<div class="rule ${r.enabled?'':'off'}"><div class="hd"><input type="checkbox" ${r.enabled?'checked':''} onchange="toggleRule(${jsq(key)},this.checked)"><b>${esc(ruleTitle(key))}</b><span class="muted small"><b style="color:var(--accent-text)">${nfmt(ev.perRule[key]??0)}</b> of ${nfmt(ev.rows.length)} pass</span></div><p class="small muted">${esc(ruleText(key))}</p>`;
|
| 924 |
const num=Object.entries(r.params).filter(([k,v])=>typeof v==='number' && !['cutoff'].includes(k));
|
|
|
|
| 1004 |
L.innerHTML=b;
|
| 1005 |
}
|
| 1006 |
function renderLegend(){ const beg=document.body.classList.contains('beginner');
|
| 1007 |
+
$('legend').innerHTML = beg ? `<h4>Glossary</h4><dl class="gloss"><dt>Composition</dt><dd>one element per site of the prototype, e.g. CsPbBrโ.</dd><dt>Rule</dt><dd>a hard check with a measured value and an allowed window.</dd><dt>Target</dt><dd>a property value you want; the model predicts how close each composition gets.</dd><dt>Latent space</dt><dd>the hidden coordinates where structures and properties meet; the search moves through it.</dd><dt>Extrapolation</dt><dd>a target outside the training range; predictions there are less reliable.</dd></dl><p class="small muted">Switch on Researcher mode in the header for the configuration as text and the Python behind each block.</p>`
|
| 1008 |
: `<h4>How to use</h4><ol class="small" style="padding-left:18px;margin:4px 0"><li><b>Family</b>: pick the crystal type; exclude elements.</li><li><b>Rules</b>: move limits; counts update live.</li><li><b>Targets</b>: set values; see the closest compositions.</li><li><b>Search</b> runs the latent optimisation; <b>Candidates</b> explains each result.</li><li><b>Data/Model</b>: upload your table, train, and design with your own properties.</li></ol>`; }
|
| 1009 |
|
| 1010 |
/* โโโโโโโโโโโโโโโโโโโโโโโโโโโ actions โโโโโโโโโโโโโโโโโโโโโโโโโโโ */
|
site/404.html
CHANGED
|
@@ -686,7 +686,7 @@
|
|
| 686 |
<span class="md-ellipsis">
|
| 687 |
|
| 688 |
|
| 689 |
-
MEIDNet Studio
|
| 690 |
|
| 691 |
|
| 692 |
|
|
@@ -885,7 +885,7 @@
|
|
| 885 |
<span class="md-ellipsis">
|
| 886 |
|
| 887 |
|
| 888 |
-
Capabilities
|
| 889 |
|
| 890 |
|
| 891 |
|
|
@@ -1594,7 +1594,7 @@
|
|
| 1594 |
<span class="md-ellipsis">
|
| 1595 |
|
| 1596 |
|
| 1597 |
-
|
| 1598 |
|
| 1599 |
|
| 1600 |
|
|
|
|
| 686 |
<span class="md-ellipsis">
|
| 687 |
|
| 688 |
|
| 689 |
+
MEIDNet Studio
|
| 690 |
|
| 691 |
|
| 692 |
|
|
|
|
| 885 |
<span class="md-ellipsis">
|
| 886 |
|
| 887 |
|
| 888 |
+
Capabilities
|
| 889 |
|
| 890 |
|
| 891 |
|
|
|
|
| 1594 |
<span class="md-ellipsis">
|
| 1595 |
|
| 1596 |
|
| 1597 |
+
Interpreting a candidate
|
| 1598 |
|
| 1599 |
|
| 1600 |
|
site/assets/extra.css
CHANGED
|
@@ -38,18 +38,7 @@ th[role="columnheader"]:not(.no-sort):hover::after{visibility:visible;opacity:.3
|
|
| 38 |
.bench-table td,.bench-table th{padding:.5em .6em;white-space:nowrap}
|
| 39 |
.bench-table td:first-child{white-space:normal;min-width:14em}
|
| 40 |
|
| 41 |
-
/* โโ Learn layer
|
| 42 |
-
.mstatus{display:inline-block;border-radius:999px;padding:0 10px;font-size:.72rem;font-weight:700;border:1px solid;white-space:nowrap;line-height:1.7;vertical-align:middle}
|
| 43 |
-
.mstatus.sup{color:#0a7d0a;border-color:#6fcf6f;background:rgba(10,125,10,.06)}
|
| 44 |
-
.mstatus.core{color:#fff;background:linear-gradient(90deg,#4f46e5,#9333ea);border-color:transparent}
|
| 45 |
-
.mstatus.part{color:#8a5d00;border-color:#eda100}
|
| 46 |
-
.mstatus.inside{color:#1c5cab;border-color:#86b6ef}
|
| 47 |
-
.mstatus.plan{color:#6b6a65;border-color:#b5b4ab;border-style:dashed}
|
| 48 |
-
.mstatus.no{color:#a8261d;border-color:#f0a8a3}
|
| 49 |
-
.mstatus.info{color:#4a3aa7;border-color:#b9b1ef}
|
| 50 |
-
[data-md-color-scheme="slate"] .mstatus.sup{color:#6fcf6f}[data-md-color-scheme="slate"] .mstatus.part{color:#f0c35b}
|
| 51 |
-
[data-md-color-scheme="slate"] .mstatus.inside{color:#86b6ef}[data-md-color-scheme="slate"] .mstatus.plan{color:#c3c2b7}
|
| 52 |
-
[data-md-color-scheme="slate"] .mstatus.no{color:#f0a8a3}[data-md-color-scheme="slate"] .mstatus.info{color:#b9b1ef}
|
| 53 |
.learn-steps ol{columns:2;column-gap:2em}@media(max-width:700px){.learn-steps ol{columns:1}}
|
| 54 |
|
| 55 |
/* โโ Architecture Atlas cards and their diagrams โโ */
|
|
@@ -130,6 +119,9 @@ svg.ad{width:100%;height:auto;display:block;max-width:420px;margin:auto}
|
|
| 130 |
.md-typeset .adv-card h4{margin:.5em 0 .3em;font-size:.95rem}
|
| 131 |
.md-typeset .adv-card p,.md-typeset .adv-card li{font-size:.76rem}
|
| 132 |
.adv-notes{color:var(--md-default-fg-color--light)}.adv-alt{color:var(--md-default-fg-color--light);font-style:italic}
|
|
|
|
|
|
|
|
|
|
| 133 |
.md-typeset a.adv-btn{display:inline-block;border-radius:9px;padding:5px 12px;font-weight:700;text-decoration:none;border:1px solid var(--md-default-fg-color--lighter);margin:2px 6px 4px 0;font-size:.72rem}
|
| 134 |
.md-typeset a.adv-btn.primary{background:#4f46e5;color:#fff;border-color:#4f46e5}
|
| 135 |
.md-typeset a.adv-btn.primary:hover{background:#9333ea;border-color:#9333ea}
|
|
|
|
| 38 |
.bench-table td,.bench-table th{padding:.5em .6em;white-space:nowrap}
|
| 39 |
.bench-table td:first-child{white-space:normal;min-width:14em}
|
| 40 |
|
| 41 |
+
/* โโ Learn layer โโ */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
.learn-steps ol{columns:2;column-gap:2em}@media(max-width:700px){.learn-steps ol{columns:1}}
|
| 43 |
|
| 44 |
/* โโ Architecture Atlas cards and their diagrams โโ */
|
|
|
|
| 119 |
.md-typeset .adv-card h4{margin:.5em 0 .3em;font-size:.95rem}
|
| 120 |
.md-typeset .adv-card p,.md-typeset .adv-card li{font-size:.76rem}
|
| 121 |
.adv-notes{color:var(--md-default-fg-color--light)}.adv-alt{color:var(--md-default-fg-color--light);font-style:italic}
|
| 122 |
+
.adv-kicker{font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--md-default-fg-color--light);margin-top:2px}
|
| 123 |
+
.md-typeset .adv-card p.adv-where{border-top:1px solid var(--md-default-fg-color--lightest);padding-top:.5em}
|
| 124 |
+
.mm-legend .mm-legend-title{font-weight:700}
|
| 125 |
.md-typeset a.adv-btn{display:inline-block;border-radius:9px;padding:5px 12px;font-weight:700;text-decoration:none;border:1px solid var(--md-default-fg-color--lighter);margin:2px 6px 4px 0;font-size:.72rem}
|
| 126 |
.md-typeset a.adv-btn.primary{background:#4f46e5;color:#fff;border-color:#4f46e5}
|
| 127 |
.md-typeset a.adv-btn.primary:hover{background:#9333ea;border-color:#9333ea}
|
site/assets/learn.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
"use strict";
|
| 5 |
var STUDIO = "https://babu09-meidnet.hf.space/studio/";
|
| 6 |
var STATUS = {
|
| 7 |
-
sup: "
|
| 8 |
};
|
| 9 |
|
| 10 |
function h(tag, attrs, html) {
|
|
@@ -24,7 +24,7 @@
|
|
| 24 |
ex: "Relaxed DFT structures (Materials Project, OQMD, JARVIS, Alexandria) and experimental ones (ICSD, COD). Perov-5 in MEIDNet.",
|
| 25 |
enc: "Graph neural networks. MEIDNet uses an E(n)-equivariant graph network (EGNN), so rotating or translating the cell changes nothing; CGCNN is a widely used alternative.",
|
| 26 |
combo: "With scalar properties (MEIDNet), with diffraction patterns (structure from a pattern), with text, with images.",
|
| 27 |
-
meid: "
|
| 28 |
links: [["Datasets", "../explore/datasets.html"], ["Databases by application", "../explore/databases.html"]],
|
| 29 |
refs: [["Satorras et al. 2021 (EGNN)", "https://arxiv.org/abs/2102.09844"], ["Xie and Grossman 2018 (CGCNN)", "https://doi.org/10.1103/PhysRevLett.120.145301"]] },
|
| 30 |
{ id: "properties", name: "Scalar properties", st: "sup",
|
|
@@ -32,7 +32,7 @@
|
|
| 32 |
ex: "In Perov-5: direct band gap (dir_gap, eV) and formation enthalpy (heat_all, eV/atom). Any numeric column of your table.",
|
| 33 |
enc: "A small fully connected network (MLP) over the vector of normalised values.",
|
| 34 |
combo: "With structures (MEIDNet: design from target properties), with compositions, with spectra.",
|
| 35 |
-
meid: "
|
| 36 |
links: [["Change the target properties", "../recipes/change-targets.html"], ["Add a property", "../recipes/add-property.html"]],
|
| 37 |
refs: [["Babu et al. 2026 (MEIDNet)", "https://doi.org/10.1038/s41524-026-02153-3"]] },
|
| 38 |
{ id: "conditions", name: "Processing conditions", st: "part",
|
|
@@ -40,7 +40,7 @@
|
|
| 40 |
ex: "Synthesis and processing tables of experimental groups; growth logs of thin films.",
|
| 41 |
enc: "Numbers go into an MLP like properties; categories (atmosphere, method) as one-hot codes.",
|
| 42 |
combo: "With composition (early fusion of features), with text (the same information written in a paper).",
|
| 43 |
-
meid: "
|
| 44 |
links: [["Add a property", "../recipes/add-property.html"]],
|
| 45 |
refs: [["Baltruลกaitis et al. 2019", "https://doi.org/10.1109/TPAMI.2018.2798607"]] },
|
| 46 |
{ id: "composition", name: "Composition", st: "inside",
|
|
@@ -48,7 +48,7 @@
|
|
| 48 |
ex: "Experimental property tables often give only formulas, for example experimental band gaps and several Matbench tasks.",
|
| 49 |
enc: "Networks over the set of elements weighted by their fractions, such as Roost; element descriptors with tree models.",
|
| 50 |
combo: "With processing conditions (early fusion), with structures when they are known.",
|
| 51 |
-
meid: "
|
| 52 |
links: [["Recipe: formula only", "recipes.html#formula-only"]],
|
| 53 |
refs: [["Goodall and Lee 2020 (Roost)", "https://doi.org/10.1038/s41467-020-19964-7"]] },
|
| 54 |
{ id: "text", name: "Text", st: "plan",
|
|
@@ -56,7 +56,7 @@
|
|
| 56 |
ex: "Text-mined synthesis recipes: nearly 20,000 procedures extracted from the literature.",
|
| 57 |
enc: "Language models: BERT-style encoders or embeddings of large language models.",
|
| 58 |
combo: "With structures (contrastive alignment, like images and captions in CLIP), with processing conditions.",
|
| 59 |
-
meid: "Planned: a text encoder into the shared space
|
| 60 |
links: [["Recipe: synthesis text", "recipes.html#synthesis-text"]],
|
| 61 |
refs: [["Kononova et al. 2019", "https://doi.org/10.1038/s41597-019-0224-1"], ["Moro, Loh et al. 2025", "https://doi.org/10.1016/j.newton.2025.100016"]] },
|
| 62 |
{ id: "images", name: "Microscopy images", st: "plan",
|
|
@@ -64,7 +64,7 @@
|
|
| 64 |
ex: "Microscopy collections of experimental groups; usually small and rarely paired with structures.",
|
| 65 |
enc: "2D convolutional networks or vision transformers.",
|
| 66 |
combo: "With processing conditions (how the microstructure formed), with properties measured on the same sample.",
|
| 67 |
-
meid: "Planned: an image encoder into the shared space
|
| 68 |
links: [["Capabilities", "../explore/capabilities.html"]],
|
| 69 |
refs: [["Guo et al. 2019", "https://doi.org/10.1109/ACCESS.2019.2916887"]] },
|
| 70 |
{ id: "spectra", name: "Spectra and DOS", st: "plan",
|
|
@@ -72,7 +72,7 @@
|
|
| 72 |
ex: "Computed DOS in the Materials Project and JARVIS; measured spectra.",
|
| 73 |
enc: "1D convolutional networks or transformers over the binned curve.",
|
| 74 |
combo: "With structures (which sites shape which features), with properties (a band gap read from the DOS).",
|
| 75 |
-
meid: "Planned:
|
| 76 |
links: [["Scope and roadmap", "../understand/limits.html"]],
|
| 77 |
refs: [["Tsai et al. 2019 (attention across sequences)", "https://doi.org/10.18653/v1/P19-1656"]] },
|
| 78 |
{ id: "xrd", name: "Diffraction (XRD)", st: "plan",
|
|
@@ -80,7 +80,7 @@
|
|
| 80 |
ex: "Patterns simulated from any structure database (for example with pymatgen); measured powder patterns.",
|
| 81 |
enc: "1D convolutional networks; transformers over peak lists.",
|
| 82 |
combo: "With structures (identify a structure from its pattern), with compositions.",
|
| 83 |
-
meid: "Planned: binned XRD as a vector modality, the first item of the roadmap
|
| 84 |
links: [["Recipe: XRD to structure", "recipes.html#xrd-structure"]],
|
| 85 |
refs: [["Park et al. 2017", "https://doi.org/10.1107/S205225251700714X"]] },
|
| 86 |
];
|
|
@@ -98,12 +98,12 @@
|
|
| 98 |
};
|
| 99 |
|
| 100 |
function detailHtml(m) {
|
| 101 |
-
return
|
| 102 |
'<table class="mm-facts"><tr><th>What it is</th><td>' + m.what + "</td></tr>" +
|
| 103 |
"<tr><th>Examples</th><td>" + m.ex + "</td></tr>" +
|
| 104 |
"<tr><th>Networks that read it</th><td>" + m.enc + "</td></tr>" +
|
| 105 |
"<tr><th>Combined with</th><td>" + m.combo + "</td></tr>" +
|
| 106 |
-
"<tr><th>
|
| 107 |
"<tr><th>Go further</th><td>" + links(m.links) + "</td></tr>" +
|
| 108 |
"<tr><th>References</th><td>" + links(m.refs) + "</td></tr></table>";
|
| 109 |
}
|
|
@@ -134,8 +134,8 @@
|
|
| 134 |
'<text class="st" x="' + pos[i][0].toFixed(1) + '" y="' + (pos[i][1] + 14).toFixed(1) + '" text-anchor="middle">' + STATUS[m.st] + "</text></g>");
|
| 135 |
});
|
| 136 |
svg.push("</svg>");
|
| 137 |
-
var legend = '<div class="mm-legend"><span
|
| 138 |
-
'<span><i class="sw inside"></i>
|
| 139 |
var list = '<div class="mm-list" role="group" aria-label="Modalities"><button type="button" data-id="core" class="core-btn">Shared representation</button>' +
|
| 140 |
MODS.map(function (m) { return '<button type="button" data-id="' + m.id + '" class="' + m.st + '">' + m.name + "<small>" + STATUS[m.st] + "</small></button>"; }).join("") + "</div>";
|
| 141 |
root.innerHTML = legend + svg.join("") + list + '<div class="mm-detail" aria-live="polite"></div>';
|
|
@@ -225,7 +225,12 @@
|
|
| 225 |
var GOALS = [["design", "Design new materials from target properties"], ["predict", "Predict properties"],
|
| 226 |
["retrieve", "Find materials that match a profile, across modalities"], ["identify", "Identify a structure or phase from a measurement"],
|
| 227 |
["combine", "Combine all my data into one prediction"]];
|
| 228 |
-
var
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 229 |
var EXTRA_NAMES = { xrd: "diffraction patterns", spectra: "spectra", images: "images", text: "text" };
|
| 230 |
|
| 231 |
function advise(has, goal) {
|
|
@@ -240,11 +245,11 @@
|
|
| 240 |
var extra = ["xrd", "spectra", "images", "text"].filter(function (k) { return has[k]; }).map(function (k) { return EXTRA_NAMES[k]; });
|
| 241 |
var n = Object.keys(has).filter(function (k) { return has[k]; }).length;
|
| 242 |
function meidnetNotes() {
|
| 243 |
-
if (extra.length) notes.push("MEIDNet uses structures and scalar properties
|
| 244 |
-
" would each need
|
| 245 |
-
if (K) notes.push("Processing conditions can be added as extra scalar columns. They are encoded with the properties,
|
| 246 |
}
|
| 247 |
-
if (!n) return { st: "info", title: "
|
| 248 |
|
| 249 |
if (goal === "design") {
|
| 250 |
if (S && P) {
|
|
@@ -260,6 +265,7 @@
|
|
| 260 |
}
|
| 261 |
if (P && C && !S) return { st: "no", arch: "early-fusion", title: "A composition model in a screening loop, or structures built on a prototype",
|
| 262 |
why: "MEIDNet needs a structure for every row. If all your formulas sit on one prototype (for example ABXโ), build those structures on the prototype and use MEIDNet. Otherwise train a composition model such as Roost and use it to screen candidate formulas.",
|
|
|
|
| 263 |
links: [["Recipe: formula only", "recipes.html#formula-only", 1], ["Roost (Goodall and Lee 2020)", "https://doi.org/10.1038/s41467-020-19964-7"]] };
|
| 264 |
if (S && !P) return { st: "info", arch: "shared-latent", title: "First add property values to your structures",
|
| 265 |
why: "Design from properties needs examples of structures with their property values. Compute them (DFT) or take them from a database, then train the shared space.",
|
|
@@ -268,27 +274,29 @@
|
|
| 268 |
why: "The same design as MEIDNet, with an encoder suited to your modality in place of the structure encoder. Design then returns " + extra.join(" or ") + " rather than structures, which is useful only if those can be turned into materials.",
|
| 269 |
links: [["Shared latent space", "#shared-latent", 1], ["Scope and roadmap", "../understand/limits.html"]] };
|
| 270 |
return { st: "info", title: "Add a description of each material besides its properties",
|
| 271 |
-
why: "Design needs to output something
|
| 272 |
links: [["Datasets", "../explore/datasets.html", 1]] };
|
| 273 |
}
|
| 274 |
|
| 275 |
if (goal === "predict") {
|
| 276 |
if (!P) return { st: "info", title: "Add the property values you want to predict",
|
| 277 |
-
why: "A model learns to predict a property from examples where the property is known.
|
| 278 |
links: [["Databases by application", "../explore/databases.html", 1]] };
|
| 279 |
if (S) {
|
| 280 |
if (extra.length) notes.push("To add your " + extra.join(", ") + ", join one encoder per modality in a shared space (intermediate fusion), or use late fusion if some materials lack them.");
|
| 281 |
return { st: "sup", arch: "shared-latent", title: "A graph network on the structure (MEIDNet's structure encoder does this)",
|
| 282 |
why: "For structure to property alone, a single-modality graph network such as CGCNN is the simplest strong choice. MEIDNet's structure encoder does the same and scores every composition of a family instantly, and it adds the reverse direction if you later want to design.",
|
|
|
|
| 283 |
links: [["Recipe: screen a family", "recipes.html#screen-family", 1], ["Open the Studio", STUDIO], ["CGCNN (Xie and Grossman 2018)", "https://doi.org/10.1103/PhysRevLett.120.145301"]] };
|
| 284 |
}
|
| 285 |
if (C && !extra.length) return { st: "no", arch: K ? "early-fusion" : null, title: "A composition network such as Roost" + (K ? ", with the conditions joined by early fusion" : ""),
|
| 286 |
why: "Without structures, the formula is the description. Roost learns from the formula alone; numeric conditions can be concatenated to its features.",
|
|
|
|
| 287 |
links: [["Recipe: formula only", "recipes.html#formula-only", 1], ["Roost (Goodall and Lee 2020)", "https://doi.org/10.1038/s41467-020-19964-7"]] };
|
| 288 |
if (extra.length === 1 && !C && !K) {
|
| 289 |
var one = { "diffraction patterns": "a 1D convolutional network on the binned pattern", spectra: "a 1D convolutional network on the binned spectrum",
|
| 290 |
images: "a 2D convolutional network or a vision transformer", text: "a fine-tuned language model" }[extra[0]];
|
| 291 |
-
return { st: "no", title: "One modality: " + one, why: "With a single input modality, a network suited to its shape is the
|
| 292 |
links: [["Modalities and their networks", "index.html#what-is-a-modality", 1]] };
|
| 293 |
}
|
| 294 |
return { st: "no", arch: "late-fusion", title: "Late fusion, or early fusion if every material has every modality",
|
|
@@ -310,32 +318,33 @@
|
|
| 310 |
why: "The same loss that pairs pictures with captions pairs your " + extra.join(" and ") + " with structures, given enough pairs. MEIDNet plans these encoders; they are not implemented.",
|
| 311 |
links: [["Contrastive learning", "#contrastive", 1], ["Recipe: synthesis text", "recipes.html#synthesis-text"]] };
|
| 312 |
return { st: "info", title: "Retrieval needs pairs of two modalities",
|
| 313 |
-
why: "
|
| 314 |
}
|
| 315 |
|
| 316 |
if (goal === "identify") {
|
| 317 |
if (X || Sp) {
|
| 318 |
if (S) notes.push("With structures as well, a contrastive model can retrieve the matching structure instead of a class label; simulate the patterns from the structures to get as many pairs as you need.");
|
| 319 |
return { st: "plan", arch: "contrastive", title: "A 1D convolutional classifier on the pattern; contrastive retrieval as the multimodal version",
|
| 320 |
-
why: "A pattern or spectrum is a fingerprint. A classifier needs labels (crystal system, space group, phase); a contrastive pattern-structure model needs only pairs.
|
|
|
|
| 321 |
links: [["Recipe: XRD to structure", "recipes.html#xrd-structure", 1], ["Park et al. 2017", "https://doi.org/10.1107/S205225251700714X"]] };
|
| 322 |
}
|
| 323 |
if (I) return { st: "no", title: "An image classifier: a convolutional network or a vision transformer",
|
| 324 |
why: "Phases and microstructures can be classified from micrographs given labelled examples. This is a single-modality task outside MEIDNet.",
|
| 325 |
links: [["Microscopy images on the map", "index.html#the-multimodality-map", 1]] };
|
| 326 |
return { st: "info", title: "Identification starts from a measurement",
|
| 327 |
-
why: "
|
| 328 |
}
|
| 329 |
|
| 330 |
// combine
|
| 331 |
-
if (n < 2) return { st: "info", title: "Combining needs at least two modalities", why: "
|
| 332 |
var tabular = ["structure", "xrd", "spectra", "images", "text"].every(function (k) { return !has[k]; });
|
| 333 |
notes.push("If some materials lack a modality, late fusion (one model per modality, predictions averaged) is the robust choice.");
|
| 334 |
if (tabular) return { st: "no", arch: "early-fusion", title: "Early fusion: concatenate the features into one model",
|
| 335 |
why: "Properties, formulas and conditions all become fixed-length numbers, so concatenating them is a strong and cheap baseline.",
|
| 336 |
links: [["Early fusion", "#early-fusion", 1], ["Late fusion", "#late-fusion"]] };
|
| 337 |
if (T || (n >= 3 && (X || Sp || I))) return { st: "no", arch: "cross-attention", title: "Cross-attention fusion, with a shared latent space as the cheaper start",
|
| 338 |
-
why: "Text, spectra or images next to structures have parts that interact in detail; attention learns which parts matter to which. It needs much data. A shared latent space (one encoder per modality, aligned and averaged) is
|
| 339 |
links: [["Cross-attention", "#cross-attention", 1], ["Shared latent space", "#shared-latent"]] };
|
| 340 |
return { st: S && P && !extra.length ? "part" : "no", arch: "shared-latent", title: "Intermediate fusion: one encoder per modality into a shared space, then a prediction head",
|
| 341 |
why: "Modalities of different shapes each get the encoder that suits them, and their latents are joined. MEIDNet does this for structures and scalar properties (aligned, then averaged); a separate prediction head for another quantity is not part of it.",
|
|
@@ -343,11 +352,13 @@
|
|
| 343 |
}
|
| 344 |
|
| 345 |
function renderAdvice(r, notes) {
|
| 346 |
-
var b = '<div class="adv-card ' + r.st + '"><
|
| 347 |
"<p><b>Why.</b> " + r.why + "</p>";
|
| 348 |
if (r.steps) b += "<ol>" + r.steps.map(function (s) { return "<li>" + s + "</li>"; }).join("") + "</ol>";
|
| 349 |
if (notes.length) b += '<ul class="adv-notes">' + notes.map(function (s) { return "<li>" + s + "</li>"; }).join("") + "</ul>";
|
| 350 |
if (r.alt) b += '<p class="adv-alt">' + r.alt + "</p>";
|
|
|
|
|
|
|
| 351 |
var ls = (r.links || []).slice();
|
| 352 |
if (r.arch && !ls.some(function (l) { return l[1] === "#" + r.arch; })) ls.push(["This architecture in the Atlas", "#" + r.arch]);
|
| 353 |
if (ls.length) b += '<p class="adv-links">' + ls.map(function (l) {
|
|
|
|
| 4 |
"use strict";
|
| 5 |
var STUDIO = "https://babu09-meidnet.hf.space/studio/";
|
| 6 |
var STATUS = {
|
| 7 |
+
sup: "Available", part: "Partial", inside: "Via the structure", plan: "Planned",
|
| 8 |
};
|
| 9 |
|
| 10 |
function h(tag, attrs, html) {
|
|
|
|
| 24 |
ex: "Relaxed DFT structures (Materials Project, OQMD, JARVIS, Alexandria) and experimental ones (ICSD, COD). Perov-5 in MEIDNet.",
|
| 25 |
enc: "Graph neural networks. MEIDNet uses an E(n)-equivariant graph network (EGNN), so rotating or translating the cell changes nothing; CGCNN is a widely used alternative.",
|
| 26 |
combo: "With scalar properties (MEIDNet), with diffraction patterns (structure from a pattern), with text, with images.",
|
| 27 |
+
meid: "Available: up to max_sites atoms per cell (default 20), any elements.",
|
| 28 |
links: [["Datasets", "../explore/datasets.html"], ["Databases by application", "../explore/databases.html"]],
|
| 29 |
refs: [["Satorras et al. 2021 (EGNN)", "https://arxiv.org/abs/2102.09844"], ["Xie and Grossman 2018 (CGCNN)", "https://doi.org/10.1103/PhysRevLett.120.145301"]] },
|
| 30 |
{ id: "properties", name: "Scalar properties", st: "sup",
|
|
|
|
| 32 |
ex: "In Perov-5: direct band gap (dir_gap, eV) and formation enthalpy (heat_all, eV/atom). Any numeric column of your table.",
|
| 33 |
enc: "A small fully connected network (MLP) over the vector of normalised values.",
|
| 34 |
combo: "With structures (MEIDNet: design from target properties), with compositions, with spectra.",
|
| 35 |
+
meid: "Available: all scalar columns form one vector, read by one MLP; every column becomes a target that can be set in the search.",
|
| 36 |
links: [["Change the target properties", "../recipes/change-targets.html"], ["Add a property", "../recipes/add-property.html"]],
|
| 37 |
refs: [["Babu et al. 2026 (MEIDNet)", "https://doi.org/10.1038/s41524-026-02153-3"]] },
|
| 38 |
{ id: "conditions", name: "Processing conditions", st: "part",
|
|
|
|
| 40 |
ex: "Synthesis and processing tables of experimental groups; growth logs of thin films.",
|
| 41 |
enc: "Numbers go into an MLP like properties; categories (atmosphere, method) as one-hot codes.",
|
| 42 |
combo: "With composition (early fusion of features), with text (the same information written in a paper).",
|
| 43 |
+
meid: "Partial: numeric conditions can be added as extra scalar columns. They are encoded together with the properties, so the model does not distinguish conditions from outcomes.",
|
| 44 |
links: [["Add a property", "../recipes/add-property.html"]],
|
| 45 |
refs: [["Baltruลกaitis et al. 2019", "https://doi.org/10.1109/TPAMI.2018.2798607"]] },
|
| 46 |
{ id: "composition", name: "Composition", st: "inside",
|
|
|
|
| 48 |
ex: "Experimental property tables often give only formulas, for example experimental band gaps and several Matbench tasks.",
|
| 49 |
enc: "Networks over the set of elements weighted by their fractions, such as Roost; element descriptors with tree models.",
|
| 50 |
combo: "With processing conditions (early fusion), with structures when they are known.",
|
| 51 |
+
meid: "Via the structure: the element on each site is part of the structure, so the composition is encoded, but formulas alone cannot be used for training. Formulas that sit on one prototype can be turned into structures on that prototype.",
|
| 52 |
links: [["Recipe: formula only", "recipes.html#formula-only"]],
|
| 53 |
refs: [["Goodall and Lee 2020 (Roost)", "https://doi.org/10.1038/s41467-020-19964-7"]] },
|
| 54 |
{ id: "text", name: "Text", st: "plan",
|
|
|
|
| 56 |
ex: "Text-mined synthesis recipes: nearly 20,000 procedures extracted from the literature.",
|
| 57 |
enc: "Language models: BERT-style encoders or embeddings of large language models.",
|
| 58 |
combo: "With structures (contrastive alignment, like images and captions in CLIP), with processing conditions.",
|
| 59 |
+
meid: "Planned: a text encoder that maps into the shared space; not yet available.",
|
| 60 |
links: [["Recipe: synthesis text", "recipes.html#synthesis-text"]],
|
| 61 |
refs: [["Kononova et al. 2019", "https://doi.org/10.1038/s41597-019-0224-1"], ["Moro, Loh et al. 2025", "https://doi.org/10.1016/j.newton.2025.100016"]] },
|
| 62 |
{ id: "images", name: "Microscopy images", st: "plan",
|
|
|
|
| 64 |
ex: "Microscopy collections of experimental groups; usually small and rarely paired with structures.",
|
| 65 |
enc: "2D convolutional networks or vision transformers.",
|
| 66 |
combo: "With processing conditions (how the microstructure formed), with properties measured on the same sample.",
|
| 67 |
+
meid: "Planned: an image encoder that maps into the shared space; not yet available.",
|
| 68 |
links: [["Capabilities", "../explore/capabilities.html"]],
|
| 69 |
refs: [["Guo et al. 2019", "https://doi.org/10.1109/ACCESS.2019.2916887"]] },
|
| 70 |
{ id: "spectra", name: "Spectra and DOS", st: "plan",
|
|
|
|
| 72 |
ex: "Computed DOS in the Materials Project and JARVIS; measured spectra.",
|
| 73 |
enc: "1D convolutional networks or transformers over the binned curve.",
|
| 74 |
combo: "With structures (which sites shape which features), with properties (a band gap read from the DOS).",
|
| 75 |
+
meid: "Planned: vector modalities with one encoder each; not yet available.",
|
| 76 |
links: [["Scope and roadmap", "../understand/limits.html"]],
|
| 77 |
refs: [["Tsai et al. 2019 (attention across sequences)", "https://doi.org/10.18653/v1/P19-1656"]] },
|
| 78 |
{ id: "xrd", name: "Diffraction (XRD)", st: "plan",
|
|
|
|
| 80 |
ex: "Patterns simulated from any structure database (for example with pymatgen); measured powder patterns.",
|
| 81 |
enc: "1D convolutional networks; transformers over peak lists.",
|
| 82 |
combo: "With structures (identify a structure from its pattern), with compositions.",
|
| 83 |
+
meid: "Planned: binned XRD patterns as a vector modality, the first item of the roadmap; not yet available.",
|
| 84 |
links: [["Recipe: XRD to structure", "recipes.html#xrd-structure"]],
|
| 85 |
refs: [["Park et al. 2017", "https://doi.org/10.1107/S205225251700714X"]] },
|
| 86 |
];
|
|
|
|
| 98 |
};
|
| 99 |
|
| 100 |
function detailHtml(m) {
|
| 101 |
+
return "<h4>" + m.name + "</h4>" +
|
| 102 |
'<table class="mm-facts"><tr><th>What it is</th><td>' + m.what + "</td></tr>" +
|
| 103 |
"<tr><th>Examples</th><td>" + m.ex + "</td></tr>" +
|
| 104 |
"<tr><th>Networks that read it</th><td>" + m.enc + "</td></tr>" +
|
| 105 |
"<tr><th>Combined with</th><td>" + m.combo + "</td></tr>" +
|
| 106 |
+
"<tr><th>MEIDNet</th><td>" + m.meid + "</td></tr>" +
|
| 107 |
"<tr><th>Go further</th><td>" + links(m.links) + "</td></tr>" +
|
| 108 |
"<tr><th>References</th><td>" + links(m.refs) + "</td></tr></table>";
|
| 109 |
}
|
|
|
|
| 134 |
'<text class="st" x="' + pos[i][0].toFixed(1) + '" y="' + (pos[i][1] + 14).toFixed(1) + '" text-anchor="middle">' + STATUS[m.st] + "</text></g>");
|
| 135 |
});
|
| 136 |
svg.push("</svg>");
|
| 137 |
+
var legend = '<div class="mm-legend"><span class="mm-legend-title">MEIDNet:</span><span><i class="sw sup"></i>available</span>' +
|
| 138 |
+
'<span><i class="sw part"></i>partial</span><span><i class="sw inside"></i>via the structure</span><span><i class="sw plan"></i>planned</span></div>';
|
| 139 |
var list = '<div class="mm-list" role="group" aria-label="Modalities"><button type="button" data-id="core" class="core-btn">Shared representation</button>' +
|
| 140 |
MODS.map(function (m) { return '<button type="button" data-id="' + m.id + '" class="' + m.st + '">' + m.name + "<small>" + STATUS[m.st] + "</small></button>"; }).join("") + "</div>";
|
| 141 |
root.innerHTML = legend + svg.join("") + list + '<div class="mm-detail" aria-live="polite"></div>';
|
|
|
|
| 225 |
var GOALS = [["design", "Design new materials from target properties"], ["predict", "Predict properties"],
|
| 226 |
["retrieve", "Find materials that match a profile, across modalities"], ["identify", "Identify a structure or phase from a measurement"],
|
| 227 |
["combine", "Combine all my data into one prediction"]];
|
| 228 |
+
var WHERE = {
|
| 229 |
+
sup: "MEIDNet: the Studio, or the meidnet command line.",
|
| 230 |
+
part: "MEIDNet provides the structure and property encoders and their fusion; a prediction head for another quantity is not included.",
|
| 231 |
+
plan: "Planned for MEIDNet and not yet available; the single-modality models named above can be used today.",
|
| 232 |
+
no: "Outside the scope of MEIDNet; the models named above are the usual choice.",
|
| 233 |
+
};
|
| 234 |
var EXTRA_NAMES = { xrd: "diffraction patterns", spectra: "spectra", images: "images", text: "text" };
|
| 235 |
|
| 236 |
function advise(has, goal) {
|
|
|
|
| 245 |
var extra = ["xrd", "spectra", "images", "text"].filter(function (k) { return has[k]; }).map(function (k) { return EXTRA_NAMES[k]; });
|
| 246 |
var n = Object.keys(has).filter(function (k) { return has[k]; }).length;
|
| 247 |
function meidnetNotes() {
|
| 248 |
+
if (extra.length) notes.push("MEIDNet currently uses crystal structures and scalar properties. The " + extra.join(", ") +
|
| 249 |
+
" would each need a dedicated encoder, which is planned; the structures and properties can be used now.");
|
| 250 |
+
if (K) notes.push("Processing conditions can be added as extra scalar columns. They are encoded with the properties, so the model does not distinguish conditions from outcomes.");
|
| 251 |
}
|
| 252 |
+
if (!n) return { st: "info", title: "Select the data you have", why: "The recommendation depends on which modalities describe your materials." };
|
| 253 |
|
| 254 |
if (goal === "design") {
|
| 255 |
if (S && P) {
|
|
|
|
| 265 |
}
|
| 266 |
if (P && C && !S) return { st: "no", arch: "early-fusion", title: "A composition model in a screening loop, or structures built on a prototype",
|
| 267 |
why: "MEIDNet needs a structure for every row. If all your formulas sit on one prototype (for example ABXโ), build those structures on the prototype and use MEIDNet. Otherwise train a composition model such as Roost and use it to screen candidate formulas.",
|
| 268 |
+
where: "Roost or another composition model; MEIDNet requires a crystal structure for each material.",
|
| 269 |
links: [["Recipe: formula only", "recipes.html#formula-only", 1], ["Roost (Goodall and Lee 2020)", "https://doi.org/10.1038/s41467-020-19964-7"]] };
|
| 270 |
if (S && !P) return { st: "info", arch: "shared-latent", title: "First add property values to your structures",
|
| 271 |
why: "Design from properties needs examples of structures with their property values. Compute them (DFT) or take them from a database, then train the shared space.",
|
|
|
|
| 274 |
why: "The same design as MEIDNet, with an encoder suited to your modality in place of the structure encoder. Design then returns " + extra.join(" or ") + " rather than structures, which is useful only if those can be turned into materials.",
|
| 275 |
links: [["Shared latent space", "#shared-latent", 1], ["Scope and roadmap", "../understand/limits.html"]] };
|
| 276 |
return { st: "info", title: "Add a description of each material besides its properties",
|
| 277 |
+
why: "Design needs to output something that can be made: structures (MEIDNet) or at least formulas. Select crystal structures or formulas.",
|
| 278 |
links: [["Datasets", "../explore/datasets.html", 1]] };
|
| 279 |
}
|
| 280 |
|
| 281 |
if (goal === "predict") {
|
| 282 |
if (!P) return { st: "info", title: "Add the property values you want to predict",
|
| 283 |
+
why: "A model learns to predict a property from examples where the property is known. Select scalar properties if you have them.",
|
| 284 |
links: [["Databases by application", "../explore/databases.html", 1]] };
|
| 285 |
if (S) {
|
| 286 |
if (extra.length) notes.push("To add your " + extra.join(", ") + ", join one encoder per modality in a shared space (intermediate fusion), or use late fusion if some materials lack them.");
|
| 287 |
return { st: "sup", arch: "shared-latent", title: "A graph network on the structure (MEIDNet's structure encoder does this)",
|
| 288 |
why: "For structure to property alone, a single-modality graph network such as CGCNN is the simplest strong choice. MEIDNet's structure encoder does the same and scores every composition of a family instantly, and it adds the reverse direction if you later want to design.",
|
| 289 |
+
where: "MEIDNet's structure encoder (the Studio or meidnet space), or a graph network such as CGCNN.",
|
| 290 |
links: [["Recipe: screen a family", "recipes.html#screen-family", 1], ["Open the Studio", STUDIO], ["CGCNN (Xie and Grossman 2018)", "https://doi.org/10.1103/PhysRevLett.120.145301"]] };
|
| 291 |
}
|
| 292 |
if (C && !extra.length) return { st: "no", arch: K ? "early-fusion" : null, title: "A composition network such as Roost" + (K ? ", with the conditions joined by early fusion" : ""),
|
| 293 |
why: "Without structures, the formula is the description. Roost learns from the formula alone; numeric conditions can be concatenated to its features.",
|
| 294 |
+
where: "Roost or another composition model; MEIDNet requires a crystal structure for each material.",
|
| 295 |
links: [["Recipe: formula only", "recipes.html#formula-only", 1], ["Roost (Goodall and Lee 2020)", "https://doi.org/10.1038/s41467-020-19964-7"]] };
|
| 296 |
if (extra.length === 1 && !C && !K) {
|
| 297 |
var one = { "diffraction patterns": "a 1D convolutional network on the binned pattern", spectra: "a 1D convolutional network on the binned spectrum",
|
| 298 |
images: "a 2D convolutional network or a vision transformer", text: "a fine-tuned language model" }[extra[0]];
|
| 299 |
+
return { st: "no", title: "One modality: " + one, why: "With a single input modality, a network suited to its shape is the natural starting point. Multimodal designs become useful once a second modality is paired with it.",
|
| 300 |
links: [["Modalities and their networks", "index.html#what-is-a-modality", 1]] };
|
| 301 |
}
|
| 302 |
return { st: "no", arch: "late-fusion", title: "Late fusion, or early fusion if every material has every modality",
|
|
|
|
| 318 |
why: "The same loss that pairs pictures with captions pairs your " + extra.join(" and ") + " with structures, given enough pairs. MEIDNet plans these encoders; they are not implemented.",
|
| 319 |
links: [["Contrastive learning", "#contrastive", 1], ["Recipe: synthesis text", "recipes.html#synthesis-text"]] };
|
| 320 |
return { st: "info", title: "Retrieval needs pairs of two modalities",
|
| 321 |
+
why: "Select at least two modalities that describe the same materials, for example crystal structures and scalar properties." };
|
| 322 |
}
|
| 323 |
|
| 324 |
if (goal === "identify") {
|
| 325 |
if (X || Sp) {
|
| 326 |
if (S) notes.push("With structures as well, a contrastive model can retrieve the matching structure instead of a class label; simulate the patterns from the structures to get as many pairs as you need.");
|
| 327 |
return { st: "plan", arch: "contrastive", title: "A 1D convolutional classifier on the pattern; contrastive retrieval as the multimodal version",
|
| 328 |
+
why: "A pattern or spectrum is a fingerprint. A classifier needs labels (crystal system, space group, phase); a contrastive pattern-structure model needs only pairs.",
|
| 329 |
+
where: "1D convolutional classifiers can be used today; the contrastive version needs the pattern encoder planned for MEIDNet.",
|
| 330 |
links: [["Recipe: XRD to structure", "recipes.html#xrd-structure", 1], ["Park et al. 2017", "https://doi.org/10.1107/S205225251700714X"]] };
|
| 331 |
}
|
| 332 |
if (I) return { st: "no", title: "An image classifier: a convolutional network or a vision transformer",
|
| 333 |
why: "Phases and microstructures can be classified from micrographs given labelled examples. This is a single-modality task outside MEIDNet.",
|
| 334 |
links: [["Microscopy images on the map", "index.html#the-multimodality-map", 1]] };
|
| 335 |
return { st: "info", title: "Identification starts from a measurement",
|
| 336 |
+
why: "Select diffraction patterns, spectra or images: the measurement to identify a structure or phase from." };
|
| 337 |
}
|
| 338 |
|
| 339 |
// combine
|
| 340 |
+
if (n < 2) return { st: "info", title: "Combining needs at least two modalities", why: "Select every kind of data available for the same materials." };
|
| 341 |
var tabular = ["structure", "xrd", "spectra", "images", "text"].every(function (k) { return !has[k]; });
|
| 342 |
notes.push("If some materials lack a modality, late fusion (one model per modality, predictions averaged) is the robust choice.");
|
| 343 |
if (tabular) return { st: "no", arch: "early-fusion", title: "Early fusion: concatenate the features into one model",
|
| 344 |
why: "Properties, formulas and conditions all become fixed-length numbers, so concatenating them is a strong and cheap baseline.",
|
| 345 |
links: [["Early fusion", "#early-fusion", 1], ["Late fusion", "#late-fusion"]] };
|
| 346 |
if (T || (n >= 3 && (X || Sp || I))) return { st: "no", arch: "cross-attention", title: "Cross-attention fusion, with a shared latent space as the cheaper start",
|
| 347 |
+
why: "Text, spectra or images next to structures have parts that interact in detail; attention learns which parts matter to which. It needs much data. A shared latent space (one encoder per modality, aligned and averaged) is a less expensive first step.",
|
| 348 |
links: [["Cross-attention", "#cross-attention", 1], ["Shared latent space", "#shared-latent"]] };
|
| 349 |
return { st: S && P && !extra.length ? "part" : "no", arch: "shared-latent", title: "Intermediate fusion: one encoder per modality into a shared space, then a prediction head",
|
| 350 |
why: "Modalities of different shapes each get the encoder that suits them, and their latents are joined. MEIDNet does this for structures and scalar properties (aligned, then averaged); a separate prediction head for another quantity is not part of it.",
|
|
|
|
| 352 |
}
|
| 353 |
|
| 354 |
function renderAdvice(r, notes) {
|
| 355 |
+
var b = '<div class="adv-card ' + r.st + '"><div class="adv-kicker">' + (r.st === "info" ? "Next step" : "Recommendation") + "</div><h4>" + r.title + "</h4>" +
|
| 356 |
"<p><b>Why.</b> " + r.why + "</p>";
|
| 357 |
if (r.steps) b += "<ol>" + r.steps.map(function (s) { return "<li>" + s + "</li>"; }).join("") + "</ol>";
|
| 358 |
if (notes.length) b += '<ul class="adv-notes">' + notes.map(function (s) { return "<li>" + s + "</li>"; }).join("") + "</ul>";
|
| 359 |
if (r.alt) b += '<p class="adv-alt">' + r.alt + "</p>";
|
| 360 |
+
var where = r.where || WHERE[r.st];
|
| 361 |
+
if (where) b += '<p class="adv-where"><b>Where to run it.</b> ' + where + "</p>";
|
| 362 |
var ls = (r.links || []).slice();
|
| 363 |
if (r.arch && !ls.some(function (l) { return l[1] === "#" + r.arch; })) ls.push(["This architecture in the Atlas", "#" + r.arch]);
|
| 364 |
if (ls.length) b += '<p class="adv-links">' + ls.map(function (l) {
|
site/benchmarks/carbon24.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1622,7 +1622,7 @@
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
-
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
+
Interpreting a candidate
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
site/benchmarks/index.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1703,7 +1703,7 @@
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
-
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
+
Interpreting a candidate
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
site/benchmarks/mp20.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1622,7 +1622,7 @@
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
-
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
+
Interpreting a candidate
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
site/benchmarks/perov5.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1703,7 +1703,7 @@
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
-
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
@@ -2370,7 +2370,7 @@ evidence level (generated โ ML filtered โ MLIP validated โ DFT validated
|
|
| 2370 |
<li>Best <code>mae_dir_gap</code>: <strong>Shipped checkpoint re-evaluated on the training split (this code)</strong> (2.78 eV), meidnet verified.</li>
|
| 2371 |
<li>Best <code>r2_dir_gap</code>: <strong>Shipped checkpoint re-evaluated on the training split (this code)</strong> (-29.8), meidnet verified.</li>
|
| 2372 |
<li>Evidence levels present: generated, MLIP validated, DFT validated. 2 of 5 rows have been reproduced here.</li>
|
| 2373 |
-
<li>2 row(s) are quoted from the paper; a verified re-run of the same checkpoint, where it exists,
|
| 2374 |
<li><strong>A re-run of <a href="results/paper-representation.html">MEIDNet (paper): alignment of structure and property latents on Perov-5</a> here did not agree</strong> (<code>cosine_matched</code> 0.97 โ 0.771; <code>l2_matched</code> 0.24 โ 0.676). The row keeps its status; see its page for the full comparison.</li>
|
| 2375 |
</ul>
|
| 2376 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
+
Interpreting a candidate
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
|
|
| 2370 |
<li>Best <code>mae_dir_gap</code>: <strong>Shipped checkpoint re-evaluated on the training split (this code)</strong> (2.78 eV), meidnet verified.</li>
|
| 2371 |
<li>Best <code>r2_dir_gap</code>: <strong>Shipped checkpoint re-evaluated on the training split (this code)</strong> (-29.8), meidnet verified.</li>
|
| 2372 |
<li>Evidence levels present: generated, MLIP validated, DFT validated. 2 of 5 rows have been reproduced here.</li>
|
| 2373 |
+
<li>2 row(s) are quoted from the paper; a verified re-run of the same checkpoint, where it exists, gives the exact numbers for this code version.</li>
|
| 2374 |
<li><strong>A re-run of <a href="results/paper-representation.html">MEIDNet (paper): alignment of structure and property latents on Perov-5</a> here did not agree</strong> (<code>cosine_matched</code> 0.97 โ 0.771; <code>l2_matched</code> 0.24 โ 0.676). The row keeps its status; see its page for the full comparison.</li>
|
| 2375 |
</ul>
|
| 2376 |
|
site/benchmarks/results/paper-inverse-design.html
CHANGED
|
@@ -693,7 +693,7 @@
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
-
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
@@ -892,7 +892,7 @@
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
-
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
@@ -1601,7 +1601,7 @@
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
-
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
|
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
+
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
+
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
+
Interpreting a candidate
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
site/benchmarks/results/paper-representation.html
CHANGED
|
@@ -693,7 +693,7 @@
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
-
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
@@ -892,7 +892,7 @@
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
-
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
@@ -1601,7 +1601,7 @@
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
-
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
|
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
+
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
+
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
+
Interpreting a candidate
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
site/benchmarks/results/paper-results-mace-screen.html
CHANGED
|
@@ -693,7 +693,7 @@
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
-
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
@@ -892,7 +892,7 @@
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
-
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
@@ -1601,7 +1601,7 @@
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
-
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
|
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
+
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
+
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
+
Interpreting a candidate
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
site/benchmarks/results/shipped-checkpoint-train-split.html
CHANGED
|
@@ -693,7 +693,7 @@
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
-
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
@@ -892,7 +892,7 @@
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
-
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
@@ -1601,7 +1601,7 @@
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
-
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
|
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
+
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
+
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
+
Interpreting a candidate
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
site/benchmarks/results/shipped-checkpoint-val-split.html
CHANGED
|
@@ -693,7 +693,7 @@
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
-
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
@@ -892,7 +892,7 @@
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
-
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
@@ -1601,7 +1601,7 @@
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
-
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
|
|
|
| 693 |
<span class="md-ellipsis">
|
| 694 |
|
| 695 |
|
| 696 |
+
MEIDNet Studio
|
| 697 |
|
| 698 |
|
| 699 |
|
|
|
|
| 892 |
<span class="md-ellipsis">
|
| 893 |
|
| 894 |
|
| 895 |
+
Capabilities
|
| 896 |
|
| 897 |
|
| 898 |
|
|
|
|
| 1601 |
<span class="md-ellipsis">
|
| 1602 |
|
| 1603 |
|
| 1604 |
+
Interpreting a candidate
|
| 1605 |
|
| 1606 |
|
| 1607 |
|
site/community/contribute.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1225,10 +1225,10 @@
|
|
| 1225 |
</li>
|
| 1226 |
|
| 1227 |
<li class="md-nav__item">
|
| 1228 |
-
<a href="#
|
| 1229 |
<span class="md-ellipsis">
|
| 1230 |
|
| 1231 |
-
|
| 1232 |
|
| 1233 |
</span>
|
| 1234 |
</a>
|
|
@@ -1692,7 +1692,7 @@
|
|
| 1692 |
<span class="md-ellipsis">
|
| 1693 |
|
| 1694 |
|
| 1695 |
-
|
| 1696 |
|
| 1697 |
|
| 1698 |
|
|
@@ -2121,10 +2121,10 @@
|
|
| 2121 |
</li>
|
| 2122 |
|
| 2123 |
<li class="md-nav__item">
|
| 2124 |
-
<a href="#
|
| 2125 |
<span class="md-ellipsis">
|
| 2126 |
|
| 2127 |
-
|
| 2128 |
|
| 2129 |
</span>
|
| 2130 |
</a>
|
|
@@ -2215,7 +2215,7 @@ version:</p>
|
|
| 2215 |
</tr>
|
| 2216 |
</tbody>
|
| 2217 |
</table>
|
| 2218 |
-
<h2 id="
|
| 2219 |
<ol>
|
| 2220 |
<li><strong>Mixing categories</strong> in one file. A representation result (MAE, Rยฒ, retrieval) and a design result (SUN rate)
|
| 2221 |
are two files.</li>
|
|
@@ -2236,12 +2236,12 @@ version:</p>
|
|
| 2236 |
</ol>
|
| 2237 |
<p><strong>Verified</strong> means <em>reproduced from the submitted configuration with this code</em>. It does not mean the material is
|
| 2238 |
real: that is what the validation level says. A re-run that does <strong>not</strong> agree is kept too
|
| 2239 |
-
(<code>benchmarks/verified/<id>.attempt.json</code>) and shown on the row's page next to the submitted numbers, so that
|
| 2240 |
-
|
| 2241 |
<p>Representation rows that are reproduced here also get their per-material predictions saved
|
| 2242 |
(<code>benchmarks/verified/<id>.predictions.csv</code>), which the pages turn into parity plots and a latent-agreement histogram.</p>
|
| 2243 |
<p>If you prefer not to open a pull request, the issue template <em>Benchmark submission</em> asks for the same fields and the
|
| 2244 |
-
maintainer converts it. Submissions are reviewed by the author of MEIDNet
|
| 2245 |
|
| 2246 |
|
| 2247 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1225 |
</li>
|
| 1226 |
|
| 1227 |
<li class="md-nav__item">
|
| 1228 |
+
<a href="#common-mistakes" class="md-nav__link">
|
| 1229 |
<span class="md-ellipsis">
|
| 1230 |
|
| 1231 |
+
Common mistakes
|
| 1232 |
|
| 1233 |
</span>
|
| 1234 |
</a>
|
|
|
|
| 1692 |
<span class="md-ellipsis">
|
| 1693 |
|
| 1694 |
|
| 1695 |
+
Interpreting a candidate
|
| 1696 |
|
| 1697 |
|
| 1698 |
|
|
|
|
| 2121 |
</li>
|
| 2122 |
|
| 2123 |
<li class="md-nav__item">
|
| 2124 |
+
<a href="#common-mistakes" class="md-nav__link">
|
| 2125 |
<span class="md-ellipsis">
|
| 2126 |
|
| 2127 |
+
Common mistakes
|
| 2128 |
|
| 2129 |
</span>
|
| 2130 |
</a>
|
|
|
|
| 2215 |
</tr>
|
| 2216 |
</tbody>
|
| 2217 |
</table>
|
| 2218 |
+
<h2 id="common-mistakes">Common mistakes<a class="headerlink" href="#common-mistakes" title="Permanent link">¶</a></h2>
|
| 2219 |
<ol>
|
| 2220 |
<li><strong>Mixing categories</strong> in one file. A representation result (MAE, Rยฒ, retrieval) and a design result (SUN rate)
|
| 2221 |
are two files.</li>
|
|
|
|
| 2236 |
</ol>
|
| 2237 |
<p><strong>Verified</strong> means <em>reproduced from the submitted configuration with this code</em>. It does not mean the material is
|
| 2238 |
real: that is what the validation level says. A re-run that does <strong>not</strong> agree is kept too
|
| 2239 |
+
(<code>benchmarks/verified/<id>.attempt.json</code>) and shown on the row's page next to the submitted numbers, so that
|
| 2240 |
+
disagreements are visible. This applies to the paper's own rows as well.</p>
|
| 2241 |
<p>Representation rows that are reproduced here also get their per-material predictions saved
|
| 2242 |
(<code>benchmarks/verified/<id>.predictions.csv</code>), which the pages turn into parity plots and a latent-agreement histogram.</p>
|
| 2243 |
<p>If you prefer not to open a pull request, the issue template <em>Benchmark submission</em> asks for the same fields and the
|
| 2244 |
+
maintainer converts it. Submissions are reviewed by the author of MEIDNet.</p>
|
| 2245 |
|
| 2246 |
|
| 2247 |
|
site/community/index.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1622,7 +1622,7 @@
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
-
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
+
Interpreting a candidate
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
site/examples/double-perovskite.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1612,7 +1612,7 @@
|
|
| 1612 |
<span class="md-ellipsis">
|
| 1613 |
|
| 1614 |
|
| 1615 |
-
|
| 1616 |
|
| 1617 |
|
| 1618 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1612 |
<span class="md-ellipsis">
|
| 1613 |
|
| 1614 |
|
| 1615 |
+
Interpreting a candidate
|
| 1616 |
|
| 1617 |
|
| 1618 |
|
site/examples/perov5.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1612,7 +1612,7 @@
|
|
| 1612 |
<span class="md-ellipsis">
|
| 1613 |
|
| 1614 |
|
| 1615 |
-
|
| 1616 |
|
| 1617 |
|
| 1618 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1612 |
<span class="md-ellipsis">
|
| 1613 |
|
| 1614 |
|
| 1615 |
+
Interpreting a candidate
|
| 1616 |
|
| 1617 |
|
| 1618 |
|
site/explore/capabilities.html
CHANGED
|
@@ -27,7 +27,7 @@
|
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
-
<title>Capabilities
|
| 31 |
|
| 32 |
|
| 33 |
|
|
@@ -80,7 +80,7 @@
|
|
| 80 |
<div data-md-component="skip">
|
| 81 |
|
| 82 |
|
| 83 |
-
<a href="#capabilities
|
| 84 |
Skip to content
|
| 85 |
</a>
|
| 86 |
|
|
@@ -113,7 +113,7 @@
|
|
| 113 |
<div class="md-header__topic" data-md-component="header-topic">
|
| 114 |
<span class="md-ellipsis">
|
| 115 |
|
| 116 |
-
Capabilities
|
| 117 |
|
| 118 |
</span>
|
| 119 |
</div>
|
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -912,7 +912,7 @@
|
|
| 912 |
<span class="md-ellipsis">
|
| 913 |
|
| 914 |
|
| 915 |
-
Capabilities
|
| 916 |
|
| 917 |
|
| 918 |
|
|
@@ -930,7 +930,7 @@
|
|
| 930 |
<span class="md-ellipsis">
|
| 931 |
|
| 932 |
|
| 933 |
-
Capabilities
|
| 934 |
|
| 935 |
|
| 936 |
|
|
@@ -1736,7 +1736,7 @@
|
|
| 1736 |
<span class="md-ellipsis">
|
| 1737 |
|
| 1738 |
|
| 1739 |
-
|
| 1740 |
|
| 1741 |
|
| 1742 |
|
|
@@ -2250,8 +2250,8 @@
|
|
| 2250 |
|
| 2251 |
|
| 2252 |
|
| 2253 |
-
<h1 id="capabilities
|
| 2254 |
-
<p>
|
| 2255 |
<h2 id="modalities">Modalities<a class="headerlink" href="#modalities" title="Permanent link">¶</a></h2>
|
| 2256 |
<table>
|
| 2257 |
<thead>
|
|
@@ -2300,7 +2300,7 @@
|
|
| 2300 |
</tbody>
|
| 2301 |
</table>
|
| 2302 |
<h2 id="fusion">Fusion<a class="headerlink" href="#fusion" title="Permanent link">¶</a></h2>
|
| 2303 |
-
<p>
|
| 2304 |
<h2 id="input-formats">Input formats<a class="headerlink" href="#input-formats" title="Permanent link">¶</a></h2>
|
| 2305 |
<table>
|
| 2306 |
<thead>
|
|
|
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
+
<title>Capabilities - MEIDNet Prism</title>
|
| 31 |
|
| 32 |
|
| 33 |
|
|
|
|
| 80 |
<div data-md-component="skip">
|
| 81 |
|
| 82 |
|
| 83 |
+
<a href="#capabilities" class="md-skip">
|
| 84 |
Skip to content
|
| 85 |
</a>
|
| 86 |
|
|
|
|
| 113 |
<div class="md-header__topic" data-md-component="header-topic">
|
| 114 |
<span class="md-ellipsis">
|
| 115 |
|
| 116 |
+
Capabilities
|
| 117 |
|
| 118 |
</span>
|
| 119 |
</div>
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 912 |
<span class="md-ellipsis">
|
| 913 |
|
| 914 |
|
| 915 |
+
Capabilities
|
| 916 |
|
| 917 |
|
| 918 |
|
|
|
|
| 930 |
<span class="md-ellipsis">
|
| 931 |
|
| 932 |
|
| 933 |
+
Capabilities
|
| 934 |
|
| 935 |
|
| 936 |
|
|
|
|
| 1736 |
<span class="md-ellipsis">
|
| 1737 |
|
| 1738 |
|
| 1739 |
+
Interpreting a candidate
|
| 1740 |
|
| 1741 |
|
| 1742 |
|
|
|
|
| 2250 |
|
| 2251 |
|
| 2252 |
|
| 2253 |
+
<h1 id="capabilities">Capabilities<a class="headerlink" href="#capabilities" title="Permanent link">¶</a></h1>
|
| 2254 |
+
<p>This page is generated from the code. <strong>Available</strong>: in this release. <strong>Community-tested</strong>: used by a benchmark result reproduced here. <strong>Planned</strong>: on the <a href="../understand/limits.html">roadmap</a>, not yet implemented.</p>
|
| 2255 |
<h2 id="modalities">Modalities<a class="headerlink" href="#modalities" title="Permanent link">¶</a></h2>
|
| 2256 |
<table>
|
| 2257 |
<thead>
|
|
|
|
| 2300 |
</tbody>
|
| 2301 |
</table>
|
| 2302 |
<h2 id="fusion">Fusion<a class="headerlink" href="#fusion" title="Permanent link">¶</a></h2>
|
| 2303 |
+
<p>The structure latent and the property latent of a material are averaged into the joint latent (<code>meidnet/model.py</code>); the paper calls this early fusion. The two latents are first aligned by a contrastive loss whose weight increases over <code>training.contrastive_warmup_epochs</code> (the curriculum of the paper). Other fusion schemes are compared in the <a href="../learn/architectures.html">Architecture Atlas</a>.</p>
|
| 2304 |
<h2 id="input-formats">Input formats<a class="headerlink" href="#input-formats" title="Permanent link">¶</a></h2>
|
| 2305 |
<table>
|
| 2306 |
<thead>
|
site/explore/databases.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -1071,7 +1071,7 @@
|
|
| 1071 |
<span class="md-ellipsis">
|
| 1072 |
|
| 1073 |
|
| 1074 |
-
Capabilities
|
| 1075 |
|
| 1076 |
|
| 1077 |
|
|
@@ -1780,7 +1780,7 @@
|
|
| 1780 |
<span class="md-ellipsis">
|
| 1781 |
|
| 1782 |
|
| 1783 |
-
|
| 1784 |
|
| 1785 |
|
| 1786 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 1071 |
<span class="md-ellipsis">
|
| 1072 |
|
| 1073 |
|
| 1074 |
+
Capabilities
|
| 1075 |
|
| 1076 |
|
| 1077 |
|
|
|
|
| 1780 |
<span class="md-ellipsis">
|
| 1781 |
|
| 1782 |
|
| 1783 |
+
Interpreting a candidate
|
| 1784 |
|
| 1785 |
|
| 1786 |
|
site/explore/datasets.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -911,10 +911,10 @@
|
|
| 911 |
</li>
|
| 912 |
|
| 913 |
<li class="md-nav__item">
|
| 914 |
-
<a href="#
|
| 915 |
<span class="md-ellipsis">
|
| 916 |
|
| 917 |
-
|
| 918 |
|
| 919 |
</span>
|
| 920 |
</a>
|
|
@@ -972,7 +972,7 @@
|
|
| 972 |
<span class="md-ellipsis">
|
| 973 |
|
| 974 |
|
| 975 |
-
Capabilities
|
| 976 |
|
| 977 |
|
| 978 |
|
|
@@ -1681,7 +1681,7 @@
|
|
| 1681 |
<span class="md-ellipsis">
|
| 1682 |
|
| 1683 |
|
| 1684 |
-
|
| 1685 |
|
| 1686 |
|
| 1687 |
|
|
@@ -2110,10 +2110,10 @@
|
|
| 2110 |
</li>
|
| 2111 |
|
| 2112 |
<li class="md-nav__item">
|
| 2113 |
-
<a href="#
|
| 2114 |
<span class="md-ellipsis">
|
| 2115 |
|
| 2116 |
-
|
| 2117 |
|
| 2118 |
</span>
|
| 2119 |
</a>
|
|
@@ -2141,9 +2141,8 @@
|
|
| 2141 |
|
| 2142 |
|
| 2143 |
<h1 id="datasets">Datasets<a class="headerlink" href="#datasets" title="Permanent link">¶</a></h1>
|
| 2144 |
-
<p>Datasets
|
| 2145 |
-
|
| 2146 |
-
(see <a href="../benchmarks/index.html">Benchmarks</a>).</p>
|
| 2147 |
<table>
|
| 2148 |
<thead>
|
| 2149 |
<tr>
|
|
@@ -2151,7 +2150,7 @@ across datasets</strong>: the tasks, sizes and properties differ, so results are
|
|
| 2151 |
<th>structures</th>
|
| 2152 |
<th>properties used</th>
|
| 2153 |
<th>size</th>
|
| 2154 |
-
<th>
|
| 2155 |
</tr>
|
| 2156 |
</thead>
|
| 2157 |
<tbody>
|
|
@@ -2160,35 +2159,35 @@ across datasets</strong>: the tasks, sizes and properties differ, so results are
|
|
| 2160 |
<td>cubic ABXโ perovskites, 5 atoms per cell</td>
|
| 2161 |
<td>direct band gap, formation enthalpy</td>
|
| 2162 |
<td>18,928</td>
|
| 2163 |
-
<td>
|
| 2164 |
</tr>
|
| 2165 |
<tr>
|
| 2166 |
<td><a href="#mp-20">MP-20</a></td>
|
| 2167 |
<td>Materials Project, up to 20 atoms</td>
|
| 2168 |
<td>none aligned in the paper</td>
|
| 2169 |
<td>about 45,000</td>
|
| 2170 |
-
<td>
|
| 2171 |
</tr>
|
| 2172 |
<tr>
|
| 2173 |
<td><a href="#carbon-24">Carbon-24</a></td>
|
| 2174 |
<td>carbon allotropes, up to 24 atoms</td>
|
| 2175 |
<td>none aligned in the paper</td>
|
| 2176 |
<td>about 10,000</td>
|
| 2177 |
-
<td>
|
| 2178 |
</tr>
|
| 2179 |
<tr>
|
| 2180 |
<td><a href="../examples/double-perovskite.html">Double perovskites AโBBโฒXโ</a></td>
|
| 2181 |
<td>a family file, no dataset</td>
|
| 2182 |
<td>none</td>
|
| 2183 |
<td>10,800 compositions (halide variant)</td>
|
| 2184 |
-
<td>
|
| 2185 |
</tr>
|
| 2186 |
<tr>
|
| 2187 |
<td><a href="#your-dataset">Your dataset</a></td>
|
| 2188 |
<td>one material family</td>
|
| 2189 |
<td>any scalar columns</td>
|
| 2190 |
<td>any</td>
|
| 2191 |
-
<td>
|
| 2192 |
</tr>
|
| 2193 |
</tbody>
|
| 2194 |
</table>
|
|
@@ -2211,9 +2210,8 @@ with MACE and validated by DFT).</p>
|
|
| 2211 |
the <a href="https://babu09-meidnet.hf.space/studio/">live Studio</a>.</p>
|
| 2212 |
<p><strong>Suitable tasks:</strong> inverse design from a band gap and a stability target ยท property prediction from the
|
| 2213 |
structure ยท structureโproperty retrieval ยท measuring how well two modalities align.</p>
|
| 2214 |
-
<p><strong>
|
| 2215 |
-
|
| 2216 |
-
โ benchmark results.</p>
|
| 2217 |
<p><a class="md-button md-button--primary" href="https://babu09-meidnet.hf.space/studio/">Open in the Studio</a></p>
|
| 2218 |
<p><a href="../benchmarks/perov5.html">Benchmark results</a> ยท <a href="../examples/perov5.html">The paper's experiment</a> ยท
|
| 2219 |
<a href="https://github.com/txie-93/cdvae/tree/main/data/perov_5">Dataset source (CDVAE)</a> ยท
|
|
@@ -2245,10 +2243,10 @@ or one <code>.cif</code> file per id) can be used directly: upload it in the <a
|
|
| 2245 |
or run <code>meidnet init</code> โ <code>check</code> โ <code>train</code> โ <code>generate</code> (<a href="../use/your-data.html">bring your own dataset</a>).
|
| 2246 |
The structures must belong to one <a href="../reference/families.html">material family</a> (prototype + site groups), which is
|
| 2247 |
what the rules and the search need.</p>
|
| 2248 |
-
<h2 id="
|
| 2249 |
-
<p>Battery conductors, MOFs, 2D materials and spinels are natural next families.
|
| 2250 |
-
<a href="../community/contribute.html">
|
| 2251 |
-
|
| 2252 |
|
| 2253 |
|
| 2254 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 911 |
</li>
|
| 912 |
|
| 913 |
<li class="md-nav__item">
|
| 914 |
+
<a href="#next-datasets" class="md-nav__link">
|
| 915 |
<span class="md-ellipsis">
|
| 916 |
|
| 917 |
+
Next datasets
|
| 918 |
|
| 919 |
</span>
|
| 920 |
</a>
|
|
|
|
| 972 |
<span class="md-ellipsis">
|
| 973 |
|
| 974 |
|
| 975 |
+
Capabilities
|
| 976 |
|
| 977 |
|
| 978 |
|
|
|
|
| 1681 |
<span class="md-ellipsis">
|
| 1682 |
|
| 1683 |
|
| 1684 |
+
Interpreting a candidate
|
| 1685 |
|
| 1686 |
|
| 1687 |
|
|
|
|
| 2110 |
</li>
|
| 2111 |
|
| 2112 |
<li class="md-nav__item">
|
| 2113 |
+
<a href="#next-datasets" class="md-nav__link">
|
| 2114 |
<span class="md-ellipsis">
|
| 2115 |
|
| 2116 |
+
Next datasets
|
| 2117 |
|
| 2118 |
</span>
|
| 2119 |
</a>
|
|
|
|
| 2141 |
|
| 2142 |
|
| 2143 |
<h1 id="datasets">Datasets<a class="headerlink" href="#datasets" title="Permanent link">¶</a></h1>
|
| 2144 |
+
<p>Datasets used with MEIDNet and what has been done with each. Tasks, sizes and properties differ from one dataset to
|
| 2145 |
+
the next, so results are compared within a dataset only (see <a href="../benchmarks/index.html">Benchmarks</a>).</p>
|
|
|
|
| 2146 |
<table>
|
| 2147 |
<thead>
|
| 2148 |
<tr>
|
|
|
|
| 2150 |
<th>structures</th>
|
| 2151 |
<th>properties used</th>
|
| 2152 |
<th>size</th>
|
| 2153 |
+
<th>available here</th>
|
| 2154 |
</tr>
|
| 2155 |
</thead>
|
| 2156 |
<tbody>
|
|
|
|
| 2159 |
<td>cubic ABXโ perovskites, 5 atoms per cell</td>
|
| 2160 |
<td>direct band gap, formation enthalpy</td>
|
| 2161 |
<td>18,928</td>
|
| 2162 |
+
<td>pretrained model, configuration, tutorial, benchmark results</td>
|
| 2163 |
</tr>
|
| 2164 |
<tr>
|
| 2165 |
<td><a href="#mp-20">MP-20</a></td>
|
| 2166 |
<td>Materials Project, up to 20 atoms</td>
|
| 2167 |
<td>none aligned in the paper</td>
|
| 2168 |
<td>about 45,000</td>
|
| 2169 |
+
<td>structure-representation results in the paper</td>
|
| 2170 |
</tr>
|
| 2171 |
<tr>
|
| 2172 |
<td><a href="#carbon-24">Carbon-24</a></td>
|
| 2173 |
<td>carbon allotropes, up to 24 atoms</td>
|
| 2174 |
<td>none aligned in the paper</td>
|
| 2175 |
<td>about 10,000</td>
|
| 2176 |
+
<td>structure-representation results in the paper</td>
|
| 2177 |
</tr>
|
| 2178 |
<tr>
|
| 2179 |
<td><a href="../examples/double-perovskite.html">Double perovskites AโBBโฒXโ</a></td>
|
| 2180 |
<td>a family file, no dataset</td>
|
| 2181 |
<td>none</td>
|
| 2182 |
<td>10,800 compositions (halide variant)</td>
|
| 2183 |
+
<td>design space and rules</td>
|
| 2184 |
</tr>
|
| 2185 |
<tr>
|
| 2186 |
<td><a href="#your-dataset">Your dataset</a></td>
|
| 2187 |
<td>one material family</td>
|
| 2188 |
<td>any scalar columns</td>
|
| 2189 |
<td>any</td>
|
| 2190 |
+
<td>upload in the Studio, or the command line</td>
|
| 2191 |
</tr>
|
| 2192 |
</tbody>
|
| 2193 |
</table>
|
|
|
|
| 2210 |
the <a href="https://babu09-meidnet.hf.space/studio/">live Studio</a>.</p>
|
| 2211 |
<p><strong>Suitable tasks:</strong> inverse design from a band gap and a stability target ยท property prediction from the
|
| 2212 |
structure ยท structureโproperty retrieval ยท measuring how well two modalities align.</p>
|
| 2213 |
+
<p><strong>Available here:</strong> pretrained model ยท configuration (<code>examples/perov5/meidnet.yaml</code>) ยท
|
| 2214 |
+
tutorial (<a href="../examples/perov5.html">the paper's experiment</a>, <a href="../start/colab.html">Colab</a>) ยท benchmark results.</p>
|
|
|
|
| 2215 |
<p><a class="md-button md-button--primary" href="https://babu09-meidnet.hf.space/studio/">Open in the Studio</a></p>
|
| 2216 |
<p><a href="../benchmarks/perov5.html">Benchmark results</a> ยท <a href="../examples/perov5.html">The paper's experiment</a> ยท
|
| 2217 |
<a href="https://github.com/txie-93/cdvae/tree/main/data/perov_5">Dataset source (CDVAE)</a> ยท
|
|
|
|
| 2243 |
or run <code>meidnet init</code> โ <code>check</code> โ <code>train</code> โ <code>generate</code> (<a href="../use/your-data.html">bring your own dataset</a>).
|
| 2244 |
The structures must belong to one <a href="../reference/families.html">material family</a> (prototype + site groups), which is
|
| 2245 |
what the rules and the search need.</p>
|
| 2246 |
+
<h2 id="next-datasets">Next datasets<a class="headerlink" href="#next-datasets" title="Permanent link">¶</a></h2>
|
| 2247 |
+
<p>Battery conductors, MOFs, 2D materials and spinels are natural next families. Results on any of them can be
|
| 2248 |
+
<a href="../community/contribute.html">contributed</a>: the dataset gets its own benchmark page, and a result reproduced here is
|
| 2249 |
+
marked as verified.</p>
|
| 2250 |
|
| 2251 |
|
| 2252 |
|
site/index.html
CHANGED
|
@@ -540,10 +540,10 @@
|
|
| 540 |
</li>
|
| 541 |
|
| 542 |
<li class="md-nav__item">
|
| 543 |
-
<a href="#
|
| 544 |
<span class="md-ellipsis">
|
| 545 |
|
| 546 |
-
|
| 547 |
|
| 548 |
</span>
|
| 549 |
</a>
|
|
@@ -777,7 +777,7 @@
|
|
| 777 |
<span class="md-ellipsis">
|
| 778 |
|
| 779 |
|
| 780 |
-
MEIDNet Studio
|
| 781 |
|
| 782 |
|
| 783 |
|
|
@@ -976,7 +976,7 @@
|
|
| 976 |
<span class="md-ellipsis">
|
| 977 |
|
| 978 |
|
| 979 |
-
Capabilities
|
| 980 |
|
| 981 |
|
| 982 |
|
|
@@ -1685,7 +1685,7 @@
|
|
| 1685 |
<span class="md-ellipsis">
|
| 1686 |
|
| 1687 |
|
| 1688 |
-
|
| 1689 |
|
| 1690 |
|
| 1691 |
|
|
@@ -2114,10 +2114,10 @@
|
|
| 2114 |
</li>
|
| 2115 |
|
| 2116 |
<li class="md-nav__item">
|
| 2117 |
-
<a href="#
|
| 2118 |
<span class="md-ellipsis">
|
| 2119 |
|
| 2120 |
-
|
| 2121 |
|
| 2122 |
</span>
|
| 2123 |
</a>
|
|
@@ -2160,7 +2160,8 @@
|
|
| 2160 |
<h1 id="meidnet-prism">MEIDNet Prism<a class="headerlink" href="#meidnet-prism" title="Permanent link">¶</a></h1>
|
| 2161 |
<p><a href="https://babu09-meidnet.hf.space/">โ MEIDNet Prism home</a> ยท the documentation of the MEIDNet framework and its platform.</p>
|
| 2162 |
<p><strong>Learn, build and benchmark multimodal AI for materials discovery.</strong> MEIDNet is the reference implementation:
|
| 2163 |
-
it designs crystalline materials from target properties,
|
|
|
|
| 2164 |
<div class="highlight"><pre><span></span><code> Learn โโโบ Architectures โโโบ Build โโโบ Datasets โโโบ Benchmarks โโโบ Community
|
| 2165 |
what is which design MEIDNet data that results with share and
|
| 2166 |
multimodal fits your data Studio works evidence reproduce
|
|
@@ -2197,22 +2198,22 @@ that recommends one for your data and goal.</p>
|
|
| 2197 |
<li>
|
| 2198 |
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 16.5v-9l6 4.5M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2"/></svg></span> <strong>Try MEIDNet</strong></p>
|
| 2199 |
<hr />
|
| 2200 |
-
<p>
|
| 2201 |
-
<code>meidnet demo</code> runs on
|
| 2202 |
<p><a href="start/quickstart.html"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> 5-minute quickstart</a></p>
|
| 2203 |
</li>
|
| 2204 |
<li>
|
| 2205 |
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3C8.59 3 5.69 4.07 4.54 5.57l5.25 5.25c.71.11 1.43.18 2.21.18 4.42 0 8-1.79 8-4s-3.58-4-8-4M3.92 7.08 2.5 8.5 5 11H0v2h5l-2.5 2.5 1.42 1.42L8.84 12M20 9c0 2.21-3.58 4-8 4-.66 0-1.3-.05-1.91-.13l-2.47 2.47c1.26.41 2.76.66 4.38.66 4.42 0 8-1.79 8-4m0 2c0 2.21-3.58 4-8 4-2.28 0-4.33-.5-5.79-1.25l-1.68 1.68C5.68 19.93 8.59 21 12 21c4.42 0 8-1.79 8-4"/></svg></span> <strong>Use MEIDNet on my data</strong></p>
|
| 2206 |
<hr />
|
| 2207 |
-
<p>A table with an id,
|
| 2208 |
-
|
| 2209 |
<p><a href="use/your-data.html"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Bring your own dataset</a></p>
|
| 2210 |
</li>
|
| 2211 |
<li>
|
| 2212 |
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"/></svg></span> <strong>Change what it does</strong></p>
|
| 2213 |
<hr />
|
| 2214 |
-
<p>Targets, elements, rules
|
| 2215 |
-
MEIDNet Studio
|
| 2216 |
<p><a href="recipes/change-targets.html"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Recipes</a></p>
|
| 2217 |
</li>
|
| 2218 |
<li>
|
|
@@ -2229,9 +2230,9 @@ and where the limits are.</p>
|
|
| 2229 |
table shared prototype hard property latent CIFs + report
|
| 2230 |
+ CIFs latent + sites checks goals optimisation
|
| 2231 |
</code></pre></div>
|
| 2232 |
-
<p>Each block is a setting in <code>meidnet.yaml</code>, a node in <a href="use/studio.html">MEIDNet Studio</a>
|
| 2233 |
-
|
| 2234 |
-
<h2 id="
|
| 2235 |
<ul>
|
| 2236 |
<li>Generation works for <strong>prototype families</strong>: a fixed arrangement of sites whose occupants and cell size are
|
| 2237 |
chosen (ABXโ perovskites, AโBBโฒXโ double perovskites, and anything you describe the same way). MEIDNet does
|
|
@@ -2243,6 +2244,11 @@ block immediately shows its effect on the ones after it โ and a section in the
|
|
| 2243 |
<p>A. Babu, R. Almeida Gouvรชa, P. Vandergheynst, G.-M. Rignanese, <em>MEIDNet: Multimodal generative AI framework for
|
| 2244 |
inverse materials design</em>, npj Computational Materials (2026). <a href="research/paper.html">Citation and benchmarks</a> ยท
|
| 2245 |
<a href="https://github.com/ABnano/MEIDNet/releases/tag/v1.0.0-paper">code as published (v1.0)</a>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2246 |
|
| 2247 |
|
| 2248 |
|
|
|
|
| 540 |
</li>
|
| 541 |
|
| 542 |
<li class="md-nav__item">
|
| 543 |
+
<a href="#scope" class="md-nav__link">
|
| 544 |
<span class="md-ellipsis">
|
| 545 |
|
| 546 |
+
Scope
|
| 547 |
|
| 548 |
</span>
|
| 549 |
</a>
|
|
|
|
| 777 |
<span class="md-ellipsis">
|
| 778 |
|
| 779 |
|
| 780 |
+
MEIDNet Studio
|
| 781 |
|
| 782 |
|
| 783 |
|
|
|
|
| 976 |
<span class="md-ellipsis">
|
| 977 |
|
| 978 |
|
| 979 |
+
Capabilities
|
| 980 |
|
| 981 |
|
| 982 |
|
|
|
|
| 1685 |
<span class="md-ellipsis">
|
| 1686 |
|
| 1687 |
|
| 1688 |
+
Interpreting a candidate
|
| 1689 |
|
| 1690 |
|
| 1691 |
|
|
|
|
| 2114 |
</li>
|
| 2115 |
|
| 2116 |
<li class="md-nav__item">
|
| 2117 |
+
<a href="#scope" class="md-nav__link">
|
| 2118 |
<span class="md-ellipsis">
|
| 2119 |
|
| 2120 |
+
Scope
|
| 2121 |
|
| 2122 |
</span>
|
| 2123 |
</a>
|
|
|
|
| 2160 |
<h1 id="meidnet-prism">MEIDNet Prism<a class="headerlink" href="#meidnet-prism" title="Permanent link">¶</a></h1>
|
| 2161 |
<p><a href="https://babu09-meidnet.hf.space/">โ MEIDNet Prism home</a> ยท the documentation of the MEIDNet framework and its platform.</p>
|
| 2162 |
<p><strong>Learn, build and benchmark multimodal AI for materials discovery.</strong> MEIDNet is the reference implementation:
|
| 2163 |
+
it designs crystalline materials from target properties, using your own data and rules, configured in one YAML
|
| 2164 |
+
file or in the Studio.</p>
|
| 2165 |
<div class="highlight"><pre><span></span><code> Learn โโโบ Architectures โโโบ Build โโโบ Datasets โโโบ Benchmarks โโโบ Community
|
| 2166 |
what is which design MEIDNet data that results with share and
|
| 2167 |
multimodal fits your data Studio works evidence reproduce
|
|
|
|
| 2198 |
<li>
|
| 2199 |
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 16.5v-9l6 4.5M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2"/></svg></span> <strong>Try MEIDNet</strong></p>
|
| 2200 |
<hr />
|
| 2201 |
+
<p>The <a href="https://babu09-meidnet.hf.space/studio/">live Studio</a> runs in the browser without installation;
|
| 2202 |
+
<code>meidnet demo</code> runs on a laptop CPU.</p>
|
| 2203 |
<p><a href="start/quickstart.html"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> 5-minute quickstart</a></p>
|
| 2204 |
</li>
|
| 2205 |
<li>
|
| 2206 |
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3C8.59 3 5.69 4.07 4.54 5.57l5.25 5.25c.71.11 1.43.18 2.21.18 4.42 0 8-1.79 8-4s-3.58-4-8-4M3.92 7.08 2.5 8.5 5 11H0v2h5l-2.5 2.5 1.42 1.42L8.84 12M20 9c0 2.21-3.58 4-8 4-.66 0-1.3-.05-1.91-.13l-2.47 2.47c1.26.41 2.76.66 4.38.66 4.42 0 8-1.79 8-4m0 2c0 2.21-3.58 4-8 4-2.28 0-4.33-.5-5.79-1.25l-1.68 1.68C5.68 19.93 8.59 21 12 21c4.42 0 8-1.79 8-4"/></svg></span> <strong>Use MEIDNet on my data</strong></p>
|
| 2207 |
<hr />
|
| 2208 |
+
<p>A table with an id, property columns and CIFs. Four commands lead from a data check to
|
| 2209 |
+
candidates with reports.</p>
|
| 2210 |
<p><a href="use/your-data.html"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Bring your own dataset</a></p>
|
| 2211 |
</li>
|
| 2212 |
<li>
|
| 2213 |
<p><span class="twemoji lg middle"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"/></svg></span> <strong>Change what it does</strong></p>
|
| 2214 |
<hr />
|
| 2215 |
+
<p>Targets, elements, rules and family are set in one YAML file, or with the controls of
|
| 2216 |
+
MEIDNet Studio, which exports the same file.</p>
|
| 2217 |
<p><a href="recipes/change-targets.html"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.22 19.03a.75.75 0 0 1 0-1.06L18.19 13H3.75a.75.75 0 0 1 0-1.5h14.44l-4.97-4.97a.749.749 0 0 1 .326-1.275.75.75 0 0 1 .734.215l6.25 6.25a.75.75 0 0 1 0 1.06l-6.25 6.25a.75.75 0 0 1-1.06 0"/></svg></span> Recipes</a></p>
|
| 2218 |
</li>
|
| 2219 |
<li>
|
|
|
|
| 2230 |
table shared prototype hard property latent CIFs + report
|
| 2231 |
+ CIFs latent + sites checks goals optimisation
|
| 2232 |
</code></pre></div>
|
| 2233 |
+
<p>Each block is a setting in <code>meidnet.yaml</code>, a node in <a href="use/studio.html">MEIDNet Studio</a>, where a change in one block
|
| 2234 |
+
updates the blocks after it, and a section in the HTML report that each step writes.</p>
|
| 2235 |
+
<h2 id="scope">Scope<a class="headerlink" href="#scope" title="Permanent link">¶</a></h2>
|
| 2236 |
<ul>
|
| 2237 |
<li>Generation works for <strong>prototype families</strong>: a fixed arrangement of sites whose occupants and cell size are
|
| 2238 |
chosen (ABXโ perovskites, AโBBโฒXโ double perovskites, and anything you describe the same way). MEIDNet does
|
|
|
|
| 2244 |
<p>A. Babu, R. Almeida Gouvรชa, P. Vandergheynst, G.-M. Rignanese, <em>MEIDNet: Multimodal generative AI framework for
|
| 2245 |
inverse materials design</em>, npj Computational Materials (2026). <a href="research/paper.html">Citation and benchmarks</a> ยท
|
| 2246 |
<a href="https://github.com/ABnano/MEIDNet/releases/tag/v1.0.0-paper">code as published (v1.0)</a>.</p>
|
| 2247 |
+
<p>Further reading: A. Babu, N. M. A. Krishnan, <em>Multimodal and cross-modal learning techniques</em>, APL Machine
|
| 2248 |
+
Learning <strong>4</strong>, 030901 (2026), <a href="https://doi.org/10.1063/5.0346744">doi:10.1063/5.0346744</a> ยท A. Babu,
|
| 2249 |
+
R. Almeida Gouvรชa, G.-M. Rignanese, <em>Toward automated discovery with generative models multimodal learning and
|
| 2250 |
+
closed loop workflows in inverse materials design</em>, Cell Reports Physical Science <strong>7</strong>, 103561 (2026),
|
| 2251 |
+
<a href="https://doi.org/10.1016/j.xcrp.2026.103561">doi:10.1016/j.xcrp.2026.103561</a>.</p>
|
| 2252 |
|
| 2253 |
|
| 2254 |
|
site/learn/architectures.html
CHANGED
|
@@ -845,7 +845,7 @@
|
|
| 845 |
<span class="md-ellipsis">
|
| 846 |
|
| 847 |
|
| 848 |
-
MEIDNet Studio
|
| 849 |
|
| 850 |
|
| 851 |
|
|
@@ -1044,7 +1044,7 @@
|
|
| 1044 |
<span class="md-ellipsis">
|
| 1045 |
|
| 1046 |
|
| 1047 |
-
Capabilities
|
| 1048 |
|
| 1049 |
|
| 1050 |
|
|
@@ -1753,7 +1753,7 @@
|
|
| 1753 |
<span class="md-ellipsis">
|
| 1754 |
|
| 1755 |
|
| 1756 |
-
|
| 1757 |
|
| 1758 |
|
| 1759 |
|
|
@@ -2290,10 +2290,12 @@
|
|
| 2290 |
|
| 2291 |
|
| 2292 |
<h1 id="architecture-atlas">Architecture Atlas<a class="headerlink" href="#architecture-atlas" title="Permanent link">¶</a></h1>
|
| 2293 |
-
<p>Five ways to build a model from several modalities, drawn the same way: inputs on the left,
|
| 2294 |
-
|
| 2295 |
-
|
| 2296 |
-
<
|
|
|
|
|
|
|
| 2297 |
<div class="atlas">
|
| 2298 |
<div class="atlas-card">
|
| 2299 |
<div class="atlas-fig"><svg class="ad" viewBox="0 0 360 132" role="img" aria-label="Early fusion: features of two modalities are concatenated and given to one model">
|
|
@@ -2310,7 +2312,6 @@ MEIDNet implements it. At the end, <a href="#advisor">the advisor</a> recommends
|
|
| 2310 |
</svg></div>
|
| 2311 |
<div class="atlas-body">
|
| 2312 |
<h3 id="early-fusion">Early fusion<a class="headerlink" href="#early-fusion" title="Permanent link">¶</a></h3>
|
| 2313 |
-
<p><span class="mstatus no">Not in MEIDNet</span></p>
|
| 2314 |
<p><strong>Idea.</strong> Join the modalities at the input: turn each into features, concatenate them into one vector, train one
|
| 2315 |
model on it.</p>
|
| 2316 |
<p><strong>When it fits.</strong> Every material has every modality; the features have a fixed length and similar scales; you want
|
|
@@ -2340,7 +2341,6 @@ pattern, concatenated and given to a gradient-boosted regressor.</p>
|
|
| 2340 |
</svg></div>
|
| 2341 |
<div class="atlas-body">
|
| 2342 |
<h3 id="late-fusion">Late fusion<a class="headerlink" href="#late-fusion" title="Permanent link">¶</a></h3>
|
| 2343 |
-
<p><span class="mstatus no">Not in MEIDNet</span></p>
|
| 2344 |
<p><strong>Idea.</strong> One model per modality, each makes its own prediction; the predictions are combined by averaging, voting
|
| 2345 |
or a small model on top.</p>
|
| 2346 |
<p><strong>When it fits.</strong> Modalities are often missing, models for each already exist, or robustness matters more than
|
|
@@ -2373,7 +2373,6 @@ phase label; the final label averages their probabilities.</p>
|
|
| 2373 |
</svg></div>
|
| 2374 |
<div class="atlas-body">
|
| 2375 |
<h3 id="shared-latent">Shared latent space (joint and coordinated)<a class="headerlink" href="#shared-latent" title="Permanent link">¶</a></h3>
|
| 2376 |
-
<p><span class="mstatus core">Core idea used by MEIDNet</span> <span class="mstatus sup">Supported</span></p>
|
| 2377 |
<p><strong>Idea.</strong> One encoder per modality maps into a common space. In a <em>coordinated</em> representation the latents stay
|
| 2378 |
separate but are trained to agree; in a <em>joint</em> representation they are merged into one vector that the decoders
|
| 2379 |
read. MEIDNet does both: the structure latent and the property latent are aligned by
|
|
@@ -2386,7 +2385,8 @@ encoder that suits its shape.
|
|
| 2386 |
<strong>Weaknesses.</strong> Needs paired data. The space is only as good as the alignment. Several losses must be balanced.</p>
|
| 2387 |
<p><strong>Materials example.</strong> MEIDNet: crystal structures and DFT properties of 18,928 cubic perovskites, searched for
|
| 2388 |
compositions with a target band gap and formation enthalpy (<a href="../examples/perov5.html">the paper's experiment</a>).</p>
|
| 2389 |
-
<p><em>References:</em> Ngiam <em>et al.</em> 2011; Baltruลกaitis <em>et al.</em> 2019; Babu <em>et al.</em> 2026; Moro, Loh <em>et al.</em> 2025
|
|
|
|
| 2390 |
</div>
|
| 2391 |
</div>
|
| 2392 |
<div class="atlas-card">
|
|
@@ -2406,7 +2406,6 @@ compositions with a target band gap and formation enthalpy (<a href="../examples
|
|
| 2406 |
</svg></div>
|
| 2407 |
<div class="atlas-body">
|
| 2408 |
<h3 id="cross-attention">Cross-attention and transformer fusion<a class="headerlink" href="#cross-attention" title="Permanent link">¶</a></h3>
|
| 2409 |
-
<p><span class="mstatus no">Not in MEIDNet</span></p>
|
| 2410 |
<p><strong>Idea.</strong> Each modality becomes a sequence of tokens (atoms, segments of a spectrum, words). Attention lets every
|
| 2411 |
token of one modality look up the tokens of the other that matter to it, layer after layer.</p>
|
| 2412 |
<p><strong>When it fits.</strong> The modalities have parts that interact in detail and are not aligned in advance; the dataset is
|
|
@@ -2437,18 +2436,17 @@ which spectral features.</p>
|
|
| 2437 |
</svg></div>
|
| 2438 |
<div class="atlas-body">
|
| 2439 |
<h3 id="contrastive">Contrastive learning<a class="headerlink" href="#contrastive" title="Permanent link">¶</a></h3>
|
| 2440 |
-
<p><span class="mstatus core">Used by MEIDNet</span> <span class="mstatus sup">Supported</span></p>
|
| 2441 |
<p><strong>Idea.</strong> A training objective rather than a wiring. In a batch of paired examples, each example's two embeddings
|
| 2442 |
must be more similar to each other than to any other example's. It is how the latents of a
|
| 2443 |
<a href="#shared-latent">shared space</a> are coordinated.</p>
|
| 2444 |
<p><strong>When it fits.</strong> You have pairs (a structure and its properties, a pattern and its structure) and want a space in
|
| 2445 |
which nearest neighbours are meaningful across modalities.</p>
|
| 2446 |
-
<p><strong>Strengths.</strong> Learns from the pairing alone;
|
| 2447 |
-
<strong>Weaknesses.</strong> Needs
|
| 2448 |
-
|
| 2449 |
<p><strong>In MEIDNet.</strong> Symmetric InfoNCE with temperature 0.01 and weight 5, switched on gradually over the warm-up
|
| 2450 |
(the paper's curriculum). <a href="index.html#contrastive-learning">The formula and a playground</a>.</p>
|
| 2451 |
-
<p><em>References:</em> van den Oord <em>et al.</em> 2018 (InfoNCE); Radford <em>et al.</em> 2021 (CLIP).</p>
|
| 2452 |
</div>
|
| 2453 |
</div>
|
| 2454 |
</div>
|
|
@@ -2506,21 +2504,21 @@ materials in one batch are still pushed apart.</p>
|
|
| 2506 |
<td>medium to large</td>
|
| 2507 |
</tr>
|
| 2508 |
<tr>
|
| 2509 |
-
<td>in MEIDNet</td>
|
| 2510 |
-
<td>
|
| 2511 |
-
<td>
|
| 2512 |
-
<td>
|
| 2513 |
-
<td>
|
| 2514 |
-
<td>
|
| 2515 |
</tr>
|
| 2516 |
</tbody>
|
| 2517 |
</table>
|
| 2518 |
<p><strong>Beyond these five.</strong> Conditional generative models such as diffusion (MatterGen) or variational autoencoders
|
| 2519 |
-
(CDVAE) also translate from properties to structures, and they generate free atomic arrangements
|
| 2520 |
-
|
|
|
|
| 2521 |
<h2 id="advisor">Which architecture should I use?<a class="headerlink" href="#advisor" title="Permanent link">¶</a></h2>
|
| 2522 |
-
<p>
|
| 2523 |
-
MEIDNet can do it today.</p>
|
| 2524 |
<div class="advisor" id="arch-advisor" aria-live="polite"></div>
|
| 2525 |
|
| 2526 |
<noscript>The advisor needs JavaScript. In short: structures with scalar properties, for design or retrieval โ
|
|
@@ -2562,6 +2560,11 @@ over <code>training.contrastive_warmup_epochs</code>, so that the decoders learn
|
|
| 2562 |
(2022). <a href="https://arxiv.org/abs/2110.06197">arXiv:2110.06197</a></li>
|
| 2563 |
<li>V. Moro, C. Loh <em>et al.</em>, "Multimodal foundation models for material property prediction and discovery",
|
| 2564 |
<em>Newton</em> (2025). <a href="https://doi.org/10.1016/j.newton.2025.100016">doi:10.1016/j.newton.2025.100016</a></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2565 |
<li>A. Babu, R. Almeida Gouvรชa, P. Vandergheynst, G.-M. Rignanese, "MEIDNet: Multimodal generative AI framework for
|
| 2566 |
inverse materials design", <em>npj Comput. Mater.</em> (2026). <a href="https://doi.org/10.1038/s41524-026-02153-3">doi:10.1038/s41524-026-02153-3</a></li>
|
| 2567 |
</ul>
|
|
|
|
| 845 |
<span class="md-ellipsis">
|
| 846 |
|
| 847 |
|
| 848 |
+
MEIDNet Studio
|
| 849 |
|
| 850 |
|
| 851 |
|
|
|
|
| 1044 |
<span class="md-ellipsis">
|
| 1045 |
|
| 1046 |
|
| 1047 |
+
Capabilities
|
| 1048 |
|
| 1049 |
|
| 1050 |
|
|
|
|
| 1753 |
<span class="md-ellipsis">
|
| 1754 |
|
| 1755 |
|
| 1756 |
+
Interpreting a candidate
|
| 1757 |
|
| 1758 |
|
| 1759 |
|
|
|
|
| 2290 |
|
| 2291 |
|
| 2292 |
<h1 id="architecture-atlas">Architecture Atlas<a class="headerlink" href="#architecture-atlas" title="Permanent link">¶</a></h1>
|
| 2293 |
+
<p>Five ways to build a model from several modalities, drawn the same way: inputs on the left, outputs on the right.
|
| 2294 |
+
Each card gives the idea, when it fits, its strengths and weaknesses, an example from materials science and
|
| 2295 |
+
references. The <a href="#side-by-side">comparison table</a> shows which of these designs MEIDNet uses, and
|
| 2296 |
+
<a href="#advisor">the advisor</a> suggests one for a given dataset and task.</p>
|
| 2297 |
+
<p>New to the topic? Start with <a href="index.html">Learn multimodality</a>. Babu and Krishnan (2026) review multimodal and
|
| 2298 |
+
cross-modal learning techniques in more depth.</p>
|
| 2299 |
<div class="atlas">
|
| 2300 |
<div class="atlas-card">
|
| 2301 |
<div class="atlas-fig"><svg class="ad" viewBox="0 0 360 132" role="img" aria-label="Early fusion: features of two modalities are concatenated and given to one model">
|
|
|
|
| 2312 |
</svg></div>
|
| 2313 |
<div class="atlas-body">
|
| 2314 |
<h3 id="early-fusion">Early fusion<a class="headerlink" href="#early-fusion" title="Permanent link">¶</a></h3>
|
|
|
|
| 2315 |
<p><strong>Idea.</strong> Join the modalities at the input: turn each into features, concatenate them into one vector, train one
|
| 2316 |
model on it.</p>
|
| 2317 |
<p><strong>When it fits.</strong> Every material has every modality; the features have a fixed length and similar scales; you want
|
|
|
|
| 2341 |
</svg></div>
|
| 2342 |
<div class="atlas-body">
|
| 2343 |
<h3 id="late-fusion">Late fusion<a class="headerlink" href="#late-fusion" title="Permanent link">¶</a></h3>
|
|
|
|
| 2344 |
<p><strong>Idea.</strong> One model per modality, each makes its own prediction; the predictions are combined by averaging, voting
|
| 2345 |
or a small model on top.</p>
|
| 2346 |
<p><strong>When it fits.</strong> Modalities are often missing, models for each already exist, or robustness matters more than
|
|
|
|
| 2373 |
</svg></div>
|
| 2374 |
<div class="atlas-body">
|
| 2375 |
<h3 id="shared-latent">Shared latent space (joint and coordinated)<a class="headerlink" href="#shared-latent" title="Permanent link">¶</a></h3>
|
|
|
|
| 2376 |
<p><strong>Idea.</strong> One encoder per modality maps into a common space. In a <em>coordinated</em> representation the latents stay
|
| 2377 |
separate but are trained to agree; in a <em>joint</em> representation they are merged into one vector that the decoders
|
| 2378 |
read. MEIDNet does both: the structure latent and the property latent are aligned by
|
|
|
|
| 2385 |
<strong>Weaknesses.</strong> Needs paired data. The space is only as good as the alignment. Several losses must be balanced.</p>
|
| 2386 |
<p><strong>Materials example.</strong> MEIDNet: crystal structures and DFT properties of 18,928 cubic perovskites, searched for
|
| 2387 |
compositions with a target band gap and formation enthalpy (<a href="../examples/perov5.html">the paper's experiment</a>).</p>
|
| 2388 |
+
<p><em>References:</em> Ngiam <em>et al.</em> 2011; Baltruลกaitis <em>et al.</em> 2019; Babu <em>et al.</em> 2026 (MEIDNet); Moro, Loh <em>et al.</em> 2025;
|
| 2389 |
+
Babu and Krishnan 2026.</p>
|
| 2390 |
</div>
|
| 2391 |
</div>
|
| 2392 |
<div class="atlas-card">
|
|
|
|
| 2406 |
</svg></div>
|
| 2407 |
<div class="atlas-body">
|
| 2408 |
<h3 id="cross-attention">Cross-attention and transformer fusion<a class="headerlink" href="#cross-attention" title="Permanent link">¶</a></h3>
|
|
|
|
| 2409 |
<p><strong>Idea.</strong> Each modality becomes a sequence of tokens (atoms, segments of a spectrum, words). Attention lets every
|
| 2410 |
token of one modality look up the tokens of the other that matter to it, layer after layer.</p>
|
| 2411 |
<p><strong>When it fits.</strong> The modalities have parts that interact in detail and are not aligned in advance; the dataset is
|
|
|
|
| 2436 |
</svg></div>
|
| 2437 |
<div class="atlas-body">
|
| 2438 |
<h3 id="contrastive">Contrastive learning<a class="headerlink" href="#contrastive" title="Permanent link">¶</a></h3>
|
|
|
|
| 2439 |
<p><strong>Idea.</strong> A training objective rather than a wiring. In a batch of paired examples, each example's two embeddings
|
| 2440 |
must be more similar to each other than to any other example's. It is how the latents of a
|
| 2441 |
<a href="#shared-latent">shared space</a> are coordinated.</p>
|
| 2442 |
<p><strong>When it fits.</strong> You have pairs (a structure and its properties, a pattern and its structure) and want a space in
|
| 2443 |
which nearest neighbours are meaningful across modalities.</p>
|
| 2444 |
+
<p><strong>Strengths.</strong> Learns from the pairing alone; provides cross-modal retrieval; scales to large datasets.
|
| 2445 |
+
<strong>Weaknesses.</strong> Needs large enough batches; sensitive to the temperature; two similar materials in the same batch
|
| 2446 |
+
are treated as negatives and pushed apart.</p>
|
| 2447 |
<p><strong>In MEIDNet.</strong> Symmetric InfoNCE with temperature 0.01 and weight 5, switched on gradually over the warm-up
|
| 2448 |
(the paper's curriculum). <a href="index.html#contrastive-learning">The formula and a playground</a>.</p>
|
| 2449 |
+
<p><em>References:</em> van den Oord <em>et al.</em> 2018 (InfoNCE); Radford <em>et al.</em> 2021 (CLIP); Babu and Krishnan 2026.</p>
|
| 2450 |
</div>
|
| 2451 |
</div>
|
| 2452 |
</div>
|
|
|
|
| 2504 |
<td>medium to large</td>
|
| 2505 |
</tr>
|
| 2506 |
<tr>
|
| 2507 |
+
<td>used in MEIDNet</td>
|
| 2508 |
+
<td>โ</td>
|
| 2509 |
+
<td>โ</td>
|
| 2510 |
+
<td>yes: structure and property encoders, averaged latent</td>
|
| 2511 |
+
<td>โ</td>
|
| 2512 |
+
<td>yes: symmetric InfoNCE</td>
|
| 2513 |
</tr>
|
| 2514 |
</tbody>
|
| 2515 |
</table>
|
| 2516 |
<p><strong>Beyond these five.</strong> Conditional generative models such as diffusion (MatterGen) or variational autoencoders
|
| 2517 |
+
(CDVAE) also translate from properties to structures, and they generate free atomic arrangements. MEIDNet instead
|
| 2518 |
+
decodes compositions onto a prototype family and checks them against chemical rules. Babu, Gouvรชa and Rignanese
|
| 2519 |
+
(2026) review generative models, multimodal learning and closed-loop workflows for inverse materials design.</p>
|
| 2520 |
<h2 id="advisor">Which architecture should I use?<a class="headerlink" href="#advisor" title="Permanent link">¶</a></h2>
|
| 2521 |
+
<p>Select the data you have and the task. The recommendation explains the choice and says where it can be run.</p>
|
|
|
|
| 2522 |
<div class="advisor" id="arch-advisor" aria-live="polite"></div>
|
| 2523 |
|
| 2524 |
<noscript>The advisor needs JavaScript. In short: structures with scalar properties, for design or retrieval โ
|
|
|
|
| 2560 |
(2022). <a href="https://arxiv.org/abs/2110.06197">arXiv:2110.06197</a></li>
|
| 2561 |
<li>V. Moro, C. Loh <em>et al.</em>, "Multimodal foundation models for material property prediction and discovery",
|
| 2562 |
<em>Newton</em> (2025). <a href="https://doi.org/10.1016/j.newton.2025.100016">doi:10.1016/j.newton.2025.100016</a></li>
|
| 2563 |
+
<li>A. Babu, N. M. A. Krishnan, "Multimodal and cross-modal learning techniques", <em>APL Mach. Learn.</em> <strong>4</strong>, 030901
|
| 2564 |
+
(2026). <a href="https://doi.org/10.1063/5.0346744">doi:10.1063/5.0346744</a></li>
|
| 2565 |
+
<li>A. Babu, R. Almeida Gouvรชa, G.-M. Rignanese, "Toward automated discovery with generative models multimodal
|
| 2566 |
+
learning and closed loop workflows in inverse materials design", <em>Cell Rep. Phys. Sci.</em> <strong>7</strong>, 103561 (2026).
|
| 2567 |
+
<a href="https://doi.org/10.1016/j.xcrp.2026.103561">doi:10.1016/j.xcrp.2026.103561</a></li>
|
| 2568 |
<li>A. Babu, R. Almeida Gouvรชa, P. Vandergheynst, G.-M. Rignanese, "MEIDNet: Multimodal generative AI framework for
|
| 2569 |
inverse materials design", <em>npj Comput. Mater.</em> (2026). <a href="https://doi.org/10.1038/s41524-026-02153-3">doi:10.1038/s41524-026-02153-3</a></li>
|
| 2570 |
</ul>
|
site/learn/index.html
CHANGED
|
@@ -828,7 +828,7 @@
|
|
| 828 |
<span class="md-ellipsis">
|
| 829 |
|
| 830 |
|
| 831 |
-
MEIDNet Studio
|
| 832 |
|
| 833 |
|
| 834 |
|
|
@@ -1027,7 +1027,7 @@
|
|
| 1027 |
<span class="md-ellipsis">
|
| 1028 |
|
| 1029 |
|
| 1030 |
-
Capabilities
|
| 1031 |
|
| 1032 |
|
| 1033 |
|
|
@@ -1736,7 +1736,7 @@
|
|
| 1736 |
<span class="md-ellipsis">
|
| 1737 |
|
| 1738 |
|
| 1739 |
-
|
| 1740 |
|
| 1741 |
|
| 1742 |
|
|
@@ -2254,10 +2254,10 @@
|
|
| 2254 |
<p>A material can be described in many ways: by its atoms and their positions, by a formula, by measured or computed
|
| 2255 |
properties, by a diffraction pattern, a spectrum, a micrograph or a paragraph in a paper. Each way of describing it
|
| 2256 |
is a <strong>modality</strong>. Multimodal learning trains one model on several modalities of the same materials, so that it can
|
| 2257 |
-
connect them: read a structure and predict a property, or
|
| 2258 |
-
|
| 2259 |
-
<p>This short course takes about ten minutes. It
|
| 2260 |
-
|
| 2261 |
<div class="learn-steps">
|
| 2262 |
<ol>
|
| 2263 |
<li><a href="#what-is-a-modality">What is a modality?</a></li>
|
|
@@ -2331,8 +2331,8 @@ together can translate between them in either direction.</p>
|
|
| 2331 |
<p><strong>What it needs:</strong> <em>paired</em> data, where several modalities describe the same material. In Perov-5, every one of the
|
| 2332 |
18,928 structures comes with its DFT band gap and formation enthalpy, which makes it a two-modality dataset.</p>
|
| 2333 |
<h2 id="the-multimodality-map">2. The multimodality map<a class="headerlink" href="#the-multimodality-map" title="Permanent link">¶</a></h2>
|
| 2334 |
-
<p>
|
| 2335 |
-
MEIDNet
|
| 2336 |
<div class="mm" id="mm-map" aria-label="Interactive map of materials modalities"></div>
|
| 2337 |
|
| 2338 |
<details class="note">
|
|
@@ -2341,54 +2341,54 @@ MEIDNet. Click the centre for the idea that ties them together.</p>
|
|
| 2341 |
<thead>
|
| 2342 |
<tr>
|
| 2343 |
<th>modality</th>
|
| 2344 |
-
<th>
|
| 2345 |
<th>how</th>
|
| 2346 |
</tr>
|
| 2347 |
</thead>
|
| 2348 |
<tbody>
|
| 2349 |
<tr>
|
| 2350 |
<td>Crystal structure</td>
|
| 2351 |
-
<td><
|
| 2352 |
<td>an E(n)-equivariant graph network (EGNN) encodes up to <code>max_sites</code> atoms (default 20)</td>
|
| 2353 |
</tr>
|
| 2354 |
<tr>
|
| 2355 |
<td>Scalar properties</td>
|
| 2356 |
-
<td><
|
| 2357 |
<td>all numeric columns form one vector, read by one MLP; every column becomes a target</td>
|
| 2358 |
</tr>
|
| 2359 |
<tr>
|
| 2360 |
<td>Composition</td>
|
| 2361 |
-
<td>
|
| 2362 |
<td>the element on each site is part of the structure; formula-only data needs a composition model</td>
|
| 2363 |
</tr>
|
| 2364 |
<tr>
|
| 2365 |
<td>Processing conditions</td>
|
| 2366 |
-
<td><
|
| 2367 |
<td>numeric conditions can be extra scalar columns, encoded together with the properties</td>
|
| 2368 |
</tr>
|
| 2369 |
<tr>
|
| 2370 |
<td>Diffraction (XRD)</td>
|
| 2371 |
-
<td><
|
| 2372 |
<td>a vector-modality encoder for binned patterns, first item of the <a href="../understand/limits.html">roadmap</a></td>
|
| 2373 |
</tr>
|
| 2374 |
<tr>
|
| 2375 |
<td>Spectra and DOS</td>
|
| 2376 |
-
<td><
|
| 2377 |
<td>as vector modalities</td>
|
| 2378 |
</tr>
|
| 2379 |
<tr>
|
| 2380 |
<td>Microscopy images</td>
|
| 2381 |
-
<td><
|
| 2382 |
<td>an image encoder into the shared space</td>
|
| 2383 |
</tr>
|
| 2384 |
<tr>
|
| 2385 |
<td>Text</td>
|
| 2386 |
-
<td><
|
| 2387 |
<td>a text encoder into the shared space</td>
|
| 2388 |
</tr>
|
| 2389 |
</tbody>
|
| 2390 |
</table>
|
| 2391 |
-
<p>The
|
| 2392 |
</details>
|
| 2393 |
<h2 id="five-challenges">3. Five challenges of multimodal learning<a class="headerlink" href="#five-challenges" title="Permanent link">¶</a></h2>
|
| 2394 |
<p>Baltruลกaitis, Ahuja and Morency organise multimodal machine learning around five challenges. Every multimodal model
|
|
@@ -2399,7 +2399,7 @@ answers each of them in some way, even if only by leaving it out.</p>
|
|
| 2399 |
<th>challenge</th>
|
| 2400 |
<th>the question</th>
|
| 2401 |
<th>a materials example</th>
|
| 2402 |
-
<th>
|
| 2403 |
</tr>
|
| 2404 |
</thead>
|
| 2405 |
<tbody>
|
|
@@ -2436,7 +2436,8 @@ answers each of them in some way, even if only by leaving it out.</p>
|
|
| 2436 |
</tbody>
|
| 2437 |
</table>
|
| 2438 |
<p><em>Further reading:</em> Baltruลกaitis <em>et al.</em> 2019 (the taxonomy) ยท Guo <em>et al.</em> 2019 (deep multimodal
|
| 2439 |
-
representation learning) ยท Ngiam <em>et al.</em> 2011 (shared representations between modalities)
|
|
|
|
| 2440 |
<h2 id="contrastive-learning">4. Contrastive learning: how two modalities are aligned<a class="headerlink" href="#contrastive-learning" title="Permanent link">¶</a></h2>
|
| 2441 |
<p>Take a batch of <span class="arithmatex">\(N\)</span> materials. Each gives two vectors of length one: <span class="arithmatex">\(z_c\)</span> from its structure and <span class="arithmatex">\(z_p\)</span> from its
|
| 2442 |
properties. The dot product of two such vectors is their cosine similarity. Lay out all <span class="arithmatex">\(N \times N\)</span> similarities
|
|
@@ -2490,7 +2491,7 @@ latents are pulled together. After training, the <a href="../use/reports.html">t
|
|
| 2490 |
<em>retrieval</em>: how often the nearest property vector to a structure is its own (top 1) or among the five nearest
|
| 2491 |
(top 5). The Studio's Model block plots the mean cosine between matched pairs during training.</p>
|
| 2492 |
<p>The same loss pairs pictures with their captions in CLIP; MEIDNet pairs crystals with their properties.</p>
|
| 2493 |
-
<p><em>Further reading:</em> van den Oord <em>et al.</em> 2018 (InfoNCE) ยท Radford <em>et al.</em> 2021 (CLIP) ยท
|
| 2494 |
<a href="architectures.html#contrastive">Contrastive learning in the Architecture Atlas</a>.</p>
|
| 2495 |
<h2 id="inverse-design">5. From a shared space to inverse design<a class="headerlink" href="#inverse-design" title="Permanent link">¶</a></h2>
|
| 2496 |
<p>Once both modalities live in one space, a point in it can be read in both directions. MEIDNet makes the reverse
|
|
@@ -2509,8 +2510,9 @@ alone</strong>. A vector of wanted properties can then be encoded and decoded in
|
|
| 2509 |
<p>The full objective and every step are in <a href="../understand/how-it-works.html">How MEIDNet works</a>. Two limits matter:
|
| 2510 |
MEIDNet does not invent new atomic arrangements, and its predicted properties are estimates to confirm with DFT or
|
| 2511 |
experiment (<a href="../understand/limits.html">scope and roadmap</a>).</p>
|
| 2512 |
-
<p><em>Further reading:</em> the MEIDNet paper (Babu <em>et al.</em> 2026) ยท
|
| 2513 |
-
|
|
|
|
| 2514 |
<h2 id="where-next">6. Where to go next<a class="headerlink" href="#where-next" title="Permanent link">¶</a></h2>
|
| 2515 |
<div class="grid cards">
|
| 2516 |
<ul>
|
|
@@ -2556,6 +2558,11 @@ with an advisor that recommends one for your data.</p>
|
|
| 2556 |
<a href="https://arxiv.org/abs/2102.09844">arXiv:2102.09844</a></li>
|
| 2557 |
<li>V. Moro, C. Loh <em>et al.</em>, "Multimodal foundation models for material property prediction and discovery",
|
| 2558 |
<em>Newton</em> (2025). <a href="https://doi.org/10.1016/j.newton.2025.100016">doi:10.1016/j.newton.2025.100016</a></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2559 |
<li>A. Babu, R. Almeida Gouvรชa, P. Vandergheynst, G.-M. Rignanese, "MEIDNet: Multimodal generative AI framework for
|
| 2560 |
inverse materials design", <em>npj Comput. Mater.</em> (2026). <a href="https://doi.org/10.1038/s41524-026-02153-3">doi:10.1038/s41524-026-02153-3</a></li>
|
| 2561 |
</ul>
|
|
|
|
| 828 |
<span class="md-ellipsis">
|
| 829 |
|
| 830 |
|
| 831 |
+
MEIDNet Studio
|
| 832 |
|
| 833 |
|
| 834 |
|
|
|
|
| 1027 |
<span class="md-ellipsis">
|
| 1028 |
|
| 1029 |
|
| 1030 |
+
Capabilities
|
| 1031 |
|
| 1032 |
|
| 1033 |
|
|
|
|
| 1736 |
<span class="md-ellipsis">
|
| 1737 |
|
| 1738 |
|
| 1739 |
+
Interpreting a candidate
|
| 1740 |
|
| 1741 |
|
| 1742 |
|
|
|
|
| 2254 |
<p>A material can be described in many ways: by its atoms and their positions, by a formula, by measured or computed
|
| 2255 |
properties, by a diffraction pattern, a spectrum, a micrograph or a paragraph in a paper. Each way of describing it
|
| 2256 |
is a <strong>modality</strong>. Multimodal learning trains one model on several modalities of the same materials, so that it can
|
| 2257 |
+
connect them: read a structure and predict a property, or start from the properties you want and propose a
|
| 2258 |
+
structure, which is what MEIDNet does.</p>
|
| 2259 |
+
<p>This short course takes about ten minutes. It covers the main ideas of multimodal learning for materials and, for
|
| 2260 |
+
each, how MEIDNet implements it. For a full review, see Babu and Krishnan (2026).</p>
|
| 2261 |
<div class="learn-steps">
|
| 2262 |
<ol>
|
| 2263 |
<li><a href="#what-is-a-modality">What is a modality?</a></li>
|
|
|
|
| 2331 |
<p><strong>What it needs:</strong> <em>paired</em> data, where several modalities describe the same material. In Perov-5, every one of the
|
| 2332 |
18,928 structures comes with its DFT band gap and formation enthalpy, which makes it a two-modality dataset.</p>
|
| 2333 |
<h2 id="the-multimodality-map">2. The multimodality map<a class="headerlink" href="#the-multimodality-map" title="Permanent link">¶</a></h2>
|
| 2334 |
+
<p>Select a modality to see what it contains, which networks encode it, how it is combined with other modalities and
|
| 2335 |
+
how MEIDNet handles it. The centre describes the shared representation.</p>
|
| 2336 |
<div class="mm" id="mm-map" aria-label="Interactive map of materials modalities"></div>
|
| 2337 |
|
| 2338 |
<details class="note">
|
|
|
|
| 2341 |
<thead>
|
| 2342 |
<tr>
|
| 2343 |
<th>modality</th>
|
| 2344 |
+
<th>MEIDNet</th>
|
| 2345 |
<th>how</th>
|
| 2346 |
</tr>
|
| 2347 |
</thead>
|
| 2348 |
<tbody>
|
| 2349 |
<tr>
|
| 2350 |
<td>Crystal structure</td>
|
| 2351 |
+
<td>available</td>
|
| 2352 |
<td>an E(n)-equivariant graph network (EGNN) encodes up to <code>max_sites</code> atoms (default 20)</td>
|
| 2353 |
</tr>
|
| 2354 |
<tr>
|
| 2355 |
<td>Scalar properties</td>
|
| 2356 |
+
<td>available</td>
|
| 2357 |
<td>all numeric columns form one vector, read by one MLP; every column becomes a target</td>
|
| 2358 |
</tr>
|
| 2359 |
<tr>
|
| 2360 |
<td>Composition</td>
|
| 2361 |
+
<td>via the structure</td>
|
| 2362 |
<td>the element on each site is part of the structure; formula-only data needs a composition model</td>
|
| 2363 |
</tr>
|
| 2364 |
<tr>
|
| 2365 |
<td>Processing conditions</td>
|
| 2366 |
+
<td>partial</td>
|
| 2367 |
<td>numeric conditions can be extra scalar columns, encoded together with the properties</td>
|
| 2368 |
</tr>
|
| 2369 |
<tr>
|
| 2370 |
<td>Diffraction (XRD)</td>
|
| 2371 |
+
<td>planned</td>
|
| 2372 |
<td>a vector-modality encoder for binned patterns, first item of the <a href="../understand/limits.html">roadmap</a></td>
|
| 2373 |
</tr>
|
| 2374 |
<tr>
|
| 2375 |
<td>Spectra and DOS</td>
|
| 2376 |
+
<td>planned</td>
|
| 2377 |
<td>as vector modalities</td>
|
| 2378 |
</tr>
|
| 2379 |
<tr>
|
| 2380 |
<td>Microscopy images</td>
|
| 2381 |
+
<td>planned</td>
|
| 2382 |
<td>an image encoder into the shared space</td>
|
| 2383 |
</tr>
|
| 2384 |
<tr>
|
| 2385 |
<td>Text</td>
|
| 2386 |
+
<td>planned</td>
|
| 2387 |
<td>a text encoder into the shared space</td>
|
| 2388 |
</tr>
|
| 2389 |
</tbody>
|
| 2390 |
</table>
|
| 2391 |
+
<p>The <a href="../explore/capabilities.html">capabilities page</a> lists the same information, generated from the code.</p>
|
| 2392 |
</details>
|
| 2393 |
<h2 id="five-challenges">3. Five challenges of multimodal learning<a class="headerlink" href="#five-challenges" title="Permanent link">¶</a></h2>
|
| 2394 |
<p>Baltruลกaitis, Ahuja and Morency organise multimodal machine learning around five challenges. Every multimodal model
|
|
|
|
| 2399 |
<th>challenge</th>
|
| 2400 |
<th>the question</th>
|
| 2401 |
<th>a materials example</th>
|
| 2402 |
+
<th>in MEIDNet</th>
|
| 2403 |
</tr>
|
| 2404 |
</thead>
|
| 2405 |
<tbody>
|
|
|
|
| 2436 |
</tbody>
|
| 2437 |
</table>
|
| 2438 |
<p><em>Further reading:</em> Baltruลกaitis <em>et al.</em> 2019 (the taxonomy) ยท Guo <em>et al.</em> 2019 (deep multimodal
|
| 2439 |
+
representation learning) ยท Ngiam <em>et al.</em> 2011 (shared representations between modalities) ยท Babu and Krishnan
|
| 2440 |
+
2026 (multimodal and cross-modal learning techniques).</p>
|
| 2441 |
<h2 id="contrastive-learning">4. Contrastive learning: how two modalities are aligned<a class="headerlink" href="#contrastive-learning" title="Permanent link">¶</a></h2>
|
| 2442 |
<p>Take a batch of <span class="arithmatex">\(N\)</span> materials. Each gives two vectors of length one: <span class="arithmatex">\(z_c\)</span> from its structure and <span class="arithmatex">\(z_p\)</span> from its
|
| 2443 |
properties. The dot product of two such vectors is their cosine similarity. Lay out all <span class="arithmatex">\(N \times N\)</span> similarities
|
|
|
|
| 2491 |
<em>retrieval</em>: how often the nearest property vector to a structure is its own (top 1) or among the five nearest
|
| 2492 |
(top 5). The Studio's Model block plots the mean cosine between matched pairs during training.</p>
|
| 2493 |
<p>The same loss pairs pictures with their captions in CLIP; MEIDNet pairs crystals with their properties.</p>
|
| 2494 |
+
<p><em>Further reading:</em> van den Oord <em>et al.</em> 2018 (InfoNCE) ยท Radford <em>et al.</em> 2021 (CLIP) ยท Babu and Krishnan 2026 ยท
|
| 2495 |
<a href="architectures.html#contrastive">Contrastive learning in the Architecture Atlas</a>.</p>
|
| 2496 |
<h2 id="inverse-design">5. From a shared space to inverse design<a class="headerlink" href="#inverse-design" title="Permanent link">¶</a></h2>
|
| 2497 |
<p>Once both modalities live in one space, a point in it can be read in both directions. MEIDNet makes the reverse
|
|
|
|
| 2510 |
<p>The full objective and every step are in <a href="../understand/how-it-works.html">How MEIDNet works</a>. Two limits matter:
|
| 2511 |
MEIDNet does not invent new atomic arrangements, and its predicted properties are estimates to confirm with DFT or
|
| 2512 |
experiment (<a href="../understand/limits.html">scope and roadmap</a>).</p>
|
| 2513 |
+
<p><em>Further reading:</em> the MEIDNet paper (Babu <em>et al.</em> 2026) ยท Babu, Gouvรชa and Rignanese 2026 (generative models,
|
| 2514 |
+
multimodal learning and closed-loop workflows in inverse materials design) ยท Moro, Loh <em>et al.</em> 2025 (multimodal
|
| 2515 |
+
foundation models for materials).</p>
|
| 2516 |
<h2 id="where-next">6. Where to go next<a class="headerlink" href="#where-next" title="Permanent link">¶</a></h2>
|
| 2517 |
<div class="grid cards">
|
| 2518 |
<ul>
|
|
|
|
| 2558 |
<a href="https://arxiv.org/abs/2102.09844">arXiv:2102.09844</a></li>
|
| 2559 |
<li>V. Moro, C. Loh <em>et al.</em>, "Multimodal foundation models for material property prediction and discovery",
|
| 2560 |
<em>Newton</em> (2025). <a href="https://doi.org/10.1016/j.newton.2025.100016">doi:10.1016/j.newton.2025.100016</a></li>
|
| 2561 |
+
<li>A. Babu, N. M. A. Krishnan, "Multimodal and cross-modal learning techniques", <em>APL Mach. Learn.</em> <strong>4</strong>, 030901
|
| 2562 |
+
(2026). <a href="https://doi.org/10.1063/5.0346744">doi:10.1063/5.0346744</a></li>
|
| 2563 |
+
<li>A. Babu, R. Almeida Gouvรชa, G.-M. Rignanese, "Toward automated discovery with generative models multimodal
|
| 2564 |
+
learning and closed loop workflows in inverse materials design", <em>Cell Rep. Phys. Sci.</em> <strong>7</strong>, 103561 (2026).
|
| 2565 |
+
<a href="https://doi.org/10.1016/j.xcrp.2026.103561">doi:10.1016/j.xcrp.2026.103561</a></li>
|
| 2566 |
<li>A. Babu, R. Almeida Gouvรชa, P. Vandergheynst, G.-M. Rignanese, "MEIDNet: Multimodal generative AI framework for
|
| 2567 |
inverse materials design", <em>npj Comput. Mater.</em> (2026). <a href="https://doi.org/10.1038/s41524-026-02153-3">doi:10.1038/s41524-026-02153-3</a></li>
|
| 2568 |
</ul>
|
site/learn/recipes.html
CHANGED
|
@@ -839,7 +839,7 @@
|
|
| 839 |
<span class="md-ellipsis">
|
| 840 |
|
| 841 |
|
| 842 |
-
MEIDNet Studio
|
| 843 |
|
| 844 |
|
| 845 |
|
|
@@ -1038,7 +1038,7 @@
|
|
| 1038 |
<span class="md-ellipsis">
|
| 1039 |
|
| 1040 |
|
| 1041 |
-
Capabilities
|
| 1042 |
|
| 1043 |
|
| 1044 |
|
|
@@ -1747,7 +1747,7 @@
|
|
| 1747 |
<span class="md-ellipsis">
|
| 1748 |
|
| 1749 |
|
| 1750 |
-
|
| 1751 |
|
| 1752 |
|
| 1753 |
|
|
@@ -2273,9 +2273,9 @@
|
|
| 2273 |
|
| 2274 |
|
| 2275 |
<h1 id="recipes-by-problem">Recipes by problem<a class="headerlink" href="#recipes-by-problem" title="Permanent link">¶</a></h1>
|
| 2276 |
-
<p>Start from a research question. Each recipe goes <strong>problem โ architecture โ why โ data โ
|
| 2277 |
-
โ references</strong>
|
| 2278 |
-
|
| 2279 |
<p>For step-by-step changes to a MEIDNet configuration (another target, another family, a new rule), see the
|
| 2280 |
<a href="../recipes/change-targets.html">how-to guides</a>.</p>
|
| 2281 |
<table>
|
|
@@ -2283,49 +2283,48 @@ model that does.</p>
|
|
| 2283 |
<tr>
|
| 2284 |
<th>problem</th>
|
| 2285 |
<th>architecture</th>
|
| 2286 |
-
<th>
|
| 2287 |
</tr>
|
| 2288 |
</thead>
|
| 2289 |
<tbody>
|
| 2290 |
<tr>
|
| 2291 |
<td><a href="#target-band-gap">Perovskites with a target band gap that are likely to be stable</a></td>
|
| 2292 |
<td>shared latent + contrastive</td>
|
| 2293 |
-
<td><
|
| 2294 |
</tr>
|
| 2295 |
<tr>
|
| 2296 |
<td><a href="#own-family">Candidates from your own DFT results for one family</a></td>
|
| 2297 |
<td>shared latent + contrastive</td>
|
| 2298 |
-
<td><
|
| 2299 |
</tr>
|
| 2300 |
<tr>
|
| 2301 |
<td><a href="#screen-family">Screen a whole family for a target before searching</a></td>
|
| 2302 |
<td>structure encoder of the shared space</td>
|
| 2303 |
-
<td><
|
| 2304 |
</tr>
|
| 2305 |
<tr>
|
| 2306 |
<td><a href="#xrd-structure">Identify the crystal structure from an XRD pattern</a></td>
|
| 2307 |
<td>1D convolutional network; contrastive pattern โ structure</td>
|
| 2308 |
-
<td>
|
| 2309 |
</tr>
|
| 2310 |
<tr>
|
| 2311 |
<td><a href="#formula-only">Predict a property when only the formula is known</a></td>
|
| 2312 |
<td>composition network</td>
|
| 2313 |
-
<td>
|
| 2314 |
</tr>
|
| 2315 |
<tr>
|
| 2316 |
<td><a href="#synthesis-text">Connect synthesis text with structures</a></td>
|
| 2317 |
<td>text encoder + contrastive or cross-attention</td>
|
| 2318 |
-
<td>
|
| 2319 |
</tr>
|
| 2320 |
<tr>
|
| 2321 |
<td><a href="#new-arrangements">Design new atomic arrangements</a></td>
|
| 2322 |
<td>conditional generative model over full geometry</td>
|
| 2323 |
-
<td>
|
| 2324 |
</tr>
|
| 2325 |
</tbody>
|
| 2326 |
</table>
|
| 2327 |
<h2 id="target-band-gap">Perovskites with a target band gap that are likely to be stable<a class="headerlink" href="#target-band-gap" title="Permanent link">¶</a></h2>
|
| 2328 |
-
<p><span class="mstatus sup">Supported in MEIDNet</span></p>
|
| 2329 |
<table>
|
| 2330 |
<thead>
|
| 2331 |
<tr>
|
|
@@ -2351,12 +2350,16 @@ model that does.</p>
|
|
| 2351 |
<td>Perov-5: 18,928 structures with DFT band gap and formation enthalpy (<a href="../explore/datasets.html">dataset card</a>). The published checkpoint is trained on it.</td>
|
| 2352 |
</tr>
|
| 2353 |
<tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2354 |
<td><strong>Tutorial</strong></td>
|
| 2355 |
<td><a href="../examples/perov5.html">The paper's experiment</a> ยท in the browser: <a href="https://babu09-meidnet.hf.space/studio/?panel=targets">Studio, Targets block</a> ยท <a href="../recipes/screen.html">screen the candidates with MACE</a></td>
|
| 2356 |
</tr>
|
| 2357 |
<tr>
|
| 2358 |
<td><strong>References</strong></td>
|
| 2359 |
-
<td>Babu <em>et al.</em> 2026 (MEIDNet); Castelli <em>et al.</em> 2012 (the dataset).</td>
|
| 2360 |
</tr>
|
| 2361 |
</tbody>
|
| 2362 |
</table>
|
|
@@ -2374,7 +2377,6 @@ model that does.</p>
|
|
| 2374 |
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="p p-Indicator">{</span><span class="nt">dir_gap</span><span class="p">:</span><span class="w"> </span><span class="nv">1.5</span><span class="p p-Indicator">,</span><span class="nt"> heat_all</span><span class="p">:</span><span class="w"> </span><span class="nv">-0.10</span><span class="p p-Indicator">}</span>
|
| 2375 |
</code></pre></div>
|
| 2376 |
<h2 id="own-family">Candidates from your own DFT results for one family<a class="headerlink" href="#own-family" title="Permanent link">¶</a></h2>
|
| 2377 |
-
<p><span class="mstatus sup">Supported in MEIDNet</span></p>
|
| 2378 |
<table>
|
| 2379 |
<thead>
|
| 2380 |
<tr>
|
|
@@ -2400,12 +2402,16 @@ model that does.</p>
|
|
| 2400 |
<td>A table with an id, numeric property columns and one CIF per row. Public sources by application are on <a href="../explore/databases.html">Databases by application</a>.</td>
|
| 2401 |
</tr>
|
| 2402 |
<tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2403 |
<td><strong>Tutorial</strong></td>
|
| 2404 |
<td><a href="../use/your-data.html">Bring your own dataset</a> ยท in the browser: <a href="https://babu09-meidnet.hf.space/studio/?panel=data">Studio, Data block</a> ยท <a href="../recipes/change-family.html">change the material family</a></td>
|
| 2405 |
</tr>
|
| 2406 |
<tr>
|
| 2407 |
<td><strong>References</strong></td>
|
| 2408 |
-
<td>Babu <em>et al.</em> 2026.</td>
|
| 2409 |
</tr>
|
| 2410 |
</tbody>
|
| 2411 |
</table>
|
|
@@ -2427,7 +2433,6 @@ model that does.</p>
|
|
| 2427 |
</code></pre></div>
|
| 2428 |
<p>Then <code>meidnet check</code> โ <code>meidnet train</code> โ <code>meidnet generate</code>; each step writes a report.</p>
|
| 2429 |
<h2 id="screen-family">Screen a whole family for a target before searching<a class="headerlink" href="#screen-family" title="Permanent link">¶</a></h2>
|
| 2430 |
-
<p><span class="mstatus sup">Supported in MEIDNet</span></p>
|
| 2431 |
<table>
|
| 2432 |
<thead>
|
| 2433 |
<tr>
|
|
@@ -2450,7 +2455,11 @@ model that does.</p>
|
|
| 2450 |
</tr>
|
| 2451 |
<tr>
|
| 2452 |
<td><strong>Data</strong></td>
|
| 2453 |
-
<td>A trained model and a family
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2454 |
</tr>
|
| 2455 |
<tr>
|
| 2456 |
<td><strong>Tutorial</strong></td>
|
|
@@ -2458,14 +2467,13 @@ model that does.</p>
|
|
| 2458 |
</tr>
|
| 2459 |
<tr>
|
| 2460 |
<td><strong>References</strong></td>
|
| 2461 |
-
<td>Babu <em>et al.</em> 2026.</td>
|
| 2462 |
</tr>
|
| 2463 |
</tbody>
|
| 2464 |
</table>
|
| 2465 |
<div class="highlight"><pre><span></span><code>meidnet<span class="w"> </span>space<span class="w"> </span>examples/perov5/meidnet.yaml<span class="w"> </span>--model<span class="w"> </span>checkpoints/dual_autoencoder_clip_earlyfusion_propertyaware_2k.pth<span class="w"> </span>-o<span class="w"> </span>space.csv
|
| 2466 |
</code></pre></div>
|
| 2467 |
<h2 id="xrd-structure">Identify the crystal structure from an XRD pattern<a class="headerlink" href="#xrd-structure" title="Permanent link">¶</a></h2>
|
| 2468 |
-
<p><span class="mstatus plan">Planned in MEIDNet</span></p>
|
| 2469 |
<table>
|
| 2470 |
<thead>
|
| 2471 |
<tr>
|
|
@@ -2480,7 +2488,7 @@ model that does.</p>
|
|
| 2480 |
</tr>
|
| 2481 |
<tr>
|
| 2482 |
<td><strong>Architecture</strong></td>
|
| 2483 |
-
<td>
|
| 2484 |
</tr>
|
| 2485 |
<tr>
|
| 2486 |
<td><strong>Why</strong></td>
|
|
@@ -2491,17 +2499,16 @@ model that does.</p>
|
|
| 2491 |
<td>Simulate patterns from computed or experimental structures (<a href="../explore/databases.html#semiconductor-physics">semiconductor physics</a>, <a href="../explore/databases.html#all-databases">all databases</a>), for example with pymatgen's XRD calculator; validate on measured patterns.</td>
|
| 2492 |
</tr>
|
| 2493 |
<tr>
|
| 2494 |
-
<td><strong>
|
| 2495 |
-
<td>
|
| 2496 |
</tr>
|
| 2497 |
<tr>
|
| 2498 |
<td><strong>References</strong></td>
|
| 2499 |
-
<td>Park <em>et al.</em> 2017; Baltruลกaitis <em>et al.</em> 2019.</td>
|
| 2500 |
</tr>
|
| 2501 |
</tbody>
|
| 2502 |
</table>
|
| 2503 |
<h2 id="formula-only">Predict a property when only the formula is known<a class="headerlink" href="#formula-only" title="Permanent link">¶</a></h2>
|
| 2504 |
-
<p><span class="mstatus no">Use another tool</span></p>
|
| 2505 |
<table>
|
| 2506 |
<thead>
|
| 2507 |
<tr>
|
|
@@ -2520,20 +2527,23 @@ model that does.</p>
|
|
| 2520 |
</tr>
|
| 2521 |
<tr>
|
| 2522 |
<td><strong>Why</strong></td>
|
| 2523 |
-
<td>MEIDNet needs a structure for every row. If your formulas all sit on one prototype (for example ABXโ), you can build those structures on the prototype and use MEIDNet; otherwise a composition model is the
|
| 2524 |
</tr>
|
| 2525 |
<tr>
|
| 2526 |
<td><strong>Data</strong></td>
|
| 2527 |
<td>Experimental band gaps and Matbench tasks are listed on <a href="../explore/databases.html#semiconductor-physics">Databases by application</a>.</td>
|
| 2528 |
</tr>
|
| 2529 |
<tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2530 |
<td><strong>References</strong></td>
|
| 2531 |
<td>Goodall and Lee 2020 (Roost); Dunn <em>et al.</em> 2020 (Matbench).</td>
|
| 2532 |
</tr>
|
| 2533 |
</tbody>
|
| 2534 |
</table>
|
| 2535 |
<h2 id="synthesis-text">Connect synthesis text with structures<a class="headerlink" href="#synthesis-text" title="Permanent link">¶</a></h2>
|
| 2536 |
-
<p><span class="mstatus plan">Planned in MEIDNet</span></p>
|
| 2537 |
<table>
|
| 2538 |
<thead>
|
| 2539 |
<tr>
|
|
@@ -2559,17 +2569,16 @@ model that does.</p>
|
|
| 2559 |
<td>Text-mined synthesis recipes (Kononova <em>et al.</em> 2019) paired with structures from a structure database.</td>
|
| 2560 |
</tr>
|
| 2561 |
<tr>
|
| 2562 |
-
<td><strong>
|
| 2563 |
-
<td>A text encoder into
|
| 2564 |
</tr>
|
| 2565 |
<tr>
|
| 2566 |
<td><strong>References</strong></td>
|
| 2567 |
-
<td>Kononova <em>et al.</em> 2019; Moro, Loh <em>et al.</em> 2025.</td>
|
| 2568 |
</tr>
|
| 2569 |
</tbody>
|
| 2570 |
</table>
|
| 2571 |
<h2 id="new-arrangements">Design new atomic arrangements<a class="headerlink" href="#new-arrangements" title="Permanent link">¶</a></h2>
|
| 2572 |
-
<p><span class="mstatus no">Use another tool</span></p>
|
| 2573 |
<table>
|
| 2574 |
<thead>
|
| 2575 |
<tr>
|
|
@@ -2595,8 +2604,12 @@ model that does.</p>
|
|
| 2595 |
<td>Large structure databases; the generative benchmarks are listed under <a href="../explore/databases.html#generative-model-benchmarks">generative-model benchmarks</a>.</td>
|
| 2596 |
</tr>
|
| 2597 |
<tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2598 |
<td><strong>References</strong></td>
|
| 2599 |
-
<td>Zeni <em>et al.</em> 2025 (MatterGen); Xie <em>et al.</em> 2022 (CDVAE).</td>
|
| 2600 |
</tr>
|
| 2601 |
</tbody>
|
| 2602 |
</table>
|
|
@@ -2614,6 +2627,11 @@ model that does.</p>
|
|
| 2614 |
test set and Automatminer reference algorithm", <em>npj Comput. Mater.</em> <strong>6</strong>, 138 (2020). <a href="https://doi.org/10.1038/s41524-020-00406-3">doi:10.1038/s41524-020-00406-3</a></li>
|
| 2615 |
<li>O. Kononova <em>et al.</em>, "Text-mined dataset of inorganic materials synthesis recipes", <em>Sci. Data</em> <strong>6</strong>, 203 (2019).
|
| 2616 |
<a href="https://doi.org/10.1038/s41597-019-0224-1">doi:10.1038/s41597-019-0224-1</a></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2617 |
<li>C. Zeni <em>et al.</em>, "A generative model for inorganic materials design", <em>Nature</em> <strong>639</strong>, 624โ632 (2025).
|
| 2618 |
<a href="https://doi.org/10.1038/s41586-025-08628-5">doi:10.1038/s41586-025-08628-5</a></li>
|
| 2619 |
<li>T. Xie <em>et al.</em>, "Crystal diffusion variational autoencoder for periodic material generation", <em>ICLR</em> (2022).
|
|
|
|
| 839 |
<span class="md-ellipsis">
|
| 840 |
|
| 841 |
|
| 842 |
+
MEIDNet Studio
|
| 843 |
|
| 844 |
|
| 845 |
|
|
|
|
| 1038 |
<span class="md-ellipsis">
|
| 1039 |
|
| 1040 |
|
| 1041 |
+
Capabilities
|
| 1042 |
|
| 1043 |
|
| 1044 |
|
|
|
|
| 1747 |
<span class="md-ellipsis">
|
| 1748 |
|
| 1749 |
|
| 1750 |
+
Interpreting a candidate
|
| 1751 |
|
| 1752 |
|
| 1753 |
|
|
|
|
| 2273 |
|
| 2274 |
|
| 2275 |
<h1 id="recipes-by-problem">Recipes by problem<a class="headerlink" href="#recipes-by-problem" title="Permanent link">¶</a></h1>
|
| 2276 |
+
<p>Start from a research question. Each recipe goes <strong>problem โ architecture โ why โ data โ implementation โ
|
| 2277 |
+
tutorial โ references</strong>. The implementation is MEIDNet where it applies; otherwise the recipe names established
|
| 2278 |
+
alternatives.</p>
|
| 2279 |
<p>For step-by-step changes to a MEIDNet configuration (another target, another family, a new rule), see the
|
| 2280 |
<a href="../recipes/change-targets.html">how-to guides</a>.</p>
|
| 2281 |
<table>
|
|
|
|
| 2283 |
<tr>
|
| 2284 |
<th>problem</th>
|
| 2285 |
<th>architecture</th>
|
| 2286 |
+
<th>implementation</th>
|
| 2287 |
</tr>
|
| 2288 |
</thead>
|
| 2289 |
<tbody>
|
| 2290 |
<tr>
|
| 2291 |
<td><a href="#target-band-gap">Perovskites with a target band gap that are likely to be stable</a></td>
|
| 2292 |
<td>shared latent + contrastive</td>
|
| 2293 |
+
<td>MEIDNet</td>
|
| 2294 |
</tr>
|
| 2295 |
<tr>
|
| 2296 |
<td><a href="#own-family">Candidates from your own DFT results for one family</a></td>
|
| 2297 |
<td>shared latent + contrastive</td>
|
| 2298 |
+
<td>MEIDNet</td>
|
| 2299 |
</tr>
|
| 2300 |
<tr>
|
| 2301 |
<td><a href="#screen-family">Screen a whole family for a target before searching</a></td>
|
| 2302 |
<td>structure encoder of the shared space</td>
|
| 2303 |
+
<td>MEIDNet</td>
|
| 2304 |
</tr>
|
| 2305 |
<tr>
|
| 2306 |
<td><a href="#xrd-structure">Identify the crystal structure from an XRD pattern</a></td>
|
| 2307 |
<td>1D convolutional network; contrastive pattern โ structure</td>
|
| 2308 |
+
<td>1D CNN classifiers; pattern encoder planned for MEIDNet</td>
|
| 2309 |
</tr>
|
| 2310 |
<tr>
|
| 2311 |
<td><a href="#formula-only">Predict a property when only the formula is known</a></td>
|
| 2312 |
<td>composition network</td>
|
| 2313 |
+
<td>Roost and similar composition models</td>
|
| 2314 |
</tr>
|
| 2315 |
<tr>
|
| 2316 |
<td><a href="#synthesis-text">Connect synthesis text with structures</a></td>
|
| 2317 |
<td>text encoder + contrastive or cross-attention</td>
|
| 2318 |
+
<td>text encoder planned for MEIDNet</td>
|
| 2319 |
</tr>
|
| 2320 |
<tr>
|
| 2321 |
<td><a href="#new-arrangements">Design new atomic arrangements</a></td>
|
| 2322 |
<td>conditional generative model over full geometry</td>
|
| 2323 |
+
<td>MatterGen, CDVAE</td>
|
| 2324 |
</tr>
|
| 2325 |
</tbody>
|
| 2326 |
</table>
|
| 2327 |
<h2 id="target-band-gap">Perovskites with a target band gap that are likely to be stable<a class="headerlink" href="#target-band-gap" title="Permanent link">¶</a></h2>
|
|
|
|
| 2328 |
<table>
|
| 2329 |
<thead>
|
| 2330 |
<tr>
|
|
|
|
| 2350 |
<td>Perov-5: 18,928 structures with DFT band gap and formation enthalpy (<a href="../explore/datasets.html">dataset card</a>). The published checkpoint is trained on it.</td>
|
| 2351 |
</tr>
|
| 2352 |
<tr>
|
| 2353 |
+
<td><strong>Implementation</strong></td>
|
| 2354 |
+
<td>MEIDNet: <code>meidnet demo</code>, <code>meidnet generate</code> or the Studio's Targets and Search blocks.</td>
|
| 2355 |
+
</tr>
|
| 2356 |
+
<tr>
|
| 2357 |
<td><strong>Tutorial</strong></td>
|
| 2358 |
<td><a href="../examples/perov5.html">The paper's experiment</a> ยท in the browser: <a href="https://babu09-meidnet.hf.space/studio/?panel=targets">Studio, Targets block</a> ยท <a href="../recipes/screen.html">screen the candidates with MACE</a></td>
|
| 2359 |
</tr>
|
| 2360 |
<tr>
|
| 2361 |
<td><strong>References</strong></td>
|
| 2362 |
+
<td>Babu <em>et al.</em> 2026 (MEIDNet); Castelli <em>et al.</em> 2012 (the dataset); Babu, Gouvรชa and Rignanese 2026 (review of inverse design).</td>
|
| 2363 |
</tr>
|
| 2364 |
</tbody>
|
| 2365 |
</table>
|
|
|
|
| 2377 |
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="p p-Indicator">{</span><span class="nt">dir_gap</span><span class="p">:</span><span class="w"> </span><span class="nv">1.5</span><span class="p p-Indicator">,</span><span class="nt"> heat_all</span><span class="p">:</span><span class="w"> </span><span class="nv">-0.10</span><span class="p p-Indicator">}</span>
|
| 2378 |
</code></pre></div>
|
| 2379 |
<h2 id="own-family">Candidates from your own DFT results for one family<a class="headerlink" href="#own-family" title="Permanent link">¶</a></h2>
|
|
|
|
| 2380 |
<table>
|
| 2381 |
<thead>
|
| 2382 |
<tr>
|
|
|
|
| 2402 |
<td>A table with an id, numeric property columns and one CIF per row. Public sources by application are on <a href="../explore/databases.html">Databases by application</a>.</td>
|
| 2403 |
</tr>
|
| 2404 |
<tr>
|
| 2405 |
+
<td><strong>Implementation</strong></td>
|
| 2406 |
+
<td>MEIDNet: <code>meidnet init</code>, <code>check</code>, <code>train</code>, <code>generate</code>, or the Studio's Data and Model blocks.</td>
|
| 2407 |
+
</tr>
|
| 2408 |
+
<tr>
|
| 2409 |
<td><strong>Tutorial</strong></td>
|
| 2410 |
<td><a href="../use/your-data.html">Bring your own dataset</a> ยท in the browser: <a href="https://babu09-meidnet.hf.space/studio/?panel=data">Studio, Data block</a> ยท <a href="../recipes/change-family.html">change the material family</a></td>
|
| 2411 |
</tr>
|
| 2412 |
<tr>
|
| 2413 |
<td><strong>References</strong></td>
|
| 2414 |
+
<td>Babu <em>et al.</em> 2026 (MEIDNet).</td>
|
| 2415 |
</tr>
|
| 2416 |
</tbody>
|
| 2417 |
</table>
|
|
|
|
| 2433 |
</code></pre></div>
|
| 2434 |
<p>Then <code>meidnet check</code> โ <code>meidnet train</code> โ <code>meidnet generate</code>; each step writes a report.</p>
|
| 2435 |
<h2 id="screen-family">Screen a whole family for a target before searching<a class="headerlink" href="#screen-family" title="Permanent link">¶</a></h2>
|
|
|
|
| 2436 |
<table>
|
| 2437 |
<thead>
|
| 2438 |
<tr>
|
|
|
|
| 2455 |
</tr>
|
| 2456 |
<tr>
|
| 2457 |
<td><strong>Data</strong></td>
|
| 2458 |
+
<td>A trained model and a family.</td>
|
| 2459 |
+
</tr>
|
| 2460 |
+
<tr>
|
| 2461 |
+
<td><strong>Implementation</strong></td>
|
| 2462 |
+
<td>MEIDNet: <code>meidnet space</code> or the Studio's design-space view.</td>
|
| 2463 |
</tr>
|
| 2464 |
<tr>
|
| 2465 |
<td><strong>Tutorial</strong></td>
|
|
|
|
| 2467 |
</tr>
|
| 2468 |
<tr>
|
| 2469 |
<td><strong>References</strong></td>
|
| 2470 |
+
<td>Babu <em>et al.</em> 2026 (MEIDNet).</td>
|
| 2471 |
</tr>
|
| 2472 |
</tbody>
|
| 2473 |
</table>
|
| 2474 |
<div class="highlight"><pre><span></span><code>meidnet<span class="w"> </span>space<span class="w"> </span>examples/perov5/meidnet.yaml<span class="w"> </span>--model<span class="w"> </span>checkpoints/dual_autoencoder_clip_earlyfusion_propertyaware_2k.pth<span class="w"> </span>-o<span class="w"> </span>space.csv
|
| 2475 |
</code></pre></div>
|
| 2476 |
<h2 id="xrd-structure">Identify the crystal structure from an XRD pattern<a class="headerlink" href="#xrd-structure" title="Permanent link">¶</a></h2>
|
|
|
|
| 2477 |
<table>
|
| 2478 |
<thead>
|
| 2479 |
<tr>
|
|
|
|
| 2488 |
</tr>
|
| 2489 |
<tr>
|
| 2490 |
<td><strong>Architecture</strong></td>
|
| 2491 |
+
<td>A 1D convolutional classifier on the pattern (one modality). Multimodal: a pattern encoder aligned with a structure encoder by <a href="architectures.html#contrastive">contrastive learning</a>, so a pattern retrieves the structures it matches.</td>
|
| 2492 |
</tr>
|
| 2493 |
<tr>
|
| 2494 |
<td><strong>Why</strong></td>
|
|
|
|
| 2499 |
<td>Simulate patterns from computed or experimental structures (<a href="../explore/databases.html#semiconductor-physics">semiconductor physics</a>, <a href="../explore/databases.html#all-databases">all databases</a>), for example with pymatgen's XRD calculator; validate on measured patterns.</td>
|
| 2500 |
</tr>
|
| 2501 |
<tr>
|
| 2502 |
+
<td><strong>Implementation</strong></td>
|
| 2503 |
+
<td>1D convolutional classifiers such as Park <em>et al.</em> (2017). In MEIDNet, an encoder for binned XRD patterns is the first item of the <a href="../understand/limits.html">roadmap</a> and is not yet available.</td>
|
| 2504 |
</tr>
|
| 2505 |
<tr>
|
| 2506 |
<td><strong>References</strong></td>
|
| 2507 |
+
<td>Park <em>et al.</em> 2017; Baltruลกaitis <em>et al.</em> 2019; Babu and Krishnan 2026.</td>
|
| 2508 |
</tr>
|
| 2509 |
</tbody>
|
| 2510 |
</table>
|
| 2511 |
<h2 id="formula-only">Predict a property when only the formula is known<a class="headerlink" href="#formula-only" title="Permanent link">¶</a></h2>
|
|
|
|
| 2512 |
<table>
|
| 2513 |
<thead>
|
| 2514 |
<tr>
|
|
|
|
| 2527 |
</tr>
|
| 2528 |
<tr>
|
| 2529 |
<td><strong>Why</strong></td>
|
| 2530 |
+
<td>MEIDNet needs a structure for every row. If your formulas all sit on one prototype (for example ABXโ), you can build those structures on the prototype and use MEIDNet; otherwise a composition model is the appropriate choice.</td>
|
| 2531 |
</tr>
|
| 2532 |
<tr>
|
| 2533 |
<td><strong>Data</strong></td>
|
| 2534 |
<td>Experimental band gaps and Matbench tasks are listed on <a href="../explore/databases.html#semiconductor-physics">Databases by application</a>.</td>
|
| 2535 |
</tr>
|
| 2536 |
<tr>
|
| 2537 |
+
<td><strong>Implementation</strong></td>
|
| 2538 |
+
<td>Roost or another composition model; outside MEIDNet, which requires a crystal structure per material.</td>
|
| 2539 |
+
</tr>
|
| 2540 |
+
<tr>
|
| 2541 |
<td><strong>References</strong></td>
|
| 2542 |
<td>Goodall and Lee 2020 (Roost); Dunn <em>et al.</em> 2020 (Matbench).</td>
|
| 2543 |
</tr>
|
| 2544 |
</tbody>
|
| 2545 |
</table>
|
| 2546 |
<h2 id="synthesis-text">Connect synthesis text with structures<a class="headerlink" href="#synthesis-text" title="Permanent link">¶</a></h2>
|
|
|
|
| 2547 |
<table>
|
| 2548 |
<thead>
|
| 2549 |
<tr>
|
|
|
|
| 2569 |
<td>Text-mined synthesis recipes (Kononova <em>et al.</em> 2019) paired with structures from a structure database.</td>
|
| 2570 |
</tr>
|
| 2571 |
<tr>
|
| 2572 |
+
<td><strong>Implementation</strong></td>
|
| 2573 |
+
<td>A text encoder that maps into MEIDNet's shared space is planned and not yet available.</td>
|
| 2574 |
</tr>
|
| 2575 |
<tr>
|
| 2576 |
<td><strong>References</strong></td>
|
| 2577 |
+
<td>Kononova <em>et al.</em> 2019; Moro, Loh <em>et al.</em> 2025; Babu and Krishnan 2026.</td>
|
| 2578 |
</tr>
|
| 2579 |
</tbody>
|
| 2580 |
</table>
|
| 2581 |
<h2 id="new-arrangements">Design new atomic arrangements<a class="headerlink" href="#new-arrangements" title="Permanent link">¶</a></h2>
|
|
|
|
| 2582 |
<table>
|
| 2583 |
<thead>
|
| 2584 |
<tr>
|
|
|
|
| 2604 |
<td>Large structure databases; the generative benchmarks are listed under <a href="../explore/databases.html#generative-model-benchmarks">generative-model benchmarks</a>.</td>
|
| 2605 |
</tr>
|
| 2606 |
<tr>
|
| 2607 |
+
<td><strong>Implementation</strong></td>
|
| 2608 |
+
<td>MatterGen, CDVAE and related generative models.</td>
|
| 2609 |
+
</tr>
|
| 2610 |
+
<tr>
|
| 2611 |
<td><strong>References</strong></td>
|
| 2612 |
+
<td>Zeni <em>et al.</em> 2025 (MatterGen); Xie <em>et al.</em> 2022 (CDVAE); Babu, Gouvรชa and Rignanese 2026 (review).</td>
|
| 2613 |
</tr>
|
| 2614 |
</tbody>
|
| 2615 |
</table>
|
|
|
|
| 2627 |
test set and Automatminer reference algorithm", <em>npj Comput. Mater.</em> <strong>6</strong>, 138 (2020). <a href="https://doi.org/10.1038/s41524-020-00406-3">doi:10.1038/s41524-020-00406-3</a></li>
|
| 2628 |
<li>O. Kononova <em>et al.</em>, "Text-mined dataset of inorganic materials synthesis recipes", <em>Sci. Data</em> <strong>6</strong>, 203 (2019).
|
| 2629 |
<a href="https://doi.org/10.1038/s41597-019-0224-1">doi:10.1038/s41597-019-0224-1</a></li>
|
| 2630 |
+
<li>A. Babu, N. M. A. Krishnan, "Multimodal and cross-modal learning techniques", <em>APL Mach. Learn.</em> <strong>4</strong>, 030901
|
| 2631 |
+
(2026). <a href="https://doi.org/10.1063/5.0346744">doi:10.1063/5.0346744</a></li>
|
| 2632 |
+
<li>A. Babu, R. Almeida Gouvรชa, G.-M. Rignanese, "Toward automated discovery with generative models multimodal
|
| 2633 |
+
learning and closed loop workflows in inverse materials design", <em>Cell Rep. Phys. Sci.</em> <strong>7</strong>, 103561 (2026).
|
| 2634 |
+
<a href="https://doi.org/10.1016/j.xcrp.2026.103561">doi:10.1016/j.xcrp.2026.103561</a></li>
|
| 2635 |
<li>C. Zeni <em>et al.</em>, "A generative model for inorganic materials design", <em>Nature</em> <strong>639</strong>, 624โ632 (2025).
|
| 2636 |
<a href="https://doi.org/10.1038/s41586-025-08628-5">doi:10.1038/s41586-025-08628-5</a></li>
|
| 2637 |
<li>T. Xie <em>et al.</em>, "Crystal diffusion variational autoencoder for periodic material generation", <em>ICLR</em> (2022).
|
site/recipes/add-constraint.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1703,7 +1703,7 @@
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
-
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
+
Interpreting a candidate
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
site/recipes/add-property.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1622,7 +1622,7 @@
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
-
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
+
Interpreting a candidate
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
site/recipes/change-family.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1703,7 +1703,7 @@
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
-
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
+
Interpreting a candidate
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
site/recipes/change-targets.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1703,7 +1703,7 @@
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
-
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
+
Interpreting a candidate
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
site/recipes/elements.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1622,7 +1622,7 @@
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
-
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
+
Interpreting a candidate
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
site/recipes/screen.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1622,7 +1622,7 @@
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
-
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1622 |
<span class="md-ellipsis">
|
| 1623 |
|
| 1624 |
|
| 1625 |
+
Interpreting a candidate
|
| 1626 |
|
| 1627 |
|
| 1628 |
|
site/reference/api.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1607,7 +1607,7 @@
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
-
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
+
Interpreting a candidate
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
site/reference/cli.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1607,7 +1607,7 @@
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
-
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
+
Interpreting a candidate
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
site/reference/config.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1607,7 +1607,7 @@
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
-
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
+
Interpreting a candidate
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
site/reference/families.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1607,7 +1607,7 @@
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
-
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
+
Interpreting a candidate
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
site/reference/rules.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1607,7 +1607,7 @@
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
-
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1607 |
<span class="md-ellipsis">
|
| 1608 |
|
| 1609 |
|
| 1610 |
+
Interpreting a candidate
|
| 1611 |
|
| 1612 |
|
| 1613 |
|
site/research/paper.html
CHANGED
|
@@ -697,7 +697,7 @@
|
|
| 697 |
<span class="md-ellipsis">
|
| 698 |
|
| 699 |
|
| 700 |
-
MEIDNet Studio
|
| 701 |
|
| 702 |
|
| 703 |
|
|
@@ -896,7 +896,7 @@
|
|
| 896 |
<span class="md-ellipsis">
|
| 897 |
|
| 898 |
|
| 899 |
-
Capabilities
|
| 900 |
|
| 901 |
|
| 902 |
|
|
@@ -1605,7 +1605,7 @@
|
|
| 1605 |
<span class="md-ellipsis">
|
| 1606 |
|
| 1607 |
|
| 1608 |
-
|
| 1609 |
|
| 1610 |
|
| 1611 |
|
|
@@ -2161,6 +2161,15 @@ Anand Babu, Rogรฉrio Almeida Gouvรชa, Pierre Vandergheynst, Gian-Marco Rignanese
|
|
| 2161 |
<li>Generated structures: <code>examples/perov5/paper_results/</code>.</li>
|
| 2162 |
</ul>
|
| 2163 |
<h2 id="related">Related<a class="headerlink" href="#related" title="Permanent link">¶</a></h2>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2164 |
<ul>
|
| 2165 |
<li>Satorras, Hoogeboom, Welling, <em>E(n) equivariant graph neural networks</em>, ICML 2021 (the encoder).</li>
|
| 2166 |
<li>Radford et al., <em>CLIP</em>, ICML 2021 (the alignment objective).</li>
|
|
|
|
| 697 |
<span class="md-ellipsis">
|
| 698 |
|
| 699 |
|
| 700 |
+
MEIDNet Studio
|
| 701 |
|
| 702 |
|
| 703 |
|
|
|
|
| 896 |
<span class="md-ellipsis">
|
| 897 |
|
| 898 |
|
| 899 |
+
Capabilities
|
| 900 |
|
| 901 |
|
| 902 |
|
|
|
|
| 1605 |
<span class="md-ellipsis">
|
| 1606 |
|
| 1607 |
|
| 1608 |
+
Interpreting a candidate
|
| 1609 |
|
| 1610 |
|
| 1611 |
|
|
|
|
| 2161 |
<li>Generated structures: <code>examples/perov5/paper_results/</code>.</li>
|
| 2162 |
</ul>
|
| 2163 |
<h2 id="related">Related<a class="headerlink" href="#related" title="Permanent link">¶</a></h2>
|
| 2164 |
+
<p>Reviews by the authors:</p>
|
| 2165 |
+
<ul>
|
| 2166 |
+
<li>A. Babu, N. M. A. Krishnan, <em>Multimodal and cross-modal learning techniques</em>, APL Machine Learning <strong>4</strong>, 030901
|
| 2167 |
+
(2026). <a href="https://doi.org/10.1063/5.0346744">doi:10.1063/5.0346744</a></li>
|
| 2168 |
+
<li>A. Babu, R. Almeida Gouvรชa, G.-M. Rignanese, <em>Toward automated discovery with generative models multimodal
|
| 2169 |
+
learning and closed loop workflows in inverse materials design</em>, Cell Reports Physical Science <strong>7</strong>, 103561
|
| 2170 |
+
(2026). <a href="https://doi.org/10.1016/j.xcrp.2026.103561">doi:10.1016/j.xcrp.2026.103561</a></li>
|
| 2171 |
+
</ul>
|
| 2172 |
+
<p>Methods MEIDNet builds on:</p>
|
| 2173 |
<ul>
|
| 2174 |
<li>Satorras, Hoogeboom, Welling, <em>E(n) equivariant graph neural networks</em>, ICML 2021 (the encoder).</li>
|
| 2175 |
<li>Radford et al., <em>CLIP</em>, ICML 2021 (the alignment objective).</li>
|
site/search/search_index.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
site/start/colab.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1670,7 +1670,7 @@
|
|
| 1670 |
<span class="md-ellipsis">
|
| 1671 |
|
| 1672 |
|
| 1673 |
-
|
| 1674 |
|
| 1675 |
|
| 1676 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1670 |
<span class="md-ellipsis">
|
| 1671 |
|
| 1672 |
|
| 1673 |
+
Interpreting a candidate
|
| 1674 |
|
| 1675 |
|
| 1676 |
|
site/start/quickstart.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1329,10 +1329,10 @@
|
|
| 1329 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 1330 |
|
| 1331 |
<li class="md-nav__item">
|
| 1332 |
-
<a href="#what-
|
| 1333 |
<span class="md-ellipsis">
|
| 1334 |
|
| 1335 |
-
What
|
| 1336 |
|
| 1337 |
</span>
|
| 1338 |
</a>
|
|
@@ -1681,7 +1681,7 @@
|
|
| 1681 |
<span class="md-ellipsis">
|
| 1682 |
|
| 1683 |
|
| 1684 |
-
|
| 1685 |
|
| 1686 |
|
| 1687 |
|
|
@@ -2099,10 +2099,10 @@
|
|
| 2099 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 2100 |
|
| 2101 |
<li class="md-nav__item">
|
| 2102 |
-
<a href="#what-
|
| 2103 |
<span class="md-ellipsis">
|
| 2104 |
|
| 2105 |
-
What
|
| 2106 |
|
| 2107 |
</span>
|
| 2108 |
</a>
|
|
@@ -2164,7 +2164,7 @@ meidnet<span class="w"> </span>studio<span class="w"> </span><span
|
|
| 2164 |
</div>
|
| 2165 |
</div>
|
| 2166 |
</div>
|
| 2167 |
-
<h2 id="what-
|
| 2168 |
<ol>
|
| 2169 |
<li><strong>Targets โ latent.</strong> The property encoder maps (band gap, enthalpy) to a point in the shared latent space.</li>
|
| 2170 |
<li><strong>Search.</strong> A population of latents near that point is optimised so that the decoder's output matches the
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1329 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 1330 |
|
| 1331 |
<li class="md-nav__item">
|
| 1332 |
+
<a href="#what-the-demo-did" class="md-nav__link">
|
| 1333 |
<span class="md-ellipsis">
|
| 1334 |
|
| 1335 |
+
What the demo did
|
| 1336 |
|
| 1337 |
</span>
|
| 1338 |
</a>
|
|
|
|
| 1681 |
<span class="md-ellipsis">
|
| 1682 |
|
| 1683 |
|
| 1684 |
+
Interpreting a candidate
|
| 1685 |
|
| 1686 |
|
| 1687 |
|
|
|
|
| 2099 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 2100 |
|
| 2101 |
<li class="md-nav__item">
|
| 2102 |
+
<a href="#what-the-demo-did" class="md-nav__link">
|
| 2103 |
<span class="md-ellipsis">
|
| 2104 |
|
| 2105 |
+
What the demo did
|
| 2106 |
|
| 2107 |
</span>
|
| 2108 |
</a>
|
|
|
|
| 2164 |
</div>
|
| 2165 |
</div>
|
| 2166 |
</div>
|
| 2167 |
+
<h2 id="what-the-demo-did">What the demo did<a class="headerlink" href="#what-the-demo-did" title="Permanent link">¶</a></h2>
|
| 2168 |
<ol>
|
| 2169 |
<li><strong>Targets โ latent.</strong> The property encoder maps (band gap, enthalpy) to a point in the shared latent space.</li>
|
| 2170 |
<li><strong>Search.</strong> A population of latents near that point is optimised so that the decoder's output matches the
|
site/start/what-data.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1714,7 +1714,7 @@
|
|
| 1714 |
<span class="md-ellipsis">
|
| 1715 |
|
| 1716 |
|
| 1717 |
-
|
| 1718 |
|
| 1719 |
|
| 1720 |
|
|
@@ -2254,7 +2254,7 @@ but expect rough predictions (the training report tells you how rough).</p>
|
|
| 2254 |
<h2 id="what-happens-to-each-row">What happens to each row<a class="headerlink" href="#what-happens-to-each-row" title="Permanent link">¶</a></h2>
|
| 2255 |
<p><code>meidnet check</code> reads every row exactly as training would and writes <code>check_report.html</code> with one line per
|
| 2256 |
reason a row was skipped (unreadable CIF, too many atoms, missing value, does not match the prototype) and
|
| 2257 |
-
example ids
|
| 2258 |
<h2 id="properties-and-ranges">Properties and ranges<a class="headerlink" href="#properties-and-ranges" title="Permanent link">¶</a></h2>
|
| 2259 |
<p>MEIDNet can only design for property values it has seen. The check report draws each property's distribution;
|
| 2260 |
the generation report flags targets outside the training range as extrapolation.</p>
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1714 |
<span class="md-ellipsis">
|
| 1715 |
|
| 1716 |
|
| 1717 |
+
Interpreting a candidate
|
| 1718 |
|
| 1719 |
|
| 1720 |
|
|
|
|
| 2254 |
<h2 id="what-happens-to-each-row">What happens to each row<a class="headerlink" href="#what-happens-to-each-row" title="Permanent link">¶</a></h2>
|
| 2255 |
<p><code>meidnet check</code> reads every row exactly as training would and writes <code>check_report.html</code> with one line per
|
| 2256 |
reason a row was skipped (unreadable CIF, too many atoms, missing value, does not match the prototype) and
|
| 2257 |
+
example ids, so every skipped row is accounted for.</p>
|
| 2258 |
<h2 id="properties-and-ranges">Properties and ranges<a class="headerlink" href="#properties-and-ranges" title="Permanent link">¶</a></h2>
|
| 2259 |
<p>MEIDNet can only design for property values it has seen. The check report draws each property's distribution;
|
| 2260 |
the generation report flags targets outside the training range as extrapolation.</p>
|
site/studio.html
CHANGED
|
@@ -198,7 +198,7 @@ body>div:empty:not([id]):not([class]){position:absolute;top:0;left:0;width:0;hei
|
|
| 198 |
</div>
|
| 199 |
</section>
|
| 200 |
<div class="card strip"><div class="strip-scroll"><svg id="pipe" viewBox="0 0 1270 150" aria-label="MEIDNet workflow"></svg></div></div>
|
| 201 |
-
<div class="chain" id="chain"><span class="lead">
|
| 202 |
<details id="flowlog"><summary>Flow log (0)</summary><ol id="flowlog-list"></ol></details>
|
| 203 |
<div class="cols">
|
| 204 |
<div id="panel"><div class="card loading-card"><h2>Loading MEIDNet Studioโฆ</h2><p class="muted">Fetching the model and every composition of the perovskite family. This takes a few seconds; on the hosted Studio the very first visit can take up to a minute while the server wakes up.</p><div class="prog"><i class="indeterminate"></i></div></div></div>
|
|
@@ -331,7 +331,7 @@ async function boot(){
|
|
| 331 |
if(BLOCKS.some(b=>b.id===qs.get('panel'))) S.panel = qs.get('panel');
|
| 332 |
await loadFamily();
|
| 333 |
render();
|
| 334 |
-
chainText(`Ready: ${nfmt(S.ev.rows.length)} compositions, ${nfmt(S.ev.alive.length)} pass every rule.
|
| 335 |
if(!STATIC) await resumeJobs();
|
| 336 |
if(['space','candidates','data'].includes(qs.get('explore'))) openExplore(qs.get('explore'));
|
| 337 |
api('/api/data').then(d=>{ S.data=d; S.dataOwn = !!(S.state.session && S.state.session.checked); statusAll(); updateEdges(); render(); }).catch(()=>{});
|
|
@@ -652,7 +652,7 @@ function render(){
|
|
| 652 |
const b=BLOCKS.find(x=>x.id===S.panel); const n=BLOCKS.indexOf(b)+1;
|
| 653 |
P.dataset.block=S.panel;
|
| 654 |
P.innerHTML = `<div class="card"><div class="eyebrow">Block ${n} of 7 ยท ${esc(b.name)}</div><h2>${esc(b.name)}</h2><p class="purpose">${esc(b.purpose)}</p>
|
| 655 |
-
<div class="plain beginner-only"><b>In
|
| 656 |
document.querySelectorAll('.node').forEach(nd=>nd.classList.toggle('sel', nd.id==='node-'+S.panel));
|
| 657 |
if(!S.ev && S.fam) recompute(null, null); else { statusAll(); updateEdges(); renderLive(); }
|
| 658 |
renderLegend(); mountAll3d();
|
|
@@ -860,7 +860,7 @@ function trainBox(){
|
|
| 860 |
<tr><td>typical error (MAE)</td>${Object.entries(p.val.mae).map(([k,v])=>`<td>${fmt(v)}${esc(unit(k))}</td>`).join('')}<td>${(100*p.val.retrieval_top1).toFixed(0)}%</td></tr>
|
| 861 |
<tr><td>quality</td>${q.map(x=>`<td class="${x.css}">${x.word}</td>`).join('')}<td></td></tr></table>
|
| 862 |
<p class="small muted beginner-only">The typical error is compared with how much each property varies in your data: under 25% of that spread is <b>good</b>, under 50% <b>fair</b>, otherwise <b>weak</b>. "Matched correctly" is how often a material's structure and its properties land closest to each other in the model's hidden space (higher is better). A few epochs give a rough model; more epochs or more data usually help.</p>`; }
|
| 863 |
-
if(st.done&&!st.error) b+=`<div class="verdict good">
|
| 864 |
return b;
|
| 865 |
}
|
| 866 |
async function startTrain(){
|
|
@@ -913,13 +913,13 @@ function panelFamily(){
|
|
| 913 |
b+=`<h3>Elements per site group <span class="muted small">(click to exclude / include)</span></h3>`;
|
| 914 |
for(const [g,grp] of Object.entries(f.groups)){ b+=`<h4>${esc(g)} โ ${esc(grp.description)} ยท ${grp.slots.length} site${grp.slots.length>1?'s':''}</h4><div>`;
|
| 915 |
for(const el of grp.sample){ const off=S.ui.exclude.has(el); const ox=(grp.oxidation_states[el]||[]).map(q=>(q>0?'+':'')+q).join('/'); b+=`<span class="chip ${off?'off':''}" onclick="toggleEl(${jsq(el)})" title="charges ${esc(ox)}"><span style="display:inline-block;width:9px;height:9px;border-radius:50%;background:${CPK[el]||'#999'};border:1px solid var(--line);margin-right:5px;vertical-align:-1px"></span>${esc(el)}<small class="muted"> ${esc(ox)}</small></span>`; } b+='</div>'; }
|
| 916 |
-
b+=`<div class="help beginner-only">Excluding an element removes every composition
|
| 917 |
return b;
|
| 918 |
}
|
| 919 |
|
| 920 |
/* โโ Rules โโ */
|
| 921 |
function panelRules(){
|
| 922 |
-
const ev=S.ev||evaluateSpace(); let b=`<p class="muted small">
|
| 923 |
for(const c of S.fam.constraints){ const key=ruleKey(c); const r=S.ui.rules[key]; const d=S.fam.space.rows.map(x=>x.d[key]).filter(Number.isFinite);
|
| 924 |
b+=`<div class="rule ${r.enabled?'':'off'}"><div class="hd"><input type="checkbox" ${r.enabled?'checked':''} onchange="toggleRule(${jsq(key)},this.checked)"><b>${esc(ruleTitle(key))}</b><span class="muted small"><b style="color:var(--accent-text)">${nfmt(ev.perRule[key]??0)}</b> of ${nfmt(ev.rows.length)} pass</span></div><p class="small muted">${esc(ruleText(key))}</p>`;
|
| 925 |
const num=Object.entries(r.params).filter(([k,v])=>typeof v==='number' && !['cutoff'].includes(k));
|
|
@@ -1005,7 +1005,7 @@ function renderLive(){
|
|
| 1005 |
L.innerHTML=b;
|
| 1006 |
}
|
| 1007 |
function renderLegend(){ const beg=document.body.classList.contains('beginner');
|
| 1008 |
-
$('legend').innerHTML = beg ? `<h4>Glossary</h4><dl class="gloss"><dt>Composition</dt><dd>one element per site of the prototype, e.g. CsPbBrโ.</dd><dt>Rule</dt><dd>a hard check with a measured value and an allowed window.</dd><dt>Target</dt><dd>a property value you want; the model predicts how close each composition gets.</dd><dt>Latent space</dt><dd>the hidden coordinates where structures and properties meet; the search moves through it.</dd><dt>Extrapolation</dt><dd>a target outside the training range
|
| 1009 |
: `<h4>How to use</h4><ol class="small" style="padding-left:18px;margin:4px 0"><li><b>Family</b>: pick the crystal type; exclude elements.</li><li><b>Rules</b>: move limits; counts update live.</li><li><b>Targets</b>: set values; see the closest compositions.</li><li><b>Search</b> runs the latent optimisation; <b>Candidates</b> explains each result.</li><li><b>Data/Model</b>: upload your table, train, and design with your own properties.</li></ol>`; }
|
| 1010 |
|
| 1011 |
/* โโโโโโโโโโโโโโโโโโโโโโโโโโโ actions โโโโโโโโโโโโโโโโโโโโโโโโโโโ */
|
|
|
|
| 198 |
</div>
|
| 199 |
</section>
|
| 200 |
<div class="card strip"><div class="strip-scroll"><svg id="pipe" viewBox="0 0 1270 150" aria-label="MEIDNet workflow"></svg></div></div>
|
| 201 |
+
<div class="chain" id="chain"><span class="lead">Changes made above or in a block are listed here, with their effect on the blocks after it.</span></div>
|
| 202 |
<details id="flowlog"><summary>Flow log (0)</summary><ol id="flowlog-list"></ol></details>
|
| 203 |
<div class="cols">
|
| 204 |
<div id="panel"><div class="card loading-card"><h2>Loading MEIDNet Studioโฆ</h2><p class="muted">Fetching the model and every composition of the perovskite family. This takes a few seconds; on the hosted Studio the very first visit can take up to a minute while the server wakes up.</p><div class="prog"><i class="indeterminate"></i></div></div></div>
|
|
|
|
| 331 |
if(BLOCKS.some(b=>b.id===qs.get('panel'))) S.panel = qs.get('panel');
|
| 332 |
await loadFamily();
|
| 333 |
render();
|
| 334 |
+
chainText(`Ready: ${nfmt(S.ev.rows.length)} compositions, ${nfmt(S.ev.alive.length)} pass every rule. Changes and their effect on the later blocks are listed here.`);
|
| 335 |
if(!STATIC) await resumeJobs();
|
| 336 |
if(['space','candidates','data'].includes(qs.get('explore'))) openExplore(qs.get('explore'));
|
| 337 |
api('/api/data').then(d=>{ S.data=d; S.dataOwn = !!(S.state.session && S.state.session.checked); statusAll(); updateEdges(); render(); }).catch(()=>{});
|
|
|
|
| 652 |
const b=BLOCKS.find(x=>x.id===S.panel); const n=BLOCKS.indexOf(b)+1;
|
| 653 |
P.dataset.block=S.panel;
|
| 654 |
P.innerHTML = `<div class="card"><div class="eyebrow">Block ${n} of 7 ยท ${esc(b.name)}</div><h2>${esc(b.name)}</h2><p class="purpose">${esc(b.purpose)}</p>
|
| 655 |
+
<div class="plain beginner-only"><b>In short.</b> ${esc(b.plain)}</div>${ioStrip(S.panel)}${f?f():''}${behind(S.panel)}</div>`;
|
| 656 |
document.querySelectorAll('.node').forEach(nd=>nd.classList.toggle('sel', nd.id==='node-'+S.panel));
|
| 657 |
if(!S.ev && S.fam) recompute(null, null); else { statusAll(); updateEdges(); renderLive(); }
|
| 658 |
renderLegend(); mountAll3d();
|
|
|
|
| 860 |
<tr><td>typical error (MAE)</td>${Object.entries(p.val.mae).map(([k,v])=>`<td>${fmt(v)}${esc(unit(k))}</td>`).join('')}<td>${(100*p.val.retrieval_top1).toFixed(0)}%</td></tr>
|
| 861 |
<tr><td>quality</td>${q.map(x=>`<td class="${x.css}">${x.word}</td>`).join('')}<td></td></tr></table>
|
| 862 |
<p class="small muted beginner-only">The typical error is compared with how much each property varies in your data: under 25% of that spread is <b>good</b>, under 50% <b>fair</b>, otherwise <b>weak</b>. "Matched correctly" is how often a material's structure and its properties land closest to each other in the model's hidden space (higher is better). A few epochs give a rough model; more epochs or more data usually help.</p>`; }
|
| 863 |
+
if(st.done&&!st.error) b+=`<div class="verdict good">Model ready. The blocks below now use <b>your</b> model and properties.${st.report?` <a href="/files/${esc(st.report)}" target="_blank">training report</a> ยท <a href="/files/${esc(st.report.replace('training_report.html','model.pt'))}" download="model.pt">download model.pt</a>`:''}</div>`; }
|
| 864 |
return b;
|
| 865 |
}
|
| 866 |
async function startTrain(){
|
|
|
|
| 913 |
b+=`<h3>Elements per site group <span class="muted small">(click to exclude / include)</span></h3>`;
|
| 914 |
for(const [g,grp] of Object.entries(f.groups)){ b+=`<h4>${esc(g)} โ ${esc(grp.description)} ยท ${grp.slots.length} site${grp.slots.length>1?'s':''}</h4><div>`;
|
| 915 |
for(const el of grp.sample){ const off=S.ui.exclude.has(el); const ox=(grp.oxidation_states[el]||[]).map(q=>(q>0?'+':'')+q).join('/'); b+=`<span class="chip ${off?'off':''}" onclick="toggleEl(${jsq(el)})" title="charges ${esc(ox)}"><span style="display:inline-block;width:9px;height:9px;border-radius:50%;background:${CPK[el]||'#999'};border:1px solid var(--line);margin-right:5px;vertical-align:-1px"></span>${esc(el)}<small class="muted"> ${esc(ox)}</small></span>`; } b+='</div>'; }
|
| 916 |
+
b+=`<div class="help beginner-only">Excluding an element removes every composition that contains it; the Family and Rules counts update accordingly. To change which elements a family allows at all, copy <code>${esc(S.ui.family)}.yaml</code> and edit its <code>groups:</code>.</div>`;
|
| 917 |
return b;
|
| 918 |
}
|
| 919 |
|
| 920 |
/* โโ Rules โโ */
|
| 921 |
function panelRules(){
|
| 922 |
+
const ev=S.ev||evaluateSpace(); let b=`<p class="muted small">Moving a limit updates the count; the search applies exactly these windows.</p>`;
|
| 923 |
for(const c of S.fam.constraints){ const key=ruleKey(c); const r=S.ui.rules[key]; const d=S.fam.space.rows.map(x=>x.d[key]).filter(Number.isFinite);
|
| 924 |
b+=`<div class="rule ${r.enabled?'':'off'}"><div class="hd"><input type="checkbox" ${r.enabled?'checked':''} onchange="toggleRule(${jsq(key)},this.checked)"><b>${esc(ruleTitle(key))}</b><span class="muted small"><b style="color:var(--accent-text)">${nfmt(ev.perRule[key]??0)}</b> of ${nfmt(ev.rows.length)} pass</span></div><p class="small muted">${esc(ruleText(key))}</p>`;
|
| 925 |
const num=Object.entries(r.params).filter(([k,v])=>typeof v==='number' && !['cutoff'].includes(k));
|
|
|
|
| 1005 |
L.innerHTML=b;
|
| 1006 |
}
|
| 1007 |
function renderLegend(){ const beg=document.body.classList.contains('beginner');
|
| 1008 |
+
$('legend').innerHTML = beg ? `<h4>Glossary</h4><dl class="gloss"><dt>Composition</dt><dd>one element per site of the prototype, e.g. CsPbBrโ.</dd><dt>Rule</dt><dd>a hard check with a measured value and an allowed window.</dd><dt>Target</dt><dd>a property value you want; the model predicts how close each composition gets.</dd><dt>Latent space</dt><dd>the hidden coordinates where structures and properties meet; the search moves through it.</dd><dt>Extrapolation</dt><dd>a target outside the training range; predictions there are less reliable.</dd></dl><p class="small muted">Switch on Researcher mode in the header for the configuration as text and the Python behind each block.</p>`
|
| 1009 |
: `<h4>How to use</h4><ol class="small" style="padding-left:18px;margin:4px 0"><li><b>Family</b>: pick the crystal type; exclude elements.</li><li><b>Rules</b>: move limits; counts update live.</li><li><b>Targets</b>: set values; see the closest compositions.</li><li><b>Search</b> runs the latent optimisation; <b>Candidates</b> explains each result.</li><li><b>Data/Model</b>: upload your table, train, and design with your own properties.</li></ol>`; }
|
| 1010 |
|
| 1011 |
/* โโโโโโโโโโโโโโโโโโโโโโโโโโโ actions โโโโโโโโโโโโโโโโโโโโโโโโโโโ */
|
site/understand/how-it-works.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1714,7 +1714,7 @@
|
|
| 1714 |
<span class="md-ellipsis">
|
| 1715 |
|
| 1716 |
|
| 1717 |
-
|
| 1718 |
|
| 1719 |
|
| 1720 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1714 |
<span class="md-ellipsis">
|
| 1715 |
|
| 1716 |
|
| 1717 |
+
Interpreting a candidate
|
| 1718 |
|
| 1719 |
|
| 1720 |
|
site/understand/interpretability.html
CHANGED
|
@@ -27,7 +27,7 @@
|
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
-
<title>
|
| 31 |
|
| 32 |
|
| 33 |
|
|
@@ -80,7 +80,7 @@
|
|
| 80 |
<div data-md-component="skip">
|
| 81 |
|
| 82 |
|
| 83 |
-
<a href="#
|
| 84 |
Skip to content
|
| 85 |
</a>
|
| 86 |
|
|
@@ -113,7 +113,7 @@
|
|
| 113 |
<div class="md-header__topic" data-md-component="header-topic">
|
| 114 |
<span class="md-ellipsis">
|
| 115 |
|
| 116 |
-
|
| 117 |
|
| 118 |
</span>
|
| 119 |
</div>
|
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1621,7 +1621,7 @@
|
|
| 1621 |
<span class="md-ellipsis">
|
| 1622 |
|
| 1623 |
|
| 1624 |
-
|
| 1625 |
|
| 1626 |
|
| 1627 |
|
|
@@ -1639,7 +1639,7 @@
|
|
| 1639 |
<span class="md-ellipsis">
|
| 1640 |
|
| 1641 |
|
| 1642 |
-
|
| 1643 |
|
| 1644 |
|
| 1645 |
|
|
@@ -1698,10 +1698,10 @@
|
|
| 1698 |
</li>
|
| 1699 |
|
| 1700 |
<li class="md-nav__item">
|
| 1701 |
-
<a href="#what-
|
| 1702 |
<span class="md-ellipsis">
|
| 1703 |
|
| 1704 |
-
What
|
| 1705 |
|
| 1706 |
</span>
|
| 1707 |
</a>
|
|
@@ -2154,10 +2154,10 @@
|
|
| 2154 |
</li>
|
| 2155 |
|
| 2156 |
<li class="md-nav__item">
|
| 2157 |
-
<a href="#what-
|
| 2158 |
<span class="md-ellipsis">
|
| 2159 |
|
| 2160 |
-
What
|
| 2161 |
|
| 2162 |
</span>
|
| 2163 |
</a>
|
|
@@ -2184,7 +2184,7 @@
|
|
| 2184 |
|
| 2185 |
|
| 2186 |
|
| 2187 |
-
<h1 id="
|
| 2188 |
<p>MEIDNet shows its reasoning rather than a score. Where to look:</p>
|
| 2189 |
<h2 id="before-trusting-the-model">Before trusting the model<a class="headerlink" href="#before-trusting-the-model" title="Permanent link">¶</a></h2>
|
| 2190 |
<ul>
|
|
@@ -2215,7 +2215,7 @@
|
|
| 2215 |
<li><strong>Rejected examples</strong> โ what the search <em>wanted</em> to make; often more informative than what it kept.</li>
|
| 2216 |
<li><strong>Latent map</strong> โ whether the population spread out (diversity) or collapsed.</li>
|
| 2217 |
</ul>
|
| 2218 |
-
<h2 id="what-
|
| 2219 |
<p>A candidate is a <em>composition on an ideal prototype with model-predicted properties</em>. Whether it is stable,
|
| 2220 |
synthesisable, or has those properties is for <code>meidnet screen</code>, DFT and the lab to decide.</p>
|
| 2221 |
|
|
|
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
+
<title>Interpreting a candidate - MEIDNet Prism</title>
|
| 31 |
|
| 32 |
|
| 33 |
|
|
|
|
| 80 |
<div data-md-component="skip">
|
| 81 |
|
| 82 |
|
| 83 |
+
<a href="#interpreting-a-candidate" class="md-skip">
|
| 84 |
Skip to content
|
| 85 |
</a>
|
| 86 |
|
|
|
|
| 113 |
<div class="md-header__topic" data-md-component="header-topic">
|
| 114 |
<span class="md-ellipsis">
|
| 115 |
|
| 116 |
+
Interpreting a candidate
|
| 117 |
|
| 118 |
</span>
|
| 119 |
</div>
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1621 |
<span class="md-ellipsis">
|
| 1622 |
|
| 1623 |
|
| 1624 |
+
Interpreting a candidate
|
| 1625 |
|
| 1626 |
|
| 1627 |
|
|
|
|
| 1639 |
<span class="md-ellipsis">
|
| 1640 |
|
| 1641 |
|
| 1642 |
+
Interpreting a candidate
|
| 1643 |
|
| 1644 |
|
| 1645 |
|
|
|
|
| 1698 |
</li>
|
| 1699 |
|
| 1700 |
<li class="md-nav__item">
|
| 1701 |
+
<a href="#what-a-candidate-is" class="md-nav__link">
|
| 1702 |
<span class="md-ellipsis">
|
| 1703 |
|
| 1704 |
+
What a candidate is
|
| 1705 |
|
| 1706 |
</span>
|
| 1707 |
</a>
|
|
|
|
| 2154 |
</li>
|
| 2155 |
|
| 2156 |
<li class="md-nav__item">
|
| 2157 |
+
<a href="#what-a-candidate-is" class="md-nav__link">
|
| 2158 |
<span class="md-ellipsis">
|
| 2159 |
|
| 2160 |
+
What a candidate is
|
| 2161 |
|
| 2162 |
</span>
|
| 2163 |
</a>
|
|
|
|
| 2184 |
|
| 2185 |
|
| 2186 |
|
| 2187 |
+
<h1 id="interpreting-a-candidate">Interpreting a candidate<a class="headerlink" href="#interpreting-a-candidate" title="Permanent link">¶</a></h1>
|
| 2188 |
<p>MEIDNet shows its reasoning rather than a score. Where to look:</p>
|
| 2189 |
<h2 id="before-trusting-the-model">Before trusting the model<a class="headerlink" href="#before-trusting-the-model" title="Permanent link">¶</a></h2>
|
| 2190 |
<ul>
|
|
|
|
| 2215 |
<li><strong>Rejected examples</strong> โ what the search <em>wanted</em> to make; often more informative than what it kept.</li>
|
| 2216 |
<li><strong>Latent map</strong> โ whether the population spread out (diversity) or collapsed.</li>
|
| 2217 |
</ul>
|
| 2218 |
+
<h2 id="what-a-candidate-is">What a candidate is<a class="headerlink" href="#what-a-candidate-is" title="Permanent link">¶</a></h2>
|
| 2219 |
<p>A candidate is a <em>composition on an ideal prototype with model-predicted properties</em>. Whether it is stable,
|
| 2220 |
synthesisable, or has those properties is for <code>meidnet screen</code>, DFT and the lab to decide.</p>
|
| 2221 |
|
site/understand/limits.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1612,7 +1612,7 @@
|
|
| 1612 |
<span class="md-ellipsis">
|
| 1613 |
|
| 1614 |
|
| 1615 |
-
|
| 1616 |
|
| 1617 |
|
| 1618 |
|
|
@@ -1693,10 +1693,10 @@
|
|
| 1693 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 1694 |
|
| 1695 |
<li class="md-nav__item">
|
| 1696 |
-
<a href="#
|
| 1697 |
<span class="md-ellipsis">
|
| 1698 |
|
| 1699 |
-
|
| 1700 |
|
| 1701 |
</span>
|
| 1702 |
</a>
|
|
@@ -1704,10 +1704,10 @@
|
|
| 1704 |
</li>
|
| 1705 |
|
| 1706 |
<li class="md-nav__item">
|
| 1707 |
-
<a href="#
|
| 1708 |
<span class="md-ellipsis">
|
| 1709 |
|
| 1710 |
-
|
| 1711 |
|
| 1712 |
</span>
|
| 1713 |
</a>
|
|
@@ -2110,10 +2110,10 @@
|
|
| 2110 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 2111 |
|
| 2112 |
<li class="md-nav__item">
|
| 2113 |
-
<a href="#
|
| 2114 |
<span class="md-ellipsis">
|
| 2115 |
|
| 2116 |
-
|
| 2117 |
|
| 2118 |
</span>
|
| 2119 |
</a>
|
|
@@ -2121,10 +2121,10 @@
|
|
| 2121 |
</li>
|
| 2122 |
|
| 2123 |
<li class="md-nav__item">
|
| 2124 |
-
<a href="#
|
| 2125 |
<span class="md-ellipsis">
|
| 2126 |
|
| 2127 |
-
|
| 2128 |
|
| 2129 |
</span>
|
| 2130 |
</a>
|
|
@@ -2163,7 +2163,7 @@
|
|
| 2163 |
|
| 2164 |
|
| 2165 |
<h1 id="scope-and-roadmap">Scope and roadmap<a class="headerlink" href="#scope-and-roadmap" title="Permanent link">¶</a></h1>
|
| 2166 |
-
<h2 id="
|
| 2167 |
<table>
|
| 2168 |
<thead>
|
| 2169 |
<tr>
|
|
@@ -2198,7 +2198,7 @@
|
|
| 2198 |
</tr>
|
| 2199 |
</tbody>
|
| 2200 |
</table>
|
| 2201 |
-
<h2 id="
|
| 2202 |
<ul>
|
| 2203 |
<li><strong>New atomic arrangements.</strong> The decoder's positions are not used to create geometry; candidates are
|
| 2204 |
compositions placed on the family prototype. Generating free geometry needs a decoder trained to produce it
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1612 |
<span class="md-ellipsis">
|
| 1613 |
|
| 1614 |
|
| 1615 |
+
Interpreting a candidate
|
| 1616 |
|
| 1617 |
|
| 1618 |
|
|
|
|
| 1693 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 1694 |
|
| 1695 |
<li class="md-nav__item">
|
| 1696 |
+
<a href="#current-capabilities" class="md-nav__link">
|
| 1697 |
<span class="md-ellipsis">
|
| 1698 |
|
| 1699 |
+
Current capabilities
|
| 1700 |
|
| 1701 |
</span>
|
| 1702 |
</a>
|
|
|
|
| 1704 |
</li>
|
| 1705 |
|
| 1706 |
<li class="md-nav__item">
|
| 1707 |
+
<a href="#not-yet-supported" class="md-nav__link">
|
| 1708 |
<span class="md-ellipsis">
|
| 1709 |
|
| 1710 |
+
Not yet supported
|
| 1711 |
|
| 1712 |
</span>
|
| 1713 |
</a>
|
|
|
|
| 2110 |
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
| 2111 |
|
| 2112 |
<li class="md-nav__item">
|
| 2113 |
+
<a href="#current-capabilities" class="md-nav__link">
|
| 2114 |
<span class="md-ellipsis">
|
| 2115 |
|
| 2116 |
+
Current capabilities
|
| 2117 |
|
| 2118 |
</span>
|
| 2119 |
</a>
|
|
|
|
| 2121 |
</li>
|
| 2122 |
|
| 2123 |
<li class="md-nav__item">
|
| 2124 |
+
<a href="#not-yet-supported" class="md-nav__link">
|
| 2125 |
<span class="md-ellipsis">
|
| 2126 |
|
| 2127 |
+
Not yet supported
|
| 2128 |
|
| 2129 |
</span>
|
| 2130 |
</a>
|
|
|
|
| 2163 |
|
| 2164 |
|
| 2165 |
<h1 id="scope-and-roadmap">Scope and roadmap<a class="headerlink" href="#scope-and-roadmap" title="Permanent link">¶</a></h1>
|
| 2166 |
+
<h2 id="current-capabilities">Current capabilities<a class="headerlink" href="#current-capabilities" title="Permanent link">¶</a></h2>
|
| 2167 |
<table>
|
| 2168 |
<thead>
|
| 2169 |
<tr>
|
|
|
|
| 2198 |
</tr>
|
| 2199 |
</tbody>
|
| 2200 |
</table>
|
| 2201 |
+
<h2 id="not-yet-supported">Not yet supported<a class="headerlink" href="#not-yet-supported" title="Permanent link">¶</a></h2>
|
| 2202 |
<ul>
|
| 2203 |
<li><strong>New atomic arrangements.</strong> The decoder's positions are not used to create geometry; candidates are
|
| 2204 |
compositions placed on the family prototype. Generating free geometry needs a decoder trained to produce it
|
site/use/config.html
CHANGED
|
@@ -699,7 +699,7 @@
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
-
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
@@ -898,7 +898,7 @@
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
-
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
@@ -1670,7 +1670,7 @@
|
|
| 1670 |
<span class="md-ellipsis">
|
| 1671 |
|
| 1672 |
|
| 1673 |
-
|
| 1674 |
|
| 1675 |
|
| 1676 |
|
|
|
|
| 699 |
<span class="md-ellipsis">
|
| 700 |
|
| 701 |
|
| 702 |
+
MEIDNet Studio
|
| 703 |
|
| 704 |
|
| 705 |
|
|
|
|
| 898 |
<span class="md-ellipsis">
|
| 899 |
|
| 900 |
|
| 901 |
+
Capabilities
|
| 902 |
|
| 903 |
|
| 904 |
|
|
|
|
| 1670 |
<span class="md-ellipsis">
|
| 1671 |
|
| 1672 |
|
| 1673 |
+
Interpreting a candidate
|
| 1674 |
|
| 1675 |
|
| 1676 |
|
site/use/explore-3d.html
CHANGED
|
@@ -704,7 +704,7 @@
|
|
| 704 |
<span class="md-ellipsis">
|
| 705 |
|
| 706 |
|
| 707 |
-
MEIDNet Studio
|
| 708 |
|
| 709 |
|
| 710 |
|
|
@@ -1005,7 +1005,7 @@
|
|
| 1005 |
<span class="md-ellipsis">
|
| 1006 |
|
| 1007 |
|
| 1008 |
-
Capabilities
|
| 1009 |
|
| 1010 |
|
| 1011 |
|
|
@@ -1714,7 +1714,7 @@
|
|
| 1714 |
<span class="md-ellipsis">
|
| 1715 |
|
| 1716 |
|
| 1717 |
-
|
| 1718 |
|
| 1719 |
|
| 1720 |
|
|
|
|
| 704 |
<span class="md-ellipsis">
|
| 705 |
|
| 706 |
|
| 707 |
+
MEIDNet Studio
|
| 708 |
|
| 709 |
|
| 710 |
|
|
|
|
| 1005 |
<span class="md-ellipsis">
|
| 1006 |
|
| 1007 |
|
| 1008 |
+
Capabilities
|
| 1009 |
|
| 1010 |
|
| 1011 |
|
|
|
|
| 1714 |
<span class="md-ellipsis">
|
| 1715 |
|
| 1716 |
|
| 1717 |
+
Interpreting a candidate
|
| 1718 |
|
| 1719 |
|
| 1720 |
|
site/use/reports.html
CHANGED
|
@@ -704,7 +704,7 @@
|
|
| 704 |
<span class="md-ellipsis">
|
| 705 |
|
| 706 |
|
| 707 |
-
MEIDNet Studio
|
| 708 |
|
| 709 |
|
| 710 |
|
|
@@ -994,7 +994,7 @@
|
|
| 994 |
<span class="md-ellipsis">
|
| 995 |
|
| 996 |
|
| 997 |
-
Capabilities
|
| 998 |
|
| 999 |
|
| 1000 |
|
|
@@ -1703,7 +1703,7 @@
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
-
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
|
|
|
| 704 |
<span class="md-ellipsis">
|
| 705 |
|
| 706 |
|
| 707 |
+
MEIDNet Studio
|
| 708 |
|
| 709 |
|
| 710 |
|
|
|
|
| 994 |
<span class="md-ellipsis">
|
| 995 |
|
| 996 |
|
| 997 |
+
Capabilities
|
| 998 |
|
| 999 |
|
| 1000 |
|
|
|
|
| 1703 |
<span class="md-ellipsis">
|
| 1704 |
|
| 1705 |
|
| 1706 |
+
Interpreting a candidate
|
| 1707 |
|
| 1708 |
|
| 1709 |
|
site/use/studio.html
CHANGED
|
@@ -27,7 +27,7 @@
|
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
-
<title>MEIDNet Studio
|
| 31 |
|
| 32 |
|
| 33 |
|
|
@@ -113,7 +113,7 @@
|
|
| 113 |
<div class="md-header__topic" data-md-component="header-topic">
|
| 114 |
<span class="md-ellipsis">
|
| 115 |
|
| 116 |
-
MEIDNet Studio
|
| 117 |
|
| 118 |
</span>
|
| 119 |
</div>
|
|
@@ -713,7 +713,7 @@
|
|
| 713 |
<span class="md-ellipsis">
|
| 714 |
|
| 715 |
|
| 716 |
-
MEIDNet Studio
|
| 717 |
|
| 718 |
|
| 719 |
|
|
@@ -731,7 +731,7 @@
|
|
| 731 |
<span class="md-ellipsis">
|
| 732 |
|
| 733 |
|
| 734 |
-
MEIDNet Studio
|
| 735 |
|
| 736 |
|
| 737 |
|
|
@@ -1093,7 +1093,7 @@
|
|
| 1093 |
<span class="md-ellipsis">
|
| 1094 |
|
| 1095 |
|
| 1096 |
-
Capabilities
|
| 1097 |
|
| 1098 |
|
| 1099 |
|
|
@@ -1802,7 +1802,7 @@
|
|
| 1802 |
<span class="md-ellipsis">
|
| 1803 |
|
| 1804 |
|
| 1805 |
-
|
| 1806 |
|
| 1807 |
|
| 1808 |
|
|
@@ -2526,7 +2526,7 @@ the encoder considers best, and whether the predictions agree.</p>
|
|
| 2526 |
<h2 id="beginner-view-and-researcher-mode">Beginner view and Researcher mode<a class="headerlink" href="#beginner-view-and-researcher-mode" title="Permanent link">¶</a></h2>
|
| 2527 |
<p>The page opens in the <strong>beginner view</strong>: every block has an <strong>Input โ Logic โ Output</strong> strip with live numbers
|
| 2528 |
("924 compositions โ 5 hard rules, applied in order โ 27 pass every rule") and the name of the Python function that
|
| 2529 |
-
does the work, a short <strong>In
|
| 2530 |
target, latent space, extrapolation).</p>
|
| 2531 |
<p>The <strong>Researcher mode</strong> switch in the header trades these for the technical view: the <strong>โ Edit as text</strong> YAML
|
| 2532 |
drawer, and a <strong>Behind the scenes</strong> panel in every block with the <code>meidnet.yaml</code> and the Python of that block.
|
|
|
|
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
+
<title>MEIDNet Studio - MEIDNet Prism</title>
|
| 31 |
|
| 32 |
|
| 33 |
|
|
|
|
| 113 |
<div class="md-header__topic" data-md-component="header-topic">
|
| 114 |
<span class="md-ellipsis">
|
| 115 |
|
| 116 |
+
MEIDNet Studio
|
| 117 |
|
| 118 |
</span>
|
| 119 |
</div>
|
|
|
|
| 713 |
<span class="md-ellipsis">
|
| 714 |
|
| 715 |
|
| 716 |
+
MEIDNet Studio
|
| 717 |
|
| 718 |
|
| 719 |
|
|
|
|
| 731 |
<span class="md-ellipsis">
|
| 732 |
|
| 733 |
|
| 734 |
+
MEIDNet Studio
|
| 735 |
|
| 736 |
|
| 737 |
|
|
|
|
| 1093 |
<span class="md-ellipsis">
|
| 1094 |
|
| 1095 |
|
| 1096 |
+
Capabilities
|
| 1097 |
|
| 1098 |
|
| 1099 |
|
|
|
|
| 1802 |
<span class="md-ellipsis">
|
| 1803 |
|
| 1804 |
|
| 1805 |
+
Interpreting a candidate
|
| 1806 |
|
| 1807 |
|
| 1808 |
|
|
|
|
| 2526 |
<h2 id="beginner-view-and-researcher-mode">Beginner view and Researcher mode<a class="headerlink" href="#beginner-view-and-researcher-mode" title="Permanent link">¶</a></h2>
|
| 2527 |
<p>The page opens in the <strong>beginner view</strong>: every block has an <strong>Input โ Logic โ Output</strong> strip with live numbers
|
| 2528 |
("924 compositions โ 5 hard rules, applied in order โ 27 pass every rule") and the name of the Python function that
|
| 2529 |
+
does the work, a short <strong>In short</strong> explanation, and a <strong>glossary</strong> in the side panel (composition, rule,
|
| 2530 |
target, latent space, extrapolation).</p>
|
| 2531 |
<p>The <strong>Researcher mode</strong> switch in the header trades these for the technical view: the <strong>โ Edit as text</strong> YAML
|
| 2532 |
drawer, and a <strong>Behind the scenes</strong> panel in every block with the <code>meidnet.yaml</code> and the Python of that block.
|