diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 06027fc..2121895 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: # matverse is claiming to cover — it read 100 modules against a floor # of 111 purely because half the add-ons were absent. sudo apt-get update -qq && sudo apt-get install -y -qq libxrender1 - pip install -e ".[dev,analysis,plot,multi,diffusion,defects,alloys,molecules,phonons,screening]" + pip install -e ".[dev,analysis,plot,multi,diffusion,defects,alloys,molecules,phonons,screening,generation]" - name: Show the environment the results belong to run: | @@ -78,7 +78,7 @@ jobs: # docs build that silently skipped those cells would document a # matverse nobody runs. sudo apt-get update -qq && sudo apt-get install -y -qq libxrender1 - pip install -e ".[diffusion,defects,alloys,molecules,phonons,screening]" + pip install -e ".[diffusion,defects,alloys,molecules,phonons,screening,generation]" pip install -r matverse_guide/requirements.txt - name: Execute the tutorial notebooks diff --git a/matverse/gen.py b/matverse/gen.py index 38ff9bf..eb3e6dc 100644 --- a/matverse/gen.py +++ b/matverse/gen.py @@ -895,3 +895,192 @@ def _reduced(formula: str) -> str: return Composition(formula).reduced_formula except Exception: # pragma: no cover return formula + + +@register_function( + aliases=["pyxtal", "random crystals", "generate structures", "structure " + "from symmetry", "space group generation", "make structures from " + "a formula", "symmetry-based generation"], + category="gen", + description="Generate crystal structures for a composition by filling " + "Wyckoff positions of a space group — structures from a " + "formula, where none existed.", + # No requires: obs[source_column] is used when present and the + # composition matrix is the fallback, so the column is not required. The + # probe deletes a required slot and expects the call to fail; this one + # succeeded, which is what a wrong claim looks like. + produces={"obs": ["parent", "formula", "requested_space_group", + "space_group", "space_group_symbol", + "symmetry_as_requested", "nsites"], + "structures": ["input"]}, + prerequisites=["mv.gen.compositions"], + examples=["built = mv.gen.from_symmetry(candidates, space_groups=[221])", + "built = mv.gen.from_symmetry(candidates, per_composition=5)", + "built = mv.gen.from_symmetry(candidates, space_groups=[62, 194])"], + related=["mv.gen.compositions", "mv.data.from_compositions", + "mv.calc.relax", "mv.gen.validate", "mv.gen.substitute"], + notes="This is the step that turns a composition into something a " + "calculator can accept. mv.gen.compositions produces rows with no " + "structures; this gives them one, by placing the atoms on Wyckoff " + "positions of a chosen space group and randomising the free " + "parameters that remain.\\n\\n" + "**The output is a starting geometry, not a structure.** Cell " + "lengths come from a volume estimate and the free coordinates are " + "random, so bond lengths are only approximately right — generated " + "BaTiO3 in Pm-3m comes out near 5.06 A against a measured 4.00. " + "Run mv.calc.relax before believing any energy, and mv.gen.validate " + "before believing the structure.\\n\\n" + "The space group is **verified rather than assumed**. What is " + "requested is what pyxtal was asked for; obs['space_group'] is what " + "pymatgen finds in the structure that came back, and " + "obs['symmetry_as_requested'] says whether they agree. They can " + "differ often, not occasionally: asking for 40 random groups for " + "TiO2 gave 7 structures of which 5 came back at *higher* symmetry " + "than requested — P-6 asked for, P6/mmm delivered — because with " + "few atoms the random free parameters land on a special position. A " + "generator that reported only the request would be reporting its " + "input.\\n\\n" + "Sampling random space groups is wasteful. Of those same 40 " + "attempts, 33 failed outright because the group could not host the " + "composition at that cell size. Passing space_groups= explicitly is " + "both faster and more likely to give what was asked for.\\n\\n" + "The composition comes from obs[source_column] when it is there and " + "from the composition matrix otherwise, so a dataset that never had " + "a formula column still works.\\n\\n" + "Generation fails for combinations a group cannot host, and a " + "failure is a missing row plus a counted reason in " + "uns['from_symmetry'], never a silently substituted structure.", +) +def from_symmetry(md: AnnData, space_groups=None, per_composition: int = 1, + dimension: int = 3, source_column: str = "formula", + factor: float = 1.1, max_attempts: int = 10, + seed: int = 0) -> AnnData: + """Structures from a composition and a space group. Returns a new object.""" + try: + from pyxtal import pyxtal + except ImportError as exc: + raise ImportError( + f"mv.gen.from_symmetry needs PyXtal: `pip install " + f"matverse[generation]` or `pip install pyxtal`. ({exc})") from exc + + from pymatgen.core.composition import Composition + + from .data import from_structures + + formulas = _formulas_of(md, source_column) + groups = (None if space_groups is None + else [int(g) for g in np.atleast_1d(space_groups)]) + if groups is not None and any(not 1 <= g <= 230 for g in groups): + raise ValueError(f"space_groups={space_groups} must lie in 1..230") + if int(per_composition) < 1: + raise ValueError("per_composition must be at least 1") + + rng = np.random.default_rng(int(seed)) + built, rows, failures = [], [], [] + + for i, formula in enumerate(formulas): + composition = Composition(formula).reduced_composition + species = [str(el) for el in composition.elements] + counts = [int(round(composition[el])) for el in composition.elements] + wanted = (groups if groups is not None + else [int(g) for g in rng.integers(1, 231, + int(per_composition))]) + repeats = (int(per_composition) if groups is not None else 1) + + for group in wanted: + for _ in range(repeats): + structure, why = _one_crystal( + pyxtal, dimension, group, species, counts, factor, + max_attempts, int(rng.integers(0, 2 ** 31))) + if structure is None: + failures.append(f"{formula} in group {group}: {why}") + continue + achieved, symbol = _spacegroup_of(structure) + built.append(structure) + rows.append({ + "parent": str(md.obs_names[i]), + "formula": Composition(formula).reduced_formula, + "requested_space_group": int(group), + "space_group": int(achieved), + "space_group_symbol": str(symbol), + "symmetry_as_requested": bool(achieved == group), + "nsites": len(structure), + }) + + if not built: + raise ValueError( + f"no structure could be generated for any of the {len(formulas)} " + f"compositions" + + (f"; first failure was {failures[0]}" if failures else "")) + + out = from_structures(built, obs=pd.DataFrame(rows)) + out.uns["from_symmetry"] = { + "space_groups": groups, + "per_composition": int(per_composition), + "dimension": int(dimension), + "factor": float(factor), + "seed": int(seed), + "n_requested": len(formulas) * int(per_composition), + "n_built": len(built), + "n_failed": len(failures), + "errors": failures[:10], + "note": "starting geometries: cell volume is estimated and free " + "coordinates are random, so relax before believing an energy", + } + if failures: + warnings.warn( + f"{len(failures)} of {len(failures) + len(built)} attempts " + f"produced no structure and are missing rows rather than " + f"substituted ones; see uns['from_symmetry']['errors']. First: " + f"{failures[0]}", RuntimeWarning, stacklevel=2) + record(out, "gen.from_symmetry", space_groups=groups, + per_composition=per_composition, seed=seed) + return out + + +def _one_crystal(pyxtal_class, dimension, group, species, counts, factor, + max_attempts, seed): + """One random crystal, or ``(None, reason)``.""" + try: + crystal = pyxtal_class() + crystal.from_random(dim=int(dimension), group=int(group), + species=list(species), numIons=list(counts), + factor=float(factor), max_count=int(max_attempts), + random_state=int(seed)) + if not getattr(crystal, "valid", False): + return None, "pyxtal reported the crystal as invalid" + return crystal.to_pymatgen(), "" + except Exception as exc: + return None, f"{type(exc).__name__}: {exc}" + + +def _spacegroup_of(structure, tolerance: float = 0.1): + """The symmetry actually present, not the one that was asked for.""" + try: + from pymatgen.symmetry.analyzer import SpacegroupAnalyzer + analyzer = SpacegroupAnalyzer(structure, symprec=tolerance) + return analyzer.get_space_group_number(), analyzer.get_space_group_symbol() + except Exception: # pragma: no cover + return -1, "unknown" + + +def _formulas_of(md: AnnData, column: str) -> list: + """Formulas from obs if they are there, else from the composition matrix.""" + if column in md.obs: + return [str(f) for f in md.obs[column]] + if md.n_vars == 0: + raise ValueError( + f"obs[{column!r}] absent and this object has no element axis, so " + f"there is no composition to build from") + from pymatgen.core.composition import Composition + + values = np.asarray(md.X.todense() if hasattr(md.X, "todense") else md.X, + dtype=float) + elements = list(md.var_names) + out = [] + for row in values: + amounts = {elements[j]: float(v) for j, v in enumerate(row) if v} + if not amounts: + raise ValueError("a row has an empty composition") + out.append(Composition(amounts).reduced_formula) + return out diff --git a/matverse_guide/docs/_scripts/nb_chemical_space.py b/matverse_guide/docs/_scripts/nb_chemical_space.py index 09d498a..36b234a 100644 --- a/matverse_guide/docs/_scripts/nb_chemical_space.py +++ b/matverse_guide/docs/_scripts/nb_chemical_space.py @@ -397,8 +397,64 @@ def mass_and_volume(structures): wrong; they answer slightly different questions, and a screen that does not say which it used is not reproducible. -From here a candidate needs a structure before anything else can touch it, which -is what `mv.gen.substitute` and structure prediction are for. +## From a formula to a structure + +A candidate needs a structure before anything else can touch it. +`mv.gen.from_symmetry` supplies one, by placing the atoms on Wyckoff positions +of a chosen space group and randomising the free parameters that remain."""), + + ("code", """\ +try: + candidates = mv.data.from_compositions(["BaTiO3", "SrTiO3"]) + built = mv.gen.from_symmetry(candidates, space_groups=[221, 99], seed=0) + print(built.obs[["formula", "requested_space_group", "space_group", + "space_group_symbol", "symmetry_as_requested", + "nsites"]].to_string(index=False)) +except ImportError: + print("needs PyXtal; pip install matverse[generation]")"""), + + ("markdown", """\ +```{warning} +**The output is a starting geometry, not a structure.** The cell volume is +estimated and the free coordinates are random, so bond lengths are only +approximately right — generated BaTiO₃ in Pm-3m comes out near **5.06 Å against +a measured 4.00**. Run `mv.calc.relax` before believing any energy and +`mv.gen.validate` before believing the structure. +``` + +Two columns rather than one, and the second is the one that matters. +`requested_space_group` is what PyXtal was asked for; `space_group` is what +pymatgen finds in the structure that came back. + +They disagree **often**, not occasionally. Asking for 40 random space groups for +TiO₂ gave 7 structures, and 5 of them came back at *higher* symmetry than +requested — P-6 asked for, P6/mmm delivered — because with few atoms the random +free parameters land on a special position. A generator that reported only the +request would be reporting its input."""), + + ("code", """\ +try: + many = mv.gen.from_symmetry(mv.data.from_compositions(["TiO2"]), + per_composition=40, seed=1) + n_built = many.n_obs + n_failed = many.uns["from_symmetry"]["n_failed"] + disagreed = int((~many.obs["symmetry_as_requested"]).sum()) + print(f"{n_built} built from 40 attempts, {n_failed} failed") + print(f"{disagreed} of {n_built} came back at a different symmetry") +except ImportError: + print("needs PyXtal; pip install matverse[generation]")"""), + + ("markdown", """\ +Note the other number: **33 of 40 attempts failed outright**, because a random +space group usually cannot host a given composition at a given cell size. That +is honest rather than hidden — a failure is a missing row plus a counted reason +in `uns['from_symmetry']`, never a substituted structure — but it does mean +passing `space_groups=` explicitly is both faster and more likely to give what +you wanted. + +The result is an ordinary materials object, so `mv.pp.describe`, `mv.calc.relax` +and everything else work on it unchanged. The funnel is now complete: elements → +compositions → structures → energies. ```{seealso} [Beyond one number](beyond_one_number.ipynb) covers the results that are not a diff --git a/matverse_guide/docs/api/user.md b/matverse_guide/docs/api/user.md index 5ea355a..b5cc925 100644 --- a/matverse_guide/docs/api/user.md +++ b/matverse_guide/docs/api/user.md @@ -12,7 +12,7 @@ agent. Every entry names the state it reads and the state it writes, and each of those claims is verified by execution in `tests/test_contracts.py` rather than asserted. -Public registry entries listed here: 211 +Public registry entries listed here: 212 Look a function up by intent rather than by name: @@ -359,6 +359,7 @@ Scoring generated structures, and enumerating substitutions. gen.alloy_pairs gen.compositions + gen.from_symmetry gen.predict_dopants gen.predict_hosts gen.predict_substitutions @@ -665,6 +666,7 @@ arguments — `obs['energy_{level}']` becomes `obs['energy_emt']` when you pass | `mv.screen.pareto` | `obs['{name}']`, `obs['{name}_rank']`, `uns['pareto']` | | `mv.screen.rank` | `obs['{name}']` | | `mv.gen.compositions` | `obs['formula']`, `obs['n_elements']`, `obs['oxidation_states']`, `obs['n_oxidation_assignments']`, `obs['stoichiometry']`, `X` | +| `mv.gen.from_symmetry` | `obs['parent']`, `obs['formula']`, `obs['requested_space_group']`, `obs['space_group']`, `obs['space_group_symbol']`, `obs['symmetry_as_requested']`, `obs['nsites']`, `obsm['structures']['input']` | | `mv.gen.predict_dopants` | `obs['n_type_dopant']`, `obs['n_type_probability']`, `obs['p_type_dopant']`, `obs['p_type_probability']`, `uns['dopants']` | | `mv.gen.predict_hosts` | `obs['parent']`, `obs['target']`, `obs['host_probability']`, `obsm['structures']['input']` | | `mv.gen.predict_substitutions` | `obs['parent']`, `obs['substitution']`, `obs['substitution_probability']`, `obsm['structures']['input']` | diff --git a/matverse_guide/docs/tutorials/beyond_one_number.ipynb b/matverse_guide/docs/tutorials/beyond_one_number.ipynb index e3db85c..50bd1ac 100644 --- a/matverse_guide/docs/tutorials/beyond_one_number.ipynb +++ b/matverse_guide/docs/tutorials/beyond_one_number.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "1855fab6", + "id": "58c39d80", "metadata": {}, "source": [ "# Beyond one number per material\n", @@ -19,13 +19,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "ef5e82ec", + "id": "25f696ec", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:06.054779Z", - "iopub.status.busy": "2026-08-03T03:41:06.054698Z", - "iopub.status.idle": "2026-08-03T03:41:09.052275Z", - "shell.execute_reply": "2026-08-03T03:41:09.051767Z" + "iopub.execute_input": "2026-08-03T04:20:06.335624Z", + "iopub.status.busy": "2026-08-03T04:20:06.335547Z", + "iopub.status.idle": "2026-08-03T04:20:09.275625Z", + "shell.execute_reply": "2026-08-03T04:20:09.275067Z" } }, "outputs": [ @@ -56,7 +56,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -72,7 +72,7 @@ }, { "cell_type": "markdown", - "id": "397700c1", + "id": "0140bc74", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -85,13 +85,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "4ed91845", + "id": "f0cfa50e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.053462Z", - "iopub.status.busy": "2026-08-03T03:41:09.053215Z", - "iopub.status.idle": "2026-08-03T03:41:09.109644Z", - "shell.execute_reply": "2026-08-03T03:41:09.109254Z" + "iopub.execute_input": "2026-08-03T04:20:09.276820Z", + "iopub.status.busy": "2026-08-03T04:20:09.276564Z", + "iopub.status.idle": "2026-08-03T04:20:09.334093Z", + "shell.execute_reply": "2026-08-03T04:20:09.333689Z" } }, "outputs": [ @@ -205,7 +205,7 @@ }, { "cell_type": "markdown", - "id": "bbd5113c", + "id": "6d35a06a", "metadata": {}, "source": [ "## Curves live in `obsm` on a shared grid\n", @@ -219,13 +219,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "01cc8140", + "id": "1055bd1c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.110554Z", - "iopub.status.busy": "2026-08-03T03:41:09.110453Z", - "iopub.status.idle": "2026-08-03T03:41:09.383035Z", - "shell.execute_reply": "2026-08-03T03:41:09.382627Z" + "iopub.execute_input": "2026-08-03T04:20:09.334935Z", + "iopub.status.busy": "2026-08-03T04:20:09.334838Z", + "iopub.status.idle": "2026-08-03T04:20:09.607038Z", + "shell.execute_reply": "2026-08-03T04:20:09.606623Z" } }, "outputs": [ @@ -248,7 +248,7 @@ }, { "cell_type": "markdown", - "id": "2e6a88d2", + "id": "a2e3c250", "metadata": {}, "source": [ "The block is named `'_'`, exactly like a scalar:\n", @@ -274,13 +274,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "80f50951", + "id": "6743f68a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.384044Z", - "iopub.status.busy": "2026-08-03T03:41:09.383777Z", - "iopub.status.idle": "2026-08-03T03:41:09.386382Z", - "shell.execute_reply": "2026-08-03T03:41:09.386051Z" + "iopub.execute_input": "2026-08-03T04:20:09.608114Z", + "iopub.status.busy": "2026-08-03T04:20:09.607849Z", + "iopub.status.idle": "2026-08-03T04:20:09.610466Z", + "shell.execute_reply": "2026-08-03T04:20:09.610145Z" } }, "outputs": [ @@ -306,13 +306,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "b3a73de4", + "id": "e2a03b92", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.387095Z", - "iopub.status.busy": "2026-08-03T03:41:09.387013Z", - "iopub.status.idle": "2026-08-03T03:41:09.645714Z", - "shell.execute_reply": "2026-08-03T03:41:09.645286Z" + "iopub.execute_input": "2026-08-03T04:20:09.611182Z", + "iopub.status.busy": "2026-08-03T04:20:09.611100Z", + "iopub.status.idle": "2026-08-03T04:20:09.862490Z", + "shell.execute_reply": "2026-08-03T04:20:09.862124Z" } }, "outputs": [ @@ -349,7 +349,7 @@ }, { "cell_type": "markdown", - "id": "9dac2660", + "id": "fae07a96", "metadata": {}, "source": [ "`mv.prop.rdf` is the other curve that ships, and it earns its place by doing\n", @@ -359,13 +359,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "08200bd6", + "id": "7d78a601", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.646696Z", - "iopub.status.busy": "2026-08-03T03:41:09.646605Z", - "iopub.status.idle": "2026-08-03T03:41:09.807407Z", - "shell.execute_reply": "2026-08-03T03:41:09.806969Z" + "iopub.execute_input": "2026-08-03T04:20:09.863432Z", + "iopub.status.busy": "2026-08-03T04:20:09.863337Z", + "iopub.status.idle": "2026-08-03T04:20:10.022193Z", + "shell.execute_reply": "2026-08-03T04:20:10.021813Z" } }, "outputs": [ @@ -404,7 +404,7 @@ }, { "cell_type": "markdown", - "id": "01aed8b7", + "id": "ce82ea09", "metadata": {}, "source": [ "Two polymorphs have the same composition, so `X` cannot tell them apart and\n", @@ -425,13 +425,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "9077d84f", + "id": "153f8a33", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.808296Z", - "iopub.status.busy": "2026-08-03T03:41:09.808198Z", - "iopub.status.idle": "2026-08-03T03:41:09.812538Z", - "shell.execute_reply": "2026-08-03T03:41:09.812185Z" + "iopub.execute_input": "2026-08-03T04:20:10.023036Z", + "iopub.status.busy": "2026-08-03T04:20:10.022945Z", + "iopub.status.idle": "2026-08-03T04:20:10.027341Z", + "shell.execute_reply": "2026-08-03T04:20:10.026987Z" } }, "outputs": [ @@ -454,13 +454,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "7833e312", + "id": "e13132eb", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.813311Z", - "iopub.status.busy": "2026-08-03T03:41:09.813221Z", - "iopub.status.idle": "2026-08-03T03:41:09.819839Z", - "shell.execute_reply": "2026-08-03T03:41:09.819488Z" + "iopub.execute_input": "2026-08-03T04:20:10.028090Z", + "iopub.status.busy": "2026-08-03T04:20:10.028003Z", + "iopub.status.idle": "2026-08-03T04:20:10.034530Z", + "shell.execute_reply": "2026-08-03T04:20:10.034209Z" } }, "outputs": [ @@ -488,13 +488,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "263d5fd1", + "id": "fbd5b83f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.820577Z", - "iopub.status.busy": "2026-08-03T03:41:09.820485Z", - "iopub.status.idle": "2026-08-03T03:41:09.825112Z", - "shell.execute_reply": "2026-08-03T03:41:09.824760Z" + "iopub.execute_input": "2026-08-03T04:20:10.035247Z", + "iopub.status.busy": "2026-08-03T04:20:10.035158Z", + "iopub.status.idle": "2026-08-03T04:20:10.039662Z", + "shell.execute_reply": "2026-08-03T04:20:10.039309Z" } }, "outputs": [ @@ -609,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "af76a5ba", + "id": "c81bee21", "metadata": {}, "source": [ "One row per atom, with `obs['material']` pointing back at the parent. Per-atom\n", @@ -619,13 +619,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "02b9ccdf", + "id": "1c2f69a6", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.825831Z", - "iopub.status.busy": "2026-08-03T03:41:09.825751Z", - "iopub.status.idle": "2026-08-03T03:41:09.877140Z", - "shell.execute_reply": "2026-08-03T03:41:09.876599Z" + "iopub.execute_input": "2026-08-03T04:20:10.040414Z", + "iopub.status.busy": "2026-08-03T04:20:10.040327Z", + "iopub.status.idle": "2026-08-03T04:20:10.090804Z", + "shell.execute_reply": "2026-08-03T04:20:10.090441Z" } }, "outputs": [ @@ -649,13 +649,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "c4e564e6", + "id": "9b5de66b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.878040Z", - "iopub.status.busy": "2026-08-03T03:41:09.877944Z", - "iopub.status.idle": "2026-08-03T03:41:09.883132Z", - "shell.execute_reply": "2026-08-03T03:41:09.882784Z" + "iopub.execute_input": "2026-08-03T04:20:10.091590Z", + "iopub.status.busy": "2026-08-03T04:20:10.091500Z", + "iopub.status.idle": "2026-08-03T04:20:10.096406Z", + "shell.execute_reply": "2026-08-03T04:20:10.096057Z" } }, "outputs": [ @@ -762,13 +762,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "434a46a9", + "id": "ae8af6e1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.883916Z", - "iopub.status.busy": "2026-08-03T03:41:09.883835Z", - "iopub.status.idle": "2026-08-03T03:41:09.977087Z", - "shell.execute_reply": "2026-08-03T03:41:09.976691Z" + "iopub.execute_input": "2026-08-03T04:20:10.097134Z", + "iopub.status.busy": "2026-08-03T04:20:10.097045Z", + "iopub.status.idle": "2026-08-03T04:20:10.189162Z", + "shell.execute_reply": "2026-08-03T04:20:10.188786Z" } }, "outputs": [ @@ -808,7 +808,7 @@ }, { "cell_type": "markdown", - "id": "24ea79ca", + "id": "bd3ad8e8", "metadata": {}, "source": [ "One point per atom says which atoms are unrelaxed. The other question is what\n", @@ -820,13 +820,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "1ab4ceb1", + "id": "c5202fb3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:09.977921Z", - "iopub.status.busy": "2026-08-03T03:41:09.977830Z", - "iopub.status.idle": "2026-08-03T03:41:10.160392Z", - "shell.execute_reply": "2026-08-03T03:41:10.159994Z" + "iopub.execute_input": "2026-08-03T04:20:10.189953Z", + "iopub.status.busy": "2026-08-03T04:20:10.189867Z", + "iopub.status.idle": "2026-08-03T04:20:10.370745Z", + "shell.execute_reply": "2026-08-03T04:20:10.370419Z" } }, "outputs": [ @@ -864,7 +864,7 @@ }, { "cell_type": "markdown", - "id": "bc1c5d5c", + "id": "179d5e55", "metadata": {}, "source": [ "Shared bins across the elements, which is the only way the two are being\n", @@ -875,7 +875,7 @@ }, { "cell_type": "markdown", - "id": "aacf466e", + "id": "ce66d6f1", "metadata": {}, "source": [ "Twenty-six points where the material axis has room for seven — which is the\n", @@ -900,13 +900,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "45cedb80", + "id": "ce003cc1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.161224Z", - "iopub.status.busy": "2026-08-03T03:41:10.161136Z", - "iopub.status.idle": "2026-08-03T03:41:10.166060Z", - "shell.execute_reply": "2026-08-03T03:41:10.165720Z" + "iopub.execute_input": "2026-08-03T04:20:10.371902Z", + "iopub.status.busy": "2026-08-03T04:20:10.371811Z", + "iopub.status.idle": "2026-08-03T04:20:10.376874Z", + "shell.execute_reply": "2026-08-03T04:20:10.376533Z" } }, "outputs": [ @@ -999,7 +999,7 @@ }, { "cell_type": "markdown", - "id": "2357bf7b", + "id": "d1b16c91", "metadata": {}, "source": [ "The largest force in each cell, on the material axis, where a screen can reach\n", @@ -1010,13 +1010,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "4cdbd093", + "id": "0b2ef1be", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.166748Z", - "iopub.status.busy": "2026-08-03T03:41:10.166667Z", - "iopub.status.idle": "2026-08-03T03:41:10.171460Z", - "shell.execute_reply": "2026-08-03T03:41:10.171122Z" + "iopub.execute_input": "2026-08-03T04:20:10.377634Z", + "iopub.status.busy": "2026-08-03T04:20:10.377549Z", + "iopub.status.idle": "2026-08-03T04:20:10.382443Z", + "shell.execute_reply": "2026-08-03T04:20:10.382157Z" } }, "outputs": [ @@ -1116,7 +1116,7 @@ }, { "cell_type": "markdown", - "id": "9a94aa0b", + "id": "709e81f6", "metadata": {}, "source": [ "The detail stays on the sites object where it can still be inspected; the\n", @@ -1132,13 +1132,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "5d7df553", + "id": "b609fca8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.172126Z", - "iopub.status.busy": "2026-08-03T03:41:10.172048Z", - "iopub.status.idle": "2026-08-03T03:41:10.182856Z", - "shell.execute_reply": "2026-08-03T03:41:10.182516Z" + "iopub.execute_input": "2026-08-03T04:20:10.383202Z", + "iopub.status.busy": "2026-08-03T04:20:10.383123Z", + "iopub.status.idle": "2026-08-03T04:20:10.393967Z", + "shell.execute_reply": "2026-08-03T04:20:10.393640Z" } }, "outputs": [ @@ -1222,7 +1222,7 @@ }, { "cell_type": "markdown", - "id": "18d7d01e", + "id": "f5675b83", "metadata": {}, "source": [ "That is `rank_genes_groups` answering \"which elements sit in the highest-force\n", @@ -1234,13 +1234,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "11d84fd1", + "id": "cf49f50b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.183544Z", - "iopub.status.busy": "2026-08-03T03:41:10.183464Z", - "iopub.status.idle": "2026-08-03T03:41:10.211109Z", - "shell.execute_reply": "2026-08-03T03:41:10.210753Z" + "iopub.execute_input": "2026-08-03T04:20:10.394712Z", + "iopub.status.busy": "2026-08-03T04:20:10.394632Z", + "iopub.status.idle": "2026-08-03T04:20:10.422373Z", + "shell.execute_reply": "2026-08-03T04:20:10.422015Z" } }, "outputs": [ @@ -1295,7 +1295,7 @@ }, { "cell_type": "markdown", - "id": "27adc043", + "id": "5a05ceb2", "metadata": {}, "source": [ "Optional throughout. matverse's operations take `AnnData`, and the sites object\n", @@ -1306,13 +1306,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "94b4bca2", + "id": "fc05fdf2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.211897Z", - "iopub.status.busy": "2026-08-03T03:41:10.211813Z", - "iopub.status.idle": "2026-08-03T03:41:10.512761Z", - "shell.execute_reply": "2026-08-03T03:41:10.512340Z" + "iopub.execute_input": "2026-08-03T04:20:10.423121Z", + "iopub.status.busy": "2026-08-03T04:20:10.423032Z", + "iopub.status.idle": "2026-08-03T04:20:10.720308Z", + "shell.execute_reply": "2026-08-03T04:20:10.719962Z" } }, "outputs": [ @@ -1421,7 +1421,7 @@ }, { "cell_type": "markdown", - "id": "d69545ab", + "id": "0a33b3bc", "metadata": {}, "source": [ "A TEM pattern is spots on a plane, and a plane of spots does not compare across\n", @@ -1445,7 +1445,7 @@ }, { "cell_type": "markdown", - "id": "5d390270", + "id": "a3dd5e82", "metadata": {}, "source": [ "## A result computed somewhere else\n", @@ -1474,13 +1474,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "017d3756", + "id": "b6d6897c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.513633Z", - "iopub.status.busy": "2026-08-03T03:41:10.513547Z", - "iopub.status.idle": "2026-08-03T03:41:10.526973Z", - "shell.execute_reply": "2026-08-03T03:41:10.526606Z" + "iopub.execute_input": "2026-08-03T04:20:10.721299Z", + "iopub.status.busy": "2026-08-03T04:20:10.721210Z", + "iopub.status.idle": "2026-08-03T04:20:10.734607Z", + "shell.execute_reply": "2026-08-03T04:20:10.734248Z" } }, "outputs": [ @@ -1589,7 +1589,7 @@ }, { "cell_type": "markdown", - "id": "c4bbddcc", + "id": "eac6cc04", "metadata": {}, "source": [ "`sigma_iso` is 30, the trace over three. `zeta` is 30, which is\n", @@ -1611,13 +1611,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "69e81671", + "id": "792698cb", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.527731Z", - "iopub.status.busy": "2026-08-03T03:41:10.527646Z", - "iopub.status.idle": "2026-08-03T03:41:10.543945Z", - "shell.execute_reply": "2026-08-03T03:41:10.543573Z" + "iopub.execute_input": "2026-08-03T04:20:10.735407Z", + "iopub.status.busy": "2026-08-03T04:20:10.735322Z", + "iopub.status.idle": "2026-08-03T04:20:10.751840Z", + "shell.execute_reply": "2026-08-03T04:20:10.751492Z" } }, "outputs": [ @@ -1712,7 +1712,7 @@ }, { "cell_type": "markdown", - "id": "4607b6db", + "id": "25daec19", "metadata": {}, "source": [ "The coupling constant is the only one of the three that needs to know which\n", @@ -1729,13 +1729,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "a8a8e8a1", + "id": "d0fd47ce", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.544757Z", - "iopub.status.busy": "2026-08-03T03:41:10.544618Z", - "iopub.status.idle": "2026-08-03T03:41:10.572029Z", - "shell.execute_reply": "2026-08-03T03:41:10.571592Z" + "iopub.execute_input": "2026-08-03T04:20:10.752595Z", + "iopub.status.busy": "2026-08-03T04:20:10.752509Z", + "iopub.status.idle": "2026-08-03T04:20:10.779928Z", + "shell.execute_reply": "2026-08-03T04:20:10.779560Z" } }, "outputs": [ @@ -1806,7 +1806,7 @@ }, { "cell_type": "markdown", - "id": "efdaee2a", + "id": "92cb50a9", "metadata": {}, "source": [ "**2.30 pC/N**, recovered from the tensor without being told where to look. For\n", @@ -1823,13 +1823,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "ca214aab", + "id": "9aac2a70", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.572951Z", - "iopub.status.busy": "2026-08-03T03:41:10.572802Z", - "iopub.status.idle": "2026-08-03T03:41:10.634666Z", - "shell.execute_reply": "2026-08-03T03:41:10.634252Z" + "iopub.execute_input": "2026-08-03T04:20:10.780672Z", + "iopub.status.busy": "2026-08-03T04:20:10.780586Z", + "iopub.status.idle": "2026-08-03T04:20:10.841973Z", + "shell.execute_reply": "2026-08-03T04:20:10.841547Z" } }, "outputs": [ @@ -1854,7 +1854,7 @@ }, { "cell_type": "markdown", - "id": "ce5d8a33", + "id": "f557d02d", "metadata": {}, "source": [ "`False` — and a non-zero piezoelectric tensor on an fcc metal is an error in the\n", @@ -1872,13 +1872,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "b86c1bc3", + "id": "8f44bdf5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.635495Z", - "iopub.status.busy": "2026-08-03T03:41:10.635405Z", - "iopub.status.idle": "2026-08-03T03:41:10.639352Z", - "shell.execute_reply": "2026-08-03T03:41:10.638981Z" + "iopub.execute_input": "2026-08-03T04:20:10.842806Z", + "iopub.status.busy": "2026-08-03T04:20:10.842710Z", + "iopub.status.idle": "2026-08-03T04:20:10.846932Z", + "shell.execute_reply": "2026-08-03T04:20:10.846560Z" } }, "outputs": [ @@ -1912,13 +1912,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "513e5ee3", + "id": "a6792631", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.640069Z", - "iopub.status.busy": "2026-08-03T03:41:10.639987Z", - "iopub.status.idle": "2026-08-03T03:41:10.788744Z", - "shell.execute_reply": "2026-08-03T03:41:10.788321Z" + "iopub.execute_input": "2026-08-03T04:20:10.847685Z", + "iopub.status.busy": "2026-08-03T04:20:10.847597Z", + "iopub.status.idle": "2026-08-03T04:20:10.994887Z", + "shell.execute_reply": "2026-08-03T04:20:10.994494Z" } }, "outputs": [ @@ -2019,7 +2019,7 @@ }, { "cell_type": "markdown", - "id": "22c94a00", + "id": "6713f7e1", "metadata": {}, "source": [ "Read the first three rows against the last four.\n", @@ -2050,13 +2050,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "3be6d9dd", + "id": "8caad087", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.789638Z", - "iopub.status.busy": "2026-08-03T03:41:10.789507Z", - "iopub.status.idle": "2026-08-03T03:41:10.893783Z", - "shell.execute_reply": "2026-08-03T03:41:10.893332Z" + "iopub.execute_input": "2026-08-03T04:20:10.995720Z", + "iopub.status.busy": "2026-08-03T04:20:10.995626Z", + "iopub.status.idle": "2026-08-03T04:20:11.096000Z", + "shell.execute_reply": "2026-08-03T04:20:11.095628Z" } }, "outputs": [ @@ -2131,7 +2131,7 @@ }, { "cell_type": "markdown", - "id": "99bb42ef", + "id": "4d6f2008", "metadata": {}, "source": [ "That is the penalty silicon pays, and the reason a direct-gap absorber a tenth\n", @@ -2147,13 +2147,13 @@ { "cell_type": "code", "execution_count": 26, - "id": "828e21ad", + "id": "b28d74b2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.894666Z", - "iopub.status.busy": "2026-08-03T03:41:10.894578Z", - "iopub.status.idle": "2026-08-03T03:41:10.919941Z", - "shell.execute_reply": "2026-08-03T03:41:10.919551Z" + "iopub.execute_input": "2026-08-03T04:20:11.096845Z", + "iopub.status.busy": "2026-08-03T04:20:11.096757Z", + "iopub.status.idle": "2026-08-03T04:20:11.121919Z", + "shell.execute_reply": "2026-08-03T04:20:11.121497Z" } }, "outputs": [ @@ -2260,7 +2260,7 @@ }, { "cell_type": "markdown", - "id": "14cc104b", + "id": "310e327c", "metadata": {}, "source": [ "Three numbers, three levels, one table, and nobody had to decide which one is\n", @@ -2271,13 +2271,13 @@ { "cell_type": "code", "execution_count": 27, - "id": "2b9db925", + "id": "99a0a8c7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.920757Z", - "iopub.status.busy": "2026-08-03T03:41:10.920672Z", - "iopub.status.idle": "2026-08-03T03:41:10.922886Z", - "shell.execute_reply": "2026-08-03T03:41:10.922532Z" + "iopub.execute_input": "2026-08-03T04:20:11.122824Z", + "iopub.status.busy": "2026-08-03T04:20:11.122735Z", + "iopub.status.idle": "2026-08-03T04:20:11.124881Z", + "shell.execute_reply": "2026-08-03T04:20:11.124601Z" } }, "outputs": [ @@ -2305,13 +2305,13 @@ { "cell_type": "code", "execution_count": 28, - "id": "694c3959", + "id": "934b9561", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:10.923864Z", - "iopub.status.busy": "2026-08-03T03:41:10.923779Z", - "iopub.status.idle": "2026-08-03T03:41:11.019967Z", - "shell.execute_reply": "2026-08-03T03:41:11.019551Z" + "iopub.execute_input": "2026-08-03T04:20:11.125771Z", + "iopub.status.busy": "2026-08-03T04:20:11.125627Z", + "iopub.status.idle": "2026-08-03T04:20:11.221738Z", + "shell.execute_reply": "2026-08-03T04:20:11.221328Z" } }, "outputs": [ @@ -2337,7 +2337,7 @@ }, { "cell_type": "markdown", - "id": "b0bdeb30", + "id": "50d63aba", "metadata": {}, "source": [ "`mv.pl.parity` annotates the error and — the useful bit — prints a warning on\n", @@ -2354,13 +2354,13 @@ { "cell_type": "code", "execution_count": 29, - "id": "c84ea74f", + "id": "94e7a813", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.020860Z", - "iopub.status.busy": "2026-08-03T03:41:11.020710Z", - "iopub.status.idle": "2026-08-03T03:41:11.027259Z", - "shell.execute_reply": "2026-08-03T03:41:11.026909Z" + "iopub.execute_input": "2026-08-03T04:20:11.222555Z", + "iopub.status.busy": "2026-08-03T04:20:11.222463Z", + "iopub.status.idle": "2026-08-03T04:20:11.228990Z", + "shell.execute_reply": "2026-08-03T04:20:11.228598Z" } }, "outputs": [ @@ -2467,20 +2467,20 @@ { "cell_type": "code", "execution_count": 30, - "id": "2995273a", + "id": "b4a60264", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.027990Z", - "iopub.status.busy": "2026-08-03T03:41:11.027910Z", - "iopub.status.idle": "2026-08-03T03:41:11.172248Z", - "shell.execute_reply": "2026-08-03T03:41:11.171890Z" + "iopub.execute_input": "2026-08-03T04:20:11.230366Z", + "iopub.status.busy": "2026-08-03T04:20:11.230267Z", + "iopub.status.idle": "2026-08-03T04:20:11.376049Z", + "shell.execute_reply": "2026-08-03T04:20:11.375587Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 30, @@ -2516,7 +2516,7 @@ }, { "cell_type": "markdown", - "id": "e19eb32b", + "id": "4e831074", "metadata": {}, "source": [ "Both patterns are baseline-shifted and unit-normalised before the dot product,\n", @@ -2527,13 +2527,13 @@ { "cell_type": "code", "execution_count": 31, - "id": "88c3fb79", + "id": "9372f911", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.173110Z", - "iopub.status.busy": "2026-08-03T03:41:11.173022Z", - "iopub.status.idle": "2026-08-03T03:41:11.175290Z", - "shell.execute_reply": "2026-08-03T03:41:11.174967Z" + "iopub.execute_input": "2026-08-03T04:20:11.377093Z", + "iopub.status.busy": "2026-08-03T04:20:11.376926Z", + "iopub.status.idle": "2026-08-03T04:20:11.379370Z", + "shell.execute_reply": "2026-08-03T04:20:11.378993Z" } }, "outputs": [ @@ -2554,7 +2554,7 @@ }, { "cell_type": "markdown", - "id": "86883560", + "id": "fba1cc38", "metadata": {}, "source": [ "```{warning}\n", @@ -2573,13 +2573,13 @@ { "cell_type": "code", "execution_count": 32, - "id": "2c2228a1", + "id": "00d49bff", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.175964Z", - "iopub.status.busy": "2026-08-03T03:41:11.175884Z", - "iopub.status.idle": "2026-08-03T03:41:11.182691Z", - "shell.execute_reply": "2026-08-03T03:41:11.182335Z" + "iopub.execute_input": "2026-08-03T04:20:11.380191Z", + "iopub.status.busy": "2026-08-03T04:20:11.380057Z", + "iopub.status.idle": "2026-08-03T04:20:11.387039Z", + "shell.execute_reply": "2026-08-03T04:20:11.386678Z" } }, "outputs": [ @@ -2688,7 +2688,7 @@ }, { "cell_type": "markdown", - "id": "071cfe59", + "id": "5e119c19", "metadata": {}, "source": [ "Measurements are resampled onto the existing grid, because two curves on\n", @@ -2719,13 +2719,13 @@ { "cell_type": "code", "execution_count": 33, - "id": "de8a4a5e", + "id": "3c95c646", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.183436Z", - "iopub.status.busy": "2026-08-03T03:41:11.183353Z", - "iopub.status.idle": "2026-08-03T03:41:11.240540Z", - "shell.execute_reply": "2026-08-03T03:41:11.240178Z" + "iopub.execute_input": "2026-08-03T04:20:11.387798Z", + "iopub.status.busy": "2026-08-03T04:20:11.387715Z", + "iopub.status.idle": "2026-08-03T04:20:11.444991Z", + "shell.execute_reply": "2026-08-03T04:20:11.444135Z" } }, "outputs": [ @@ -2888,13 +2888,13 @@ { "cell_type": "code", "execution_count": 34, - "id": "66cdc8a7", + "id": "b1fad6c2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.241375Z", - "iopub.status.busy": "2026-08-03T03:41:11.241285Z", - "iopub.status.idle": "2026-08-03T03:41:11.245050Z", - "shell.execute_reply": "2026-08-03T03:41:11.244636Z" + "iopub.execute_input": "2026-08-03T04:20:11.445854Z", + "iopub.status.busy": "2026-08-03T04:20:11.445763Z", + "iopub.status.idle": "2026-08-03T04:20:11.453763Z", + "shell.execute_reply": "2026-08-03T04:20:11.453390Z" } }, "outputs": [ @@ -2922,7 +2922,7 @@ }, { "cell_type": "markdown", - "id": "7a3e9cff", + "id": "6cd03d77", "metadata": {}, "source": [ "The fitted offsets should recover the ones put in — 0.10, −0.06 and 0.03:" @@ -2931,13 +2931,13 @@ { "cell_type": "code", "execution_count": 35, - "id": "35f66067", + "id": "ccbf0790", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.245757Z", - "iopub.status.busy": "2026-08-03T03:41:11.245674Z", - "iopub.status.idle": "2026-08-03T03:41:11.248371Z", - "shell.execute_reply": "2026-08-03T03:41:11.248047Z" + "iopub.execute_input": "2026-08-03T04:20:11.454549Z", + "iopub.status.busy": "2026-08-03T04:20:11.454459Z", + "iopub.status.idle": "2026-08-03T04:20:11.457449Z", + "shell.execute_reply": "2026-08-03T04:20:11.457114Z" } }, "outputs": [ @@ -2964,13 +2964,13 @@ { "cell_type": "code", "execution_count": 36, - "id": "64dcbc19", + "id": "0502e5ad", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.249047Z", - "iopub.status.busy": "2026-08-03T03:41:11.248967Z", - "iopub.status.idle": "2026-08-03T03:41:11.421033Z", - "shell.execute_reply": "2026-08-03T03:41:11.420580Z" + "iopub.execute_input": "2026-08-03T04:20:11.458181Z", + "iopub.status.busy": "2026-08-03T04:20:11.458097Z", + "iopub.status.idle": "2026-08-03T04:20:11.638708Z", + "shell.execute_reply": "2026-08-03T04:20:11.638229Z" } }, "outputs": [ @@ -3007,7 +3007,7 @@ }, { "cell_type": "markdown", - "id": "c025269b", + "id": "4774c328", "metadata": {}, "source": [ "Same materials, two databases, plotted against each other. Before, they scatter\n", @@ -3036,13 +3036,13 @@ { "cell_type": "code", "execution_count": 37, - "id": "cadef1d9", + "id": "8fb0f829", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.421883Z", - "iopub.status.busy": "2026-08-03T03:41:11.421788Z", - "iopub.status.idle": "2026-08-03T03:41:11.437727Z", - "shell.execute_reply": "2026-08-03T03:41:11.437361Z" + "iopub.execute_input": "2026-08-03T04:20:11.639732Z", + "iopub.status.busy": "2026-08-03T04:20:11.639625Z", + "iopub.status.idle": "2026-08-03T04:20:11.658501Z", + "shell.execute_reply": "2026-08-03T04:20:11.658095Z" } }, "outputs": [ @@ -3152,13 +3152,13 @@ { "cell_type": "code", "execution_count": 38, - "id": "4db799a8", + "id": "97fe2921", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.438492Z", - "iopub.status.busy": "2026-08-03T03:41:11.438405Z", - "iopub.status.idle": "2026-08-03T03:41:11.444085Z", - "shell.execute_reply": "2026-08-03T03:41:11.443719Z" + "iopub.execute_input": "2026-08-03T04:20:11.659334Z", + "iopub.status.busy": "2026-08-03T04:20:11.659247Z", + "iopub.status.idle": "2026-08-03T04:20:11.665427Z", + "shell.execute_reply": "2026-08-03T04:20:11.665098Z" } }, "outputs": [ @@ -3186,7 +3186,7 @@ }, { "cell_type": "markdown", - "id": "69bca087", + "id": "92b7f96b", "metadata": {}, "source": [ "Validity, uniqueness, novelty and stability use LeMat-GenBench's definitions\n", @@ -3196,13 +3196,13 @@ { "cell_type": "code", "execution_count": 39, - "id": "2cefa811", + "id": "288db3db", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.444817Z", - "iopub.status.busy": "2026-08-03T03:41:11.444734Z", - "iopub.status.idle": "2026-08-03T03:41:11.446836Z", - "shell.execute_reply": "2026-08-03T03:41:11.446537Z" + "iopub.execute_input": "2026-08-03T04:20:11.666485Z", + "iopub.status.busy": "2026-08-03T04:20:11.666350Z", + "iopub.status.idle": "2026-08-03T04:20:11.668549Z", + "shell.execute_reply": "2026-08-03T04:20:11.668252Z" } }, "outputs": [ @@ -3233,7 +3233,7 @@ }, { "cell_type": "markdown", - "id": "936722a7", + "id": "c2743f6d", "metadata": {}, "source": [ "That matters more than it looks. Until those definitions were pinned, the same\n", @@ -3251,13 +3251,13 @@ { "cell_type": "code", "execution_count": 40, - "id": "9870dbe2", + "id": "ab4e22ef", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.447499Z", - "iopub.status.busy": "2026-08-03T03:41:11.447419Z", - "iopub.status.idle": "2026-08-03T03:41:11.449428Z", - "shell.execute_reply": "2026-08-03T03:41:11.449109Z" + "iopub.execute_input": "2026-08-03T04:20:11.669269Z", + "iopub.status.busy": "2026-08-03T04:20:11.669184Z", + "iopub.status.idle": "2026-08-03T04:20:11.671152Z", + "shell.execute_reply": "2026-08-03T04:20:11.670836Z" } }, "outputs": [ @@ -3278,7 +3278,7 @@ }, { "cell_type": "markdown", - "id": "ee46af10", + "id": "bb882332", "metadata": {}, "source": [ "Novelty means \"absent from the reference set you named\", which is a weaker claim\n", @@ -3302,13 +3302,13 @@ { "cell_type": "code", "execution_count": 41, - "id": "cf85c9f2", + "id": "4f2c6aa8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:11.450092Z", - "iopub.status.busy": "2026-08-03T03:41:11.450019Z", - "iopub.status.idle": "2026-08-03T03:41:13.309846Z", - "shell.execute_reply": "2026-08-03T03:41:13.309366Z" + "iopub.execute_input": "2026-08-03T04:20:11.671875Z", + "iopub.status.busy": "2026-08-03T04:20:11.671795Z", + "iopub.status.idle": "2026-08-03T04:20:13.649127Z", + "shell.execute_reply": "2026-08-03T04:20:13.648610Z" } }, "outputs": [ @@ -3422,7 +3422,7 @@ }, { "cell_type": "markdown", - "id": "f11a73cb", + "id": "22479b95", "metadata": {}, "source": [ "From LiFePO₄ it reaches **LiVPO₄** and **LiTiPO₄** — both real olivine\n", @@ -3439,13 +3439,13 @@ { "cell_type": "code", "execution_count": 42, - "id": "d993c69c", + "id": "9665ecfe", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:13.310851Z", - "iopub.status.busy": "2026-08-03T03:41:13.310693Z", - "iopub.status.idle": "2026-08-03T03:41:13.969708Z", - "shell.execute_reply": "2026-08-03T03:41:13.969272Z" + "iopub.execute_input": "2026-08-03T04:20:13.650347Z", + "iopub.status.busy": "2026-08-03T04:20:13.650223Z", + "iopub.status.idle": "2026-08-03T04:20:14.331390Z", + "shell.execute_reply": "2026-08-03T04:20:14.330908Z" } }, "outputs": [ @@ -3508,7 +3508,7 @@ }, { "cell_type": "markdown", - "id": "52ec4fca", + "id": "0e8a83d1", "metadata": {}, "source": [ "Fluorine comes out as the n-type choice, which is the doping strategy LiFePO₄ is\n", @@ -3525,13 +3525,13 @@ { "cell_type": "code", "execution_count": 43, - "id": "89f47368", + "id": "de88b23b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:13.970596Z", - "iopub.status.busy": "2026-08-03T03:41:13.970504Z", - "iopub.status.idle": "2026-08-03T03:41:14.082992Z", - "shell.execute_reply": "2026-08-03T03:41:14.082595Z" + "iopub.execute_input": "2026-08-03T04:20:14.332428Z", + "iopub.status.busy": "2026-08-03T04:20:14.332330Z", + "iopub.status.idle": "2026-08-03T04:20:14.643993Z", + "shell.execute_reply": "2026-08-03T04:20:14.643596Z" } }, "outputs": [ @@ -3639,7 +3639,7 @@ }, { "cell_type": "markdown", - "id": "fbfc4d18", + "id": "8dc619de", "metadata": {}, "source": [ "No calculator involved — the prediction comes from tabulated bond lengths — and\n", @@ -3657,13 +3657,13 @@ { "cell_type": "code", "execution_count": 44, - "id": "5f426ff5", + "id": "dc2994f5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:14.083795Z", - "iopub.status.busy": "2026-08-03T03:41:14.083708Z", - "iopub.status.idle": "2026-08-03T03:41:15.013290Z", - "shell.execute_reply": "2026-08-03T03:41:15.012870Z" + "iopub.execute_input": "2026-08-03T04:20:14.644845Z", + "iopub.status.busy": "2026-08-03T04:20:14.644757Z", + "iopub.status.idle": "2026-08-03T04:20:15.446637Z", + "shell.execute_reply": "2026-08-03T04:20:15.446017Z" } }, "outputs": [ @@ -3725,7 +3725,7 @@ }, { "cell_type": "markdown", - "id": "c5537f90", + "id": "5d813216", "metadata": {}, "source": [ "From LiFePO₄ alone it builds **NaMnPO₄** — a real sodium-ion cathode — because\n", @@ -3750,7 +3750,7 @@ }, { "cell_type": "markdown", - "id": "0a897422", + "id": "58d896ce", "metadata": {}, "source": [ "## Why a material is piezoelectric, not just how much\n", @@ -3768,13 +3768,13 @@ { "cell_type": "code", "execution_count": 45, - "id": "f999391a", + "id": "5a8a16b6", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.014237Z", - "iopub.status.busy": "2026-08-03T03:41:15.014084Z", - "iopub.status.idle": "2026-08-03T03:41:15.066839Z", - "shell.execute_reply": "2026-08-03T03:41:15.066489Z" + "iopub.execute_input": "2026-08-03T04:20:15.448006Z", + "iopub.status.busy": "2026-08-03T04:20:15.447886Z", + "iopub.status.idle": "2026-08-03T04:20:15.511251Z", + "shell.execute_reply": "2026-08-03T04:20:15.510874Z" } }, "outputs": [ @@ -3857,7 +3857,7 @@ }, { "cell_type": "markdown", - "id": "4ff1cf62", + "id": "bd6db5db", "metadata": {}, "source": [ "Doubling the Born charges doubles the response. Doubling the force constants\n", @@ -3881,7 +3881,7 @@ }, { "cell_type": "markdown", - "id": "bb2697d3", + "id": "c293fc5e", "metadata": {}, "source": [ "## The polarization that is not a number\n", @@ -3903,13 +3903,13 @@ { "cell_type": "code", "execution_count": 46, - "id": "ab5e574d", + "id": "3925d2b1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.067781Z", - "iopub.status.busy": "2026-08-03T03:41:15.067636Z", - "iopub.status.idle": "2026-08-03T03:41:15.075709Z", - "shell.execute_reply": "2026-08-03T03:41:15.075346Z" + "iopub.execute_input": "2026-08-03T04:20:15.512340Z", + "iopub.status.busy": "2026-08-03T04:20:15.512184Z", + "iopub.status.idle": "2026-08-03T04:20:15.521111Z", + "shell.execute_reply": "2026-08-03T04:20:15.520732Z" } }, "outputs": [ @@ -3943,7 +3943,7 @@ }, { "cell_type": "markdown", - "id": "a2765cc7", + "id": "7fc40745", "metadata": {}, "source": [ "Nothing about that sequence looks like a smooth ferroelectric switching path.\n", @@ -3957,13 +3957,13 @@ { "cell_type": "code", "execution_count": 47, - "id": "729d46bb", + "id": "df8be85a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.076464Z", - "iopub.status.busy": "2026-08-03T03:41:15.076375Z", - "iopub.status.idle": "2026-08-03T03:41:15.084592Z", - "shell.execute_reply": "2026-08-03T03:41:15.084252Z" + "iopub.execute_input": "2026-08-03T04:20:15.521901Z", + "iopub.status.busy": "2026-08-03T04:20:15.521812Z", + "iopub.status.idle": "2026-08-03T04:20:15.530862Z", + "shell.execute_reply": "2026-08-03T04:20:15.530499Z" } }, "outputs": [ @@ -4000,7 +4000,7 @@ }, { "cell_type": "markdown", - "id": "af6de595", + "id": "31c006a6", "metadata": {}, "source": [ "The smooth path, recovered exactly, and a spontaneous polarization of\n", @@ -4023,7 +4023,7 @@ }, { "cell_type": "markdown", - "id": "e9c7891a", + "id": "ff33a762", "metadata": {}, "source": [ "## Corrections of your own\n", @@ -4041,13 +4041,13 @@ { "cell_type": "code", "execution_count": 48, - "id": "7174a267", + "id": "7dcc953f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.085316Z", - "iopub.status.busy": "2026-08-03T03:41:15.085228Z", - "iopub.status.idle": "2026-08-03T03:41:15.130893Z", - "shell.execute_reply": "2026-08-03T03:41:15.130511Z" + "iopub.execute_input": "2026-08-03T04:20:15.531623Z", + "iopub.status.busy": "2026-08-03T04:20:15.531536Z", + "iopub.status.idle": "2026-08-03T04:20:15.582420Z", + "shell.execute_reply": "2026-08-03T04:20:15.582058Z" } }, "outputs": [ @@ -4092,7 +4092,7 @@ }, { "cell_type": "markdown", - "id": "6a298b1b", + "id": "93fcc76a", "metadata": {}, "source": [ "**−0.45 eV per oxygen, recovered to four decimals**, with an error bar beside\n", @@ -4103,13 +4103,13 @@ { "cell_type": "code", "execution_count": 49, - "id": "60995444", + "id": "68493c38", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.131664Z", - "iopub.status.busy": "2026-08-03T03:41:15.131577Z", - "iopub.status.idle": "2026-08-03T03:41:15.136422Z", - "shell.execute_reply": "2026-08-03T03:41:15.136085Z" + "iopub.execute_input": "2026-08-03T04:20:15.583254Z", + "iopub.status.busy": "2026-08-03T04:20:15.583158Z", + "iopub.status.idle": "2026-08-03T04:20:15.588296Z", + "shell.execute_reply": "2026-08-03T04:20:15.587951Z" } }, "outputs": [ @@ -4181,7 +4181,7 @@ }, { "cell_type": "markdown", - "id": "d8d99609", + "id": "fd6242c4", "metadata": {}, "source": [ "```{warning}\n", @@ -4204,7 +4204,7 @@ }, { "cell_type": "markdown", - "id": "c943bb11", + "id": "977b0547", "metadata": {}, "source": [ "## A hull the laboratory built\n", @@ -4221,13 +4221,13 @@ { "cell_type": "code", "execution_count": 50, - "id": "752cd030", + "id": "45188284", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.137141Z", - "iopub.status.busy": "2026-08-03T03:41:15.137058Z", - "iopub.status.idle": "2026-08-03T03:41:15.152232Z", - "shell.execute_reply": "2026-08-03T03:41:15.151880Z" + "iopub.execute_input": "2026-08-03T04:20:15.589052Z", + "iopub.status.busy": "2026-08-03T04:20:15.588965Z", + "iopub.status.idle": "2026-08-03T04:20:15.604827Z", + "shell.execute_reply": "2026-08-03T04:20:15.604478Z" } }, "outputs": [ @@ -4328,7 +4328,7 @@ }, { "cell_type": "markdown", - "id": "c0a691ef", + "id": "3ca46642", "metadata": {}, "source": [ "Hematite and magnetite sit on the hull. **Wüstite sits 0.039 eV/atom above it**\n", @@ -4357,13 +4357,13 @@ { "cell_type": "code", "execution_count": 51, - "id": "fbe1761c", + "id": "ce4a2826", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:15.152969Z", - "iopub.status.busy": "2026-08-03T03:41:15.152883Z", - "iopub.status.idle": "2026-08-03T03:41:15.154956Z", - "shell.execute_reply": "2026-08-03T03:41:15.154648Z" + "iopub.execute_input": "2026-08-03T04:20:15.605633Z", + "iopub.status.busy": "2026-08-03T04:20:15.605539Z", + "iopub.status.idle": "2026-08-03T04:20:15.607775Z", + "shell.execute_reply": "2026-08-03T04:20:15.607466Z" } }, "outputs": [ @@ -4384,7 +4384,7 @@ }, { "cell_type": "markdown", - "id": "f9633350", + "id": "64acb6b7", "metadata": {}, "source": [ "Now the comparison this was for. Run `mv.thermo.hull` at a computed level on the\n", diff --git a/matverse_guide/docs/tutorials/chemical_space.ipynb b/matverse_guide/docs/tutorials/chemical_space.ipynb index 4fcc756..d7162aa 100644 --- a/matverse_guide/docs/tutorials/chemical_space.ipynb +++ b/matverse_guide/docs/tutorials/chemical_space.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "b4074e79", + "id": "790b4d4f", "metadata": {}, "source": [ "# Chemical space\n", @@ -19,13 +19,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "17790e7f", + "id": "29c1701c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:58.746624Z", - "iopub.status.busy": "2026-08-03T03:40:58.746545Z", - "iopub.status.idle": "2026-08-03T03:41:01.881224Z", - "shell.execute_reply": "2026-08-03T03:41:01.880756Z" + "iopub.execute_input": "2026-08-03T04:19:58.590948Z", + "iopub.status.busy": "2026-08-03T04:19:58.590873Z", + "iopub.status.idle": "2026-08-03T04:20:01.871236Z", + "shell.execute_reply": "2026-08-03T04:20:01.870665Z" } }, "outputs": [ @@ -56,7 +56,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -72,7 +72,7 @@ }, { "cell_type": "markdown", - "id": "8c6bda5c", + "id": "2a941a39", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -85,13 +85,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "e07eec52", + "id": "be9961e8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:01.882458Z", - "iopub.status.busy": "2026-08-03T03:41:01.882128Z", - "iopub.status.idle": "2026-08-03T03:41:02.996644Z", - "shell.execute_reply": "2026-08-03T03:41:02.996219Z" + "iopub.execute_input": "2026-08-03T04:20:01.872377Z", + "iopub.status.busy": "2026-08-03T04:20:01.872109Z", + "iopub.status.idle": "2026-08-03T04:20:03.037582Z", + "shell.execute_reply": "2026-08-03T04:20:03.037153Z" } }, "outputs": [ @@ -217,7 +217,7 @@ }, { "cell_type": "markdown", - "id": "f28342bc", + "id": "83d98944", "metadata": {}, "source": [ "## Why elements are the right axis\n", @@ -230,13 +230,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "0d79bd1e", + "id": "0b3eba3d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:02.997535Z", - "iopub.status.busy": "2026-08-03T03:41:02.997437Z", - "iopub.status.idle": "2026-08-03T03:41:03.002309Z", - "shell.execute_reply": "2026-08-03T03:41:03.001974Z" + "iopub.execute_input": "2026-08-03T04:20:03.038553Z", + "iopub.status.busy": "2026-08-03T04:20:03.038454Z", + "iopub.status.idle": "2026-08-03T04:20:03.043313Z", + "shell.execute_reply": "2026-08-03T04:20:03.042993Z" } }, "outputs": [ @@ -342,7 +342,7 @@ }, { "cell_type": "markdown", - "id": "f114f822", + "id": "f63b6ec3", "metadata": {}, "source": [ "Counts come from the **reduced** formula, so a supercell and its primitive cell\n", @@ -356,13 +356,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "17ce6f72", + "id": "19622640", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.003028Z", - "iopub.status.busy": "2026-08-03T03:41:03.002943Z", - "iopub.status.idle": "2026-08-03T03:41:03.007670Z", - "shell.execute_reply": "2026-08-03T03:41:03.007342Z" + "iopub.execute_input": "2026-08-03T04:20:03.044017Z", + "iopub.status.busy": "2026-08-03T04:20:03.043934Z", + "iopub.status.idle": "2026-08-03T04:20:03.048513Z", + "shell.execute_reply": "2026-08-03T04:20:03.048194Z" } }, "outputs": [ @@ -445,7 +445,7 @@ }, { "cell_type": "markdown", - "id": "c3065616", + "id": "8176bb8a", "metadata": {}, "source": [ "```{note}\n", @@ -459,13 +459,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "5d91dfd2", + "id": "13eb38a0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.008391Z", - "iopub.status.busy": "2026-08-03T03:41:03.008307Z", - "iopub.status.idle": "2026-08-03T03:41:03.012657Z", - "shell.execute_reply": "2026-08-03T03:41:03.012327Z" + "iopub.execute_input": "2026-08-03T04:20:03.049232Z", + "iopub.status.busy": "2026-08-03T04:20:03.049148Z", + "iopub.status.idle": "2026-08-03T04:20:03.053564Z", + "shell.execute_reply": "2026-08-03T04:20:03.053157Z" } }, "outputs": [ @@ -536,7 +536,7 @@ }, { "cell_type": "markdown", - "id": "43b0a991", + "id": "878b1b97", "metadata": {}, "source": [ "## The dividend inside the library\n", @@ -550,13 +550,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "6f36c700", + "id": "145dcc1e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.013373Z", - "iopub.status.busy": "2026-08-03T03:41:03.013289Z", - "iopub.status.idle": "2026-08-03T03:41:03.016623Z", - "shell.execute_reply": "2026-08-03T03:41:03.016301Z" + "iopub.execute_input": "2026-08-03T04:20:03.054349Z", + "iopub.status.busy": "2026-08-03T04:20:03.054265Z", + "iopub.status.idle": "2026-08-03T04:20:03.057597Z", + "shell.execute_reply": "2026-08-03T04:20:03.057252Z" } }, "outputs": [ @@ -578,7 +578,7 @@ }, { "cell_type": "markdown", - "id": "16020715", + "id": "bef13f25", "metadata": {}, "source": [ "Check one by hand. For Al₃Cu the weighted mean electronegativity should be\n", @@ -588,13 +588,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "a443717f", + "id": "569f1a72", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.017296Z", - "iopub.status.busy": "2026-08-03T03:41:03.017208Z", - "iopub.status.idle": "2026-08-03T03:41:03.019632Z", - "shell.execute_reply": "2026-08-03T03:41:03.019309Z" + "iopub.execute_input": "2026-08-03T04:20:03.058326Z", + "iopub.status.busy": "2026-08-03T04:20:03.058246Z", + "iopub.status.idle": "2026-08-03T04:20:03.060606Z", + "shell.execute_reply": "2026-08-03T04:20:03.060307Z" } }, "outputs": [ @@ -619,7 +619,7 @@ }, { "cell_type": "markdown", - "id": "ba7239b7", + "id": "d154f8f4", "metadata": {}, "source": [ "Those descriptors are also a distance, which makes the library a matrix you can\n", @@ -629,20 +629,20 @@ { "cell_type": "code", "execution_count": 8, - "id": "512a2944", + "id": "0e3de4e7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.020309Z", - "iopub.status.busy": "2026-08-03T03:41:03.020222Z", - "iopub.status.idle": "2026-08-03T03:41:03.180347Z", - "shell.execute_reply": "2026-08-03T03:41:03.179949Z" + "iopub.execute_input": "2026-08-03T04:20:03.061301Z", + "iopub.status.busy": "2026-08-03T04:20:03.061217Z", + "iopub.status.idle": "2026-08-03T04:20:03.223064Z", + "shell.execute_reply": "2026-08-03T04:20:03.222697Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -681,7 +681,7 @@ }, { "cell_type": "markdown", - "id": "c7e534cf", + "id": "22c54687", "metadata": {}, "source": [ "The two Al–Cu orderings sit next to each other and the elementals separate,\n", @@ -699,13 +699,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "31b4e048", + "id": "536655fc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.181123Z", - "iopub.status.busy": "2026-08-03T03:41:03.181036Z", - "iopub.status.idle": "2026-08-03T03:41:03.183637Z", - "shell.execute_reply": "2026-08-03T03:41:03.183319Z" + "iopub.execute_input": "2026-08-03T04:20:03.223994Z", + "iopub.status.busy": "2026-08-03T04:20:03.223902Z", + "iopub.status.idle": "2026-08-03T04:20:03.226533Z", + "shell.execute_reply": "2026-08-03T04:20:03.226229Z" } }, "outputs": [ @@ -731,7 +731,7 @@ }, { "cell_type": "markdown", - "id": "9e79e54e", + "id": "daa1c7d8", "metadata": {}, "source": [ "A site-averaged SOAP vector per structure, which separates two polymorphs of\n", @@ -754,13 +754,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "ba2788ff", + "id": "777f4daa", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.184324Z", - "iopub.status.busy": "2026-08-03T03:41:03.184235Z", - "iopub.status.idle": "2026-08-03T03:41:03.189873Z", - "shell.execute_reply": "2026-08-03T03:41:03.189546Z" + "iopub.execute_input": "2026-08-03T04:20:03.227236Z", + "iopub.status.busy": "2026-08-03T04:20:03.227154Z", + "iopub.status.idle": "2026-08-03T04:20:03.232759Z", + "shell.execute_reply": "2026-08-03T04:20:03.232457Z" } }, "outputs": [ @@ -873,13 +873,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "3e742440", + "id": "edc7dce7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.190568Z", - "iopub.status.busy": "2026-08-03T03:41:03.190484Z", - "iopub.status.idle": "2026-08-03T03:41:03.192537Z", - "shell.execute_reply": "2026-08-03T03:41:03.192223Z" + "iopub.execute_input": "2026-08-03T04:20:03.233445Z", + "iopub.status.busy": "2026-08-03T04:20:03.233362Z", + "iopub.status.idle": "2026-08-03T04:20:03.235465Z", + "shell.execute_reply": "2026-08-03T04:20:03.235069Z" } }, "outputs": [ @@ -902,7 +902,7 @@ }, { "cell_type": "markdown", - "id": "83a616dc", + "id": "8ece9a4d", "metadata": {}, "source": [ "Which model produced the block, and under what licence, is recorded next to it\n", @@ -924,13 +924,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "8f8a99e7", + "id": "9d089175", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.193173Z", - "iopub.status.busy": "2026-08-03T03:41:03.193098Z", - "iopub.status.idle": "2026-08-03T03:41:03.520912Z", - "shell.execute_reply": "2026-08-03T03:41:03.520515Z" + "iopub.execute_input": "2026-08-03T04:20:03.236418Z", + "iopub.status.busy": "2026-08-03T04:20:03.236340Z", + "iopub.status.idle": "2026-08-03T04:20:03.561131Z", + "shell.execute_reply": "2026-08-03T04:20:03.560777Z" } }, "outputs": [ @@ -1026,7 +1026,7 @@ }, { "cell_type": "markdown", - "id": "5ee49222", + "id": "713a8172", "metadata": {}, "source": [ "`normalize_composition` writes atomic fractions to a **layer** rather than\n", @@ -1042,13 +1042,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "be114085", + "id": "4d84efc0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.521886Z", - "iopub.status.busy": "2026-08-03T03:41:03.521788Z", - "iopub.status.idle": "2026-08-03T03:41:03.644471Z", - "shell.execute_reply": "2026-08-03T03:41:03.643980Z" + "iopub.execute_input": "2026-08-03T04:20:03.562262Z", + "iopub.status.busy": "2026-08-03T04:20:03.562094Z", + "iopub.status.idle": "2026-08-03T04:20:03.685531Z", + "shell.execute_reply": "2026-08-03T04:20:03.685123Z" } }, "outputs": [ @@ -1085,7 +1085,7 @@ }, { "cell_type": "markdown", - "id": "76b000b6", + "id": "f4cd4be8", "metadata": {}, "source": [ "## The question that follows every screen\n", @@ -1096,13 +1096,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "b045e2b7", + "id": "d567cde1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.645310Z", - "iopub.status.busy": "2026-08-03T03:41:03.645219Z", - "iopub.status.idle": "2026-08-03T03:41:03.656705Z", - "shell.execute_reply": "2026-08-03T03:41:03.656313Z" + "iopub.execute_input": "2026-08-03T04:20:03.686380Z", + "iopub.status.busy": "2026-08-03T04:20:03.686291Z", + "iopub.status.idle": "2026-08-03T04:20:03.697434Z", + "shell.execute_reply": "2026-08-03T04:20:03.697088Z" } }, "outputs": [ @@ -1208,7 +1208,7 @@ }, { "cell_type": "markdown", - "id": "36da6fd1", + "id": "6af9a19d", "metadata": {}, "source": [ "This is `rank_genes_groups` with the nouns changed, and it is the operation that\n", @@ -1223,13 +1223,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "0dce9577", + "id": "c827cd37", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.657510Z", - "iopub.status.busy": "2026-08-03T03:41:03.657426Z", - "iopub.status.idle": "2026-08-03T03:41:03.667004Z", - "shell.execute_reply": "2026-08-03T03:41:03.666608Z" + "iopub.execute_input": "2026-08-03T04:20:03.698253Z", + "iopub.status.busy": "2026-08-03T04:20:03.698164Z", + "iopub.status.idle": "2026-08-03T04:20:03.707460Z", + "shell.execute_reply": "2026-08-03T04:20:03.707119Z" } }, "outputs": [ @@ -1315,7 +1315,7 @@ }, { "cell_type": "markdown", - "id": "30f21805", + "id": "459e6e15", "metadata": {}, "source": [ "Both report an uncorrected p-value and a Benjamini–Hochberg q-value. With seven\n", @@ -1329,13 +1329,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "c78749f7", + "id": "69a25221", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.667827Z", - "iopub.status.busy": "2026-08-03T03:41:03.667743Z", - "iopub.status.idle": "2026-08-03T03:41:03.742044Z", - "shell.execute_reply": "2026-08-03T03:41:03.741591Z" + "iopub.execute_input": "2026-08-03T04:20:03.708189Z", + "iopub.status.busy": "2026-08-03T04:20:03.708104Z", + "iopub.status.idle": "2026-08-03T04:20:03.780718Z", + "shell.execute_reply": "2026-08-03T04:20:03.780348Z" } }, "outputs": [ @@ -1373,7 +1373,7 @@ }, { "cell_type": "markdown", - "id": "23182bff", + "id": "916178e5", "metadata": {}, "source": [ "The bar chart when you want the numbers; the periodic table when you want the\n", @@ -1383,13 +1383,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "a00abe3d", + "id": "c191c9bc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:03.742966Z", - "iopub.status.busy": "2026-08-03T03:41:03.742819Z", - "iopub.status.idle": "2026-08-03T03:41:04.162427Z", - "shell.execute_reply": "2026-08-03T03:41:04.161942Z" + "iopub.execute_input": "2026-08-03T04:20:03.781516Z", + "iopub.status.busy": "2026-08-03T04:20:03.781430Z", + "iopub.status.idle": "2026-08-03T04:20:04.206489Z", + "shell.execute_reply": "2026-08-03T04:20:04.206083Z" } }, "outputs": [ @@ -1419,7 +1419,7 @@ }, { "cell_type": "markdown", - "id": "6064cb18", + "id": "eb6d8278", "metadata": {}, "source": [ "Aluminium comes out grey rather than dark. Its odds ratio is infinite — it is in\n", @@ -1442,13 +1442,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "443b39d7", + "id": "48e0c0d9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:04.163343Z", - "iopub.status.busy": "2026-08-03T03:41:04.163231Z", - "iopub.status.idle": "2026-08-03T03:41:04.173026Z", - "shell.execute_reply": "2026-08-03T03:41:04.172625Z" + "iopub.execute_input": "2026-08-03T04:20:04.207308Z", + "iopub.status.busy": "2026-08-03T04:20:04.207216Z", + "iopub.status.idle": "2026-08-03T04:20:04.215863Z", + "shell.execute_reply": "2026-08-03T04:20:04.215514Z" } }, "outputs": [ @@ -1470,7 +1470,7 @@ }, { "cell_type": "markdown", - "id": "e89ca891", + "id": "764465b3", "metadata": {}, "source": [ "## Is this candidate actually new?\n", @@ -1482,13 +1482,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "7d134e5d", + "id": "65f07e4a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:04.173850Z", - "iopub.status.busy": "2026-08-03T03:41:04.173763Z", - "iopub.status.idle": "2026-08-03T03:41:04.185738Z", - "shell.execute_reply": "2026-08-03T03:41:04.185314Z" + "iopub.execute_input": "2026-08-03T04:20:04.216614Z", + "iopub.status.busy": "2026-08-03T04:20:04.216525Z", + "iopub.status.idle": "2026-08-03T04:20:04.227738Z", + "shell.execute_reply": "2026-08-03T04:20:04.227386Z" } }, "outputs": [ @@ -1592,13 +1592,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "62ff74c5", + "id": "d16224a5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:04.186578Z", - "iopub.status.busy": "2026-08-03T03:41:04.186436Z", - "iopub.status.idle": "2026-08-03T03:41:04.298406Z", - "shell.execute_reply": "2026-08-03T03:41:04.297995Z" + "iopub.execute_input": "2026-08-03T04:20:04.228463Z", + "iopub.status.busy": "2026-08-03T04:20:04.228380Z", + "iopub.status.idle": "2026-08-03T04:20:04.337347Z", + "shell.execute_reply": "2026-08-03T04:20:04.336994Z" } }, "outputs": [ @@ -1636,7 +1636,7 @@ }, { "cell_type": "markdown", - "id": "39f813fd", + "id": "029074a9", "metadata": {}, "source": [ "```{warning}\n", @@ -1671,13 +1671,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "1df7e1d5", + "id": "357346b0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:04.299232Z", - "iopub.status.busy": "2026-08-03T03:41:04.299142Z", - "iopub.status.idle": "2026-08-03T03:41:04.307159Z", - "shell.execute_reply": "2026-08-03T03:41:04.306753Z" + "iopub.execute_input": "2026-08-03T04:20:04.338167Z", + "iopub.status.busy": "2026-08-03T04:20:04.338077Z", + "iopub.status.idle": "2026-08-03T04:20:04.345737Z", + "shell.execute_reply": "2026-08-03T04:20:04.345405Z" } }, "outputs": [ @@ -1702,7 +1702,7 @@ }, { "cell_type": "markdown", - "id": "8b317c84", + "id": "f49d91fd", "metadata": {}, "source": [ "Anything that reads a *structure* raises, and should — there is none, and\n", @@ -1718,13 +1718,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "a88527a8", + "id": "b2ef4763", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:04.307954Z", - "iopub.status.busy": "2026-08-03T03:41:04.307862Z", - "iopub.status.idle": "2026-08-03T03:41:04.337323Z", - "shell.execute_reply": "2026-08-03T03:41:04.336931Z" + "iopub.execute_input": "2026-08-03T04:20:04.346455Z", + "iopub.status.busy": "2026-08-03T04:20:04.346367Z", + "iopub.status.idle": "2026-08-03T04:20:04.375137Z", + "shell.execute_reply": "2026-08-03T04:20:04.374724Z" } }, "outputs": [ @@ -1760,7 +1760,7 @@ }, { "cell_type": "markdown", - "id": "784c87b1", + "id": "8291aecf", "metadata": {}, "source": [ "```{warning}\n", @@ -1783,13 +1783,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "1f247c0a", + "id": "e1ec0879", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:04.338105Z", - "iopub.status.busy": "2026-08-03T03:41:04.338013Z", - "iopub.status.idle": "2026-08-03T03:41:04.344570Z", - "shell.execute_reply": "2026-08-03T03:41:04.344223Z" + "iopub.execute_input": "2026-08-03T04:20:04.375983Z", + "iopub.status.busy": "2026-08-03T04:20:04.375846Z", + "iopub.status.idle": "2026-08-03T04:20:04.382119Z", + "shell.execute_reply": "2026-08-03T04:20:04.381826Z" } }, "outputs": [ @@ -1816,7 +1816,7 @@ }, { "cell_type": "markdown", - "id": "158af381", + "id": "95646450", "metadata": {}, "source": [ "**The oxidation-state table is a choice.** The default `'icsd24'` is what has\n", @@ -1825,8 +1825,131 @@ "wrong; they answer slightly different questions, and a screen that does not say\n", "which it used is not reproducible.\n", "\n", - "From here a candidate needs a structure before anything else can touch it, which\n", - "is what `mv.gen.substitute` and structure prediction are for.\n", + "## From a formula to a structure\n", + "\n", + "A candidate needs a structure before anything else can touch it.\n", + "`mv.gen.from_symmetry` supplies one, by placing the atoms on Wyckoff positions\n", + "of a chosen space group and randomising the free parameters that remain." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "a81093e6", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-03T04:20:04.382931Z", + "iopub.status.busy": "2026-08-03T04:20:04.382851Z", + "iopub.status.idle": "2026-08-03T04:20:04.483808Z", + "shell.execute_reply": "2026-08-03T04:20:04.483396Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "formula requested_space_group space_group space_group_symbol symmetry_as_requested nsites\n", + " BaTiO3 221 221 Pm-3m True 5\n", + " BaTiO3 99 99 P4mm True 5\n", + " SrTiO3 221 221 Pm-3m True 5\n", + " SrTiO3 99 99 P4mm True 5\n" + ] + } + ], + "source": [ + "try:\n", + " candidates = mv.data.from_compositions([\"BaTiO3\", \"SrTiO3\"])\n", + " built = mv.gen.from_symmetry(candidates, space_groups=[221, 99], seed=0)\n", + " print(built.obs[[\"formula\", \"requested_space_group\", \"space_group\",\n", + " \"space_group_symbol\", \"symmetry_as_requested\",\n", + " \"nsites\"]].to_string(index=False))\n", + "except ImportError:\n", + " print(\"needs PyXtal; pip install matverse[generation]\")" + ] + }, + { + "cell_type": "markdown", + "id": "4f83aa37", + "metadata": {}, + "source": [ + "```{warning}\n", + "**The output is a starting geometry, not a structure.** The cell volume is\n", + "estimated and the free coordinates are random, so bond lengths are only\n", + "approximately right — generated BaTiO₃ in Pm-3m comes out near **5.06 Å against\n", + "a measured 4.00**. Run `mv.calc.relax` before believing any energy and\n", + "`mv.gen.validate` before believing the structure.\n", + "```\n", + "\n", + "Two columns rather than one, and the second is the one that matters.\n", + "`requested_space_group` is what PyXtal was asked for; `space_group` is what\n", + "pymatgen finds in the structure that came back.\n", + "\n", + "They disagree **often**, not occasionally. Asking for 40 random space groups for\n", + "TiO₂ gave 7 structures, and 5 of them came back at *higher* symmetry than\n", + "requested — P-6 asked for, P6/mmm delivered — because with few atoms the random\n", + "free parameters land on a special position. A generator that reported only the\n", + "request would be reporting its input." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "5b153343", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-03T04:20:04.484591Z", + "iopub.status.busy": "2026-08-03T04:20:04.484501Z", + "iopub.status.idle": "2026-08-03T04:20:04.701802Z", + "shell.execute_reply": "2026-08-03T04:20:04.701430Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7 built from 40 attempts, 33 failed\n", + "5 of 7 came back at a different symmetry\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/scratch/users/steorra/analysis/omicverse_dev/matverse/matverse/_registry.py:393: RuntimeWarning: 33 of 40 attempts produced no structure and are missing rows rather than substituted ones; see uns['from_symmetry']['errors']. First: TiO2 in group 109: Comp_CompatibilityError: Composition [1 2] not compatible with symmetry 109\n", + " return func(*args, **kwargs)\n" + ] + } + ], + "source": [ + "try:\n", + " many = mv.gen.from_symmetry(mv.data.from_compositions([\"TiO2\"]),\n", + " per_composition=40, seed=1)\n", + " n_built = many.n_obs\n", + " n_failed = many.uns[\"from_symmetry\"][\"n_failed\"]\n", + " disagreed = int((~many.obs[\"symmetry_as_requested\"]).sum())\n", + " print(f\"{n_built} built from 40 attempts, {n_failed} failed\")\n", + " print(f\"{disagreed} of {n_built} came back at a different symmetry\")\n", + "except ImportError:\n", + " print(\"needs PyXtal; pip install matverse[generation]\")" + ] + }, + { + "cell_type": "markdown", + "id": "20e18c28", + "metadata": {}, + "source": [ + "Note the other number: **33 of 40 attempts failed outright**, because a random\n", + "space group usually cannot host a given composition at a given cell size. That\n", + "is honest rather than hidden — a failure is a missing row plus a counted reason\n", + "in `uns['from_symmetry']`, never a substituted structure — but it does mean\n", + "passing `space_groups=` explicitly is both faster and more likely to give what\n", + "you wanted.\n", + "\n", + "The result is an ordinary materials object, so `mv.pp.describe`, `mv.calc.relax`\n", + "and everything else work on it unchanged. The funnel is now complete: elements →\n", + "compositions → structures → energies.\n", "\n", "```{seealso}\n", "[Beyond one number](beyond_one_number.ipynb) covers the results that are not a\n", diff --git a/matverse_guide/docs/tutorials/data_io.ipynb b/matverse_guide/docs/tutorials/data_io.ipynb index 10b5179..02e5aff 100644 --- a/matverse_guide/docs/tutorials/data_io.ipynb +++ b/matverse_guide/docs/tutorials/data_io.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "9aa283a1", + "id": "900e2dc8", "metadata": {}, "source": [ "# Getting data in and out\n", @@ -19,13 +19,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "87c95963", + "id": "289693c1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:20.382529Z", - "iopub.status.busy": "2026-08-03T03:45:20.382451Z", - "iopub.status.idle": "2026-08-03T03:45:24.036779Z", - "shell.execute_reply": "2026-08-03T03:45:24.036335Z" + "iopub.execute_input": "2026-08-03T04:24:19.039562Z", + "iopub.status.busy": "2026-08-03T04:24:19.039426Z", + "iopub.status.idle": "2026-08-03T04:24:22.003611Z", + "shell.execute_reply": "2026-08-03T04:24:22.003129Z" } }, "outputs": [ @@ -56,7 +56,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -72,7 +72,7 @@ }, { "cell_type": "markdown", - "id": "28a33607", + "id": "e14f3a14", "metadata": {}, "source": [ "## From a database, over OPTIMADE\n", @@ -85,13 +85,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "91551d49", + "id": "d937b1b5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:24.037930Z", - "iopub.status.busy": "2026-08-03T03:45:24.037681Z", - "iopub.status.idle": "2026-08-03T03:45:24.040616Z", - "shell.execute_reply": "2026-08-03T03:45:24.040281Z" + "iopub.execute_input": "2026-08-03T04:24:22.004664Z", + "iopub.status.busy": "2026-08-03T04:24:22.004422Z", + "iopub.status.idle": "2026-08-03T04:24:22.007406Z", + "shell.execute_reply": "2026-08-03T04:24:22.007041Z" } }, "outputs": [ @@ -119,7 +119,7 @@ }, { "cell_type": "markdown", - "id": "f02765d1", + "id": "68795172", "metadata": {}, "source": [ "We query [OQMD](https://oqmd.org/) — about 1.4 million entries — for every\n", @@ -129,13 +129,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "9b237b43", + "id": "ad66a362", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:24.041340Z", - "iopub.status.busy": "2026-08-03T03:45:24.041260Z", - "iopub.status.idle": "2026-08-03T03:45:26.721636Z", - "shell.execute_reply": "2026-08-03T03:45:26.721220Z" + "iopub.execute_input": "2026-08-03T04:24:22.008332Z", + "iopub.status.busy": "2026-08-03T04:24:22.008211Z", + "iopub.status.idle": "2026-08-03T04:24:25.828837Z", + "shell.execute_reply": "2026-08-03T04:24:25.828352Z" } }, "outputs": [ @@ -143,27 +143,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "oqmd unavailable: OPTIMADE query to https://oqmd.org/optimade/v1 failed: HTTPError: 502 Server Error: Bad Ga\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "alexandria unavailable: OPTIMADE query to https://alexandria.icams.rub.de/pbe/v1 failed: HTTPError: 500 Server Err\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "answered by: jarvis\n" + "answered by: oqmd\n" ] }, { "data": { "text/plain": [ - "AnnData object with n_obs × n_vars = 3 × 2\n", + "AnnData object with n_obs × n_vars = 15 × 2\n", " obs: 'optimade_id', 'provider', 'formula', 'nelements'\n", " var: 'Z', 'atomic_mass', 'atomic_radius', 'electronegativity', 'group', 'period', 'melting_point', 'boiling_point', 'molar_volume', 'thermal_conductivity', 'electrical_resistivity', 'average_ionic_radius', 'max_oxidation_state', 'min_oxidation_state', 'is_metal', 'is_transition_metal', 'is_alkali', 'is_alkaline', 'is_metalloid', 'is_halogen', 'is_noble_gas', 'is_chalcogen', 'is_lanthanoid', 'is_actinoid', 'is_rare_earth_metal', 'block'\n", " uns: 'features', 'levels', 'provenance', 'X_is'\n", @@ -202,13 +188,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "e038c369", + "id": "e8609fc0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:26.722585Z", - "iopub.status.busy": "2026-08-03T03:45:26.722397Z", - "iopub.status.idle": "2026-08-03T03:45:26.731790Z", - "shell.execute_reply": "2026-08-03T03:45:26.731401Z" + "iopub.execute_input": "2026-08-03T04:24:25.829933Z", + "iopub.status.busy": "2026-08-03T04:24:25.829688Z", + "iopub.status.idle": "2026-08-03T04:24:25.845605Z", + "shell.execute_reply": "2026-08-03T04:24:25.845194Z" } }, "outputs": [ @@ -243,37 +229,145 @@ " \n", " \n", " 0\n", - " dft_3d_JVASP-11956\n", - " jarvis\n", + " 4062279\n", + " oqmd\n", " AlNi\n", " 2\n", - " 5.864\n", + " 5.914\n", " \n", " \n", " 1\n", - " dft_3d_JVASP-19729\n", - " jarvis\n", + " 4373031\n", + " oqmd\n", " AlNi\n", " 2\n", - " 5.864\n", + " 5.920\n", " \n", " \n", " 2\n", - " dft_3d_JVASP-78765\n", - " jarvis\n", + " 4497420\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.692\n", + " \n", + " \n", + " 3\n", + " 4509489\n", + " oqmd\n", " AlNi\n", " 2\n", - " 5.878\n", + " 5.918\n", + " \n", + " \n", + " 4\n", + " 4789722\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.910\n", + " \n", + " \n", + " 5\n", + " 4790088\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.924\n", + " \n", + " \n", + " 6\n", + " 5491454\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.044\n", + " \n", + " \n", + " 7\n", + " 5568716\n", + " oqmd\n", + " AlNi\n", + " 4\n", + " 5.927\n", + " \n", + " \n", + " 8\n", + " 5569350\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 3.765\n", + " \n", + " \n", + " 9\n", + " 5572689\n", + " oqmd\n", + " AlNi\n", + " 4\n", + " 4.208\n", + " \n", + " \n", + " 10\n", + " 5573429\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.769\n", + " \n", + " \n", + " 11\n", + " 5860185\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.939\n", + " \n", + " \n", + " 12\n", + " 5860187\n", + " oqmd\n", + " AlNi\n", + " 2\n", + " 5.920\n", + " \n", + " \n", + " 13\n", + " 5860782\n", + " oqmd\n", + " AlNi\n", + " 12\n", + " 5.659\n", + " \n", + " \n", + " 14\n", + " 5860867\n", + " oqmd\n", + " AlNi\n", + " 12\n", + " 5.625\n", " \n", " \n", "\n", "" ], "text/plain": [ - " optimade_id provider formula nsites density\n", - "0 dft_3d_JVASP-11956 jarvis AlNi 2 5.864\n", - "1 dft_3d_JVASP-19729 jarvis AlNi 2 5.864\n", - "2 dft_3d_JVASP-78765 jarvis AlNi 2 5.878" + " optimade_id provider formula nsites density\n", + "0 4062279 oqmd AlNi 2 5.914\n", + "1 4373031 oqmd AlNi 2 5.920\n", + "2 4497420 oqmd AlNi 2 5.692\n", + "3 4509489 oqmd AlNi 2 5.918\n", + "4 4789722 oqmd AlNi 2 5.910\n", + "5 4790088 oqmd AlNi 2 5.924\n", + "6 5491454 oqmd AlNi 2 5.044\n", + "7 5568716 oqmd AlNi 4 5.927\n", + "8 5569350 oqmd AlNi 2 3.765\n", + "9 5572689 oqmd AlNi 4 4.208\n", + "10 5573429 oqmd AlNi 2 5.769\n", + "11 5860185 oqmd AlNi 2 5.939\n", + "12 5860187 oqmd AlNi 2 5.920\n", + "13 5860782 oqmd AlNi 12 5.659\n", + "14 5860867 oqmd AlNi 12 5.625" ] }, "execution_count": 4, @@ -288,7 +382,7 @@ }, { "cell_type": "markdown", - "id": "94eda03e", + "id": "eac09245", "metadata": {}, "source": [ "Real data, with its real database identifiers in `obs['optimade_id']`, so any\n", @@ -305,13 +399,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "c19fc3f5", + "id": "0bf3a54e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:26.732600Z", - "iopub.status.busy": "2026-08-03T03:45:26.732485Z", - "iopub.status.idle": "2026-08-03T03:45:27.162370Z", - "shell.execute_reply": "2026-08-03T03:45:27.161933Z" + "iopub.execute_input": "2026-08-03T04:24:25.846540Z", + "iopub.status.busy": "2026-08-03T04:24:25.846447Z", + "iopub.status.idle": "2026-08-03T04:24:26.267845Z", + "shell.execute_reply": "2026-08-03T04:24:26.267407Z" } }, "outputs": [], @@ -325,13 +419,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "e5409c7e", + "id": "24d5a30a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.163384Z", - "iopub.status.busy": "2026-08-03T03:45:27.163297Z", - "iopub.status.idle": "2026-08-03T03:45:27.165497Z", - "shell.execute_reply": "2026-08-03T03:45:27.165162Z" + "iopub.execute_input": "2026-08-03T04:24:26.269005Z", + "iopub.status.busy": "2026-08-03T04:24:26.268880Z", + "iopub.status.idle": "2026-08-03T04:24:26.271294Z", + "shell.execute_reply": "2026-08-03T04:24:26.270890Z" } }, "outputs": [ @@ -352,7 +446,7 @@ }, { "cell_type": "markdown", - "id": "01bc9f3e", + "id": "c667fba4", "metadata": {}, "source": [ "### What a real query gives you that a curated one does not\n", @@ -365,13 +459,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "12289e8d", + "id": "ca2a369f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.166224Z", - "iopub.status.busy": "2026-08-03T03:45:27.166141Z", - "iopub.status.idle": "2026-08-03T03:45:27.425503Z", - "shell.execute_reply": "2026-08-03T03:45:27.425061Z" + "iopub.execute_input": "2026-08-03T04:24:26.272066Z", + "iopub.status.busy": "2026-08-03T04:24:26.271976Z", + "iopub.status.idle": "2026-08-03T04:24:26.626112Z", + "shell.execute_reply": "2026-08-03T04:24:26.625682Z" } }, "outputs": [ @@ -379,9 +473,9 @@ "data": { "text/plain": [ "{'source': 'input',\n", - " 'n_blocks': 1,\n", - " 'n_duplicates': 2,\n", - " 'n_unique': 1,\n", + " 'n_blocks': 7,\n", + " 'n_duplicates': 7,\n", + " 'n_unique': 8,\n", " 'matcher': {'ltol': 0.2, 'stol': 0.3, 'angle_tol': 5.0},\n", " 'n_comparison_failures': 0}" ] @@ -399,7 +493,7 @@ }, { "cell_type": "markdown", - "id": "6b1f6cec", + "id": "137a8081", "metadata": {}, "source": [ "**Seven of fifteen were duplicates.** That is not a contrived example — it is\n", @@ -413,13 +507,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "0c3122c9", + "id": "b5f9a075", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.426575Z", - "iopub.status.busy": "2026-08-03T03:45:27.426227Z", - "iopub.status.idle": "2026-08-03T03:45:27.431914Z", - "shell.execute_reply": "2026-08-03T03:45:27.431559Z" + "iopub.execute_input": "2026-08-03T04:24:26.627189Z", + "iopub.status.busy": "2026-08-03T04:24:26.626910Z", + "iopub.status.idle": "2026-08-03T04:24:26.633034Z", + "shell.execute_reply": "2026-08-03T04:24:26.632681Z" } }, "outputs": [ @@ -454,37 +548,145 @@ " \n", " \n", " 0\n", - " dft_3d_JVASP-11956\n", + " 4062279\n", " AlNi\n", " 2\n", - " 5.864\n", + " 5.914\n", " False\n", " \n", " \n", " 1\n", - " dft_3d_JVASP-19729\n", + " 4373031\n", " AlNi\n", " 2\n", - " 5.864\n", + " 5.920\n", " True\n", " \n", " \n", " 2\n", - " dft_3d_JVASP-78765\n", + " 4497420\n", " AlNi\n", " 2\n", - " 5.878\n", + " 5.692\n", + " False\n", + " \n", + " \n", + " 3\n", + " 4509489\n", + " AlNi\n", + " 2\n", + " 5.918\n", + " True\n", + " \n", + " \n", + " 4\n", + " 4789722\n", + " AlNi\n", + " 2\n", + " 5.910\n", + " True\n", + " \n", + " \n", + " 5\n", + " 4790088\n", + " AlNi\n", + " 2\n", + " 5.924\n", + " True\n", + " \n", + " \n", + " 6\n", + " 5491454\n", + " AlNi\n", + " 2\n", + " 5.044\n", + " False\n", + " \n", + " \n", + " 7\n", + " 5568716\n", + " AlNi\n", + " 4\n", + " 5.927\n", + " True\n", + " \n", + " \n", + " 8\n", + " 5569350\n", + " AlNi\n", + " 2\n", + " 3.765\n", + " False\n", + " \n", + " \n", + " 9\n", + " 5572689\n", + " AlNi\n", + " 4\n", + " 4.208\n", + " False\n", + " \n", + " \n", + " 10\n", + " 5573429\n", + " AlNi\n", + " 2\n", + " 5.769\n", + " False\n", + " \n", + " \n", + " 11\n", + " 5860185\n", + " AlNi\n", + " 2\n", + " 5.939\n", + " True\n", + " \n", + " \n", + " 12\n", + " 5860187\n", + " AlNi\n", + " 2\n", + " 5.920\n", " True\n", " \n", + " \n", + " 13\n", + " 5860782\n", + " AlNi\n", + " 12\n", + " 5.659\n", + " False\n", + " \n", + " \n", + " 14\n", + " 5860867\n", + " AlNi\n", + " 12\n", + " 5.625\n", + " False\n", + " \n", " \n", "\n", "" ], "text/plain": [ - " optimade_id formula nsites density is_duplicate\n", - "0 dft_3d_JVASP-11956 AlNi 2 5.864 False\n", - "1 dft_3d_JVASP-19729 AlNi 2 5.864 True\n", - "2 dft_3d_JVASP-78765 AlNi 2 5.878 True" + " optimade_id formula nsites density is_duplicate\n", + "0 4062279 AlNi 2 5.914 False\n", + "1 4373031 AlNi 2 5.920 True\n", + "2 4497420 AlNi 2 5.692 False\n", + "3 4509489 AlNi 2 5.918 True\n", + "4 4789722 AlNi 2 5.910 True\n", + "5 4790088 AlNi 2 5.924 True\n", + "6 5491454 AlNi 2 5.044 False\n", + "7 5568716 AlNi 4 5.927 True\n", + "8 5569350 AlNi 2 3.765 False\n", + "9 5572689 AlNi 4 4.208 False\n", + "10 5573429 AlNi 2 5.769 False\n", + "11 5860185 AlNi 2 5.939 True\n", + "12 5860187 AlNi 2 5.920 True\n", + "13 5860782 AlNi 12 5.659 False\n", + "14 5860867 AlNi 12 5.625 False" ] }, "execution_count": 8, @@ -498,7 +700,7 @@ }, { "cell_type": "markdown", - "id": "7dc2cd17", + "id": "e35bd026", "metadata": {}, "source": [ "### Cached, so the second call is free\n", @@ -509,13 +711,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "04cec911", + "id": "74c5c034", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.432661Z", - "iopub.status.busy": "2026-08-03T03:45:27.432577Z", - "iopub.status.idle": "2026-08-03T03:45:27.464065Z", - "shell.execute_reply": "2026-08-03T03:45:27.463725Z" + "iopub.execute_input": "2026-08-03T04:24:26.633781Z", + "iopub.status.busy": "2026-08-03T04:24:26.633695Z", + "iopub.status.idle": "2026-08-03T04:24:26.665144Z", + "shell.execute_reply": "2026-08-03T04:24:26.664745Z" } }, "outputs": [ @@ -645,13 +847,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "f62c5b33", + "id": "4eec6f54", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.464931Z", - "iopub.status.busy": "2026-08-03T03:45:27.464846Z", - "iopub.status.idle": "2026-08-03T03:45:27.467203Z", - "shell.execute_reply": "2026-08-03T03:45:27.466891Z" + "iopub.execute_input": "2026-08-03T04:24:26.665968Z", + "iopub.status.busy": "2026-08-03T04:24:26.665883Z", + "iopub.status.idle": "2026-08-03T04:24:26.668198Z", + "shell.execute_reply": "2026-08-03T04:24:26.667882Z" } }, "outputs": [ @@ -674,13 +876,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "c2f7c170", + "id": "41ca49ea", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.467928Z", - "iopub.status.busy": "2026-08-03T03:45:27.467838Z", - "iopub.status.idle": "2026-08-03T03:45:27.469858Z", - "shell.execute_reply": "2026-08-03T03:45:27.469534Z" + "iopub.execute_input": "2026-08-03T04:24:26.668925Z", + "iopub.status.busy": "2026-08-03T04:24:26.668847Z", + "iopub.status.idle": "2026-08-03T04:24:26.670788Z", + "shell.execute_reply": "2026-08-03T04:24:26.670466Z" } }, "outputs": [ @@ -701,7 +903,7 @@ }, { "cell_type": "markdown", - "id": "a1320c26", + "id": "68643c9f", "metadata": {}, "source": [ "```{warning}\n", @@ -732,13 +934,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "d1139963", + "id": "e8b1a41c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.470563Z", - "iopub.status.busy": "2026-08-03T03:45:27.470483Z", - "iopub.status.idle": "2026-08-03T03:45:27.480588Z", - "shell.execute_reply": "2026-08-03T03:45:27.480254Z" + "iopub.execute_input": "2026-08-03T04:24:26.671497Z", + "iopub.status.busy": "2026-08-03T04:24:26.671420Z", + "iopub.status.idle": "2026-08-03T04:24:26.681496Z", + "shell.execute_reply": "2026-08-03T04:24:26.681068Z" } }, "outputs": [ @@ -809,7 +1011,7 @@ }, { "cell_type": "markdown", - "id": "67fb5017", + "id": "7afbc6d7", "metadata": {}, "source": [ "## From structures you already have" @@ -818,13 +1020,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "1bc35113", + "id": "4547f216", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.481324Z", - "iopub.status.busy": "2026-08-03T03:45:27.481237Z", - "iopub.status.idle": "2026-08-03T03:45:27.488948Z", - "shell.execute_reply": "2026-08-03T03:45:27.488609Z" + "iopub.execute_input": "2026-08-03T04:24:26.682431Z", + "iopub.status.busy": "2026-08-03T04:24:26.682317Z", + "iopub.status.idle": "2026-08-03T04:24:26.689945Z", + "shell.execute_reply": "2026-08-03T04:24:26.689599Z" } }, "outputs": [ @@ -897,7 +1099,7 @@ }, { "cell_type": "markdown", - "id": "a7fa03a0", + "id": "b9b94856", "metadata": {}, "source": [ "Pass a DataFrame and it becomes `obs`, aligned by position.\n", @@ -911,13 +1113,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "f251ed46", + "id": "4b178497", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.489665Z", - "iopub.status.busy": "2026-08-03T03:45:27.489584Z", - "iopub.status.idle": "2026-08-03T03:45:27.496005Z", - "shell.execute_reply": "2026-08-03T03:45:27.495652Z" + "iopub.execute_input": "2026-08-03T04:24:26.690672Z", + "iopub.status.busy": "2026-08-03T04:24:26.690592Z", + "iopub.status.idle": "2026-08-03T04:24:26.696879Z", + "shell.execute_reply": "2026-08-03T04:24:26.696507Z" } }, "outputs": [ @@ -946,7 +1148,7 @@ }, { "cell_type": "markdown", - "id": "2e5257a0", + "id": "7f26bfe7", "metadata": {}, "source": [ "## From ASE\n", @@ -958,13 +1160,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "f6cf1504", + "id": "c60804cc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.496726Z", - "iopub.status.busy": "2026-08-03T03:45:27.496644Z", - "iopub.status.idle": "2026-08-03T03:45:27.563200Z", - "shell.execute_reply": "2026-08-03T03:45:27.562723Z" + "iopub.execute_input": "2026-08-03T04:24:26.697737Z", + "iopub.status.busy": "2026-08-03T04:24:26.697629Z", + "iopub.status.idle": "2026-08-03T04:24:26.751847Z", + "shell.execute_reply": "2026-08-03T04:24:26.751408Z" } }, "outputs": [ @@ -1033,7 +1235,7 @@ }, { "cell_type": "markdown", - "id": "4a9fc4a0", + "id": "bb19d698", "metadata": {}, "source": [ "### From a trajectory or structure file\n", @@ -1046,13 +1248,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "ac24c176", + "id": "435e1bab", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.563984Z", - "iopub.status.busy": "2026-08-03T03:45:27.563898Z", - "iopub.status.idle": "2026-08-03T03:45:27.584339Z", - "shell.execute_reply": "2026-08-03T03:45:27.583966Z" + "iopub.execute_input": "2026-08-03T04:24:26.752717Z", + "iopub.status.busy": "2026-08-03T04:24:26.752626Z", + "iopub.status.idle": "2026-08-03T04:24:26.771615Z", + "shell.execute_reply": "2026-08-03T04:24:26.771252Z" } }, "outputs": [ @@ -1135,7 +1337,7 @@ }, { "cell_type": "markdown", - "id": "c8085f2b", + "id": "fbc7105e", "metadata": {}, "source": [ "## CIFs, out and back\n", @@ -1146,20 +1348,20 @@ { "cell_type": "code", "execution_count": 17, - "id": "b78beec3", + "id": "08ff0d46", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.585098Z", - "iopub.status.busy": "2026-08-03T03:45:27.585013Z", - "iopub.status.idle": "2026-08-03T03:45:27.603888Z", - "shell.execute_reply": "2026-08-03T03:45:27.603540Z" + "iopub.execute_input": "2026-08-03T04:24:26.772612Z", + "iopub.status.busy": "2026-08-03T04:24:26.772523Z", + "iopub.status.idle": "2026-08-03T04:24:26.795196Z", + "shell.execute_reply": "2026-08-03T04:24:26.794790Z" } }, "outputs": [ { "data": { "text/plain": [ - "['0.cif', '1.cif', '2.cif']" + "['0.cif', '1.cif', '10.cif', '11.cif', '12.cif', '13.cif']" ] }, "execution_count": 17, @@ -1175,13 +1377,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "af221c70", + "id": "2525a7fc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.604638Z", - "iopub.status.busy": "2026-08-03T03:45:27.604554Z", - "iopub.status.idle": "2026-08-03T03:45:27.617931Z", - "shell.execute_reply": "2026-08-03T03:45:27.617582Z" + "iopub.execute_input": "2026-08-03T04:24:26.796044Z", + "iopub.status.busy": "2026-08-03T04:24:26.795959Z", + "iopub.status.idle": "2026-08-03T04:24:26.826298Z", + "shell.execute_reply": "2026-08-03T04:24:26.825883Z" } }, "outputs": [ @@ -1216,19 +1418,31 @@ " 0\n", " AlNi\n", " 2\n", - " 5.864\n", + " 5.914\n", " \n", " \n", " 1\n", " AlNi\n", " 2\n", - " 5.864\n", + " 5.920\n", " \n", " \n", " 2\n", " AlNi\n", " 2\n", - " 5.878\n", + " 5.769\n", + " \n", + " \n", + " 3\n", + " AlNi\n", + " 2\n", + " 5.939\n", + " \n", + " \n", + " 4\n", + " AlNi\n", + " 2\n", + " 5.920\n", " \n", " \n", "\n", @@ -1236,9 +1450,11 @@ ], "text/plain": [ " formula nsites density\n", - "0 AlNi 2 5.864\n", - "1 AlNi 2 5.864\n", - "2 AlNi 2 5.878" + "0 AlNi 2 5.914\n", + "1 AlNi 2 5.920\n", + "2 AlNi 2 5.769\n", + "3 AlNi 2 5.939\n", + "4 AlNi 2 5.920" ] }, "execution_count": 18, @@ -1254,7 +1470,7 @@ }, { "cell_type": "markdown", - "id": "9de3b225", + "id": "b390ed02", "metadata": {}, "source": [ "Out and back with the formulas intact. `to_cif` names each file from its row,\n", @@ -1266,13 +1482,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "86aa06e0", + "id": "aeb5dda5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.618667Z", - "iopub.status.busy": "2026-08-03T03:45:27.618583Z", - "iopub.status.idle": "2026-08-03T03:45:27.621332Z", - "shell.execute_reply": "2026-08-03T03:45:27.620962Z" + "iopub.execute_input": "2026-08-03T04:24:26.827184Z", + "iopub.status.busy": "2026-08-03T04:24:26.827068Z", + "iopub.status.idle": "2026-08-03T04:24:26.829959Z", + "shell.execute_reply": "2026-08-03T04:24:26.829566Z" } }, "outputs": [ @@ -1296,13 +1512,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "e98abe40", + "id": "aa32250c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.622068Z", - "iopub.status.busy": "2026-08-03T03:45:27.621981Z", - "iopub.status.idle": "2026-08-03T03:45:27.624376Z", - "shell.execute_reply": "2026-08-03T03:45:27.624032Z" + "iopub.execute_input": "2026-08-03T04:24:26.830785Z", + "iopub.status.busy": "2026-08-03T04:24:26.830695Z", + "iopub.status.idle": "2026-08-03T04:24:26.833000Z", + "shell.execute_reply": "2026-08-03T04:24:26.832662Z" } }, "outputs": [ @@ -1324,7 +1540,7 @@ }, { "cell_type": "markdown", - "id": "37ee2ce6", + "id": "c6cfc5fe", "metadata": {}, "source": [ "And the object itself is an ordinary `AnnData`, so `write_h5ad` is the archive\n", @@ -1341,13 +1557,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "7c4dfba6", + "id": "f83dba3c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.625071Z", - "iopub.status.busy": "2026-08-03T03:45:27.624989Z", - "iopub.status.idle": "2026-08-03T03:45:27.630109Z", - "shell.execute_reply": "2026-08-03T03:45:27.629766Z" + "iopub.execute_input": "2026-08-03T04:24:26.833692Z", + "iopub.status.busy": "2026-08-03T04:24:26.833615Z", + "iopub.status.idle": "2026-08-03T04:24:26.838701Z", + "shell.execute_reply": "2026-08-03T04:24:26.838361Z" } }, "outputs": [ @@ -1380,13 +1596,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "76a7d188", + "id": "9bedc37c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.630815Z", - "iopub.status.busy": "2026-08-03T03:45:27.630731Z", - "iopub.status.idle": "2026-08-03T03:45:27.636890Z", - "shell.execute_reply": "2026-08-03T03:45:27.636546Z" + "iopub.execute_input": "2026-08-03T04:24:26.839472Z", + "iopub.status.busy": "2026-08-03T04:24:26.839345Z", + "iopub.status.idle": "2026-08-03T04:24:26.845493Z", + "shell.execute_reply": "2026-08-03T04:24:26.845112Z" } }, "outputs": [ @@ -1414,13 +1630,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "a72822f1", + "id": "f67aef0b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.637592Z", - "iopub.status.busy": "2026-08-03T03:45:27.637510Z", - "iopub.status.idle": "2026-08-03T03:45:27.639854Z", - "shell.execute_reply": "2026-08-03T03:45:27.639494Z" + "iopub.execute_input": "2026-08-03T04:24:26.846321Z", + "iopub.status.busy": "2026-08-03T04:24:26.846219Z", + "iopub.status.idle": "2026-08-03T04:24:26.848571Z", + "shell.execute_reply": "2026-08-03T04:24:26.848233Z" } }, "outputs": [ @@ -1442,7 +1658,7 @@ }, { "cell_type": "markdown", - "id": "69a289df", + "id": "a56cc8fb", "metadata": {}, "source": [ "```{note}\n", @@ -1457,13 +1673,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "29fd3c96", + "id": "0be21833", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:27.640670Z", - "iopub.status.busy": "2026-08-03T03:45:27.640587Z", - "iopub.status.idle": "2026-08-03T03:45:27.642509Z", - "shell.execute_reply": "2026-08-03T03:45:27.642167Z" + "iopub.execute_input": "2026-08-03T04:24:26.849255Z", + "iopub.status.busy": "2026-08-03T04:24:26.849168Z", + "iopub.status.idle": "2026-08-03T04:24:26.850997Z", + "shell.execute_reply": "2026-08-03T04:24:26.850667Z" } }, "outputs": [ @@ -1471,11 +1687,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "matverse dataset: 3 materials x 2 elements\n", + "matverse dataset: 15 materials x 2 elements\n", " elements Al, Ni\n", " structures input\n", " levels\n", - " jarvis OPTIMADE provider jarvis\n", + " oqmd OPTIMADE provider oqmd\n", " provenance 4 operations\n", " data.from_optimade\n", " pp.describe(source='input')\n", @@ -1490,7 +1706,7 @@ }, { "cell_type": "markdown", - "id": "5a7e8f52", + "id": "47f683f6", "metadata": {}, "source": [ "```{seealso}\n", diff --git a/matverse_guide/docs/tutorials/defects_and_diffusion.ipynb b/matverse_guide/docs/tutorials/defects_and_diffusion.ipynb index 255a1e9..d19f7ee 100644 --- a/matverse_guide/docs/tutorials/defects_and_diffusion.ipynb +++ b/matverse_guide/docs/tutorials/defects_and_diffusion.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "e5b6e923", + "id": "5a9c140a", "metadata": {}, "source": [ "# Defects and diffusion\n", @@ -25,13 +25,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "e1f67b2b", + "id": "72f9d12e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:26.028418Z", - "iopub.status.busy": "2026-08-03T03:41:26.028337Z", - "iopub.status.idle": "2026-08-03T03:41:29.045335Z", - "shell.execute_reply": "2026-08-03T03:41:29.044921Z" + "iopub.execute_input": "2026-08-03T04:20:27.060773Z", + "iopub.status.busy": "2026-08-03T04:20:27.060641Z", + "iopub.status.idle": "2026-08-03T04:20:30.015208Z", + "shell.execute_reply": "2026-08-03T04:20:30.014732Z" } }, "outputs": [ @@ -62,7 +62,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -78,7 +78,7 @@ }, { "cell_type": "markdown", - "id": "f8116eeb", + "id": "8859f0f0", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -90,13 +90,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "3736e9aa", + "id": "88f226ce", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:29.046584Z", - "iopub.status.busy": "2026-08-03T03:41:29.046335Z", - "iopub.status.idle": "2026-08-03T03:41:29.093829Z", - "shell.execute_reply": "2026-08-03T03:41:29.093457Z" + "iopub.execute_input": "2026-08-03T04:20:30.016282Z", + "iopub.status.busy": "2026-08-03T04:20:30.016035Z", + "iopub.status.idle": "2026-08-03T04:20:30.064944Z", + "shell.execute_reply": "2026-08-03T04:20:30.064548Z" } }, "outputs": [ @@ -158,7 +158,7 @@ }, { "cell_type": "markdown", - "id": "e8e6bd0f", + "id": "6bc9c1e7", "metadata": {}, "source": [ "### Two ways to deform a cell before you break it\n", @@ -172,13 +172,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "8b506ef4", + "id": "a87dffff", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:29.094913Z", - "iopub.status.busy": "2026-08-03T03:41:29.094751Z", - "iopub.status.idle": "2026-08-03T03:41:29.100251Z", - "shell.execute_reply": "2026-08-03T03:41:29.099853Z" + "iopub.execute_input": "2026-08-03T04:20:30.065798Z", + "iopub.status.busy": "2026-08-03T04:20:30.065697Z", + "iopub.status.idle": "2026-08-03T04:20:30.070990Z", + "shell.execute_reply": "2026-08-03T04:20:30.070603Z" } }, "outputs": [ @@ -203,13 +203,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "bea8889f", + "id": "e0efb122", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:29.101003Z", - "iopub.status.busy": "2026-08-03T03:41:29.100913Z", - "iopub.status.idle": "2026-08-03T03:41:29.104091Z", - "shell.execute_reply": "2026-08-03T03:41:29.103768Z" + "iopub.execute_input": "2026-08-03T04:20:30.071846Z", + "iopub.status.busy": "2026-08-03T04:20:30.071704Z", + "iopub.status.idle": "2026-08-03T04:20:30.074865Z", + "shell.execute_reply": "2026-08-03T04:20:30.074539Z" } }, "outputs": [ @@ -230,7 +230,7 @@ }, { "cell_type": "markdown", - "id": "e70265df", + "id": "f0fd27ae", "metadata": {}, "source": [ "## Enumerating the defects\n", @@ -244,13 +244,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "9f152030", + "id": "b4565176", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:29.104805Z", - "iopub.status.busy": "2026-08-03T03:41:29.104720Z", - "iopub.status.idle": "2026-08-03T03:41:29.145238Z", - "shell.execute_reply": "2026-08-03T03:41:29.144846Z" + "iopub.execute_input": "2026-08-03T04:20:30.075684Z", + "iopub.status.busy": "2026-08-03T04:20:30.075598Z", + "iopub.status.idle": "2026-08-03T04:20:30.116747Z", + "shell.execute_reply": "2026-08-03T04:20:30.116366Z" } }, "outputs": [ @@ -314,7 +314,7 @@ }, { "cell_type": "markdown", - "id": "2df91b82", + "id": "4425a681", "metadata": {}, "source": [ "```{note}\n", @@ -335,13 +335,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "17be3e57", + "id": "81d41fa0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:29.146139Z", - "iopub.status.busy": "2026-08-03T03:41:29.145981Z", - "iopub.status.idle": "2026-08-03T03:41:29.271830Z", - "shell.execute_reply": "2026-08-03T03:41:29.271402Z" + "iopub.execute_input": "2026-08-03T04:20:30.117671Z", + "iopub.status.busy": "2026-08-03T04:20:30.117532Z", + "iopub.status.idle": "2026-08-03T04:20:30.244021Z", + "shell.execute_reply": "2026-08-03T04:20:30.243589Z" } }, "outputs": [ @@ -401,7 +401,7 @@ }, { "cell_type": "markdown", - "id": "25dea9b9", + "id": "d5e9cc26", "metadata": {}, "source": [ "```{note}\n", @@ -420,7 +420,7 @@ }, { "cell_type": "markdown", - "id": "5f536e19", + "id": "57f594e2", "metadata": {}, "source": [ "### Two kinds that are not a site you already have\n", @@ -438,13 +438,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "fc9b658b", + "id": "07551b14", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:29.272657Z", - "iopub.status.busy": "2026-08-03T03:41:29.272565Z", - "iopub.status.idle": "2026-08-03T03:41:31.650168Z", - "shell.execute_reply": "2026-08-03T03:41:31.649683Z" + "iopub.execute_input": "2026-08-03T04:20:30.245063Z", + "iopub.status.busy": "2026-08-03T04:20:30.244937Z", + "iopub.status.idle": "2026-08-03T04:20:32.757919Z", + "shell.execute_reply": "2026-08-03T04:20:32.757453Z" } }, "outputs": [ @@ -479,42 +479,42 @@ " \n", " 0\n", " antisite\n", - " Li\n", + " Fe\n", " O\n", " 168\n", " \n", " \n", " 1\n", " antisite\n", - " Li\n", - " O\n", + " Fe\n", + " P\n", " 168\n", " \n", " \n", " 2\n", " antisite\n", + " Fe\n", " Li\n", - " P\n", " 168\n", " \n", " \n", " 3\n", " antisite\n", - " Li\n", - " P\n", + " O\n", + " Fe\n", " 168\n", " \n", " \n", " 4\n", " antisite\n", - " Li\n", + " O\n", " Fe\n", " 168\n", " \n", " \n", " 5\n", " antisite\n", - " Li\n", + " O\n", " Fe\n", " 168\n", " \n", @@ -524,12 +524,12 @@ ], "text/plain": [ " defect removed added nsites\n", - "0 antisite Li O 168\n", - "1 antisite Li O 168\n", - "2 antisite Li P 168\n", - "3 antisite Li P 168\n", - "4 antisite Li Fe 168\n", - "5 antisite Li Fe 168" + "0 antisite Fe O 168\n", + "1 antisite Fe P 168\n", + "2 antisite Fe Li 168\n", + "3 antisite O Fe 168\n", + "4 antisite O Fe 168\n", + "5 antisite O Fe 168" ] }, "execution_count": 7, @@ -548,7 +548,7 @@ }, { "cell_type": "markdown", - "id": "f7c54ad3", + "id": "17528f98", "metadata": {}, "source": [ "Twenty-four antisites from a four-species cathode, each an ordered swap — Fe on\n", @@ -561,13 +561,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "ac8b8650", + "id": "13701efc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:31.651135Z", - "iopub.status.busy": "2026-08-03T03:41:31.651025Z", - "iopub.status.idle": "2026-08-03T03:41:40.842630Z", - "shell.execute_reply": "2026-08-03T03:41:40.842069Z" + "iopub.execute_input": "2026-08-03T04:20:32.758905Z", + "iopub.status.busy": "2026-08-03T04:20:32.758802Z", + "iopub.status.idle": "2026-08-03T04:20:42.007225Z", + "shell.execute_reply": "2026-08-03T04:20:42.006703Z" } }, "outputs": [ @@ -648,7 +648,7 @@ }, { "cell_type": "markdown", - "id": "8a52daa6", + "id": "8d642691", "metadata": {}, "source": [ "One more atom than the host supercell, which is what an interstitial is.\n", @@ -663,7 +663,7 @@ }, { "cell_type": "markdown", - "id": "5142d65d", + "id": "e2916c46", "metadata": {}, "source": [ "The raw energy of a cell with one atom missing is not a formation energy. A\n", @@ -679,13 +679,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "92949963", + "id": "a8ae5e5d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:40.843704Z", - "iopub.status.busy": "2026-08-03T03:41:40.843600Z", - "iopub.status.idle": "2026-08-03T03:41:40.890140Z", - "shell.execute_reply": "2026-08-03T03:41:40.889724Z" + "iopub.execute_input": "2026-08-03T04:20:42.008364Z", + "iopub.status.busy": "2026-08-03T04:20:42.008259Z", + "iopub.status.idle": "2026-08-03T04:20:42.054796Z", + "shell.execute_reply": "2026-08-03T04:20:42.054384Z" } }, "outputs": [ @@ -706,7 +706,7 @@ }, { "cell_type": "markdown", - "id": "7819023f", + "id": "aa1c9f7a", "metadata": {}, "source": [ "An elemental solid has no window — copper in equilibrium with copper fixes its\n", @@ -718,13 +718,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "65857e5d", + "id": "b6591c8f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:40.891012Z", - "iopub.status.busy": "2026-08-03T03:41:40.890919Z", - "iopub.status.idle": "2026-08-03T03:41:40.893787Z", - "shell.execute_reply": "2026-08-03T03:41:40.893444Z" + "iopub.execute_input": "2026-08-03T04:20:42.055620Z", + "iopub.status.busy": "2026-08-03T04:20:42.055529Z", + "iopub.status.idle": "2026-08-03T04:20:42.058372Z", + "shell.execute_reply": "2026-08-03T04:20:42.058024Z" } }, "outputs": [ @@ -751,7 +751,7 @@ }, { "cell_type": "markdown", - "id": "a668b615", + "id": "3d037463", "metadata": {}, "source": [ "**1.314 eV**, against roughly 1.3 eV measured for copper by positron\n", @@ -776,13 +776,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "ab6181b7", + "id": "e1ffa8a7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:40.894564Z", - "iopub.status.busy": "2026-08-03T03:41:40.894425Z", - "iopub.status.idle": "2026-08-03T03:41:40.898192Z", - "shell.execute_reply": "2026-08-03T03:41:40.897842Z" + "iopub.execute_input": "2026-08-03T04:20:42.059112Z", + "iopub.status.busy": "2026-08-03T04:20:42.059024Z", + "iopub.status.idle": "2026-08-03T04:20:42.062792Z", + "shell.execute_reply": "2026-08-03T04:20:42.062442Z" } }, "outputs": [ @@ -809,13 +809,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "0ba1af7c", + "id": "1dbe77bd", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:40.898899Z", - "iopub.status.busy": "2026-08-03T03:41:40.898815Z", - "iopub.status.idle": "2026-08-03T03:41:41.024808Z", - "shell.execute_reply": "2026-08-03T03:41:41.024430Z" + "iopub.execute_input": "2026-08-03T04:20:42.063592Z", + "iopub.status.busy": "2026-08-03T04:20:42.063459Z", + "iopub.status.idle": "2026-08-03T04:20:42.190579Z", + "shell.execute_reply": "2026-08-03T04:20:42.190183Z" } }, "outputs": [ @@ -859,13 +859,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "7174d874", + "id": "265a367f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:41.025763Z", - "iopub.status.busy": "2026-08-03T03:41:41.025662Z", - "iopub.status.idle": "2026-08-03T03:41:41.030231Z", - "shell.execute_reply": "2026-08-03T03:41:41.029842Z" + "iopub.execute_input": "2026-08-03T04:20:42.191422Z", + "iopub.status.busy": "2026-08-03T04:20:42.191330Z", + "iopub.status.idle": "2026-08-03T04:20:42.195905Z", + "shell.execute_reply": "2026-08-03T04:20:42.195579Z" } }, "outputs": [ @@ -923,7 +923,7 @@ }, { "cell_type": "markdown", - "id": "f02283a7", + "id": "d1fb6b1c", "metadata": {}, "source": [ "Each straight segment is one charge state, and its slope is the charge; the\n", @@ -948,7 +948,7 @@ }, { "cell_type": "markdown", - "id": "ebac88dd", + "id": "95a8e341", "metadata": {}, "source": [ "### The charged states are lying, and by how much\n", @@ -966,13 +966,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "c0da5caa", + "id": "30ea0f72", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:41.031038Z", - "iopub.status.busy": "2026-08-03T03:41:41.030875Z", - "iopub.status.idle": "2026-08-03T03:41:41.110003Z", - "shell.execute_reply": "2026-08-03T03:41:41.109600Z" + "iopub.execute_input": "2026-08-03T04:20:42.196652Z", + "iopub.status.busy": "2026-08-03T04:20:42.196564Z", + "iopub.status.idle": "2026-08-03T04:20:42.276149Z", + "shell.execute_reply": "2026-08-03T04:20:42.275728Z" } }, "outputs": [ @@ -1009,7 +1009,7 @@ }, { "cell_type": "markdown", - "id": "d7abd744", + "id": "d4cda425", "metadata": {}, "source": [ "Zero shift at the valence band maximum and a growing one across the gap, which\n", @@ -1056,7 +1056,7 @@ }, { "cell_type": "markdown", - "id": "6941f372", + "id": "00ee493d", "metadata": {}, "source": [ "## What it costs to move\n", @@ -1071,13 +1071,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "732d7f03", + "id": "0f24a6ca", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:41.110883Z", - "iopub.status.busy": "2026-08-03T03:41:41.110739Z", - "iopub.status.idle": "2026-08-03T03:41:41.119355Z", - "shell.execute_reply": "2026-08-03T03:41:41.118932Z" + "iopub.execute_input": "2026-08-03T04:20:42.276967Z", + "iopub.status.busy": "2026-08-03T04:20:42.276877Z", + "iopub.status.idle": "2026-08-03T04:20:42.285500Z", + "shell.execute_reply": "2026-08-03T04:20:42.285134Z" } }, "outputs": [ @@ -1134,7 +1134,7 @@ }, { "cell_type": "markdown", - "id": "35c3cc86", + "id": "6e5215b3", "metadata": {}, "source": [ "2.556 Å is the nearest-neighbour distance in copper, `a/√2`, which is what a\n", @@ -1158,13 +1158,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "cf398508", + "id": "e191d233", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:41.120066Z", - "iopub.status.busy": "2026-08-03T03:41:41.119987Z", - "iopub.status.idle": "2026-08-03T03:41:41.154851Z", - "shell.execute_reply": "2026-08-03T03:41:41.154481Z" + "iopub.execute_input": "2026-08-03T04:20:42.286370Z", + "iopub.status.busy": "2026-08-03T04:20:42.286254Z", + "iopub.status.idle": "2026-08-03T04:20:42.322462Z", + "shell.execute_reply": "2026-08-03T04:20:42.321993Z" } }, "outputs": [ @@ -1197,7 +1197,7 @@ }, { "cell_type": "markdown", - "id": "915fcbb9", + "id": "3a1ba399", "metadata": {}, "source": [ "`key_added` matters here. Without it the second relaxation would overwrite the\n", @@ -1213,13 +1213,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "5e47d74a", + "id": "74653580", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:41.155590Z", - "iopub.status.busy": "2026-08-03T03:41:41.155504Z", - "iopub.status.idle": "2026-08-03T03:41:42.131370Z", - "shell.execute_reply": "2026-08-03T03:41:42.130949Z" + "iopub.execute_input": "2026-08-03T04:20:42.323257Z", + "iopub.status.busy": "2026-08-03T04:20:42.323163Z", + "iopub.status.idle": "2026-08-03T04:20:43.304318Z", + "shell.execute_reply": "2026-08-03T04:20:43.303870Z" } }, "outputs": [ @@ -1282,7 +1282,7 @@ }, { "cell_type": "markdown", - "id": "bbb7301f", + "id": "b0016411", "metadata": {}, "source": [ "**0.754 eV against a literature value of about 0.70 eV.** For a potential that\n", @@ -1305,13 +1305,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "e53c2873", + "id": "1789a729", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:42.132244Z", - "iopub.status.busy": "2026-08-03T03:41:42.132152Z", - "iopub.status.idle": "2026-08-03T03:41:42.254717Z", - "shell.execute_reply": "2026-08-03T03:41:42.254305Z" + "iopub.execute_input": "2026-08-03T04:20:43.305328Z", + "iopub.status.busy": "2026-08-03T04:20:43.305205Z", + "iopub.status.idle": "2026-08-03T04:20:43.429449Z", + "shell.execute_reply": "2026-08-03T04:20:43.429005Z" } }, "outputs": [ @@ -1349,7 +1349,7 @@ }, { "cell_type": "markdown", - "id": "83d6c2f3", + "id": "d42dd6a6", "metadata": {}, "source": [ "The path rises to a single saddle and comes back down, which is what a\n", @@ -1373,13 +1373,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "da3600e4", + "id": "640d5869", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:42.255598Z", - "iopub.status.busy": "2026-08-03T03:41:42.255509Z", - "iopub.status.idle": "2026-08-03T03:41:42.261269Z", - "shell.execute_reply": "2026-08-03T03:41:42.260914Z" + "iopub.execute_input": "2026-08-03T04:20:43.430380Z", + "iopub.status.busy": "2026-08-03T04:20:43.430227Z", + "iopub.status.idle": "2026-08-03T04:20:43.436048Z", + "shell.execute_reply": "2026-08-03T04:20:43.435699Z" } }, "outputs": [ @@ -1474,13 +1474,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "7eee09b4", + "id": "ddc850c0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:42.261982Z", - "iopub.status.busy": "2026-08-03T03:41:42.261900Z", - "iopub.status.idle": "2026-08-03T03:41:42.626005Z", - "shell.execute_reply": "2026-08-03T03:41:42.625599Z" + "iopub.execute_input": "2026-08-03T04:20:43.436805Z", + "iopub.status.busy": "2026-08-03T04:20:43.436720Z", + "iopub.status.idle": "2026-08-03T04:20:43.809372Z", + "shell.execute_reply": "2026-08-03T04:20:43.808881Z" } }, "outputs": [ @@ -1520,7 +1520,7 @@ }, { "cell_type": "markdown", - "id": "d9c74aeb", + "id": "5e6d1ab5", "metadata": {}, "source": [ "A straight line on this plot is the definition of Arrhenius behaviour, and its\n", @@ -1540,7 +1540,7 @@ }, { "cell_type": "markdown", - "id": "5843c143", + "id": "f3f0eb24", "metadata": {}, "source": [ "## Which barriers are actually worth computing?\n", @@ -1556,13 +1556,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "753a0aba", + "id": "a654ef21", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:42.626876Z", - "iopub.status.busy": "2026-08-03T03:41:42.626785Z", - "iopub.status.idle": "2026-08-03T03:41:42.979828Z", - "shell.execute_reply": "2026-08-03T03:41:42.979402Z" + "iopub.execute_input": "2026-08-03T04:20:43.810414Z", + "iopub.status.busy": "2026-08-03T04:20:43.810308Z", + "iopub.status.idle": "2026-08-03T04:20:44.167227Z", + "shell.execute_reply": "2026-08-03T04:20:44.166812Z" } }, "outputs": [ @@ -1636,7 +1636,7 @@ }, { "cell_type": "markdown", - "id": "5fa65389", + "id": "56e9a7c8", "metadata": {}, "source": [ "One hop each. Close-packed lithium has twelve neighbours and they are all the\n", @@ -1652,13 +1652,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "1a9e8b6e", + "id": "bc8b50ca", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:42.980847Z", - "iopub.status.busy": "2026-08-03T03:41:42.980670Z", - "iopub.status.idle": "2026-08-03T03:41:42.993673Z", - "shell.execute_reply": "2026-08-03T03:41:42.993302Z" + "iopub.execute_input": "2026-08-03T04:20:44.168085Z", + "iopub.status.busy": "2026-08-03T04:20:44.167997Z", + "iopub.status.idle": "2026-08-03T04:20:44.180764Z", + "shell.execute_reply": "2026-08-03T04:20:44.180385Z" } }, "outputs": [ @@ -1724,7 +1724,7 @@ }, { "cell_type": "markdown", - "id": "80f56c46", + "id": "bf58b497", "metadata": {}, "source": [ "Stretching *c* separates the twelve neighbours into four in the basal plane at\n", @@ -1749,7 +1749,7 @@ }, { "cell_type": "markdown", - "id": "757c8431", + "id": "fa5cd35d", "metadata": {}, "source": [ "## Before the barrier: can the ion get out at all?\n", @@ -1773,13 +1773,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "257cd162", + "id": "e30faf5a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:42.994517Z", - "iopub.status.busy": "2026-08-03T03:41:42.994374Z", - "iopub.status.idle": "2026-08-03T03:41:43.337857Z", - "shell.execute_reply": "2026-08-03T03:41:43.337404Z" + "iopub.execute_input": "2026-08-03T04:20:44.181552Z", + "iopub.status.busy": "2026-08-03T04:20:44.181465Z", + "iopub.status.idle": "2026-08-03T04:20:44.528770Z", + "shell.execute_reply": "2026-08-03T04:20:44.528373Z" } }, "outputs": [ @@ -1870,7 +1870,7 @@ }, { "cell_type": "markdown", - "id": "fbda8e05", + "id": "485fbeea", "metadata": {}, "source": [ "**3 against 2**, which is the textbook difference between the two: spinel\n", @@ -1890,13 +1890,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "8bb9b4d7", + "id": "d8a5326a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:43.338780Z", - "iopub.status.busy": "2026-08-03T03:41:43.338616Z", - "iopub.status.idle": "2026-08-03T03:41:43.452420Z", - "shell.execute_reply": "2026-08-03T03:41:43.452023Z" + "iopub.execute_input": "2026-08-03T04:20:44.529703Z", + "iopub.status.busy": "2026-08-03T04:20:44.529615Z", + "iopub.status.idle": "2026-08-03T04:20:44.645023Z", + "shell.execute_reply": "2026-08-03T04:20:44.644610Z" } }, "outputs": [ @@ -1979,7 +1979,7 @@ }, { "cell_type": "markdown", - "id": "eca49364", + "id": "563bc0db", "metadata": {}, "source": [ "Allow a 5 Å hop and the layered oxide becomes three-dimensional too, because\n", @@ -1997,7 +1997,7 @@ }, { "cell_type": "markdown", - "id": "798cbf0f", + "id": "8d212484", "metadata": {}, "source": [ "## Handing the hop to DFT\n", @@ -2011,13 +2011,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "1eed517a", + "id": "46f5ffc4", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:43.453249Z", - "iopub.status.busy": "2026-08-03T03:41:43.453161Z", - "iopub.status.idle": "2026-08-03T03:41:46.189251Z", - "shell.execute_reply": "2026-08-03T03:41:46.188787Z" + "iopub.execute_input": "2026-08-03T04:20:44.645944Z", + "iopub.status.busy": "2026-08-03T04:20:44.645800Z", + "iopub.status.idle": "2026-08-03T04:20:44.675915Z", + "shell.execute_reply": "2026-08-03T04:20:44.675510Z" } }, "outputs": [ @@ -2046,7 +2046,7 @@ }, { "cell_type": "markdown", - "id": "148875c0", + "id": "0a9c8224", "metadata": {}, "source": [ "Two of those settings are the reason to use a preset rather than write the file\n", @@ -2063,7 +2063,7 @@ }, { "cell_type": "markdown", - "id": "655788b5", + "id": "3d7ec972", "metadata": {}, "source": [ "## Finding a defect somebody else made\n", @@ -2080,13 +2080,13 @@ { "cell_type": "code", "execution_count": 26, - "id": "4e926e5d", + "id": "b79ed729", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:46.190151Z", - "iopub.status.busy": "2026-08-03T03:41:46.190052Z", - "iopub.status.idle": "2026-08-03T03:41:46.205817Z", - "shell.execute_reply": "2026-08-03T03:41:46.205423Z" + "iopub.execute_input": "2026-08-03T04:20:44.676793Z", + "iopub.status.busy": "2026-08-03T04:20:44.676651Z", + "iopub.status.idle": "2026-08-03T04:20:44.692348Z", + "shell.execute_reply": "2026-08-03T04:20:44.691959Z" } }, "outputs": [ @@ -2129,7 +2129,7 @@ }, { "cell_type": "markdown", - "id": "8383817b", + "id": "8fcbd7ac", "metadata": {}, "source": [ "The vacancy comes back at the coordinates it was made at, from a cell whose\n", @@ -2151,7 +2151,7 @@ }, { "cell_type": "markdown", - "id": "a60dd440", + "id": "d4800f43", "metadata": {}, "source": [ "## The curve a charge state leaves behind\n", @@ -2169,13 +2169,13 @@ { "cell_type": "code", "execution_count": 27, - "id": "7531858a", + "id": "661a3b5e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:46.206661Z", - "iopub.status.busy": "2026-08-03T03:41:46.206574Z", - "iopub.status.idle": "2026-08-03T03:41:46.214546Z", - "shell.execute_reply": "2026-08-03T03:41:46.214065Z" + "iopub.execute_input": "2026-08-03T04:20:44.693123Z", + "iopub.status.busy": "2026-08-03T04:20:44.693031Z", + "iopub.status.idle": "2026-08-03T04:20:44.701049Z", + "shell.execute_reply": "2026-08-03T04:20:44.700730Z" } }, "outputs": [ @@ -2215,7 +2215,7 @@ }, { "cell_type": "markdown", - "id": "87a14c0c", + "id": "80d831cb", "metadata": {}, "source": [ "The frequency is $\\hbar\\sqrt{c}$ with the mass-weighted units carried\n", @@ -2241,7 +2241,7 @@ }, { "cell_type": "markdown", - "id": "897f4878", + "id": "f4bf4072", "metadata": {}, "source": [ "## Is it a killer?\n", @@ -2258,13 +2258,13 @@ { "cell_type": "code", "execution_count": 28, - "id": "4d7fff0a", + "id": "623dbf39", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:46.215348Z", - "iopub.status.busy": "2026-08-03T03:41:46.215261Z", - "iopub.status.idle": "2026-08-03T03:41:47.943444Z", - "shell.execute_reply": "2026-08-03T03:41:47.942951Z" + "iopub.execute_input": "2026-08-03T04:20:44.701861Z", + "iopub.status.busy": "2026-08-03T04:20:44.701776Z", + "iopub.status.idle": "2026-08-03T04:20:46.410033Z", + "shell.execute_reply": "2026-08-03T04:20:46.409593Z" } }, "outputs": [ @@ -2335,7 +2335,7 @@ }, { "cell_type": "markdown", - "id": "ac161b02", + "id": "cc83be34", "metadata": {}, "source": [ "Doubling the electron–phonon matrix element multiplies the capture rate by\n", @@ -2349,13 +2349,13 @@ { "cell_type": "code", "execution_count": 29, - "id": "223f2b29", + "id": "7b229628", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:47.944503Z", - "iopub.status.busy": "2026-08-03T03:41:47.944336Z", - "iopub.status.idle": "2026-08-03T03:41:53.362501Z", - "shell.execute_reply": "2026-08-03T03:41:53.362033Z" + "iopub.execute_input": "2026-08-03T04:20:46.410965Z", + "iopub.status.busy": "2026-08-03T04:20:46.410822Z", + "iopub.status.idle": "2026-08-03T04:20:51.768557Z", + "shell.execute_reply": "2026-08-03T04:20:51.768099Z" } }, "outputs": [ @@ -2420,7 +2420,7 @@ }, { "cell_type": "markdown", - "id": "aeca38f0", + "id": "0916149f", "metadata": {}, "source": [ "Orders of magnitude across a few hundred kelvin, which is why a capture\n", @@ -2444,7 +2444,7 @@ }, { "cell_type": "markdown", - "id": "8f301249", + "id": "79e42a80", "metadata": {}, "source": [ "## What the object remembers" @@ -2453,13 +2453,13 @@ { "cell_type": "code", "execution_count": 30, - "id": "ff36b0f5", + "id": "2e149138", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:53.363490Z", - "iopub.status.busy": "2026-08-03T03:41:53.363341Z", - "iopub.status.idle": "2026-08-03T03:41:53.365593Z", - "shell.execute_reply": "2026-08-03T03:41:53.365263Z" + "iopub.execute_input": "2026-08-03T04:20:51.769498Z", + "iopub.status.busy": "2026-08-03T04:20:51.769409Z", + "iopub.status.idle": "2026-08-03T04:20:51.771484Z", + "shell.execute_reply": "2026-08-03T04:20:51.771143Z" } }, "outputs": [ @@ -2488,7 +2488,7 @@ }, { "cell_type": "markdown", - "id": "4d91b331", + "id": "35637132", "metadata": {}, "source": [ "```{seealso}\n", diff --git a/matverse_guide/docs/tutorials/disorder.ipynb b/matverse_guide/docs/tutorials/disorder.ipynb index 570387b..2da3d5d 100644 --- a/matverse_guide/docs/tutorials/disorder.ipynb +++ b/matverse_guide/docs/tutorials/disorder.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "9cc3f3df", + "id": "b5af4495", "metadata": {}, "source": [ "# Disorder\n", @@ -24,13 +24,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "045dd857", + "id": "3cfb0a24", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:20.119504Z", - "iopub.status.busy": "2026-08-03T03:44:20.119427Z", - "iopub.status.idle": "2026-08-03T03:44:23.214143Z", - "shell.execute_reply": "2026-08-03T03:44:23.213706Z" + "iopub.execute_input": "2026-08-03T04:23:19.572174Z", + "iopub.status.busy": "2026-08-03T04:23:19.572096Z", + "iopub.status.idle": "2026-08-03T04:23:22.860294Z", + "shell.execute_reply": "2026-08-03T04:23:22.859758Z" } }, "outputs": [ @@ -61,7 +61,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -77,7 +77,7 @@ }, { "cell_type": "markdown", - "id": "19e17982", + "id": "063b43d6", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -90,13 +90,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "1f89579f", + "id": "8cbebad3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:23.215496Z", - "iopub.status.busy": "2026-08-03T03:44:23.215233Z", - "iopub.status.idle": "2026-08-03T03:44:23.272399Z", - "shell.execute_reply": "2026-08-03T03:44:23.271986Z" + "iopub.execute_input": "2026-08-03T04:23:22.861628Z", + "iopub.status.busy": "2026-08-03T04:23:22.861283Z", + "iopub.status.idle": "2026-08-03T04:23:22.919062Z", + "shell.execute_reply": "2026-08-03T04:23:22.918617Z" } }, "outputs": [ @@ -183,7 +183,7 @@ }, { "cell_type": "markdown", - "id": "056e3f0e", + "id": "d5494918", "metadata": {}, "source": [ "Note that `mv.pp.describe` reports a formula for all three — a disordered cell\n", @@ -195,13 +195,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "11bbbf55", + "id": "9b7699b2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:23.273231Z", - "iopub.status.busy": "2026-08-03T03:44:23.273131Z", - "iopub.status.idle": "2026-08-03T03:44:23.279718Z", - "shell.execute_reply": "2026-08-03T03:44:23.279361Z" + "iopub.execute_input": "2026-08-03T04:23:22.919996Z", + "iopub.status.busy": "2026-08-03T04:23:22.919871Z", + "iopub.status.idle": "2026-08-03T04:23:22.926369Z", + "shell.execute_reply": "2026-08-03T04:23:22.925984Z" } }, "outputs": [ @@ -292,7 +292,7 @@ }, { "cell_type": "markdown", - "id": "9e197154", + "id": "03972892", "metadata": {}, "source": [ "`max_site_disorder` is how far the worst site is from having a single owner:\n", @@ -309,13 +309,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "3057b1de", + "id": "de66aba0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:23.280500Z", - "iopub.status.busy": "2026-08-03T03:44:23.280412Z", - "iopub.status.idle": "2026-08-03T03:44:23.285120Z", - "shell.execute_reply": "2026-08-03T03:44:23.284771Z" + "iopub.execute_input": "2026-08-03T04:23:22.927145Z", + "iopub.status.busy": "2026-08-03T04:23:22.927059Z", + "iopub.status.idle": "2026-08-03T04:23:22.931762Z", + "shell.execute_reply": "2026-08-03T04:23:22.931367Z" } }, "outputs": [ @@ -391,7 +391,7 @@ }, { "cell_type": "markdown", - "id": "0303470a", + "id": "e69b4a4a", "metadata": {}, "source": [ "Exact. And the consequence is the interesting part." @@ -400,20 +400,20 @@ { "cell_type": "code", "execution_count": 5, - "id": "39c1aa6a", + "id": "01c80f17", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:23.285882Z", - "iopub.status.busy": "2026-08-03T03:44:23.285792Z", - "iopub.status.idle": "2026-08-03T03:44:23.437008Z", - "shell.execute_reply": "2026-08-03T03:44:23.436633Z" + "iopub.execute_input": "2026-08-03T04:23:22.932820Z", + "iopub.status.busy": "2026-08-03T04:23:22.932713Z", + "iopub.status.idle": "2026-08-03T04:23:23.083628Z", + "shell.execute_reply": "2026-08-03T04:23:23.083229Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -454,7 +454,7 @@ }, { "cell_type": "markdown", - "id": "588c4de6", + "id": "715fa006", "metadata": {}, "source": [ "At room temperature the entropy term is tens of meV and usually ignorable. At a\n", @@ -483,13 +483,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "e3bdc63b", + "id": "93afc91f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:23.437821Z", - "iopub.status.busy": "2026-08-03T03:44:23.437728Z", - "iopub.status.idle": "2026-08-03T03:44:24.430169Z", - "shell.execute_reply": "2026-08-03T03:44:24.429792Z" + "iopub.execute_input": "2026-08-03T04:23:23.084628Z", + "iopub.status.busy": "2026-08-03T04:23:23.084534Z", + "iopub.status.idle": "2026-08-03T04:23:24.070433Z", + "shell.execute_reply": "2026-08-03T04:23:24.069975Z" } }, "outputs": [ @@ -609,13 +609,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "1c59ce51", + "id": "afc6bdf1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.431311Z", - "iopub.status.busy": "2026-08-03T03:44:24.431151Z", - "iopub.status.idle": "2026-08-03T03:44:24.433640Z", - "shell.execute_reply": "2026-08-03T03:44:24.433330Z" + "iopub.execute_input": "2026-08-03T04:23:24.071366Z", + "iopub.status.busy": "2026-08-03T04:23:24.071265Z", + "iopub.status.idle": "2026-08-03T04:23:24.073655Z", + "shell.execute_reply": "2026-08-03T04:23:24.073321Z" } }, "outputs": [ @@ -636,7 +636,7 @@ }, { "cell_type": "markdown", - "id": "22142c3f", + "id": "b43f9785", "metadata": {}, "source": [ "Every cell is now ordered, and the compositions survived: Cu₀.₅Au₀.₅ became\n", @@ -652,13 +652,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "d8d65e0e", + "id": "85acc74e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.434360Z", - "iopub.status.busy": "2026-08-03T03:44:24.434276Z", - "iopub.status.idle": "2026-08-03T03:44:24.436333Z", - "shell.execute_reply": "2026-08-03T03:44:24.436029Z" + "iopub.execute_input": "2026-08-03T04:23:24.074384Z", + "iopub.status.busy": "2026-08-03T04:23:24.074298Z", + "iopub.status.idle": "2026-08-03T04:23:24.076420Z", + "shell.execute_reply": "2026-08-03T04:23:24.076058Z" } }, "outputs": [ @@ -685,7 +685,7 @@ }, { "cell_type": "markdown", - "id": "7496c55a", + "id": "01a20a44", "metadata": {}, "source": [ "Arrangements are ranked by **Ewald energy**, which needs oxidation states.\n", @@ -716,13 +716,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "db516b5d", + "id": "06d8fd58", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.437031Z", - "iopub.status.busy": "2026-08-03T03:44:24.436952Z", - "iopub.status.idle": "2026-08-03T03:44:24.513774Z", - "shell.execute_reply": "2026-08-03T03:44:24.513399Z" + "iopub.execute_input": "2026-08-03T04:23:24.077228Z", + "iopub.status.busy": "2026-08-03T04:23:24.077148Z", + "iopub.status.idle": "2026-08-03T04:23:24.154190Z", + "shell.execute_reply": "2026-08-03T04:23:24.153783Z" } }, "outputs": [ @@ -745,7 +745,7 @@ }, { "cell_type": "markdown", - "id": "309820b8", + "id": "86535adf", "metadata": {}, "source": [ "It needs ATAT's `mcsqs`, a separate Fortran program, and it refuses rather than\n", @@ -763,13 +763,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "7fefe2cf", + "id": "5384ad47", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.514577Z", - "iopub.status.busy": "2026-08-03T03:44:24.514491Z", - "iopub.status.idle": "2026-08-03T03:44:24.538736Z", - "shell.execute_reply": "2026-08-03T03:44:24.538380Z" + "iopub.execute_input": "2026-08-03T04:23:24.155135Z", + "iopub.status.busy": "2026-08-03T04:23:24.154989Z", + "iopub.status.idle": "2026-08-03T04:23:24.178662Z", + "shell.execute_reply": "2026-08-03T04:23:24.178297Z" } }, "outputs": [ @@ -829,13 +829,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "96f13b39", + "id": "62221f9f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.539494Z", - "iopub.status.busy": "2026-08-03T03:44:24.539405Z", - "iopub.status.idle": "2026-08-03T03:44:24.541980Z", - "shell.execute_reply": "2026-08-03T03:44:24.541648Z" + "iopub.execute_input": "2026-08-03T04:23:24.179463Z", + "iopub.status.busy": "2026-08-03T04:23:24.179372Z", + "iopub.status.idle": "2026-08-03T04:23:24.181879Z", + "shell.execute_reply": "2026-08-03T04:23:24.181571Z" } }, "outputs": [ @@ -859,7 +859,7 @@ }, { "cell_type": "markdown", - "id": "abec3f21", + "id": "78e42ac1", "metadata": {}, "source": [ "That message is the point of the function existing at all.\n", @@ -893,13 +893,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "be867a78", + "id": "08167ddd", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.542666Z", - "iopub.status.busy": "2026-08-03T03:44:24.542585Z", - "iopub.status.idle": "2026-08-03T03:44:24.544331Z", - "shell.execute_reply": "2026-08-03T03:44:24.544044Z" + "iopub.execute_input": "2026-08-03T04:23:24.182586Z", + "iopub.status.busy": "2026-08-03T04:23:24.182499Z", + "iopub.status.idle": "2026-08-03T04:23:24.184279Z", + "shell.execute_reply": "2026-08-03T04:23:24.183958Z" } }, "outputs": [ @@ -920,7 +920,7 @@ }, { "cell_type": "markdown", - "id": "c256480c", + "id": "f305ff7a", "metadata": {}, "source": [ "```{seealso}\n", @@ -932,7 +932,7 @@ }, { "cell_type": "markdown", - "id": "1a1c194e", + "id": "00d80623", "metadata": {}, "source": [ "## What can this be alloyed with?\n", @@ -949,13 +949,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "9572e4b7", + "id": "77ccf5a1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:24.545037Z", - "iopub.status.busy": "2026-08-03T03:44:24.544958Z", - "iopub.status.idle": "2026-08-03T03:44:25.427236Z", - "shell.execute_reply": "2026-08-03T03:44:25.426835Z" + "iopub.execute_input": "2026-08-03T04:23:24.184932Z", + "iopub.status.busy": "2026-08-03T04:23:24.184855Z", + "iopub.status.idle": "2026-08-03T04:23:25.059094Z", + "shell.execute_reply": "2026-08-03T04:23:25.058719Z" } }, "outputs": [ @@ -1050,7 +1050,7 @@ }, { "cell_type": "markdown", - "id": "44d72363", + "id": "fd43a829", "metadata": {}, "source": [ "Three pairs out of four materials, and the missing one is the point. **Silicon\n", @@ -1061,13 +1061,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "0775071b", + "id": "92717224", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:25.428166Z", - "iopub.status.busy": "2026-08-03T03:44:25.428063Z", - "iopub.status.idle": "2026-08-03T03:44:25.430330Z", - "shell.execute_reply": "2026-08-03T03:44:25.429986Z" + "iopub.execute_input": "2026-08-03T04:23:25.060083Z", + "iopub.status.busy": "2026-08-03T04:23:25.059986Z", + "iopub.status.idle": "2026-08-03T04:23:25.062118Z", + "shell.execute_reply": "2026-08-03T04:23:25.061820Z" } }, "outputs": [ @@ -1090,7 +1090,7 @@ }, { "cell_type": "markdown", - "id": "d4976601", + "id": "7232c2bd", "metadata": {}, "source": [ "\"Not commensurate\" — there is no species you can swap to get from Si to GaAs\n", @@ -1117,7 +1117,7 @@ }, { "cell_type": "markdown", - "id": "402e91d0", + "id": "f32b02d3", "metadata": {}, "source": [ "## Did the disorder work?\n", @@ -1139,13 +1139,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "182eb561", + "id": "0b4a2a7b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:25.431203Z", - "iopub.status.busy": "2026-08-03T03:44:25.431118Z", - "iopub.status.idle": "2026-08-03T03:44:25.727738Z", - "shell.execute_reply": "2026-08-03T03:44:25.727331Z" + "iopub.execute_input": "2026-08-03T04:23:25.062831Z", + "iopub.status.busy": "2026-08-03T04:23:25.062754Z", + "iopub.status.idle": "2026-08-03T04:23:25.364026Z", + "shell.execute_reply": "2026-08-03T04:23:25.363619Z" } }, "outputs": [ @@ -1230,7 +1230,7 @@ }, { "cell_type": "markdown", - "id": "c6bbfcfb", + "id": "a4dd60cf", "metadata": {}, "source": [ "**+1 for the like pairs and −1 for the unlike ones** on B2, which is what\n", @@ -1250,13 +1250,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "e71f3e4d", + "id": "1e519ef0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:25.728615Z", - "iopub.status.busy": "2026-08-03T03:44:25.728530Z", - "iopub.status.idle": "2026-08-03T03:44:26.585887Z", - "shell.execute_reply": "2026-08-03T03:44:26.585468Z" + "iopub.execute_input": "2026-08-03T04:23:25.364913Z", + "iopub.status.busy": "2026-08-03T04:23:25.364826Z", + "iopub.status.idle": "2026-08-03T04:23:26.234446Z", + "shell.execute_reply": "2026-08-03T04:23:26.234062Z" } }, "outputs": [ @@ -1339,7 +1339,7 @@ }, { "cell_type": "markdown", - "id": "dd0be0ed", + "id": "cd022b88", "metadata": {}, "source": [ "The sign **inverts** between the first shell and the second. In bcc the eight\n", @@ -1362,7 +1362,7 @@ }, { "cell_type": "markdown", - "id": "defa8f7b", + "id": "eeabf377", "metadata": {}, "source": [ "## An effective Hamiltonian, and what it buys\n", @@ -1384,13 +1384,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "4b03b476", + "id": "5cf764de", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:26.586999Z", - "iopub.status.busy": "2026-08-03T03:44:26.586913Z", - "iopub.status.idle": "2026-08-03T03:44:28.410824Z", - "shell.execute_reply": "2026-08-03T03:44:28.410330Z" + "iopub.execute_input": "2026-08-03T04:23:26.235476Z", + "iopub.status.busy": "2026-08-03T04:23:26.235330Z", + "iopub.status.idle": "2026-08-03T04:23:28.047047Z", + "shell.execute_reply": "2026-08-03T04:23:28.046475Z" } }, "outputs": [ @@ -1441,7 +1441,7 @@ }, { "cell_type": "markdown", - "id": "d477e45d", + "id": "ae384b73", "metadata": {}, "source": [ "The number that says whether a cluster expansion is any good is the\n", @@ -1461,13 +1461,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "8636ab40", + "id": "de06fd73", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:28.412153Z", - "iopub.status.busy": "2026-08-03T03:44:28.411713Z", - "iopub.status.idle": "2026-08-03T03:45:05.031079Z", - "shell.execute_reply": "2026-08-03T03:45:05.030454Z" + "iopub.execute_input": "2026-08-03T04:23:28.048320Z", + "iopub.status.busy": "2026-08-03T04:23:28.047858Z", + "iopub.status.idle": "2026-08-03T04:24:04.540949Z", + "shell.execute_reply": "2026-08-03T04:24:04.540235Z" } }, "outputs": [ @@ -1505,7 +1505,7 @@ }, { "cell_type": "markdown", - "id": "5f85bb5f", + "id": "5427b68d", "metadata": {}, "source": [ "A heat capacity that is flat everywhere except one sharp peak, and the peak is\n", diff --git a/matverse_guide/docs/tutorials/dynamics.ipynb b/matverse_guide/docs/tutorials/dynamics.ipynb index 91ccc09..53ea323 100644 --- a/matverse_guide/docs/tutorials/dynamics.ipynb +++ b/matverse_guide/docs/tutorials/dynamics.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "d89a9174", + "id": "ccb9e4e4", "metadata": {}, "source": [ "# Dynamics\n", @@ -23,13 +23,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "c55faf99", + "id": "38492c9d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:03.309890Z", - "iopub.status.busy": "2026-08-03T03:42:03.309813Z", - "iopub.status.idle": "2026-08-03T03:42:06.258592Z", - "shell.execute_reply": "2026-08-03T03:42:06.258073Z" + "iopub.execute_input": "2026-08-03T04:21:01.818343Z", + "iopub.status.busy": "2026-08-03T04:21:01.818260Z", + "iopub.status.idle": "2026-08-03T04:21:04.824151Z", + "shell.execute_reply": "2026-08-03T04:21:04.823744Z" } }, "outputs": [ @@ -60,7 +60,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -76,7 +76,7 @@ }, { "cell_type": "markdown", - "id": "135c20b8", + "id": "1f0aa568", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -89,13 +89,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "b468b171", + "id": "418a669a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:06.259711Z", - "iopub.status.busy": "2026-08-03T03:42:06.259411Z", - "iopub.status.idle": "2026-08-03T03:42:06.309078Z", - "shell.execute_reply": "2026-08-03T03:42:06.308708Z" + "iopub.execute_input": "2026-08-03T04:21:04.825426Z", + "iopub.status.busy": "2026-08-03T04:21:04.825172Z", + "iopub.status.idle": "2026-08-03T04:21:04.873589Z", + "shell.execute_reply": "2026-08-03T04:21:04.873253Z" } }, "outputs": [ @@ -157,7 +157,7 @@ }, { "cell_type": "markdown", - "id": "6b3da33a", + "id": "a0e2eeac", "metadata": {}, "source": [ "## Running\n", @@ -169,13 +169,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "004a909c", + "id": "3945d2b0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:06.309917Z", - "iopub.status.busy": "2026-08-03T03:42:06.309813Z", - "iopub.status.idle": "2026-08-03T03:42:13.130258Z", - "shell.execute_reply": "2026-08-03T03:42:13.129799Z" + "iopub.execute_input": "2026-08-03T04:21:04.874389Z", + "iopub.status.busy": "2026-08-03T04:21:04.874293Z", + "iopub.status.idle": "2026-08-03T04:21:11.825666Z", + "shell.execute_reply": "2026-08-03T04:21:11.824995Z" } }, "outputs": [ @@ -240,7 +240,7 @@ }, { "cell_type": "markdown", - "id": "4746c008", + "id": "bfe14016", "metadata": {}, "source": [ "`md_temperature_emt` is the temperature the run actually achieved, and it is\n", @@ -265,13 +265,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "dc7151af", + "id": "c72d09c5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:13.131184Z", - "iopub.status.busy": "2026-08-03T03:42:13.131092Z", - "iopub.status.idle": "2026-08-03T03:42:13.133381Z", - "shell.execute_reply": "2026-08-03T03:42:13.133070Z" + "iopub.execute_input": "2026-08-03T04:21:11.827074Z", + "iopub.status.busy": "2026-08-03T04:21:11.826934Z", + "iopub.status.idle": "2026-08-03T04:21:11.829888Z", + "shell.execute_reply": "2026-08-03T04:21:11.829503Z" } }, "outputs": [ @@ -294,20 +294,20 @@ { "cell_type": "code", "execution_count": 5, - "id": "31676119", + "id": "74e4c4d3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:13.134081Z", - "iopub.status.busy": "2026-08-03T03:42:13.134000Z", - "iopub.status.idle": "2026-08-03T03:42:13.287903Z", - "shell.execute_reply": "2026-08-03T03:42:13.287510Z" + "iopub.execute_input": "2026-08-03T04:21:11.830627Z", + "iopub.status.busy": "2026-08-03T04:21:11.830543Z", + "iopub.status.idle": "2026-08-03T04:21:11.990183Z", + "shell.execute_reply": "2026-08-03T04:21:11.988781Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -348,7 +348,7 @@ }, { "cell_type": "markdown", - "id": "c8e352d9", + "id": "9589caff", "metadata": {}, "source": [ "The instantaneous temperature swings wildly around its mean, and that is\n", @@ -369,13 +369,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "8a537373", + "id": "c13f15e4", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:13.288726Z", - "iopub.status.busy": "2026-08-03T03:42:13.288633Z", - "iopub.status.idle": "2026-08-03T03:42:58.769828Z", - "shell.execute_reply": "2026-08-03T03:42:58.769309Z" + "iopub.execute_input": "2026-08-03T04:21:11.991223Z", + "iopub.status.busy": "2026-08-03T04:21:11.991055Z", + "iopub.status.idle": "2026-08-03T04:21:57.885715Z", + "shell.execute_reply": "2026-08-03T04:21:57.885207Z" } }, "outputs": [ @@ -452,13 +452,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "b6d3fb51", + "id": "58b0e49b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:58.770867Z", - "iopub.status.busy": "2026-08-03T03:42:58.770766Z", - "iopub.status.idle": "2026-08-03T03:42:58.883601Z", - "shell.execute_reply": "2026-08-03T03:42:58.883219Z" + "iopub.execute_input": "2026-08-03T04:21:57.886933Z", + "iopub.status.busy": "2026-08-03T04:21:57.886830Z", + "iopub.status.idle": "2026-08-03T04:21:58.001009Z", + "shell.execute_reply": "2026-08-03T04:21:58.000651Z" } }, "outputs": [ @@ -501,7 +501,7 @@ }, { "cell_type": "markdown", - "id": "c530bc19", + "id": "85ee7db0", "metadata": {}, "source": [ "A percent or so over 600 K, which is the right order for a metal — copper's\n", @@ -522,13 +522,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "10801eb0", + "id": "4a792ab0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:58.884549Z", - "iopub.status.busy": "2026-08-03T03:42:58.884410Z", - "iopub.status.idle": "2026-08-03T03:43:05.603386Z", - "shell.execute_reply": "2026-08-03T03:43:05.602886Z" + "iopub.execute_input": "2026-08-03T04:21:58.002130Z", + "iopub.status.busy": "2026-08-03T04:21:58.002040Z", + "iopub.status.idle": "2026-08-03T04:22:04.773159Z", + "shell.execute_reply": "2026-08-03T04:22:04.772800Z" } }, "outputs": [ @@ -589,7 +589,7 @@ }, { "cell_type": "markdown", - "id": "4bc53b08", + "id": "5807942d", "metadata": {}, "source": [ "Essentially zero, and that is the right answer. Copper at 300 K has a vacancy\n", @@ -617,13 +617,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "7a214988", + "id": "4973d0f5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:05.604403Z", - "iopub.status.busy": "2026-08-03T03:43:05.604255Z", - "iopub.status.idle": "2026-08-03T03:43:05.716062Z", - "shell.execute_reply": "2026-08-03T03:43:05.715681Z" + "iopub.execute_input": "2026-08-03T04:22:04.774253Z", + "iopub.status.busy": "2026-08-03T04:22:04.774162Z", + "iopub.status.idle": "2026-08-03T04:22:04.886644Z", + "shell.execute_reply": "2026-08-03T04:22:04.886192Z" } }, "outputs": [ @@ -644,7 +644,7 @@ }, { "cell_type": "markdown", - "id": "f061b43c", + "id": "de8aed0a", "metadata": {}, "source": [ "Empty in this build, because the engine is not installed. Registering one is the\n", @@ -655,13 +655,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "3f43fe17", + "id": "cf2c03ad", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:05.717068Z", - "iopub.status.busy": "2026-08-03T03:43:05.716923Z", - "iopub.status.idle": "2026-08-03T03:43:05.719548Z", - "shell.execute_reply": "2026-08-03T03:43:05.719234Z" + "iopub.execute_input": "2026-08-03T04:22:04.887522Z", + "iopub.status.busy": "2026-08-03T04:22:04.887435Z", + "iopub.status.idle": "2026-08-03T04:22:04.890048Z", + "shell.execute_reply": "2026-08-03T04:22:04.889708Z" } }, "outputs": [ @@ -696,7 +696,7 @@ }, { "cell_type": "markdown", - "id": "f5190036", + "id": "84d1a1bb", "metadata": {}, "source": [ "The factory is lazy, which is why that cell runs in an environment without\n", @@ -719,13 +719,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "bac6c2a0", + "id": "81a0d77a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:05.720296Z", - "iopub.status.busy": "2026-08-03T03:43:05.720151Z", - "iopub.status.idle": "2026-08-03T03:43:47.253262Z", - "shell.execute_reply": "2026-08-03T03:43:47.252856Z" + "iopub.execute_input": "2026-08-03T04:22:04.890767Z", + "iopub.status.busy": "2026-08-03T04:22:04.890681Z", + "iopub.status.idle": "2026-08-03T04:22:47.449295Z", + "shell.execute_reply": "2026-08-03T04:22:47.448873Z" } }, "outputs": [ @@ -785,13 +785,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "c68c8c43", + "id": "fa517fc3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:47.254306Z", - "iopub.status.busy": "2026-08-03T03:43:47.254214Z", - "iopub.status.idle": "2026-08-03T03:43:47.256351Z", - "shell.execute_reply": "2026-08-03T03:43:47.256029Z" + "iopub.execute_input": "2026-08-03T04:22:47.450217Z", + "iopub.status.busy": "2026-08-03T04:22:47.450135Z", + "iopub.status.idle": "2026-08-03T04:22:47.452366Z", + "shell.execute_reply": "2026-08-03T04:22:47.451970Z" } }, "outputs": [ @@ -812,7 +812,7 @@ }, { "cell_type": "markdown", - "id": "1e4e28ee", + "id": "51c5d5d9", "metadata": {}, "source": [ "```{warning}\n", @@ -831,13 +831,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "c64b7b74", + "id": "ae1429ee", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:47.257047Z", - "iopub.status.busy": "2026-08-03T03:43:47.256966Z", - "iopub.status.idle": "2026-08-03T03:43:47.258916Z", - "shell.execute_reply": "2026-08-03T03:43:47.258612Z" + "iopub.execute_input": "2026-08-03T04:22:47.453189Z", + "iopub.status.busy": "2026-08-03T04:22:47.453101Z", + "iopub.status.idle": "2026-08-03T04:22:47.455282Z", + "shell.execute_reply": "2026-08-03T04:22:47.454934Z" } }, "outputs": [ @@ -858,7 +858,7 @@ }, { "cell_type": "markdown", - "id": "cb471600", + "id": "a795e9b2", "metadata": {}, "source": [ "## Was it actually amorphous?\n", @@ -871,20 +871,20 @@ { "cell_type": "code", "execution_count": 14, - "id": "566a66bf", + "id": "eddae3ca", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:47.259649Z", - "iopub.status.busy": "2026-08-03T03:43:47.259569Z", - "iopub.status.idle": "2026-08-03T03:43:47.787844Z", - "shell.execute_reply": "2026-08-03T03:43:47.787382Z" + "iopub.execute_input": "2026-08-03T04:22:47.455995Z", + "iopub.status.busy": "2026-08-03T04:22:47.455915Z", + "iopub.status.idle": "2026-08-03T04:22:47.993021Z", + "shell.execute_reply": "2026-08-03T04:22:47.992604Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -925,7 +925,7 @@ }, { "cell_type": "markdown", - "id": "17d06e5a", + "id": "9ddb9e27", "metadata": {}, "source": [ "The crystal's shells stay sharp out to 8 Å. The quenched structure keeps its\n", @@ -940,13 +940,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "0f7bc2ca", + "id": "0f18c148", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:47.788865Z", - "iopub.status.busy": "2026-08-03T03:43:47.788629Z", - "iopub.status.idle": "2026-08-03T03:43:47.790814Z", - "shell.execute_reply": "2026-08-03T03:43:47.790480Z" + "iopub.execute_input": "2026-08-03T04:22:47.994034Z", + "iopub.status.busy": "2026-08-03T04:22:47.993802Z", + "iopub.status.idle": "2026-08-03T04:22:47.995992Z", + "shell.execute_reply": "2026-08-03T04:22:47.995670Z" } }, "outputs": [ @@ -972,7 +972,7 @@ }, { "cell_type": "markdown", - "id": "823e5283", + "id": "621711a0", "metadata": {}, "source": [ "Every temperature, every step count, every thermostat setting. For MD that is\n", @@ -988,7 +988,7 @@ }, { "cell_type": "markdown", - "id": "4ec5c19a", + "id": "69e395f9", "metadata": {}, "source": [ "## Where the atoms spend their time\n", @@ -1008,13 +1008,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "e2039e96", + "id": "670cd6d9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:47.791543Z", - "iopub.status.busy": "2026-08-03T03:43:47.791460Z", - "iopub.status.idle": "2026-08-03T03:43:48.105861Z", - "shell.execute_reply": "2026-08-03T03:43:48.105420Z" + "iopub.execute_input": "2026-08-03T04:22:47.996676Z", + "iopub.status.busy": "2026-08-03T04:22:47.996601Z", + "iopub.status.idle": "2026-08-03T04:22:48.318106Z", + "shell.execute_reply": "2026-08-03T04:22:48.317702Z" } }, "outputs": [ @@ -1088,7 +1088,7 @@ }, { "cell_type": "markdown", - "id": "7efeb0a1", + "id": "e019da33", "metadata": {}, "source": [ "The first peak lands at 2.96 Å against a nearest-neighbour distance of 2.97, and\n", @@ -1107,7 +1107,7 @@ }, { "cell_type": "markdown", - "id": "1ce46d19", + "id": "14ee305a", "metadata": {}, "source": [ "## How much of the cell do they visit?\n", @@ -1124,13 +1124,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "d750daab", + "id": "933ba35d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:48.106751Z", - "iopub.status.busy": "2026-08-03T03:43:48.106663Z", - "iopub.status.idle": "2026-08-03T03:43:48.121112Z", - "shell.execute_reply": "2026-08-03T03:43:48.120760Z" + "iopub.execute_input": "2026-08-03T04:22:48.318989Z", + "iopub.status.busy": "2026-08-03T04:22:48.318900Z", + "iopub.status.idle": "2026-08-03T04:22:48.333499Z", + "shell.execute_reply": "2026-08-03T04:22:48.333125Z" } }, "outputs": [ @@ -1234,7 +1234,7 @@ }, { "cell_type": "markdown", - "id": "63e266ac", + "id": "6283d235", "metadata": {}, "source": [ "Monotonic, from four ions pinned in four voxels to a liquid that has forgotten\n", @@ -1253,13 +1253,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "e4fb1a18", + "id": "a495fbba", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:48.121862Z", - "iopub.status.busy": "2026-08-03T03:43:48.121775Z", - "iopub.status.idle": "2026-08-03T03:43:48.125433Z", - "shell.execute_reply": "2026-08-03T03:43:48.125093Z" + "iopub.execute_input": "2026-08-03T04:22:48.334297Z", + "iopub.status.busy": "2026-08-03T04:22:48.334208Z", + "iopub.status.idle": "2026-08-03T04:22:48.337935Z", + "shell.execute_reply": "2026-08-03T04:22:48.337588Z" } }, "outputs": [ @@ -1290,7 +1290,7 @@ }, { "cell_type": "markdown", - "id": "e7b90d9c", + "id": "f068f2f8", "metadata": {}, "source": [ "0.87 became 0.03 with no change to the physics. That is why the function warns\n", @@ -1304,7 +1304,7 @@ }, { "cell_type": "markdown", - "id": "1ddbf74c", + "id": "ff4993c5", "metadata": {}, "source": [ "## The shape of the motion\n", @@ -1321,13 +1321,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "0696a892", + "id": "598fc370", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:48.126115Z", - "iopub.status.busy": "2026-08-03T03:43:48.126036Z", - "iopub.status.idle": "2026-08-03T03:43:48.818061Z", - "shell.execute_reply": "2026-08-03T03:43:48.817597Z" + "iopub.execute_input": "2026-08-03T04:22:48.338630Z", + "iopub.status.busy": "2026-08-03T04:22:48.338547Z", + "iopub.status.idle": "2026-08-03T04:22:49.032670Z", + "shell.execute_reply": "2026-08-03T04:22:49.032172Z" } }, "outputs": [ @@ -1368,7 +1368,7 @@ }, { "cell_type": "markdown", - "id": "8be72cf9", + "id": "ee286daf", "metadata": {}, "source": [ "Twelve, eighteen, fifty-four — the neighbour counts of a rocksalt lattice,\n", @@ -1386,13 +1386,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "8690d7ce", + "id": "900a1d70", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:48.818990Z", - "iopub.status.busy": "2026-08-03T03:43:48.818901Z", - "iopub.status.idle": "2026-08-03T03:43:50.974017Z", - "shell.execute_reply": "2026-08-03T03:43:50.973624Z" + "iopub.execute_input": "2026-08-03T04:22:49.033661Z", + "iopub.status.busy": "2026-08-03T04:22:49.033553Z", + "iopub.status.idle": "2026-08-03T04:22:51.255432Z", + "shell.execute_reply": "2026-08-03T04:22:51.255054Z" } }, "outputs": [ @@ -1472,7 +1472,7 @@ }, { "cell_type": "markdown", - "id": "f56c998b", + "id": "44f9e584", "metadata": {}, "source": [ "Two things to read.\n", @@ -1496,7 +1496,7 @@ }, { "cell_type": "markdown", - "id": "62b42c35", + "id": "f737ead5", "metadata": {}, "source": [ "## Rattling or hopping?\n", @@ -1515,13 +1515,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "19c96764", + "id": "5604ab71", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:50.974915Z", - "iopub.status.busy": "2026-08-03T03:43:50.974829Z", - "iopub.status.idle": "2026-08-03T03:43:51.000171Z", - "shell.execute_reply": "2026-08-03T03:43:50.999793Z" + "iopub.execute_input": "2026-08-03T04:22:51.256365Z", + "iopub.status.busy": "2026-08-03T04:22:51.256282Z", + "iopub.status.idle": "2026-08-03T04:22:51.282183Z", + "shell.execute_reply": "2026-08-03T04:22:51.281809Z" } }, "outputs": [ @@ -1614,7 +1614,7 @@ }, { "cell_type": "markdown", - "id": "89b75704", + "id": "1da67aab", "metadata": {}, "source": [ "The vibration amplitude is unchanged between the two runs, because it *is*\n", diff --git a/matverse_guide/docs/tutorials/from_pymatgen.ipynb b/matverse_guide/docs/tutorials/from_pymatgen.ipynb index 68859f2..3c7a4cc 100644 --- a/matverse_guide/docs/tutorials/from_pymatgen.ipynb +++ b/matverse_guide/docs/tutorials/from_pymatgen.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "8bfb00f2", + "id": "805b51bc", "metadata": {}, "source": [ "# Coming from pymatgen\n", @@ -36,13 +36,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "d820df33", + "id": "ae987c4e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:07.084636Z", - "iopub.status.busy": "2026-08-03T03:45:07.084550Z", - "iopub.status.idle": "2026-08-03T03:45:10.339659Z", - "shell.execute_reply": "2026-08-03T03:45:10.339259Z" + "iopub.execute_input": "2026-08-03T04:24:06.481045Z", + "iopub.status.busy": "2026-08-03T04:24:06.480968Z", + "iopub.status.idle": "2026-08-03T04:24:09.684047Z", + "shell.execute_reply": "2026-08-03T04:24:09.683552Z" } }, "outputs": [ @@ -73,7 +73,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -89,7 +89,7 @@ }, { "cell_type": "markdown", - "id": "2a2d4775", + "id": "71282b88", "metadata": {}, "source": [ "## Every transformation, by name\n", @@ -102,13 +102,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "a3aef27c", + "id": "664eae7d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:10.340938Z", - "iopub.status.busy": "2026-08-03T03:45:10.340686Z", - "iopub.status.idle": "2026-08-03T03:45:11.579124Z", - "shell.execute_reply": "2026-08-03T03:45:11.578696Z" + "iopub.execute_input": "2026-08-03T04:24:09.685158Z", + "iopub.status.busy": "2026-08-03T04:24:09.684903Z", + "iopub.status.idle": "2026-08-03T04:24:10.686518Z", + "shell.execute_reply": "2026-08-03T04:24:10.686071Z" } }, "outputs": [ @@ -131,13 +131,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "ad81e156", + "id": "b66b62a1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.580487Z", - "iopub.status.busy": "2026-08-03T03:45:11.580175Z", - "iopub.status.idle": "2026-08-03T03:45:11.586952Z", - "shell.execute_reply": "2026-08-03T03:45:11.586570Z" + "iopub.execute_input": "2026-08-03T04:24:10.687658Z", + "iopub.status.busy": "2026-08-03T04:24:10.687317Z", + "iopub.status.idle": "2026-08-03T04:24:10.693902Z", + "shell.execute_reply": "2026-08-03T04:24:10.693557Z" } }, "outputs": [ @@ -288,7 +288,7 @@ }, { "cell_type": "markdown", - "id": "a1dd7b7a", + "id": "6232e74f", "metadata": {}, "source": [ "Read from pymatgen at call time rather than from a table here, so a\n", @@ -300,13 +300,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "d965f71d", + "id": "3d4dfc16", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.587736Z", - "iopub.status.busy": "2026-08-03T03:45:11.587646Z", - "iopub.status.idle": "2026-08-03T03:45:11.591028Z", - "shell.execute_reply": "2026-08-03T03:45:11.590729Z" + "iopub.execute_input": "2026-08-03T04:24:10.694671Z", + "iopub.status.busy": "2026-08-03T04:24:10.694582Z", + "iopub.status.idle": "2026-08-03T04:24:10.697928Z", + "shell.execute_reply": "2026-08-03T04:24:10.697606Z" } }, "outputs": [ @@ -327,7 +327,7 @@ }, { "cell_type": "markdown", - "id": "7bddd92d", + "id": "df1b2cc3", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -338,13 +338,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "aeaae401", + "id": "b995c51a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.591735Z", - "iopub.status.busy": "2026-08-03T03:45:11.591647Z", - "iopub.status.idle": "2026-08-03T03:45:11.618738Z", - "shell.execute_reply": "2026-08-03T03:45:11.618408Z" + "iopub.execute_input": "2026-08-03T04:24:10.698633Z", + "iopub.status.busy": "2026-08-03T04:24:10.698553Z", + "iopub.status.idle": "2026-08-03T04:24:10.725132Z", + "shell.execute_reply": "2026-08-03T04:24:10.724738Z" } }, "outputs": [ @@ -422,7 +422,7 @@ }, { "cell_type": "markdown", - "id": "2c014508", + "id": "62abe238", "metadata": {}, "source": [ "## Applying one" @@ -431,13 +431,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "e69f60bb", + "id": "173eb455", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.620080Z", - "iopub.status.busy": "2026-08-03T03:45:11.619991Z", - "iopub.status.idle": "2026-08-03T03:45:11.628079Z", - "shell.execute_reply": "2026-08-03T03:45:11.627722Z" + "iopub.execute_input": "2026-08-03T04:24:10.726495Z", + "iopub.status.busy": "2026-08-03T04:24:10.726405Z", + "iopub.status.idle": "2026-08-03T04:24:10.734435Z", + "shell.execute_reply": "2026-08-03T04:24:10.734071Z" } }, "outputs": [ @@ -461,7 +461,7 @@ }, { "cell_type": "markdown", - "id": "77b64c6f", + "id": "12a50105", "metadata": {}, "source": [ "Three variants where a list comprehension would have left you with one list and\n", @@ -475,13 +475,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "6273882a", + "id": "8ff0bc28", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.628837Z", - "iopub.status.busy": "2026-08-03T03:45:11.628752Z", - "iopub.status.idle": "2026-08-03T03:45:11.633543Z", - "shell.execute_reply": "2026-08-03T03:45:11.633215Z" + "iopub.execute_input": "2026-08-03T04:24:10.735182Z", + "iopub.status.busy": "2026-08-03T04:24:10.735095Z", + "iopub.status.idle": "2026-08-03T04:24:10.740044Z", + "shell.execute_reply": "2026-08-03T04:24:10.739669Z" } }, "outputs": [ @@ -556,7 +556,7 @@ }, { "cell_type": "markdown", - "id": "d6e2108b", + "id": "c792f849", "metadata": {}, "source": [ "### A failure on one row is not a failure of the call\n", @@ -569,13 +569,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "a301d797", + "id": "b9d49f1c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.634428Z", - "iopub.status.busy": "2026-08-03T03:45:11.634343Z", - "iopub.status.idle": "2026-08-03T03:45:11.640154Z", - "shell.execute_reply": "2026-08-03T03:45:11.639823Z" + "iopub.execute_input": "2026-08-03T04:24:10.741263Z", + "iopub.status.busy": "2026-08-03T04:24:10.741079Z", + "iopub.status.idle": "2026-08-03T04:24:10.747055Z", + "shell.execute_reply": "2026-08-03T04:24:10.746733Z" } }, "outputs": [ @@ -651,13 +651,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "dc756848", + "id": "dddf3d02", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.640893Z", - "iopub.status.busy": "2026-08-03T03:45:11.640809Z", - "iopub.status.idle": "2026-08-03T03:45:11.642775Z", - "shell.execute_reply": "2026-08-03T03:45:11.642498Z" + "iopub.execute_input": "2026-08-03T04:24:10.747794Z", + "iopub.status.busy": "2026-08-03T04:24:10.747712Z", + "iopub.status.idle": "2026-08-03T04:24:10.749719Z", + "shell.execute_reply": "2026-08-03T04:24:10.749439Z" } }, "outputs": [ @@ -678,7 +678,7 @@ }, { "cell_type": "markdown", - "id": "5584dcd9", + "id": "f683fe30", "metadata": {}, "source": [ "The rows that failed kept their original structure and are flagged `False`, so\n", @@ -692,13 +692,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "052236b5", + "id": "99188d7d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.643493Z", - "iopub.status.busy": "2026-08-03T03:45:11.643411Z", - "iopub.status.idle": "2026-08-03T03:45:11.645363Z", - "shell.execute_reply": "2026-08-03T03:45:11.645090Z" + "iopub.execute_input": "2026-08-03T04:24:10.750448Z", + "iopub.status.busy": "2026-08-03T04:24:10.750362Z", + "iopub.status.idle": "2026-08-03T04:24:10.752397Z", + "shell.execute_reply": "2026-08-03T04:24:10.752075Z" } }, "outputs": [ @@ -724,7 +724,7 @@ }, { "cell_type": "markdown", - "id": "6e698bf6", + "id": "afc24b13", "metadata": {}, "source": [ "## One-to-many\n", @@ -738,13 +738,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "68f1fba2", + "id": "63dd5dd6", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.646058Z", - "iopub.status.busy": "2026-08-03T03:45:11.645981Z", - "iopub.status.idle": "2026-08-03T03:45:11.667437Z", - "shell.execute_reply": "2026-08-03T03:45:11.667079Z" + "iopub.execute_input": "2026-08-03T04:24:10.753274Z", + "iopub.status.busy": "2026-08-03T04:24:10.753187Z", + "iopub.status.idle": "2026-08-03T04:24:10.774972Z", + "shell.execute_reply": "2026-08-03T04:24:10.774595Z" } }, "outputs": [ @@ -831,7 +831,7 @@ }, { "cell_type": "markdown", - "id": "1dae5c4c", + "id": "57229662", "metadata": {}, "source": [ "```{note}\n", @@ -849,13 +849,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "e4a5855d", + "id": "94332f85", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.668481Z", - "iopub.status.busy": "2026-08-03T03:45:11.668379Z", - "iopub.status.idle": "2026-08-03T03:45:11.677184Z", - "shell.execute_reply": "2026-08-03T03:45:11.676820Z" + "iopub.execute_input": "2026-08-03T04:24:10.775830Z", + "iopub.status.busy": "2026-08-03T04:24:10.775734Z", + "iopub.status.idle": "2026-08-03T04:24:10.784657Z", + "shell.execute_reply": "2026-08-03T04:24:10.784261Z" } }, "outputs": [ @@ -928,13 +928,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "017f3d6c", + "id": "bf6af869", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.677984Z", - "iopub.status.busy": "2026-08-03T03:45:11.677899Z", - "iopub.status.idle": "2026-08-03T03:45:11.680153Z", - "shell.execute_reply": "2026-08-03T03:45:11.679770Z" + "iopub.execute_input": "2026-08-03T04:24:10.785451Z", + "iopub.status.busy": "2026-08-03T04:24:10.785361Z", + "iopub.status.idle": "2026-08-03T04:24:10.787518Z", + "shell.execute_reply": "2026-08-03T04:24:10.787219Z" } }, "outputs": [ @@ -957,7 +957,7 @@ }, { "cell_type": "markdown", - "id": "b1e19866", + "id": "c24300ce", "metadata": {}, "source": [ "One variant rather than one per step, because the intermediates are usually not\n", @@ -982,13 +982,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "27dc82d7", + "id": "73522dc2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.680975Z", - "iopub.status.busy": "2026-08-03T03:45:11.680898Z", - "iopub.status.idle": "2026-08-03T03:45:11.704551Z", - "shell.execute_reply": "2026-08-03T03:45:11.704132Z" + "iopub.execute_input": "2026-08-03T04:24:10.788191Z", + "iopub.status.busy": "2026-08-03T04:24:10.788114Z", + "iopub.status.idle": "2026-08-03T04:24:10.811449Z", + "shell.execute_reply": "2026-08-03T04:24:10.811076Z" } }, "outputs": [ @@ -1066,13 +1066,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "2fea5fce", + "id": "e530af84", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.705440Z", - "iopub.status.busy": "2026-08-03T03:45:11.705292Z", - "iopub.status.idle": "2026-08-03T03:45:11.708548Z", - "shell.execute_reply": "2026-08-03T03:45:11.708192Z" + "iopub.execute_input": "2026-08-03T04:24:10.812203Z", + "iopub.status.busy": "2026-08-03T04:24:10.812118Z", + "iopub.status.idle": "2026-08-03T04:24:10.815233Z", + "shell.execute_reply": "2026-08-03T04:24:10.814914Z" } }, "outputs": [ @@ -1094,7 +1094,7 @@ }, { "cell_type": "markdown", - "id": "6cc96650", + "id": "7f010f33", "metadata": {}, "source": [ "Bond-valence analysis read the states off the bond lengths, and the cells came\n", @@ -1107,13 +1107,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "f5a886f8", + "id": "5345bf0a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:11.709282Z", - "iopub.status.busy": "2026-08-03T03:45:11.709187Z", - "iopub.status.idle": "2026-08-03T03:45:12.013289Z", - "shell.execute_reply": "2026-08-03T03:45:12.012871Z" + "iopub.execute_input": "2026-08-03T04:24:10.815936Z", + "iopub.status.busy": "2026-08-03T04:24:10.815853Z", + "iopub.status.idle": "2026-08-03T04:24:11.098429Z", + "shell.execute_reply": "2026-08-03T04:24:11.098014Z" } }, "outputs": [ @@ -1145,7 +1145,7 @@ }, { "cell_type": "markdown", - "id": "28d12d2e", + "id": "272a987c", "metadata": {}, "source": [ "### It fails on metals, and says so per row\n", @@ -1158,13 +1158,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "813c5904", + "id": "0a6d36b0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:12.014297Z", - "iopub.status.busy": "2026-08-03T03:45:12.014200Z", - "iopub.status.idle": "2026-08-03T03:45:12.060763Z", - "shell.execute_reply": "2026-08-03T03:45:12.060339Z" + "iopub.execute_input": "2026-08-03T04:24:11.099303Z", + "iopub.status.busy": "2026-08-03T04:24:11.099210Z", + "iopub.status.idle": "2026-08-03T04:24:11.145204Z", + "shell.execute_reply": "2026-08-03T04:24:11.144813Z" } }, "outputs": [ @@ -1230,13 +1230,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "69d25f41", + "id": "7779b42a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:12.061660Z", - "iopub.status.busy": "2026-08-03T03:45:12.061574Z", - "iopub.status.idle": "2026-08-03T03:45:12.063718Z", - "shell.execute_reply": "2026-08-03T03:45:12.063367Z" + "iopub.execute_input": "2026-08-03T04:24:11.146025Z", + "iopub.status.busy": "2026-08-03T04:24:11.145940Z", + "iopub.status.idle": "2026-08-03T04:24:11.148042Z", + "shell.execute_reply": "2026-08-03T04:24:11.147736Z" } }, "outputs": [ @@ -1257,7 +1257,7 @@ }, { "cell_type": "markdown", - "id": "266347c1", + "id": "eb9b5016", "metadata": {}, "source": [ "## What you get for it\n", @@ -1292,13 +1292,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "da1984e3", + "id": "00d2a68e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:12.064465Z", - "iopub.status.busy": "2026-08-03T03:45:12.064385Z", - "iopub.status.idle": "2026-08-03T03:45:12.116271Z", - "shell.execute_reply": "2026-08-03T03:45:12.115820Z" + "iopub.execute_input": "2026-08-03T04:24:11.148745Z", + "iopub.status.busy": "2026-08-03T04:24:11.148666Z", + "iopub.status.idle": "2026-08-03T04:24:11.187034Z", + "shell.execute_reply": "2026-08-03T04:24:11.186657Z" } }, "outputs": [ @@ -1364,7 +1364,7 @@ }, { "cell_type": "markdown", - "id": "e287973e", + "id": "ce836b87", "metadata": {}, "source": [ "`a+b, a-b, c` is the one to look at: it doubles the volume and gives axes of\n", @@ -1396,13 +1396,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "7c06a77b", + "id": "71298fb1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:12.117147Z", - "iopub.status.busy": "2026-08-03T03:45:12.117057Z", - "iopub.status.idle": "2026-08-03T03:45:12.470928Z", - "shell.execute_reply": "2026-08-03T03:45:12.470486Z" + "iopub.execute_input": "2026-08-03T04:24:11.187903Z", + "iopub.status.busy": "2026-08-03T04:24:11.187763Z", + "iopub.status.idle": "2026-08-03T04:24:11.531418Z", + "shell.execute_reply": "2026-08-03T04:24:11.531028Z" } }, "outputs": [ @@ -1477,7 +1477,7 @@ }, { "cell_type": "markdown", - "id": "6ba10d77", + "id": "3e82b986", "metadata": {}, "source": [ "| | matverse | α·e²/4πε₀r |\n", @@ -1505,13 +1505,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "72619d5a", + "id": "3a5fafda", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:12.471928Z", - "iopub.status.busy": "2026-08-03T03:45:12.471836Z", - "iopub.status.idle": "2026-08-03T03:45:12.473986Z", - "shell.execute_reply": "2026-08-03T03:45:12.473621Z" + "iopub.execute_input": "2026-08-03T04:24:11.532386Z", + "iopub.status.busy": "2026-08-03T04:24:11.532298Z", + "iopub.status.idle": "2026-08-03T04:24:11.534291Z", + "shell.execute_reply": "2026-08-03T04:24:11.533973Z" } }, "outputs": [ @@ -1538,7 +1538,7 @@ }, { "cell_type": "markdown", - "id": "f9ca899b", + "id": "e71c362a", "metadata": {}, "source": [ "## What matverse does not do\n", diff --git a/matverse_guide/docs/tutorials/getting_started.ipynb b/matverse_guide/docs/tutorials/getting_started.ipynb index bd71b69..f136edc 100644 --- a/matverse_guide/docs/tutorials/getting_started.ipynb +++ b/matverse_guide/docs/tutorials/getting_started.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "d3377fe5", + "id": "021f4a6e", "metadata": {}, "source": [ "# Screening real materials with matverse\n", @@ -25,13 +25,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "ee27270b", + "id": "51c9ba1e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:33.008193Z", - "iopub.status.busy": "2026-08-03T03:40:33.008117Z", - "iopub.status.idle": "2026-08-03T03:40:36.116854Z", - "shell.execute_reply": "2026-08-03T03:40:36.116377Z" + "iopub.execute_input": "2026-08-03T04:19:32.603432Z", + "iopub.status.busy": "2026-08-03T04:19:32.603350Z", + "iopub.status.idle": "2026-08-03T04:19:35.836785Z", + "shell.execute_reply": "2026-08-03T04:19:35.836313Z" } }, "outputs": [ @@ -62,7 +62,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -78,7 +78,7 @@ }, { "cell_type": "markdown", - "id": "a3ec313d", + "id": "917314ad", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -107,13 +107,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "c596a168", + "id": "286ad0b6", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.117949Z", - "iopub.status.busy": "2026-08-03T03:40:36.117713Z", - "iopub.status.idle": "2026-08-03T03:40:36.120936Z", - "shell.execute_reply": "2026-08-03T03:40:36.120583Z" + "iopub.execute_input": "2026-08-03T04:19:35.837932Z", + "iopub.status.busy": "2026-08-03T04:19:35.837624Z", + "iopub.status.idle": "2026-08-03T04:19:35.840808Z", + "shell.execute_reply": "2026-08-03T04:19:35.840475Z" } }, "outputs": [ @@ -149,13 +149,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "28fddfd5", + "id": "72382fce", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.121709Z", - "iopub.status.busy": "2026-08-03T03:40:36.121619Z", - "iopub.status.idle": "2026-08-03T03:40:36.194417Z", - "shell.execute_reply": "2026-08-03T03:40:36.193994Z" + "iopub.execute_input": "2026-08-03T04:19:35.841506Z", + "iopub.status.busy": "2026-08-03T04:19:35.841424Z", + "iopub.status.idle": "2026-08-03T04:19:35.913438Z", + "shell.execute_reply": "2026-08-03T04:19:35.913032Z" } }, "outputs": [ @@ -182,7 +182,7 @@ }, { "cell_type": "markdown", - "id": "8fd2e374", + "id": "b71c7525", "metadata": {}, "source": [ "`X` is the composition matrix and `var` is the periodic table. Neither was asked\n", @@ -197,13 +197,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "d9cb4caa", + "id": "56824841", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.195451Z", - "iopub.status.busy": "2026-08-03T03:40:36.195257Z", - "iopub.status.idle": "2026-08-03T03:40:36.202443Z", - "shell.execute_reply": "2026-08-03T03:40:36.202072Z" + "iopub.execute_input": "2026-08-03T04:19:35.914357Z", + "iopub.status.busy": "2026-08-03T04:19:35.914170Z", + "iopub.status.idle": "2026-08-03T04:19:35.921850Z", + "shell.execute_reply": "2026-08-03T04:19:35.921504Z" } }, "outputs": [ @@ -297,13 +297,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "1ca1c202", + "id": "7049b161", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.203299Z", - "iopub.status.busy": "2026-08-03T03:40:36.203150Z", - "iopub.status.idle": "2026-08-03T03:40:36.208683Z", - "shell.execute_reply": "2026-08-03T03:40:36.208330Z" + "iopub.execute_input": "2026-08-03T04:19:35.922569Z", + "iopub.status.busy": "2026-08-03T04:19:35.922485Z", + "iopub.status.idle": "2026-08-03T04:19:35.927703Z", + "shell.execute_reply": "2026-08-03T04:19:35.927381Z" } }, "outputs": [ @@ -410,7 +410,7 @@ }, { "cell_type": "markdown", - "id": "82341b61", + "id": "1921db3e", "metadata": {}, "source": [ "Because `var` is the periodic table, the natural display of anything\n", @@ -421,13 +421,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "912f250d", + "id": "f7d9038c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.209486Z", - "iopub.status.busy": "2026-08-03T03:40:36.209344Z", - "iopub.status.idle": "2026-08-03T03:40:36.554940Z", - "shell.execute_reply": "2026-08-03T03:40:36.554568Z" + "iopub.execute_input": "2026-08-03T04:19:35.928402Z", + "iopub.status.busy": "2026-08-03T04:19:35.928319Z", + "iopub.status.idle": "2026-08-03T04:19:36.285188Z", + "shell.execute_reply": "2026-08-03T04:19:36.284778Z" } }, "outputs": [ @@ -466,7 +466,7 @@ }, { "cell_type": "markdown", - "id": "41efdcea", + "id": "d85a3609", "metadata": {}, "source": [ "And you can just look at one, which catches the mistakes a number will not\n", @@ -477,13 +477,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "32dcc6f7", + "id": "ee97399f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.555849Z", - "iopub.status.busy": "2026-08-03T03:40:36.555758Z", - "iopub.status.idle": "2026-08-03T03:40:36.779853Z", - "shell.execute_reply": "2026-08-03T03:40:36.779439Z" + "iopub.execute_input": "2026-08-03T04:19:36.286147Z", + "iopub.status.busy": "2026-08-03T04:19:36.286051Z", + "iopub.status.idle": "2026-08-03T04:19:36.524859Z", + "shell.execute_reply": "2026-08-03T04:19:36.524443Z" } }, "outputs": [ @@ -520,7 +520,7 @@ }, { "cell_type": "markdown", - "id": "6535da19", + "id": "e9df0d39", "metadata": {}, "source": [ "With `py3Dmol` installed the default backend is an interactive viewer instead.\n", @@ -540,13 +540,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "c30ccf47", + "id": "52385254", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:36.780748Z", - "iopub.status.busy": "2026-08-03T03:40:36.780655Z", - "iopub.status.idle": "2026-08-03T03:40:37.107860Z", - "shell.execute_reply": "2026-08-03T03:40:37.107449Z" + "iopub.execute_input": "2026-08-03T04:19:36.525777Z", + "iopub.status.busy": "2026-08-03T04:19:36.525684Z", + "iopub.status.idle": "2026-08-03T04:19:36.854493Z", + "shell.execute_reply": "2026-08-03T04:19:36.854052Z" } }, "outputs": [ @@ -633,13 +633,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "6928a4d9", + "id": "c287faed", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:37.108716Z", - "iopub.status.busy": "2026-08-03T03:40:37.108619Z", - "iopub.status.idle": "2026-08-03T03:40:41.610527Z", - "shell.execute_reply": "2026-08-03T03:40:41.610081Z" + "iopub.execute_input": "2026-08-03T04:19:36.855398Z", + "iopub.status.busy": "2026-08-03T04:19:36.855302Z", + "iopub.status.idle": "2026-08-03T04:19:41.336344Z", + "shell.execute_reply": "2026-08-03T04:19:41.335813Z" } }, "outputs": [ @@ -716,13 +716,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "5c1f7d84", + "id": "5fb42618", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:41.611476Z", - "iopub.status.busy": "2026-08-03T03:40:41.611320Z", - "iopub.status.idle": "2026-08-03T03:40:41.859799Z", - "shell.execute_reply": "2026-08-03T03:40:41.859418Z" + "iopub.execute_input": "2026-08-03T04:19:41.337278Z", + "iopub.status.busy": "2026-08-03T04:19:41.337173Z", + "iopub.status.idle": "2026-08-03T04:19:41.586151Z", + "shell.execute_reply": "2026-08-03T04:19:41.585748Z" } }, "outputs": [ @@ -808,13 +808,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "4cde9ea6", + "id": "f694403e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:41.860730Z", - "iopub.status.busy": "2026-08-03T03:40:41.860638Z", - "iopub.status.idle": "2026-08-03T03:40:41.867609Z", - "shell.execute_reply": "2026-08-03T03:40:41.867253Z" + "iopub.execute_input": "2026-08-03T04:19:41.587099Z", + "iopub.status.busy": "2026-08-03T04:19:41.587006Z", + "iopub.status.idle": "2026-08-03T04:19:41.594088Z", + "shell.execute_reply": "2026-08-03T04:19:41.593724Z" } }, "outputs": [ @@ -904,7 +904,7 @@ }, { "cell_type": "markdown", - "id": "41cb4360", + "id": "09ead5e7", "metadata": {}, "source": [ "The cheapest possible statement about electronic structure: line up the atomic\n", @@ -931,7 +931,7 @@ }, { "cell_type": "markdown", - "id": "182fc355", + "id": "d823cd3c", "metadata": {}, "source": [ "`spacegroup` gives the symbol. This gives what the symbol *implies* — and\n", @@ -950,7 +950,7 @@ }, { "cell_type": "markdown", - "id": "00a7d999", + "id": "f7563004", "metadata": {}, "source": [ "A space group says which symmetries a structure has. A **prototype** says which\n", @@ -969,7 +969,7 @@ }, { "cell_type": "markdown", - "id": "b2e1a534", + "id": "5aa589c9", "metadata": {}, "source": [ "`spacegroup` is determined from the deposited coordinates, not copied from a\n", @@ -991,13 +991,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "ca9b9de3", + "id": "9ff3a3f5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:41.868330Z", - "iopub.status.busy": "2026-08-03T03:40:41.868245Z", - "iopub.status.idle": "2026-08-03T03:40:42.217447Z", - "shell.execute_reply": "2026-08-03T03:40:42.217045Z" + "iopub.execute_input": "2026-08-03T04:19:41.594905Z", + "iopub.status.busy": "2026-08-03T04:19:41.594759Z", + "iopub.status.idle": "2026-08-03T04:19:41.950122Z", + "shell.execute_reply": "2026-08-03T04:19:41.949692Z" } }, "outputs": [ @@ -1021,13 +1021,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "3592fd87", + "id": "c6c4773a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.218333Z", - "iopub.status.busy": "2026-08-03T03:40:42.218215Z", - "iopub.status.idle": "2026-08-03T03:40:42.348373Z", - "shell.execute_reply": "2026-08-03T03:40:42.347838Z" + "iopub.execute_input": "2026-08-03T04:19:41.951001Z", + "iopub.status.busy": "2026-08-03T04:19:41.950913Z", + "iopub.status.idle": "2026-08-03T04:19:42.082105Z", + "shell.execute_reply": "2026-08-03T04:19:42.081690Z" } }, "outputs": [ @@ -1064,7 +1064,7 @@ }, { "cell_type": "markdown", - "id": "b2bce18d", + "id": "25a97881", "metadata": {}, "source": [ "LiFePO₄ and NaFePO₄ are the same framework with a different alkali, and the\n", @@ -1079,13 +1079,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "2500c326", + "id": "b2d981bb", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.349336Z", - "iopub.status.busy": "2026-08-03T03:40:42.349160Z", - "iopub.status.idle": "2026-08-03T03:40:42.355077Z", - "shell.execute_reply": "2026-08-03T03:40:42.354724Z" + "iopub.execute_input": "2026-08-03T04:19:42.082962Z", + "iopub.status.busy": "2026-08-03T04:19:42.082873Z", + "iopub.status.idle": "2026-08-03T04:19:42.088719Z", + "shell.execute_reply": "2026-08-03T04:19:42.088340Z" } }, "outputs": [ @@ -1159,7 +1159,7 @@ }, { "cell_type": "markdown", - "id": "c8ec7cdd", + "id": "b5457151", "metadata": {}, "source": [ "Row 1 comes back at 1.00 and the runner-up at 0.06, which is the margin you want\n", @@ -1183,13 +1183,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "889a03ec", + "id": "f47d1105", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.355807Z", - "iopub.status.busy": "2026-08-03T03:40:42.355720Z", - "iopub.status.idle": "2026-08-03T03:40:42.358278Z", - "shell.execute_reply": "2026-08-03T03:40:42.357938Z" + "iopub.execute_input": "2026-08-03T04:19:42.089449Z", + "iopub.status.busy": "2026-08-03T04:19:42.089364Z", + "iopub.status.idle": "2026-08-03T04:19:42.091866Z", + "shell.execute_reply": "2026-08-03T04:19:42.091570Z" } }, "outputs": [ @@ -1216,7 +1216,7 @@ }, { "cell_type": "markdown", - "id": "04efb8dc", + "id": "00e17442", "metadata": {}, "source": [ "ASE's effective-medium theory is the only calculator matverse ships working. It\n", @@ -1232,13 +1232,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "9387b98d", + "id": "2af08288", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.358985Z", - "iopub.status.busy": "2026-08-03T03:40:42.358907Z", - "iopub.status.idle": "2026-08-03T03:40:42.361665Z", - "shell.execute_reply": "2026-08-03T03:40:42.361345Z" + "iopub.execute_input": "2026-08-03T04:19:42.092568Z", + "iopub.status.busy": "2026-08-03T04:19:42.092483Z", + "iopub.status.idle": "2026-08-03T04:19:42.095257Z", + "shell.execute_reply": "2026-08-03T04:19:42.094941Z" } }, "outputs": [ @@ -1273,7 +1273,7 @@ }, { "cell_type": "markdown", - "id": "d4d273d6", + "id": "949e6600", "metadata": {}, "source": [ "Registered, with its provenance attached — the method, the level of theory it\n", @@ -1287,13 +1287,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "ba5425ae", + "id": "349ac694", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.362353Z", - "iopub.status.busy": "2026-08-03T03:40:42.362275Z", - "iopub.status.idle": "2026-08-03T03:40:42.373422Z", - "shell.execute_reply": "2026-08-03T03:40:42.373080Z" + "iopub.execute_input": "2026-08-03T04:19:42.095942Z", + "iopub.status.busy": "2026-08-03T04:19:42.095864Z", + "iopub.status.idle": "2026-08-03T04:19:42.107245Z", + "shell.execute_reply": "2026-08-03T04:19:42.106902Z" } }, "outputs": [ @@ -1385,7 +1385,7 @@ }, { "cell_type": "markdown", - "id": "218470b5", + "id": "6c70c8af", "metadata": {}, "source": [ "Published room-temperature lattice parameters for the seven face-centred cubic\n", @@ -1395,13 +1395,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "94eba1a9", + "id": "eb8ea958", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.374124Z", - "iopub.status.busy": "2026-08-03T03:40:42.374044Z", - "iopub.status.idle": "2026-08-03T03:40:42.562941Z", - "shell.execute_reply": "2026-08-03T03:40:42.562519Z" + "iopub.execute_input": "2026-08-03T04:19:42.107968Z", + "iopub.status.busy": "2026-08-03T04:19:42.107884Z", + "iopub.status.idle": "2026-08-03T04:19:42.299073Z", + "shell.execute_reply": "2026-08-03T04:19:42.298672Z" } }, "outputs": [ @@ -1504,13 +1504,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "15e8880d", + "id": "ac20223d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.563755Z", - "iopub.status.busy": "2026-08-03T03:40:42.563667Z", - "iopub.status.idle": "2026-08-03T03:40:42.565740Z", - "shell.execute_reply": "2026-08-03T03:40:42.565423Z" + "iopub.execute_input": "2026-08-03T04:19:42.299913Z", + "iopub.status.busy": "2026-08-03T04:19:42.299827Z", + "iopub.status.idle": "2026-08-03T04:19:42.301883Z", + "shell.execute_reply": "2026-08-03T04:19:42.301572Z" } }, "outputs": [ @@ -1531,7 +1531,7 @@ }, { "cell_type": "markdown", - "id": "838d7464", + "id": "a30f21d4", "metadata": {}, "source": [ "The relaxed geometry becomes its own **variant** rather than replacing the\n", @@ -1547,13 +1547,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "fd385cd9", + "id": "e96ac34e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.566414Z", - "iopub.status.busy": "2026-08-03T03:40:42.566334Z", - "iopub.status.idle": "2026-08-03T03:40:42.900572Z", - "shell.execute_reply": "2026-08-03T03:40:42.900143Z" + "iopub.execute_input": "2026-08-03T04:19:42.302555Z", + "iopub.status.busy": "2026-08-03T04:19:42.302473Z", + "iopub.status.idle": "2026-08-03T04:19:42.642503Z", + "shell.execute_reply": "2026-08-03T04:19:42.642122Z" } }, "outputs": [ @@ -1682,7 +1682,7 @@ }, { "cell_type": "markdown", - "id": "81bcafe1", + "id": "a90ced7c", "metadata": {}, "source": [ "Worth comparing against measured values rather than accepting:\n", @@ -1726,20 +1726,20 @@ { "cell_type": "code", "execution_count": 21, - "id": "5b03e077", + "id": "f15a78d0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:42.901454Z", - "iopub.status.busy": "2026-08-03T03:40:42.901358Z", - "iopub.status.idle": "2026-08-03T03:40:43.019675Z", - "shell.execute_reply": "2026-08-03T03:40:43.019177Z" + "iopub.execute_input": "2026-08-03T04:19:42.643443Z", + "iopub.status.busy": "2026-08-03T04:19:42.643350Z", + "iopub.status.idle": "2026-08-03T04:19:42.764459Z", + "shell.execute_reply": "2026-08-03T04:19:42.764028Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -1782,7 +1782,7 @@ }, { "cell_type": "markdown", - "id": "e38ab629", + "id": "f64abb53", "metadata": {}, "source": [ "Aluminium is the outlier, platinum is high, and the middle five track closely.\n", @@ -1801,13 +1801,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "b163d48d", + "id": "20116813", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:43.020624Z", - "iopub.status.busy": "2026-08-03T03:40:43.020531Z", - "iopub.status.idle": "2026-08-03T03:40:43.158333Z", - "shell.execute_reply": "2026-08-03T03:40:43.157891Z" + "iopub.execute_input": "2026-08-03T04:19:42.765318Z", + "iopub.status.busy": "2026-08-03T04:19:42.765218Z", + "iopub.status.idle": "2026-08-03T04:19:42.905348Z", + "shell.execute_reply": "2026-08-03T04:19:42.904928Z" } }, "outputs": [ @@ -1947,7 +1947,7 @@ }, { "cell_type": "markdown", - "id": "243feb0d", + "id": "7be4245a", "metadata": {}, "source": [ "Within 1.1% across seven metals and two independent implementations, and under\n", @@ -1977,13 +1977,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "6967a3b6", + "id": "a4cbc689", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:43.159238Z", - "iopub.status.busy": "2026-08-03T03:40:43.159088Z", - "iopub.status.idle": "2026-08-03T03:40:43.287935Z", - "shell.execute_reply": "2026-08-03T03:40:43.287530Z" + "iopub.execute_input": "2026-08-03T04:19:42.906201Z", + "iopub.status.busy": "2026-08-03T04:19:42.906113Z", + "iopub.status.idle": "2026-08-03T04:19:43.035182Z", + "shell.execute_reply": "2026-08-03T04:19:43.034762Z" } }, "outputs": [ @@ -2022,7 +2022,7 @@ }, { "cell_type": "markdown", - "id": "eb49623c", + "id": "40a8878b", "metadata": {}, "source": [ "## Off the zero-kelvin hull\n", @@ -2037,13 +2037,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "0897ad9d", + "id": "c7759bb2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:43.288783Z", - "iopub.status.busy": "2026-08-03T03:40:43.288694Z", - "iopub.status.idle": "2026-08-03T03:40:43.521675Z", - "shell.execute_reply": "2026-08-03T03:40:43.521257Z" + "iopub.execute_input": "2026-08-03T04:19:43.036062Z", + "iopub.status.busy": "2026-08-03T04:19:43.035973Z", + "iopub.status.idle": "2026-08-03T04:19:43.272141Z", + "shell.execute_reply": "2026-08-03T04:19:43.271727Z" } }, "outputs": [ @@ -2154,7 +2154,7 @@ }, { "cell_type": "markdown", - "id": "59d0e4e2", + "id": "dbdff361", "metadata": {}, "source": [ "| volumetric expansion, /K | matverse | experiment |\n", @@ -2187,13 +2187,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "80d31975", + "id": "43d859b5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:43.522546Z", - "iopub.status.busy": "2026-08-03T03:40:43.522458Z", - "iopub.status.idle": "2026-08-03T03:40:43.657334Z", - "shell.execute_reply": "2026-08-03T03:40:43.656899Z" + "iopub.execute_input": "2026-08-03T04:19:43.273044Z", + "iopub.status.busy": "2026-08-03T04:19:43.272900Z", + "iopub.status.idle": "2026-08-03T04:19:43.408275Z", + "shell.execute_reply": "2026-08-03T04:19:43.407825Z" } }, "outputs": [ @@ -2231,7 +2231,7 @@ }, { "cell_type": "markdown", - "id": "28ef7749", + "id": "72196f87", "metadata": {}, "source": [ "The phonons are also everything thermodynamics needs. `mv.prop.free_energy`\n", @@ -2243,13 +2243,13 @@ { "cell_type": "code", "execution_count": 26, - "id": "9bcd3571", + "id": "e68bb2f6", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:43.658226Z", - "iopub.status.busy": "2026-08-03T03:40:43.658079Z", - "iopub.status.idle": "2026-08-03T03:40:43.664428Z", - "shell.execute_reply": "2026-08-03T03:40:43.664013Z" + "iopub.execute_input": "2026-08-03T04:19:43.409273Z", + "iopub.status.busy": "2026-08-03T04:19:43.409099Z", + "iopub.status.idle": "2026-08-03T04:19:43.415513Z", + "shell.execute_reply": "2026-08-03T04:19:43.415132Z" } }, "outputs": [ @@ -2351,7 +2351,7 @@ }, { "cell_type": "markdown", - "id": "880fa62d", + "id": "bf38556e", "metadata": {}, "source": [ "### The q-points a supercell cannot hold\n", @@ -2381,13 +2381,13 @@ { "cell_type": "code", "execution_count": 27, - "id": "9f022a9c", + "id": "95cbc3e2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:43.665251Z", - "iopub.status.busy": "2026-08-03T03:40:43.665155Z", - "iopub.status.idle": "2026-08-03T03:40:48.330152Z", - "shell.execute_reply": "2026-08-03T03:40:48.329602Z" + "iopub.execute_input": "2026-08-03T04:19:43.416304Z", + "iopub.status.busy": "2026-08-03T04:19:43.416211Z", + "iopub.status.idle": "2026-08-03T04:19:48.162529Z", + "shell.execute_reply": "2026-08-03T04:19:48.162025Z" } }, "outputs": [ @@ -2421,7 +2421,7 @@ }, { "cell_type": "markdown", - "id": "c86c22a3", + "id": "dfb9f1d0", "metadata": {}, "source": [ "Interpolation is also the only way to get a *dispersion*. A supercell holds a\n", @@ -2437,13 +2437,13 @@ { "cell_type": "code", "execution_count": 28, - "id": "8df6d80a", + "id": "b3e28526", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:48.331265Z", - "iopub.status.busy": "2026-08-03T03:40:48.331097Z", - "iopub.status.idle": "2026-08-03T03:40:48.740645Z", - "shell.execute_reply": "2026-08-03T03:40:48.740190Z" + "iopub.execute_input": "2026-08-03T04:19:48.163610Z", + "iopub.status.busy": "2026-08-03T04:19:48.163510Z", + "iopub.status.idle": "2026-08-03T04:19:48.584843Z", + "shell.execute_reply": "2026-08-03T04:19:48.584380Z" } }, "outputs": [ @@ -2481,7 +2481,7 @@ }, { "cell_type": "markdown", - "id": "69e8a382", + "id": "fbc5c198", "metadata": {}, "source": [ "That is the check a hull cannot make, and the reason the two cells above are\n", @@ -2505,13 +2505,13 @@ { "cell_type": "code", "execution_count": 29, - "id": "63cad5ea", + "id": "1156ca81", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:48.741598Z", - "iopub.status.busy": "2026-08-03T03:40:48.741447Z", - "iopub.status.idle": "2026-08-03T03:40:48.974732Z", - "shell.execute_reply": "2026-08-03T03:40:48.974358Z" + "iopub.execute_input": "2026-08-03T04:19:48.585747Z", + "iopub.status.busy": "2026-08-03T04:19:48.585656Z", + "iopub.status.idle": "2026-08-03T04:19:48.819893Z", + "shell.execute_reply": "2026-08-03T04:19:48.819472Z" } }, "outputs": [ @@ -2547,7 +2547,7 @@ }, { "cell_type": "markdown", - "id": "1c552958", + "id": "43db47a3", "metadata": {}, "source": [ "The dashed line at zero is where `mv.pl.bands` would normally draw the Fermi\n", @@ -2565,13 +2565,13 @@ { "cell_type": "code", "execution_count": 30, - "id": "620a91e5", + "id": "8184cd83", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:48.975934Z", - "iopub.status.busy": "2026-08-03T03:40:48.975841Z", - "iopub.status.idle": "2026-08-03T03:40:48.978919Z", - "shell.execute_reply": "2026-08-03T03:40:48.978578Z" + "iopub.execute_input": "2026-08-03T04:19:48.821087Z", + "iopub.status.busy": "2026-08-03T04:19:48.820998Z", + "iopub.status.idle": "2026-08-03T04:19:48.824217Z", + "shell.execute_reply": "2026-08-03T04:19:48.823846Z" } }, "outputs": [ @@ -2601,13 +2601,13 @@ { "cell_type": "code", "execution_count": 31, - "id": "b94b1abe", + "id": "273b38f7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:48.979631Z", - "iopub.status.busy": "2026-08-03T03:40:48.979547Z", - "iopub.status.idle": "2026-08-03T03:40:48.984761Z", - "shell.execute_reply": "2026-08-03T03:40:48.984408Z" + "iopub.execute_input": "2026-08-03T04:19:48.825556Z", + "iopub.status.busy": "2026-08-03T04:19:48.825459Z", + "iopub.status.idle": "2026-08-03T04:19:48.830740Z", + "shell.execute_reply": "2026-08-03T04:19:48.830422Z" } }, "outputs": [ @@ -2715,7 +2715,7 @@ }, { "cell_type": "markdown", - "id": "a9c35e37", + "id": "a7a94e44", "metadata": {}, "source": [ "Subset when you actually want the short list — the object is an ordinary\n", @@ -2731,13 +2731,13 @@ { "cell_type": "code", "execution_count": 32, - "id": "c664b6b6", + "id": "130d7976", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:48.985495Z", - "iopub.status.busy": "2026-08-03T03:40:48.985413Z", - "iopub.status.idle": "2026-08-03T03:40:48.996790Z", - "shell.execute_reply": "2026-08-03T03:40:48.996425Z" + "iopub.execute_input": "2026-08-03T04:19:48.831562Z", + "iopub.status.busy": "2026-08-03T04:19:48.831431Z", + "iopub.status.idle": "2026-08-03T04:19:48.842661Z", + "shell.execute_reply": "2026-08-03T04:19:48.842258Z" } }, "outputs": [ @@ -2855,7 +2855,7 @@ }, { "cell_type": "markdown", - "id": "e0c02e4b", + "id": "72dca316", "metadata": {}, "source": [ "With seven elementals this is a formality. On a library of thousands it is the\n", @@ -2868,13 +2868,13 @@ { "cell_type": "code", "execution_count": 33, - "id": "937235e5", + "id": "71b91f45", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:48.997587Z", - "iopub.status.busy": "2026-08-03T03:40:48.997500Z", - "iopub.status.idle": "2026-08-03T03:40:48.999487Z", - "shell.execute_reply": "2026-08-03T03:40:48.999164Z" + "iopub.execute_input": "2026-08-03T04:19:48.843447Z", + "iopub.status.busy": "2026-08-03T04:19:48.843364Z", + "iopub.status.idle": "2026-08-03T04:19:48.845375Z", + "shell.execute_reply": "2026-08-03T04:19:48.845020Z" } }, "outputs": [ @@ -2908,13 +2908,13 @@ { "cell_type": "code", "execution_count": 34, - "id": "b109c004", + "id": "00107d28", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:49.000155Z", - "iopub.status.busy": "2026-08-03T03:40:49.000074Z", - "iopub.status.idle": "2026-08-03T03:40:49.230805Z", - "shell.execute_reply": "2026-08-03T03:40:49.230387Z" + "iopub.execute_input": "2026-08-03T04:19:48.846034Z", + "iopub.status.busy": "2026-08-03T04:19:48.845952Z", + "iopub.status.idle": "2026-08-03T04:19:49.078676Z", + "shell.execute_reply": "2026-08-03T04:19:49.078260Z" } }, "outputs": [ @@ -2940,7 +2940,7 @@ }, { "cell_type": "markdown", - "id": "8830b972", + "id": "7b6f64b9", "metadata": {}, "source": [ "Parameters are recorded with each call, so the history replays as code rather\n", diff --git a/matverse_guide/docs/tutorials/infrastructure.ipynb b/matverse_guide/docs/tutorials/infrastructure.ipynb index a8b3d37..f99f806 100644 --- a/matverse_guide/docs/tutorials/infrastructure.ipynb +++ b/matverse_guide/docs/tutorials/infrastructure.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "9a9b84c2", + "id": "7ed9e43e", "metadata": {}, "source": [ "# Infrastructure\n", @@ -18,13 +18,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "c6c2ebe7", + "id": "1ab7e9ac", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:29.119042Z", - "iopub.status.busy": "2026-08-03T03:45:29.118964Z", - "iopub.status.idle": "2026-08-03T03:45:32.768979Z", - "shell.execute_reply": "2026-08-03T03:45:32.768550Z" + "iopub.execute_input": "2026-08-03T04:24:28.450254Z", + "iopub.status.busy": "2026-08-03T04:24:28.450170Z", + "iopub.status.idle": "2026-08-03T04:24:31.500157Z", + "shell.execute_reply": "2026-08-03T04:24:31.499692Z" } }, "outputs": [ @@ -55,7 +55,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -72,13 +72,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "418e9a1b", + "id": "e3d3f78e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.770298Z", - "iopub.status.busy": "2026-08-03T03:45:32.770040Z", - "iopub.status.idle": "2026-08-03T03:45:32.917512Z", - "shell.execute_reply": "2026-08-03T03:45:32.917090Z" + "iopub.execute_input": "2026-08-03T04:24:31.501319Z", + "iopub.status.busy": "2026-08-03T04:24:31.501057Z", + "iopub.status.idle": "2026-08-03T04:24:31.648678Z", + "shell.execute_reply": "2026-08-03T04:24:31.648259Z" } }, "outputs": [ @@ -173,7 +173,7 @@ }, { "cell_type": "markdown", - "id": "1b16ea57", + "id": "a2a5e84b", "metadata": {}, "source": [ "## What is this object carrying?\n", @@ -185,13 +185,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "0f8cc259", + "id": "cd758519", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.918448Z", - "iopub.status.busy": "2026-08-03T03:45:32.918344Z", - "iopub.status.idle": "2026-08-03T03:45:32.920526Z", - "shell.execute_reply": "2026-08-03T03:45:32.920141Z" + "iopub.execute_input": "2026-08-03T04:24:31.649630Z", + "iopub.status.busy": "2026-08-03T04:24:31.649474Z", + "iopub.status.idle": "2026-08-03T04:24:31.651558Z", + "shell.execute_reply": "2026-08-03T04:24:31.651217Z" } }, "outputs": [ @@ -217,7 +217,7 @@ }, { "cell_type": "markdown", - "id": "ce164eb0", + "id": "3bb03bd0", "metadata": {}, "source": [ "## Units\n", @@ -230,13 +230,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "1d1ccc9c", + "id": "d7809976", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.921327Z", - "iopub.status.busy": "2026-08-03T03:45:32.921207Z", - "iopub.status.idle": "2026-08-03T03:45:32.923396Z", - "shell.execute_reply": "2026-08-03T03:45:32.923058Z" + "iopub.execute_input": "2026-08-03T04:24:31.652370Z", + "iopub.status.busy": "2026-08-03T04:24:31.652288Z", + "iopub.status.idle": "2026-08-03T04:24:31.654383Z", + "shell.execute_reply": "2026-08-03T04:24:31.654053Z" } }, "outputs": [ @@ -268,13 +268,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "d5d390ad", + "id": "d069b1b3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.924127Z", - "iopub.status.busy": "2026-08-03T03:45:32.924041Z", - "iopub.status.idle": "2026-08-03T03:45:32.926559Z", - "shell.execute_reply": "2026-08-03T03:45:32.926250Z" + "iopub.execute_input": "2026-08-03T04:24:31.655167Z", + "iopub.status.busy": "2026-08-03T04:24:31.655022Z", + "iopub.status.idle": "2026-08-03T04:24:31.657527Z", + "shell.execute_reply": "2026-08-03T04:24:31.657178Z" } }, "outputs": [ @@ -304,7 +304,7 @@ }, { "cell_type": "markdown", - "id": "504834db", + "id": "7193ab54", "metadata": {}, "source": [ "Every column matverse wrote has a unit; `lattice_parameter` and `nsites` come\n", @@ -315,13 +315,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "9c0ef7ed", + "id": "add764c8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.927282Z", - "iopub.status.busy": "2026-08-03T03:45:32.927197Z", - "iopub.status.idle": "2026-08-03T03:45:32.930026Z", - "shell.execute_reply": "2026-08-03T03:45:32.929721Z" + "iopub.execute_input": "2026-08-03T04:24:31.658287Z", + "iopub.status.busy": "2026-08-03T04:24:31.658196Z", + "iopub.status.idle": "2026-08-03T04:24:31.661105Z", + "shell.execute_reply": "2026-08-03T04:24:31.660757Z" } }, "outputs": [ @@ -345,7 +345,7 @@ }, { "cell_type": "markdown", - "id": "93ce1003", + "id": "af78be25", "metadata": {}, "source": [ "`mv.utils.convert` goes the other way — it takes a column in *someone else's*\n", @@ -358,13 +358,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "5e92c81f", + "id": "82900121", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.930729Z", - "iopub.status.busy": "2026-08-03T03:45:32.930648Z", - "iopub.status.idle": "2026-08-03T03:45:32.936693Z", - "shell.execute_reply": "2026-08-03T03:45:32.936352Z" + "iopub.execute_input": "2026-08-03T04:24:31.661859Z", + "iopub.status.busy": "2026-08-03T04:24:31.661777Z", + "iopub.status.idle": "2026-08-03T04:24:31.667754Z", + "shell.execute_reply": "2026-08-03T04:24:31.667406Z" } }, "outputs": [ @@ -477,7 +477,7 @@ }, { "cell_type": "markdown", - "id": "8e73cca2", + "id": "2f9d47fa", "metadata": {}, "source": [ "`reported_energy_ev` and `energy_per_atom_emt` agree, which is the check worth\n", @@ -493,13 +493,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "06d7caad", + "id": "584c139a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.937404Z", - "iopub.status.busy": "2026-08-03T03:45:32.937321Z", - "iopub.status.idle": "2026-08-03T03:45:32.939378Z", - "shell.execute_reply": "2026-08-03T03:45:32.939061Z" + "iopub.execute_input": "2026-08-03T04:24:31.668533Z", + "iopub.status.busy": "2026-08-03T04:24:31.668452Z", + "iopub.status.idle": "2026-08-03T04:24:31.670497Z", + "shell.execute_reply": "2026-08-03T04:24:31.670179Z" } }, "outputs": [ @@ -520,7 +520,7 @@ }, { "cell_type": "markdown", - "id": "2f081053", + "id": "e1c59841", "metadata": {}, "source": [ "## Surviving a walltime limit\n", @@ -534,13 +534,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "5fbcd448", + "id": "b0e3ee2a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.940053Z", - "iopub.status.busy": "2026-08-03T03:45:32.939972Z", - "iopub.status.idle": "2026-08-03T03:45:32.980761Z", - "shell.execute_reply": "2026-08-03T03:45:32.980388Z" + "iopub.execute_input": "2026-08-03T04:24:31.671205Z", + "iopub.status.busy": "2026-08-03T04:24:31.671126Z", + "iopub.status.idle": "2026-08-03T04:24:31.711178Z", + "shell.execute_reply": "2026-08-03T04:24:31.710800Z" } }, "outputs": [ @@ -566,7 +566,7 @@ }, { "cell_type": "markdown", - "id": "477265b9", + "id": "8c9102ab", "metadata": {}, "source": [ "`mv.utils.resume` answers the question a restarted job actually asks: *which\n", @@ -576,13 +576,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "682dc915", + "id": "ef6c8d9b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:32.981683Z", - "iopub.status.busy": "2026-08-03T03:45:32.981590Z", - "iopub.status.idle": "2026-08-03T03:45:33.009582Z", - "shell.execute_reply": "2026-08-03T03:45:33.009110Z" + "iopub.execute_input": "2026-08-03T04:24:31.711960Z", + "iopub.status.busy": "2026-08-03T04:24:31.711872Z", + "iopub.status.idle": "2026-08-03T04:24:31.739420Z", + "shell.execute_reply": "2026-08-03T04:24:31.739039Z" } }, "outputs": [ @@ -609,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "65c6c696", + "id": "c9bbce42", "metadata": {}, "source": [ "Three rows were done before the job died; four remain. Note that this works on\n", @@ -633,13 +633,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "28f8567b", + "id": "af14e961", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.010451Z", - "iopub.status.busy": "2026-08-03T03:45:33.010355Z", - "iopub.status.idle": "2026-08-03T03:45:33.023304Z", - "shell.execute_reply": "2026-08-03T03:45:33.022851Z" + "iopub.execute_input": "2026-08-03T04:24:31.740170Z", + "iopub.status.busy": "2026-08-03T04:24:31.740083Z", + "iopub.status.idle": "2026-08-03T04:24:31.752706Z", + "shell.execute_reply": "2026-08-03T04:24:31.752320Z" } }, "outputs": [ @@ -660,7 +660,7 @@ }, { "cell_type": "markdown", - "id": "694c8c43", + "id": "d1ae930e", "metadata": {}, "source": [ "`map_chunks` runs an operation over each piece, optionally checkpointing as it\n", @@ -671,13 +671,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "2dc0f8c1", + "id": "67528561", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.024115Z", - "iopub.status.busy": "2026-08-03T03:45:33.024022Z", - "iopub.status.idle": "2026-08-03T03:45:33.158893Z", - "shell.execute_reply": "2026-08-03T03:45:33.158527Z" + "iopub.execute_input": "2026-08-03T04:24:31.753469Z", + "iopub.status.busy": "2026-08-03T04:24:31.753377Z", + "iopub.status.idle": "2026-08-03T04:24:31.885411Z", + "shell.execute_reply": "2026-08-03T04:24:31.885000Z" } }, "outputs": [ @@ -708,13 +708,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "7332109a", + "id": "e5d6aed5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.159824Z", - "iopub.status.busy": "2026-08-03T03:45:33.159734Z", - "iopub.status.idle": "2026-08-03T03:45:33.164153Z", - "shell.execute_reply": "2026-08-03T03:45:33.163824Z" + "iopub.execute_input": "2026-08-03T04:24:31.886275Z", + "iopub.status.busy": "2026-08-03T04:24:31.886183Z", + "iopub.status.idle": "2026-08-03T04:24:31.890470Z", + "shell.execute_reply": "2026-08-03T04:24:31.890123Z" } }, "outputs": [ @@ -805,7 +805,7 @@ }, { "cell_type": "markdown", - "id": "cc40df65", + "id": "6e45652d", "metadata": {}, "source": [ "The results landed on the parent object even though the work happened\n", @@ -821,13 +821,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "2d56a54a", + "id": "4e64df7d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.164892Z", - "iopub.status.busy": "2026-08-03T03:45:33.164806Z", - "iopub.status.idle": "2026-08-03T03:45:33.167189Z", - "shell.execute_reply": "2026-08-03T03:45:33.166871Z" + "iopub.execute_input": "2026-08-03T04:24:31.891170Z", + "iopub.status.busy": "2026-08-03T04:24:31.891089Z", + "iopub.status.idle": "2026-08-03T04:24:31.893489Z", + "shell.execute_reply": "2026-08-03T04:24:31.893087Z" } }, "outputs": [ @@ -872,7 +872,7 @@ }, { "cell_type": "markdown", - "id": "cb92983b", + "id": "0c1cc002", "metadata": {}, "source": [ "### Submitting it\n", @@ -885,21 +885,21 @@ { "cell_type": "code", "execution_count": 15, - "id": "93377931", + "id": "37253e52", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.167880Z", - "iopub.status.busy": "2026-08-03T03:45:33.167800Z", - "iopub.status.idle": "2026-08-03T03:45:33.169874Z", - "shell.execute_reply": "2026-08-03T03:45:33.169593Z" + "iopub.execute_input": "2026-08-03T04:24:31.894194Z", + "iopub.status.busy": "2026-08-03T04:24:31.894114Z", + "iopub.status.idle": "2026-08-03T04:24:31.896361Z", + "shell.execute_reply": "2026-08-03T04:24:31.896012Z" } }, "outputs": [ { "data": { "text/plain": [ - "{'script': '/tmp/tmpnpneww_q/screen.sbatch',\n", - " 'command': 'sbatch /tmp/tmpnpneww_q/screen.sbatch',\n", + "{'script': '/tmp/tmpqpfsm9g_/screen.sbatch',\n", + " 'command': 'sbatch /tmp/tmpqpfsm9g_/screen.sbatch',\n", " 'job_id': None,\n", " 'state': 'dry run'}" ] @@ -916,7 +916,7 @@ }, { "cell_type": "markdown", - "id": "c55f1800", + "id": "54fbf1df", "metadata": {}, "source": [ "`dry_run=True` returns the command without running it, which is what you want\n", @@ -930,21 +930,21 @@ { "cell_type": "code", "execution_count": 16, - "id": "acbd708b", + "id": "e4724c88", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.170591Z", - "iopub.status.busy": "2026-08-03T03:45:33.170513Z", - "iopub.status.idle": "2026-08-03T03:45:33.172511Z", - "shell.execute_reply": "2026-08-03T03:45:33.172210Z" + "iopub.execute_input": "2026-08-03T04:24:31.897111Z", + "iopub.status.busy": "2026-08-03T04:24:31.896971Z", + "iopub.status.idle": "2026-08-03T04:24:31.899071Z", + "shell.execute_reply": "2026-08-03T04:24:31.898730Z" } }, "outputs": [ { "data": { "text/plain": [ - "[{'script': '/tmp/tmpnpneww_q/screen.sbatch',\n", - " 'command': 'sbatch /tmp/tmpnpneww_q/screen.sbatch',\n", + "[{'script': '/tmp/tmpqpfsm9g_/screen.sbatch',\n", + " 'command': 'sbatch /tmp/tmpqpfsm9g_/screen.sbatch',\n", " 'job_id': None,\n", " 'state': 'dry run'}]" ] @@ -961,13 +961,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "07ec9f65", + "id": "5cc0c66d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.173164Z", - "iopub.status.busy": "2026-08-03T03:45:33.173087Z", - "iopub.status.idle": "2026-08-03T03:45:33.175014Z", - "shell.execute_reply": "2026-08-03T03:45:33.174718Z" + "iopub.execute_input": "2026-08-03T04:24:31.899851Z", + "iopub.status.busy": "2026-08-03T04:24:31.899723Z", + "iopub.status.idle": "2026-08-03T04:24:31.901736Z", + "shell.execute_reply": "2026-08-03T04:24:31.901419Z" } }, "outputs": [ @@ -990,7 +990,7 @@ }, { "cell_type": "markdown", - "id": "a0ccc3d9", + "id": "80894f59", "metadata": {}, "source": [ "With real submissions that reads `squeue`, and falls back to `sacct` for jobs\n", @@ -1019,13 +1019,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "4312bcb5", + "id": "33034783", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.176015Z", - "iopub.status.busy": "2026-08-03T03:45:33.175935Z", - "iopub.status.idle": "2026-08-03T03:45:33.178058Z", - "shell.execute_reply": "2026-08-03T03:45:33.177762Z" + "iopub.execute_input": "2026-08-03T04:24:31.902421Z", + "iopub.status.busy": "2026-08-03T04:24:31.902341Z", + "iopub.status.idle": "2026-08-03T04:24:31.904419Z", + "shell.execute_reply": "2026-08-03T04:24:31.904134Z" } }, "outputs": [ @@ -1064,13 +1064,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "92b67de2", + "id": "5e6b8a62", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.178737Z", - "iopub.status.busy": "2026-08-03T03:45:33.178658Z", - "iopub.status.idle": "2026-08-03T03:45:33.738539Z", - "shell.execute_reply": "2026-08-03T03:45:33.738158Z" + "iopub.execute_input": "2026-08-03T04:24:31.905123Z", + "iopub.status.busy": "2026-08-03T04:24:31.905042Z", + "iopub.status.idle": "2026-08-03T04:24:32.456247Z", + "shell.execute_reply": "2026-08-03T04:24:32.455820Z" } }, "outputs": [ @@ -1095,13 +1095,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "35d28037", + "id": "ecd4c217", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.739768Z", - "iopub.status.busy": "2026-08-03T03:45:33.739515Z", - "iopub.status.idle": "2026-08-03T03:45:33.741976Z", - "shell.execute_reply": "2026-08-03T03:45:33.741663Z" + "iopub.execute_input": "2026-08-03T04:24:32.457364Z", + "iopub.status.busy": "2026-08-03T04:24:32.457071Z", + "iopub.status.idle": "2026-08-03T04:24:32.459714Z", + "shell.execute_reply": "2026-08-03T04:24:32.459368Z" } }, "outputs": [ @@ -1122,7 +1122,7 @@ }, { "cell_type": "markdown", - "id": "a6929891", + "id": "3a3ac98a", "metadata": {}, "source": [ "INCAR, POSCAR, KPOINTS and a POTCAR *specification* — the last is a list of\n", @@ -1135,20 +1135,20 @@ { "cell_type": "code", "execution_count": 21, - "id": "f3f03855", + "id": "30000470", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.742706Z", - "iopub.status.busy": "2026-08-03T03:45:33.742626Z", - "iopub.status.idle": "2026-08-03T03:45:33.745087Z", - "shell.execute_reply": "2026-08-03T03:45:33.744807Z" + "iopub.execute_input": "2026-08-03T04:24:32.460520Z", + "iopub.status.busy": "2026-08-03T04:24:32.460383Z", + "iopub.status.idle": "2026-08-03T04:24:32.463091Z", + "shell.execute_reply": "2026-08-03T04:24:32.462722Z" } }, "outputs": [ { "data": { "text/plain": [ - "{'root': '/tmp/tmpnpneww_q/runs',\n", + "{'root': '/tmp/tmpqpfsm9g_/runs',\n", " 'n_total': 2,\n", " 'n_finished': 0,\n", " 'n_missing': 2,\n", @@ -1167,7 +1167,7 @@ }, { "cell_type": "markdown", - "id": "555a80ba", + "id": "8d00aad8", "metadata": {}, "source": [ "Nothing has run, so both are missing. Pretend one finished:" @@ -1176,20 +1176,20 @@ { "cell_type": "code", "execution_count": 22, - "id": "a57d263f", + "id": "3c03ff5b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.745794Z", - "iopub.status.busy": "2026-08-03T03:45:33.745712Z", - "iopub.status.idle": "2026-08-03T03:45:33.748082Z", - "shell.execute_reply": "2026-08-03T03:45:33.747776Z" + "iopub.execute_input": "2026-08-03T04:24:32.463899Z", + "iopub.status.busy": "2026-08-03T04:24:32.463754Z", + "iopub.status.idle": "2026-08-03T04:24:32.466364Z", + "shell.execute_reply": "2026-08-03T04:24:32.465999Z" } }, "outputs": [ { "data": { "text/plain": [ - "{'root': '/tmp/tmpnpneww_q/runs',\n", + "{'root': '/tmp/tmpqpfsm9g_/runs',\n", " 'n_total': 2,\n", " 'n_finished': 1,\n", " 'n_missing': 1,\n", @@ -1209,7 +1209,7 @@ }, { "cell_type": "markdown", - "id": "4ccd4f3c", + "id": "aa5129cf", "metadata": {}, "source": [ "```{note}\n", @@ -1227,13 +1227,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "bdfa7db9", + "id": "82e895ca", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.748742Z", - "iopub.status.busy": "2026-08-03T03:45:33.748662Z", - "iopub.status.idle": "2026-08-03T03:45:33.755465Z", - "shell.execute_reply": "2026-08-03T03:45:33.755150Z" + "iopub.execute_input": "2026-08-03T04:24:32.467110Z", + "iopub.status.busy": "2026-08-03T04:24:32.467024Z", + "iopub.status.idle": "2026-08-03T04:24:32.474129Z", + "shell.execute_reply": "2026-08-03T04:24:32.473755Z" } }, "outputs": [ @@ -1299,7 +1299,7 @@ }, { "cell_type": "markdown", - "id": "cf3d98f4", + "id": "3dd7da57", "metadata": {}, "source": [ "Both are NaN with a reason, because the `` above is not a real\n", @@ -1314,13 +1314,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "18b52109", + "id": "a5583a96", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.756146Z", - "iopub.status.busy": "2026-08-03T03:45:33.756064Z", - "iopub.status.idle": "2026-08-03T03:45:33.759679Z", - "shell.execute_reply": "2026-08-03T03:45:33.759373Z" + "iopub.execute_input": "2026-08-03T04:24:32.474893Z", + "iopub.status.busy": "2026-08-03T04:24:32.474807Z", + "iopub.status.idle": "2026-08-03T04:24:32.478567Z", + "shell.execute_reply": "2026-08-03T04:24:32.478225Z" } }, "outputs": [ @@ -1353,7 +1353,7 @@ }, { "cell_type": "markdown", - "id": "75601403", + "id": "e5af0e42", "metadata": {}, "source": [ "`read_dos` fills the density of states onto the shared energy grid, and derives\n", @@ -1374,13 +1374,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "1483c5c9", + "id": "440175c2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.760478Z", - "iopub.status.busy": "2026-08-03T03:45:33.760394Z", - "iopub.status.idle": "2026-08-03T03:45:33.762430Z", - "shell.execute_reply": "2026-08-03T03:45:33.762096Z" + "iopub.execute_input": "2026-08-03T04:24:32.479351Z", + "iopub.status.busy": "2026-08-03T04:24:32.479262Z", + "iopub.status.idle": "2026-08-03T04:24:32.481263Z", + "shell.execute_reply": "2026-08-03T04:24:32.480934Z" } }, "outputs": [ @@ -1402,13 +1402,13 @@ { "cell_type": "code", "execution_count": 26, - "id": "06401822", + "id": "7b2d5e34", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:33.763134Z", - "iopub.status.busy": "2026-08-03T03:45:33.763047Z", - "iopub.status.idle": "2026-08-03T03:45:33.765025Z", - "shell.execute_reply": "2026-08-03T03:45:33.764725Z" + "iopub.execute_input": "2026-08-03T04:24:32.481917Z", + "iopub.status.busy": "2026-08-03T04:24:32.481835Z", + "iopub.status.idle": "2026-08-03T04:24:32.483733Z", + "shell.execute_reply": "2026-08-03T04:24:32.483423Z" } }, "outputs": [ @@ -1429,7 +1429,7 @@ }, { "cell_type": "markdown", - "id": "7574ae97", + "id": "29ab76ff", "metadata": {}, "source": [ "```{seealso}\n", diff --git a/matverse_guide/docs/tutorials/interfaces.ipynb b/matverse_guide/docs/tutorials/interfaces.ipynb index e03c072..1702152 100644 --- a/matverse_guide/docs/tutorials/interfaces.ipynb +++ b/matverse_guide/docs/tutorials/interfaces.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "57bad804", + "id": "9b55aa07", "metadata": {}, "source": [ "# Interfaces\n", @@ -28,13 +28,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "6fdda01a", + "id": "f805bf8c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:09.841603Z", - "iopub.status.busy": "2026-08-03T03:44:09.841519Z", - "iopub.status.idle": "2026-08-03T03:44:12.957770Z", - "shell.execute_reply": "2026-08-03T03:44:12.957258Z" + "iopub.execute_input": "2026-08-03T04:23:09.070254Z", + "iopub.status.busy": "2026-08-03T04:23:09.070161Z", + "iopub.status.idle": "2026-08-03T04:23:12.354946Z", + "shell.execute_reply": "2026-08-03T04:23:12.354408Z" } }, "outputs": [ @@ -65,7 +65,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -81,7 +81,7 @@ }, { "cell_type": "markdown", - "id": "512d0790", + "id": "dca11055", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -94,13 +94,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "46a4cac2", + "id": "160caabf", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:12.958941Z", - "iopub.status.busy": "2026-08-03T03:44:12.958675Z", - "iopub.status.idle": "2026-08-03T03:44:13.094644Z", - "shell.execute_reply": "2026-08-03T03:44:13.094213Z" + "iopub.execute_input": "2026-08-03T04:23:12.356194Z", + "iopub.status.busy": "2026-08-03T04:23:12.355918Z", + "iopub.status.idle": "2026-08-03T04:23:12.491733Z", + "shell.execute_reply": "2026-08-03T04:23:12.491256Z" } }, "outputs": [ @@ -175,7 +175,7 @@ }, { "cell_type": "markdown", - "id": "e94c34cb", + "id": "a4aa6d43", "metadata": {}, "source": [ "## Will the lattices match?\n", @@ -189,13 +189,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "349431cc", + "id": "7d34e058", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:13.095482Z", - "iopub.status.busy": "2026-08-03T03:44:13.095380Z", - "iopub.status.idle": "2026-08-03T03:44:14.271888Z", - "shell.execute_reply": "2026-08-03T03:44:14.271470Z" + "iopub.execute_input": "2026-08-03T04:23:12.492808Z", + "iopub.status.busy": "2026-08-03T04:23:12.492683Z", + "iopub.status.idle": "2026-08-03T04:23:13.667211Z", + "shell.execute_reply": "2026-08-03T04:23:13.666778Z" } }, "outputs": [ @@ -221,13 +221,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "d2116bf8", + "id": "99eb5a9f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:14.273113Z", - "iopub.status.busy": "2026-08-03T03:44:14.272764Z", - "iopub.status.idle": "2026-08-03T03:44:14.279574Z", - "shell.execute_reply": "2026-08-03T03:44:14.279199Z" + "iopub.execute_input": "2026-08-03T04:23:13.668472Z", + "iopub.status.busy": "2026-08-03T04:23:13.668165Z", + "iopub.status.idle": "2026-08-03T04:23:13.675087Z", + "shell.execute_reply": "2026-08-03T04:23:13.674734Z" } }, "outputs": [ @@ -363,7 +363,7 @@ }, { "cell_type": "markdown", - "id": "a0afa0e0", + "id": "c230c634", "metadata": {}, "source": [ "Six rows for three materials: the pairing is **ordered**, because copper grown\n", @@ -382,20 +382,20 @@ { "cell_type": "code", "execution_count": 5, - "id": "e1743722", + "id": "8a229290", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:14.280377Z", - "iopub.status.busy": "2026-08-03T03:44:14.280284Z", - "iopub.status.idle": "2026-08-03T03:44:14.400866Z", - "shell.execute_reply": "2026-08-03T03:44:14.400457Z" + "iopub.execute_input": "2026-08-03T04:23:13.675882Z", + "iopub.status.busy": "2026-08-03T04:23:13.675792Z", + "iopub.status.idle": "2026-08-03T04:23:13.798871Z", + "shell.execute_reply": "2026-08-03T04:23:13.798455Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -435,7 +435,7 @@ }, { "cell_type": "markdown", - "id": "2565857e", + "id": "f0747de7", "metadata": {}, "source": [ "Tighten the threshold and the screen starts discriminating — which is the\n", @@ -445,13 +445,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "22849272", + "id": "fef0fab3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:14.401683Z", - "iopub.status.busy": "2026-08-03T03:44:14.401590Z", - "iopub.status.idle": "2026-08-03T03:44:14.660063Z", - "shell.execute_reply": "2026-08-03T03:44:14.659640Z" + "iopub.execute_input": "2026-08-03T04:23:13.799757Z", + "iopub.status.busy": "2026-08-03T04:23:13.799664Z", + "iopub.status.idle": "2026-08-03T04:23:14.053644Z", + "shell.execute_reply": "2026-08-03T04:23:14.053132Z" } }, "outputs": [ @@ -551,7 +551,7 @@ }, { "cell_type": "markdown", - "id": "a1030f82", + "id": "c9c7b95b", "metadata": {}, "source": [ "## What happens at the contact?\n", @@ -567,13 +567,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "ddc40874", + "id": "f64d836d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:14.660998Z", - "iopub.status.busy": "2026-08-03T03:44:14.660861Z", - "iopub.status.idle": "2026-08-03T03:44:15.069420Z", - "shell.execute_reply": "2026-08-03T03:44:15.068964Z" + "iopub.execute_input": "2026-08-03T04:23:14.054612Z", + "iopub.status.busy": "2026-08-03T04:23:14.054464Z", + "iopub.status.idle": "2026-08-03T04:23:14.471858Z", + "shell.execute_reply": "2026-08-03T04:23:14.471484Z" } }, "outputs": [ @@ -674,7 +674,7 @@ }, { "cell_type": "markdown", - "id": "dfd2bc7a", + "id": "812db129", "metadata": {}, "source": [ "All zero, and that is the correct answer for this dataset rather than a\n", @@ -690,13 +690,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "0315e9cd", + "id": "a27a2b5c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:15.070416Z", - "iopub.status.busy": "2026-08-03T03:44:15.070252Z", - "iopub.status.idle": "2026-08-03T03:44:15.087306Z", - "shell.execute_reply": "2026-08-03T03:44:15.086873Z" + "iopub.execute_input": "2026-08-03T04:23:14.472843Z", + "iopub.status.busy": "2026-08-03T04:23:14.472738Z", + "iopub.status.idle": "2026-08-03T04:23:14.488962Z", + "shell.execute_reply": "2026-08-03T04:23:14.488544Z" } }, "outputs": [ @@ -780,13 +780,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "f8e3c1b8", + "id": "eade6619", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:15.088137Z", - "iopub.status.busy": "2026-08-03T03:44:15.088047Z", - "iopub.status.idle": "2026-08-03T03:44:15.337119Z", - "shell.execute_reply": "2026-08-03T03:44:15.336712Z" + "iopub.execute_input": "2026-08-03T04:23:14.489812Z", + "iopub.status.busy": "2026-08-03T04:23:14.489720Z", + "iopub.status.idle": "2026-08-03T04:23:14.734056Z", + "shell.execute_reply": "2026-08-03T04:23:14.733659Z" } }, "outputs": [ @@ -896,7 +896,7 @@ }, { "cell_type": "markdown", - "id": "d770fb9e", + "id": "8efd7956", "metadata": {}, "source": [ "**Ni + 3 Al → Al₃Ni at −0.45 eV/atom.** Put aluminium against nickel and it\n", @@ -924,13 +924,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "6952c8c0", + "id": "74ac91c9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:15.337934Z", - "iopub.status.busy": "2026-08-03T03:44:15.337843Z", - "iopub.status.idle": "2026-08-03T03:44:18.286961Z", - "shell.execute_reply": "2026-08-03T03:44:18.286167Z" + "iopub.execute_input": "2026-08-03T04:23:14.734932Z", + "iopub.status.busy": "2026-08-03T04:23:14.734833Z", + "iopub.status.idle": "2026-08-03T04:23:17.638068Z", + "shell.execute_reply": "2026-08-03T04:23:17.637480Z" } }, "outputs": [ @@ -1000,13 +1000,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "456cbb4a", + "id": "37d30259", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:18.288349Z", - "iopub.status.busy": "2026-08-03T03:44:18.288199Z", - "iopub.status.idle": "2026-08-03T03:44:18.291169Z", - "shell.execute_reply": "2026-08-03T03:44:18.290818Z" + "iopub.execute_input": "2026-08-03T04:23:17.639511Z", + "iopub.status.busy": "2026-08-03T04:23:17.639391Z", + "iopub.status.idle": "2026-08-03T04:23:17.641985Z", + "shell.execute_reply": "2026-08-03T04:23:17.641646Z" } }, "outputs": [ @@ -1033,7 +1033,7 @@ }, { "cell_type": "markdown", - "id": "770c0e89", + "id": "e83ce887", "metadata": {}, "source": [ "One cell per **termination**. Cutting the same orientation at a different plane\n", @@ -1049,13 +1049,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "addafe03", + "id": "77e94281", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:18.291913Z", - "iopub.status.busy": "2026-08-03T03:44:18.291829Z", - "iopub.status.idle": "2026-08-03T03:44:18.294157Z", - "shell.execute_reply": "2026-08-03T03:44:18.293824Z" + "iopub.execute_input": "2026-08-03T04:23:17.642904Z", + "iopub.status.busy": "2026-08-03T04:23:17.642781Z", + "iopub.status.idle": "2026-08-03T04:23:17.645263Z", + "shell.execute_reply": "2026-08-03T04:23:17.644908Z" } }, "outputs": [ @@ -1077,13 +1077,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "829c11ca", + "id": "cdb7a2d7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:18.294866Z", - "iopub.status.busy": "2026-08-03T03:44:18.294784Z", - "iopub.status.idle": "2026-08-03T03:44:18.398680Z", - "shell.execute_reply": "2026-08-03T03:44:18.398280Z" + "iopub.execute_input": "2026-08-03T04:23:17.646008Z", + "iopub.status.busy": "2026-08-03T04:23:17.645920Z", + "iopub.status.idle": "2026-08-03T04:23:17.750746Z", + "shell.execute_reply": "2026-08-03T04:23:17.750304Z" } }, "outputs": [ @@ -1143,7 +1143,7 @@ }, { "cell_type": "markdown", - "id": "0937ad2d", + "id": "3b21f73e", "metadata": {}, "source": [ "```{note}\n", @@ -1163,13 +1163,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "7d2ce377", + "id": "c556e41c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:18.399495Z", - "iopub.status.busy": "2026-08-03T03:44:18.399404Z", - "iopub.status.idle": "2026-08-03T03:44:18.405147Z", - "shell.execute_reply": "2026-08-03T03:44:18.404786Z" + "iopub.execute_input": "2026-08-03T04:23:17.751693Z", + "iopub.status.busy": "2026-08-03T04:23:17.751582Z", + "iopub.status.idle": "2026-08-03T04:23:17.757380Z", + "shell.execute_reply": "2026-08-03T04:23:17.757032Z" } }, "outputs": [ @@ -1279,7 +1279,7 @@ }, { "cell_type": "markdown", - "id": "d137c1ee", + "id": "153dd92b", "metadata": {}, "source": [ "A pairing is usable when the lattices fit *and* the contact is inert. Neither\n", @@ -1291,13 +1291,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "ea486d73", + "id": "f0afcb68", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:18.406041Z", - "iopub.status.busy": "2026-08-03T03:44:18.405955Z", - "iopub.status.idle": "2026-08-03T03:44:18.408054Z", - "shell.execute_reply": "2026-08-03T03:44:18.407690Z" + "iopub.execute_input": "2026-08-03T04:23:17.758201Z", + "iopub.status.busy": "2026-08-03T04:23:17.758112Z", + "iopub.status.idle": "2026-08-03T04:23:17.760181Z", + "shell.execute_reply": "2026-08-03T04:23:17.759854Z" } }, "outputs": [ @@ -1318,7 +1318,7 @@ }, { "cell_type": "markdown", - "id": "62f9ef24", + "id": "57de37e4", "metadata": {}, "source": [ "```{seealso}\n", diff --git a/matverse_guide/docs/tutorials/magnetic_ordering.ipynb b/matverse_guide/docs/tutorials/magnetic_ordering.ipynb index c463833..b6946e2 100644 --- a/matverse_guide/docs/tutorials/magnetic_ordering.ipynb +++ b/matverse_guide/docs/tutorials/magnetic_ordering.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "6dcdfaca", + "id": "95d40b5d", "metadata": {}, "source": [ "# Magnetic ordering\n", @@ -24,13 +24,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "786f9e57", + "id": "bff5c86c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:52.694064Z", - "iopub.status.busy": "2026-08-03T03:43:52.693989Z", - "iopub.status.idle": "2026-08-03T03:43:55.902042Z", - "shell.execute_reply": "2026-08-03T03:43:55.901608Z" + "iopub.execute_input": "2026-08-03T04:22:53.052600Z", + "iopub.status.busy": "2026-08-03T04:22:53.052524Z", + "iopub.status.idle": "2026-08-03T04:22:56.114193Z", + "shell.execute_reply": "2026-08-03T04:22:56.113733Z" } }, "outputs": [ @@ -61,7 +61,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -77,7 +77,7 @@ }, { "cell_type": "markdown", - "id": "8ff9acc0", + "id": "70237ba8", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -89,13 +89,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "a24a07a6", + "id": "499b503e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:55.903168Z", - "iopub.status.busy": "2026-08-03T03:43:55.902928Z", - "iopub.status.idle": "2026-08-03T03:43:56.028436Z", - "shell.execute_reply": "2026-08-03T03:43:56.028037Z" + "iopub.execute_input": "2026-08-03T04:22:56.115352Z", + "iopub.status.busy": "2026-08-03T04:22:56.115042Z", + "iopub.status.idle": "2026-08-03T04:22:56.241707Z", + "shell.execute_reply": "2026-08-03T04:22:56.241356Z" } }, "outputs": [ @@ -183,7 +183,7 @@ }, { "cell_type": "markdown", - "id": "bfb0263a", + "id": "260dd802", "metadata": {}, "source": [ "## Which elements can even carry a moment" @@ -192,13 +192,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "c07d1095", + "id": "993843fd", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:56.029301Z", - "iopub.status.busy": "2026-08-03T03:43:56.029202Z", - "iopub.status.idle": "2026-08-03T03:43:56.979584Z", - "shell.execute_reply": "2026-08-03T03:43:56.979149Z" + "iopub.execute_input": "2026-08-03T04:22:56.242682Z", + "iopub.status.busy": "2026-08-03T04:22:56.242585Z", + "iopub.status.idle": "2026-08-03T04:22:57.205324Z", + "shell.execute_reply": "2026-08-03T04:22:57.204875Z" } }, "outputs": [ @@ -280,7 +280,7 @@ }, { "cell_type": "markdown", - "id": "7792e6ac", + "id": "3a25b501", "metadata": {}, "source": [ "Read those two columns carefully, because they answer different questions.\n", @@ -302,13 +302,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "b2a3858e", + "id": "2d5651ef", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:56.980520Z", - "iopub.status.busy": "2026-08-03T03:43:56.980418Z", - "iopub.status.idle": "2026-08-03T03:43:56.982781Z", - "shell.execute_reply": "2026-08-03T03:43:56.982436Z" + "iopub.execute_input": "2026-08-03T04:22:57.206225Z", + "iopub.status.busy": "2026-08-03T04:22:57.206128Z", + "iopub.status.idle": "2026-08-03T04:22:57.208461Z", + "shell.execute_reply": "2026-08-03T04:22:57.208125Z" } }, "outputs": [ @@ -348,7 +348,7 @@ }, { "cell_type": "markdown", - "id": "07a15a7b", + "id": "9e993a43", "metadata": {}, "source": [ "## Enumerating orderings\n", @@ -361,13 +361,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "47b77731", + "id": "db487b06", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:56.983574Z", - "iopub.status.busy": "2026-08-03T03:43:56.983429Z", - "iopub.status.idle": "2026-08-03T03:43:57.192267Z", - "shell.execute_reply": "2026-08-03T03:43:57.191887Z" + "iopub.execute_input": "2026-08-03T04:22:57.209172Z", + "iopub.status.busy": "2026-08-03T04:22:57.209090Z", + "iopub.status.idle": "2026-08-03T04:22:57.425802Z", + "shell.execute_reply": "2026-08-03T04:22:57.425378Z" } }, "outputs": [ @@ -395,13 +395,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "b0c90c97", + "id": "f8916a91", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.193225Z", - "iopub.status.busy": "2026-08-03T03:43:57.193002Z", - "iopub.status.idle": "2026-08-03T03:43:57.204405Z", - "shell.execute_reply": "2026-08-03T03:43:57.204004Z" + "iopub.execute_input": "2026-08-03T04:22:57.426822Z", + "iopub.status.busy": "2026-08-03T04:22:57.426595Z", + "iopub.status.idle": "2026-08-03T04:22:57.438100Z", + "shell.execute_reply": "2026-08-03T04:22:57.437738Z" } }, "outputs": [ @@ -536,7 +536,7 @@ }, { "cell_type": "markdown", - "id": "7c695c96", + "id": "f6bcaeeb", "metadata": {}, "source": [ "Three things worth reading in that table.\n", @@ -557,13 +557,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "4d986e31", + "id": "d9c864c9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.205198Z", - "iopub.status.busy": "2026-08-03T03:43:57.205111Z", - "iopub.status.idle": "2026-08-03T03:43:57.207348Z", - "shell.execute_reply": "2026-08-03T03:43:57.207015Z" + "iopub.execute_input": "2026-08-03T04:22:57.438865Z", + "iopub.status.busy": "2026-08-03T04:22:57.438776Z", + "iopub.status.idle": "2026-08-03T04:22:57.441106Z", + "shell.execute_reply": "2026-08-03T04:22:57.440676Z" } }, "outputs": [ @@ -584,7 +584,7 @@ }, { "cell_type": "markdown", - "id": "30a96305", + "id": "73bca00a", "metadata": {}, "source": [ "```{note}\n", @@ -601,13 +601,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "7a3ad05d", + "id": "b854781d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.208035Z", - "iopub.status.busy": "2026-08-03T03:43:57.207955Z", - "iopub.status.idle": "2026-08-03T03:43:57.209883Z", - "shell.execute_reply": "2026-08-03T03:43:57.209596Z" + "iopub.execute_input": "2026-08-03T04:22:57.441845Z", + "iopub.status.busy": "2026-08-03T04:22:57.441758Z", + "iopub.status.idle": "2026-08-03T04:22:57.443823Z", + "shell.execute_reply": "2026-08-03T04:22:57.443476Z" } }, "outputs": [ @@ -629,7 +629,7 @@ }, { "cell_type": "markdown", - "id": "23c2e540", + "id": "1cbc7384", "metadata": {}, "source": [ "## Picking the ground state\n", @@ -641,13 +641,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "20649001", + "id": "829a98bf", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.210856Z", - "iopub.status.busy": "2026-08-03T03:43:57.210780Z", - "iopub.status.idle": "2026-08-03T03:43:57.228844Z", - "shell.execute_reply": "2026-08-03T03:43:57.228462Z" + "iopub.execute_input": "2026-08-03T04:22:57.448119Z", + "iopub.status.busy": "2026-08-03T04:22:57.448030Z", + "iopub.status.idle": "2026-08-03T04:22:57.466498Z", + "shell.execute_reply": "2026-08-03T04:22:57.466116Z" } }, "outputs": [ @@ -726,7 +726,7 @@ }, { "cell_type": "markdown", - "id": "7997fa45", + "id": "408a0ff9", "metadata": {}, "source": [ "## The spread is zero, and that is the answer\n", @@ -746,13 +746,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "196cc0bd", + "id": "14f3992c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.229647Z", - "iopub.status.busy": "2026-08-03T03:43:57.229556Z", - "iopub.status.idle": "2026-08-03T03:43:57.231660Z", - "shell.execute_reply": "2026-08-03T03:43:57.231337Z" + "iopub.execute_input": "2026-08-03T04:22:57.468355Z", + "iopub.status.busy": "2026-08-03T04:22:57.468267Z", + "iopub.status.idle": "2026-08-03T04:22:57.470417Z", + "shell.execute_reply": "2026-08-03T04:22:57.470070Z" } }, "outputs": [ @@ -776,7 +776,7 @@ }, { "cell_type": "markdown", - "id": "cf982138", + "id": "9d4e4ead", "metadata": {}, "source": [ "```{warning}\n", @@ -819,13 +819,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "165265bc", + "id": "27ea87e5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.232328Z", - "iopub.status.busy": "2026-08-03T03:43:57.232249Z", - "iopub.status.idle": "2026-08-03T03:43:57.234285Z", - "shell.execute_reply": "2026-08-03T03:43:57.233971Z" + "iopub.execute_input": "2026-08-03T04:22:57.471167Z", + "iopub.status.busy": "2026-08-03T04:22:57.471086Z", + "iopub.status.idle": "2026-08-03T04:22:57.473176Z", + "shell.execute_reply": "2026-08-03T04:22:57.472852Z" } }, "outputs": [ @@ -846,7 +846,7 @@ }, { "cell_type": "markdown", - "id": "bc70bddc", + "id": "18ab7a48", "metadata": {}, "source": [ "That is deliberate. `mv.thermo.hull` needs no special case for magnetism: it\n", @@ -867,7 +867,7 @@ }, { "cell_type": "markdown", - "id": "c90966b1", + "id": "141a4101", "metadata": {}, "source": [ "## The other thing a d shell does\n", @@ -884,13 +884,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "e7874359", + "id": "6d638e0b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.234981Z", - "iopub.status.busy": "2026-08-03T03:43:57.234899Z", - "iopub.status.idle": "2026-08-03T03:43:57.456698Z", - "shell.execute_reply": "2026-08-03T03:43:57.456331Z" + "iopub.execute_input": "2026-08-03T04:22:57.473949Z", + "iopub.status.busy": "2026-08-03T04:22:57.473871Z", + "iopub.status.idle": "2026-08-03T04:22:57.695784Z", + "shell.execute_reply": "2026-08-03T04:22:57.695402Z" } }, "outputs": [ @@ -979,7 +979,7 @@ }, { "cell_type": "markdown", - "id": "7f736990", + "id": "387aa753", "metadata": {}, "source": [ "Mn³⁺ and Ni³⁺ come out **strong** and Ti⁴⁺ inactive, which is the textbook\n", @@ -1003,7 +1003,7 @@ }, { "cell_type": "markdown", - "id": "80092cf3", + "id": "56e88dc4", "metadata": {}, "source": [ "## How far above room temperature does it stay a magnet?\n", @@ -1019,13 +1019,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "fc025f54", + "id": "b39964d1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.457547Z", - "iopub.status.busy": "2026-08-03T03:43:57.457460Z", - "iopub.status.idle": "2026-08-03T03:43:57.480332Z", - "shell.execute_reply": "2026-08-03T03:43:57.479953Z" + "iopub.execute_input": "2026-08-03T04:22:57.696727Z", + "iopub.status.busy": "2026-08-03T04:22:57.696641Z", + "iopub.status.idle": "2026-08-03T04:22:57.719435Z", + "shell.execute_reply": "2026-08-03T04:22:57.719052Z" } }, "outputs": [ @@ -1104,7 +1104,7 @@ }, { "cell_type": "markdown", - "id": "66d8d3f3", + "id": "c963af48", "metadata": {}, "source": [ "The ferromagnetic arrangement is lower, so the coupling is positive and the\n", @@ -1126,7 +1126,7 @@ }, { "cell_type": "markdown", - "id": "db1cdf19", + "id": "685e3770", "metadata": {}, "source": [ "### When the fit has nothing to fit\n", @@ -1140,13 +1140,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "53a74c33", + "id": "2f4b7845", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.481080Z", - "iopub.status.busy": "2026-08-03T03:43:57.480993Z", - "iopub.status.idle": "2026-08-03T03:43:57.485850Z", - "shell.execute_reply": "2026-08-03T03:43:57.485496Z" + "iopub.execute_input": "2026-08-03T04:22:57.720308Z", + "iopub.status.busy": "2026-08-03T04:22:57.720216Z", + "iopub.status.idle": "2026-08-03T04:22:57.724987Z", + "shell.execute_reply": "2026-08-03T04:22:57.724635Z" } }, "outputs": [ @@ -1184,7 +1184,7 @@ }, { "cell_type": "markdown", - "id": "92d4af1a", + "id": "a2fc3748", "metadata": {}, "source": [ "A NaN and a stated reason, rather than a number near zero that would read as\n", @@ -1193,7 +1193,7 @@ }, { "cell_type": "markdown", - "id": "d236556f", + "id": "11a24f9e", "metadata": {}, "source": [ "## What the moments cost in symmetry\n", @@ -1212,13 +1212,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "15c76269", + "id": "13962d99", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:57.486644Z", - "iopub.status.busy": "2026-08-03T03:43:57.486553Z", - "iopub.status.idle": "2026-08-03T03:43:57.587614Z", - "shell.execute_reply": "2026-08-03T03:43:57.587214Z" + "iopub.execute_input": "2026-08-03T04:22:57.725776Z", + "iopub.status.busy": "2026-08-03T04:22:57.725691Z", + "iopub.status.idle": "2026-08-03T04:22:57.827018Z", + "shell.execute_reply": "2026-08-03T04:22:57.826629Z" } }, "outputs": [ @@ -1308,7 +1308,7 @@ }, { "cell_type": "markdown", - "id": "59196a3c", + "id": "3033481e", "metadata": {}, "source": [ "bcc iron has **96** operations. With no moments all 96 survive. With any\n", diff --git a/matverse_guide/docs/tutorials/models_and_campaigns.ipynb b/matverse_guide/docs/tutorials/models_and_campaigns.ipynb index 77ce1a5..2f67505 100644 --- a/matverse_guide/docs/tutorials/models_and_campaigns.ipynb +++ b/matverse_guide/docs/tutorials/models_and_campaigns.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "6cad374c", + "id": "b1ed1289", "metadata": {}, "source": [ "# Models and campaigns\n", @@ -19,13 +19,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "9c4abf5a", + "id": "9a0981ea", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:16.858342Z", - "iopub.status.busy": "2026-08-03T03:41:16.858262Z", - "iopub.status.idle": "2026-08-03T03:41:19.824390Z", - "shell.execute_reply": "2026-08-03T03:41:19.823886Z" + "iopub.execute_input": "2026-08-03T04:20:17.862730Z", + "iopub.status.busy": "2026-08-03T04:20:17.862651Z", + "iopub.status.idle": "2026-08-03T04:20:20.903796Z", + "shell.execute_reply": "2026-08-03T04:20:20.903345Z" } }, "outputs": [ @@ -56,7 +56,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -72,7 +72,7 @@ }, { "cell_type": "markdown", - "id": "2ab741a4", + "id": "d1ddc1c0", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -85,13 +85,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "d6922859", + "id": "dd334c8d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:19.825484Z", - "iopub.status.busy": "2026-08-03T03:41:19.825233Z", - "iopub.status.idle": "2026-08-03T03:41:19.879480Z", - "shell.execute_reply": "2026-08-03T03:41:19.879084Z" + "iopub.execute_input": "2026-08-03T04:20:20.904937Z", + "iopub.status.busy": "2026-08-03T04:20:20.904697Z", + "iopub.status.idle": "2026-08-03T04:20:20.958545Z", + "shell.execute_reply": "2026-08-03T04:20:20.958147Z" } }, "outputs": [ @@ -128,7 +128,7 @@ }, { "cell_type": "markdown", - "id": "30eccebd", + "id": "19370182", "metadata": {}, "source": [ "Each binary sits at the mean of its two elemental lattice parameters — a crude\n", @@ -139,13 +139,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "8c197f32", + "id": "051c2975", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:19.880427Z", - "iopub.status.busy": "2026-08-03T03:41:19.880201Z", - "iopub.status.idle": "2026-08-03T03:41:20.046769Z", - "shell.execute_reply": "2026-08-03T03:41:20.046343Z" + "iopub.execute_input": "2026-08-03T04:20:20.959521Z", + "iopub.status.busy": "2026-08-03T04:20:20.959314Z", + "iopub.status.idle": "2026-08-03T04:20:21.126276Z", + "shell.execute_reply": "2026-08-03T04:20:21.125888Z" } }, "outputs": [ @@ -269,7 +269,7 @@ }, { "cell_type": "markdown", - "id": "35a773b3", + "id": "2ca5bb1c", "metadata": {}, "source": [ "## The split is the part to care about\n", @@ -282,13 +282,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "5ef0eb30", + "id": "d1aae864", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.047622Z", - "iopub.status.busy": "2026-08-03T03:41:20.047527Z", - "iopub.status.idle": "2026-08-03T03:41:20.051234Z", - "shell.execute_reply": "2026-08-03T03:41:20.050884Z" + "iopub.execute_input": "2026-08-03T04:20:21.127385Z", + "iopub.status.busy": "2026-08-03T04:20:21.127247Z", + "iopub.status.idle": "2026-08-03T04:20:21.131000Z", + "shell.execute_reply": "2026-08-03T04:20:21.130655Z" } }, "outputs": [ @@ -316,7 +316,7 @@ }, { "cell_type": "markdown", - "id": "48f94e79", + "id": "71bdb8d3", "metadata": {}, "source": [ "`mv.model.split` defaults to grouping by **composition**, and the default is the\n", @@ -338,13 +338,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "a067f7dc", + "id": "2db624e5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.052080Z", - "iopub.status.busy": "2026-08-03T03:41:20.051905Z", - "iopub.status.idle": "2026-08-03T03:41:20.054711Z", - "shell.execute_reply": "2026-08-03T03:41:20.054377Z" + "iopub.execute_input": "2026-08-03T04:20:21.131723Z", + "iopub.status.busy": "2026-08-03T04:20:21.131640Z", + "iopub.status.idle": "2026-08-03T04:20:21.134368Z", + "shell.execute_reply": "2026-08-03T04:20:21.134029Z" } }, "outputs": [ @@ -366,7 +366,7 @@ }, { "cell_type": "markdown", - "id": "148a6aff", + "id": "5a4a3478", "metadata": {}, "source": [ "The element holdout is the hardest honest split and the one a discovery campaign\n", @@ -385,13 +385,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "af23a6d7", + "id": "9b422b82", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.055488Z", - "iopub.status.busy": "2026-08-03T03:41:20.055402Z", - "iopub.status.idle": "2026-08-03T03:41:20.493827Z", - "shell.execute_reply": "2026-08-03T03:41:20.493399Z" + "iopub.execute_input": "2026-08-03T04:20:21.135149Z", + "iopub.status.busy": "2026-08-03T04:20:21.135067Z", + "iopub.status.idle": "2026-08-03T04:20:21.596545Z", + "shell.execute_reply": "2026-08-03T04:20:21.596143Z" } }, "outputs": [ @@ -418,7 +418,7 @@ }, { "cell_type": "markdown", - "id": "4667e159", + "id": "8e794df2", "metadata": {}, "source": [ "The prediction is a **level of theory**, not a special kind of column." @@ -427,13 +427,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "766ad72a", + "id": "b4183573", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.494897Z", - "iopub.status.busy": "2026-08-03T03:41:20.494630Z", - "iopub.status.idle": "2026-08-03T03:41:20.497109Z", - "shell.execute_reply": "2026-08-03T03:41:20.496733Z" + "iopub.execute_input": "2026-08-03T04:20:21.597703Z", + "iopub.status.busy": "2026-08-03T04:20:21.597439Z", + "iopub.status.idle": "2026-08-03T04:20:21.599966Z", + "shell.execute_reply": "2026-08-03T04:20:21.599510Z" } }, "outputs": [ @@ -465,7 +465,7 @@ }, { "cell_type": "markdown", - "id": "583ed437", + "id": "f1061460", "metadata": {}, "source": [ "That matters for the same reason it does everywhere else in matverse: a\n", @@ -481,13 +481,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "a9feb32a", + "id": "e1e2419d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.497840Z", - "iopub.status.busy": "2026-08-03T03:41:20.497757Z", - "iopub.status.idle": "2026-08-03T03:41:20.503352Z", - "shell.execute_reply": "2026-08-03T03:41:20.503014Z" + "iopub.execute_input": "2026-08-03T04:20:21.600760Z", + "iopub.status.busy": "2026-08-03T04:20:21.600674Z", + "iopub.status.idle": "2026-08-03T04:20:21.606369Z", + "shell.execute_reply": "2026-08-03T04:20:21.606008Z" } }, "outputs": [ @@ -613,7 +613,7 @@ }, { "cell_type": "markdown", - "id": "99a114e7", + "id": "b387c0bc", "metadata": {}, "source": [ "It is honestly labelled **uncalibrated**. It is useful for deciding what to\n", @@ -623,13 +623,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "70004636", + "id": "85990fa3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.504046Z", - "iopub.status.busy": "2026-08-03T03:41:20.503966Z", - "iopub.status.idle": "2026-08-03T03:41:20.506072Z", - "shell.execute_reply": "2026-08-03T03:41:20.505739Z" + "iopub.execute_input": "2026-08-03T04:20:21.607117Z", + "iopub.status.busy": "2026-08-03T04:20:21.607036Z", + "iopub.status.idle": "2026-08-03T04:20:21.609128Z", + "shell.execute_reply": "2026-08-03T04:20:21.608809Z" } }, "outputs": [ @@ -653,7 +653,7 @@ }, { "cell_type": "markdown", - "id": "36283d7b", + "id": "a03b5b8c", "metadata": {}, "source": [ "Only scikit-learn is wired. Graph networks and fine-tuned interatomic potentials\n", @@ -664,13 +664,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "fb2e855c", + "id": "bdc5ab85", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.506776Z", - "iopub.status.busy": "2026-08-03T03:41:20.506695Z", - "iopub.status.idle": "2026-08-03T03:41:20.571563Z", - "shell.execute_reply": "2026-08-03T03:41:20.571166Z" + "iopub.execute_input": "2026-08-03T04:20:21.609825Z", + "iopub.status.busy": "2026-08-03T04:20:21.609741Z", + "iopub.status.idle": "2026-08-03T04:20:21.674945Z", + "shell.execute_reply": "2026-08-03T04:20:21.674553Z" } }, "outputs": [ @@ -678,9 +678,9 @@ "data": { "text/plain": [ "{'n': 6,\n", - " 'mae': 0.017856559751145987,\n", - " 'rmse': 0.024277046629688416,\n", - " 'r2': 0.879675865080266}" + " 'mae': 0.017962430736735334,\n", + " 'rmse': 0.024563974936680666,\n", + " 'r2': 0.8768148563836156}" ] }, "execution_count": 10, @@ -699,7 +699,7 @@ }, { "cell_type": "markdown", - "id": "e6d4e426", + "id": "35bcddcf", "metadata": {}, "source": [ "### Uncertainty from a committee instead\n", @@ -713,13 +713,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "82db3cab", + "id": "4f1679cc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.572413Z", - "iopub.status.busy": "2026-08-03T03:41:20.572322Z", - "iopub.status.idle": "2026-08-03T03:41:20.578389Z", - "shell.execute_reply": "2026-08-03T03:41:20.578006Z" + "iopub.execute_input": "2026-08-03T04:20:21.675790Z", + "iopub.status.busy": "2026-08-03T04:20:21.675699Z", + "iopub.status.idle": "2026-08-03T04:20:21.681752Z", + "shell.execute_reply": "2026-08-03T04:20:21.681399Z" } }, "outputs": [ @@ -818,7 +818,7 @@ }, { "cell_type": "markdown", - "id": "62d90180", + "id": "09bf51a8", "metadata": {}, "source": [ "The two members here differ by a constant, so the spread is the same everywhere\n", @@ -834,13 +834,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "5a24c5b4", + "id": "a9f71a7b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:20.579136Z", - "iopub.status.busy": "2026-08-03T03:41:20.579051Z", - "iopub.status.idle": "2026-08-03T03:41:22.166518Z", - "shell.execute_reply": "2026-08-03T03:41:22.166084Z" + "iopub.execute_input": "2026-08-03T04:20:21.682486Z", + "iopub.status.busy": "2026-08-03T04:20:21.682399Z", + "iopub.status.idle": "2026-08-03T04:20:23.272809Z", + "shell.execute_reply": "2026-08-03T04:20:23.272375Z" } }, "outputs": [ @@ -913,13 +913,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "6b82813f", + "id": "eb86adb2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.167543Z", - "iopub.status.busy": "2026-08-03T03:41:22.167451Z", - "iopub.status.idle": "2026-08-03T03:41:22.266610Z", - "shell.execute_reply": "2026-08-03T03:41:22.266161Z" + "iopub.execute_input": "2026-08-03T04:20:23.273686Z", + "iopub.status.busy": "2026-08-03T04:20:23.273599Z", + "iopub.status.idle": "2026-08-03T04:20:23.369879Z", + "shell.execute_reply": "2026-08-03T04:20:23.369491Z" } }, "outputs": [ @@ -966,13 +966,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "de96a723", + "id": "9dffa17f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.267499Z", - "iopub.status.busy": "2026-08-03T03:41:22.267364Z", - "iopub.status.idle": "2026-08-03T03:41:22.269730Z", - "shell.execute_reply": "2026-08-03T03:41:22.269376Z" + "iopub.execute_input": "2026-08-03T04:20:23.370744Z", + "iopub.status.busy": "2026-08-03T04:20:23.370656Z", + "iopub.status.idle": "2026-08-03T04:20:23.372841Z", + "shell.execute_reply": "2026-08-03T04:20:23.372501Z" } }, "outputs": [ @@ -993,7 +993,7 @@ }, { "cell_type": "markdown", - "id": "5dc70584", + "id": "ec931f8e", "metadata": {}, "source": [ "`leakage_mae` is the grouped MAE minus the random one. A large **positive**\n", @@ -1039,13 +1039,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "1f68fdf0", + "id": "0fc7438e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.270542Z", - "iopub.status.busy": "2026-08-03T03:41:22.270452Z", - "iopub.status.idle": "2026-08-03T03:41:22.274061Z", - "shell.execute_reply": "2026-08-03T03:41:22.273718Z" + "iopub.execute_input": "2026-08-03T04:20:23.373595Z", + "iopub.status.busy": "2026-08-03T04:20:23.373465Z", + "iopub.status.idle": "2026-08-03T04:20:23.376975Z", + "shell.execute_reply": "2026-08-03T04:20:23.376624Z" } }, "outputs": [ @@ -1073,7 +1073,7 @@ }, { "cell_type": "markdown", - "id": "27bfccf0", + "id": "8bbeffd6", "metadata": {}, "source": [ "Each round: fit on what is known, ask for a batch, \"compute\" it, fold it back." @@ -1082,13 +1082,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "6105a9b5", + "id": "9c523189", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.274816Z", - "iopub.status.busy": "2026-08-03T03:41:22.274734Z", - "iopub.status.idle": "2026-08-03T03:41:22.786364Z", - "shell.execute_reply": "2026-08-03T03:41:22.785949Z" + "iopub.execute_input": "2026-08-03T04:20:23.377702Z", + "iopub.status.busy": "2026-08-03T04:20:23.377617Z", + "iopub.status.idle": "2026-08-03T04:20:23.892053Z", + "shell.execute_reply": "2026-08-03T04:20:23.891616Z" } }, "outputs": [ @@ -1219,13 +1219,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "6baa7189", + "id": "b5178c59", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.787238Z", - "iopub.status.busy": "2026-08-03T03:41:22.787152Z", - "iopub.status.idle": "2026-08-03T03:41:22.789565Z", - "shell.execute_reply": "2026-08-03T03:41:22.789251Z" + "iopub.execute_input": "2026-08-03T04:20:23.892932Z", + "iopub.status.busy": "2026-08-03T04:20:23.892843Z", + "iopub.status.idle": "2026-08-03T04:20:23.895202Z", + "shell.execute_reply": "2026-08-03T04:20:23.894902Z" } }, "outputs": [ @@ -1247,20 +1247,20 @@ { "cell_type": "code", "execution_count": 18, - "id": "8cf05c65", + "id": "006cdd52", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.790291Z", - "iopub.status.busy": "2026-08-03T03:41:22.790200Z", - "iopub.status.idle": "2026-08-03T03:41:22.903694Z", - "shell.execute_reply": "2026-08-03T03:41:22.903291Z" + "iopub.execute_input": "2026-08-03T04:20:23.895936Z", + "iopub.status.busy": "2026-08-03T04:20:23.895850Z", + "iopub.status.idle": "2026-08-03T04:20:24.008696Z", + "shell.execute_reply": "2026-08-03T04:20:24.008346Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -1299,7 +1299,7 @@ }, { "cell_type": "markdown", - "id": "4a5af4d2", + "id": "2cbb9c04", "metadata": {}, "source": [ "The campaign found the true optimum having computed a fraction of the\n", @@ -1327,13 +1327,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "2953dc29", + "id": "4fdc0e41", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.904659Z", - "iopub.status.busy": "2026-08-03T03:41:22.904563Z", - "iopub.status.idle": "2026-08-03T03:41:22.907224Z", - "shell.execute_reply": "2026-08-03T03:41:22.906820Z" + "iopub.execute_input": "2026-08-03T04:20:24.009833Z", + "iopub.status.busy": "2026-08-03T04:20:24.009729Z", + "iopub.status.idle": "2026-08-03T04:20:24.012382Z", + "shell.execute_reply": "2026-08-03T04:20:24.012047Z" } }, "outputs": [ @@ -1356,13 +1356,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "9867b3db", + "id": "85eb0fec", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:22.908002Z", - "iopub.status.busy": "2026-08-03T03:41:22.907910Z", - "iopub.status.idle": "2026-08-03T03:41:23.019326Z", - "shell.execute_reply": "2026-08-03T03:41:23.018885Z" + "iopub.execute_input": "2026-08-03T04:20:24.013229Z", + "iopub.status.busy": "2026-08-03T04:20:24.013141Z", + "iopub.status.idle": "2026-08-03T04:20:24.126001Z", + "shell.execute_reply": "2026-08-03T04:20:24.125611Z" } }, "outputs": [ @@ -1405,7 +1405,7 @@ }, { "cell_type": "markdown", - "id": "d1cdd71d", + "id": "669aef7e", "metadata": {}, "source": [ "A candidate is worth computing either because its predicted value is good or\n", @@ -1422,13 +1422,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "8972c798", + "id": "da1985d8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:23.020364Z", - "iopub.status.busy": "2026-08-03T03:41:23.020209Z", - "iopub.status.idle": "2026-08-03T03:41:23.024620Z", - "shell.execute_reply": "2026-08-03T03:41:23.024258Z" + "iopub.execute_input": "2026-08-03T04:20:24.126853Z", + "iopub.status.busy": "2026-08-03T04:20:24.126763Z", + "iopub.status.idle": "2026-08-03T04:20:24.131039Z", + "shell.execute_reply": "2026-08-03T04:20:24.130752Z" } }, "outputs": [ @@ -1455,7 +1455,7 @@ }, { "cell_type": "markdown", - "id": "ebe6d787", + "id": "a0a244cc", "metadata": {}, "source": [ "Farthest-point selection among a shortlist, so the batch spreads out in\n", @@ -1479,13 +1479,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "88334240", + "id": "401550d3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:23.025363Z", - "iopub.status.busy": "2026-08-03T03:41:23.025281Z", - "iopub.status.idle": "2026-08-03T03:41:23.272624Z", - "shell.execute_reply": "2026-08-03T03:41:23.272223Z" + "iopub.execute_input": "2026-08-03T04:20:24.131904Z", + "iopub.status.busy": "2026-08-03T04:20:24.131820Z", + "iopub.status.idle": "2026-08-03T04:20:24.381023Z", + "shell.execute_reply": "2026-08-03T04:20:24.380637Z" } }, "outputs": [ @@ -1516,7 +1516,7 @@ }, { "cell_type": "markdown", - "id": "c16f8c6a", + "id": "7a3cd824", "metadata": {}, "source": [ "`mv.pl.parity` draws the error bars when an uncertainty column exists,\n", @@ -1533,13 +1533,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "5d5323d4", + "id": "ffaf36bb", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:23.273438Z", - "iopub.status.busy": "2026-08-03T03:41:23.273351Z", - "iopub.status.idle": "2026-08-03T03:41:23.588197Z", - "shell.execute_reply": "2026-08-03T03:41:23.587792Z" + "iopub.execute_input": "2026-08-03T04:20:24.382174Z", + "iopub.status.busy": "2026-08-03T04:20:24.382054Z", + "iopub.status.idle": "2026-08-03T04:20:24.714075Z", + "shell.execute_reply": "2026-08-03T04:20:24.713542Z" } }, "outputs": [ @@ -1573,7 +1573,7 @@ }, { "cell_type": "markdown", - "id": "2d765f62", + "id": "65a8ff27", "metadata": {}, "source": [ "A bar chart of 118 categories is unreadable and throws away the structure a\n", @@ -1584,13 +1584,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "f9cd477f", + "id": "6751beee", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:23.589112Z", - "iopub.status.busy": "2026-08-03T03:41:23.588963Z", - "iopub.status.idle": "2026-08-03T03:41:23.674608Z", - "shell.execute_reply": "2026-08-03T03:41:23.674203Z" + "iopub.execute_input": "2026-08-03T04:20:24.715144Z", + "iopub.status.busy": "2026-08-03T04:20:24.715043Z", + "iopub.status.idle": "2026-08-03T04:20:24.804959Z", + "shell.execute_reply": "2026-08-03T04:20:24.804548Z" } }, "outputs": [ @@ -1627,7 +1627,7 @@ }, { "cell_type": "markdown", - "id": "9c3297a0", + "id": "123914ac", "metadata": {}, "source": [ "### The rest\n", @@ -1646,13 +1646,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "d9d68bd8", + "id": "9ab8d74a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:23.675458Z", - "iopub.status.busy": "2026-08-03T03:41:23.675364Z", - "iopub.status.idle": "2026-08-03T03:41:24.320975Z", - "shell.execute_reply": "2026-08-03T03:41:24.320591Z" + "iopub.execute_input": "2026-08-03T04:20:24.805860Z", + "iopub.status.busy": "2026-08-03T04:20:24.805766Z", + "iopub.status.idle": "2026-08-03T04:20:25.459574Z", + "shell.execute_reply": "2026-08-03T04:20:25.459089Z" } }, "outputs": [ @@ -1678,7 +1678,7 @@ }, { "cell_type": "markdown", - "id": "4843abf4", + "id": "58bb5ee1", "metadata": {}, "source": [ "```{note}\n", diff --git a/matverse_guide/docs/tutorials/molecules.ipynb b/matverse_guide/docs/tutorials/molecules.ipynb index 41b2e31..b5c8b93 100644 --- a/matverse_guide/docs/tutorials/molecules.ipynb +++ b/matverse_guide/docs/tutorials/molecules.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "1c7c56ab", + "id": "202b140f", "metadata": {}, "source": [ "# Molecules\n", @@ -27,13 +27,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "91b36ec2", + "id": "61218014", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:14.466387Z", - "iopub.status.busy": "2026-08-03T03:45:14.466305Z", - "iopub.status.idle": "2026-08-03T03:45:17.599324Z", - "shell.execute_reply": "2026-08-03T03:45:17.598753Z" + "iopub.execute_input": "2026-08-03T04:24:13.286978Z", + "iopub.status.busy": "2026-08-03T04:24:13.286897Z", + "iopub.status.idle": "2026-08-03T04:24:16.238247Z", + "shell.execute_reply": "2026-08-03T04:24:16.237759Z" } }, "outputs": [ @@ -64,7 +64,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -80,7 +80,7 @@ }, { "cell_type": "markdown", - "id": "fb976325", + "id": "e44ba1e6", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -92,13 +92,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "2f75c1e0", + "id": "c8f08705", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.600492Z", - "iopub.status.busy": "2026-08-03T03:45:17.600222Z", - "iopub.status.idle": "2026-08-03T03:45:17.645325Z", - "shell.execute_reply": "2026-08-03T03:45:17.644997Z" + "iopub.execute_input": "2026-08-03T04:24:16.239338Z", + "iopub.status.busy": "2026-08-03T04:24:16.239081Z", + "iopub.status.idle": "2026-08-03T04:24:16.283988Z", + "shell.execute_reply": "2026-08-03T04:24:16.283625Z" } }, "outputs": [ @@ -142,13 +142,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "7df60658", + "id": "087c9ff5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.646470Z", - "iopub.status.busy": "2026-08-03T03:45:17.646276Z", - "iopub.status.idle": "2026-08-03T03:45:17.652912Z", - "shell.execute_reply": "2026-08-03T03:45:17.652567Z" + "iopub.execute_input": "2026-08-03T04:24:16.285095Z", + "iopub.status.busy": "2026-08-03T04:24:16.284905Z", + "iopub.status.idle": "2026-08-03T04:24:16.291340Z", + "shell.execute_reply": "2026-08-03T04:24:16.290996Z" } }, "outputs": [ @@ -232,7 +232,7 @@ }, { "cell_type": "markdown", - "id": "2ffd8a5a", + "id": "76e77f91", "metadata": {}, "source": [ "The composition matrix, built without being asked, exactly as for a crystal.\n", @@ -242,13 +242,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "0bfee888", + "id": "b5e14f5a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.653696Z", - "iopub.status.busy": "2026-08-03T03:45:17.653610Z", - "iopub.status.idle": "2026-08-03T03:45:17.660866Z", - "shell.execute_reply": "2026-08-03T03:45:17.660528Z" + "iopub.execute_input": "2026-08-03T04:24:16.292094Z", + "iopub.status.busy": "2026-08-03T04:24:16.292008Z", + "iopub.status.idle": "2026-08-03T04:24:16.299348Z", + "shell.execute_reply": "2026-08-03T04:24:16.298982Z" } }, "outputs": [ @@ -343,7 +343,7 @@ }, { "cell_type": "markdown", - "id": "2d5422cd", + "id": "f5f7b7ba", "metadata": {}, "source": [ "`volume` and `density` are NaN, because they are properties of a *cell* and a\n", @@ -354,13 +354,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "3b8a5420", + "id": "af74d0bc", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.661641Z", - "iopub.status.busy": "2026-08-03T03:45:17.661556Z", - "iopub.status.idle": "2026-08-03T03:45:17.675135Z", - "shell.execute_reply": "2026-08-03T03:45:17.674785Z" + "iopub.execute_input": "2026-08-03T04:24:16.300104Z", + "iopub.status.busy": "2026-08-03T04:24:16.300019Z", + "iopub.status.idle": "2026-08-03T04:24:16.313679Z", + "shell.execute_reply": "2026-08-03T04:24:16.313314Z" } }, "outputs": [ @@ -434,7 +434,7 @@ }, { "cell_type": "markdown", - "id": "256d1dc8", + "id": "9f9891de", "metadata": {}, "source": [ "## Symmetry\n", @@ -445,13 +445,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "53693de8", + "id": "5b05ff12", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.676037Z", - "iopub.status.busy": "2026-08-03T03:45:17.675947Z", - "iopub.status.idle": "2026-08-03T03:45:17.711156Z", - "shell.execute_reply": "2026-08-03T03:45:17.710825Z" + "iopub.execute_input": "2026-08-03T04:24:16.314525Z", + "iopub.status.busy": "2026-08-03T04:24:16.314366Z", + "iopub.status.idle": "2026-08-03T04:24:16.350158Z", + "shell.execute_reply": "2026-08-03T04:24:16.349766Z" } }, "outputs": [ @@ -542,7 +542,7 @@ }, { "cell_type": "markdown", - "id": "a5a2b554", + "id": "16bf84b6", "metadata": {}, "source": [ "C2v for water, **Td** for methane, C3v for ammonia, Cs for ethanol — the\n", @@ -564,13 +564,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "527f7ad4", + "id": "b292c7cb", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.712196Z", - "iopub.status.busy": "2026-08-03T03:45:17.712109Z", - "iopub.status.idle": "2026-08-03T03:45:17.829008Z", - "shell.execute_reply": "2026-08-03T03:45:17.828603Z" + "iopub.execute_input": "2026-08-03T04:24:16.350998Z", + "iopub.status.busy": "2026-08-03T04:24:16.350911Z", + "iopub.status.idle": "2026-08-03T04:24:16.467189Z", + "shell.execute_reply": "2026-08-03T04:24:16.466796Z" } }, "outputs": [ @@ -609,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "0e77b676", + "id": "fa21fced", "metadata": {}, "source": [ "## Bonds\n", @@ -622,13 +622,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "ba2c2071", + "id": "75b3f7ec", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:17.830041Z", - "iopub.status.busy": "2026-08-03T03:45:17.829950Z", - "iopub.status.idle": "2026-08-03T03:45:18.453360Z", - "shell.execute_reply": "2026-08-03T03:45:18.452903Z" + "iopub.execute_input": "2026-08-03T04:24:16.468233Z", + "iopub.status.busy": "2026-08-03T04:24:16.468089Z", + "iopub.status.idle": "2026-08-03T04:24:17.084117Z", + "shell.execute_reply": "2026-08-03T04:24:17.083575Z" } }, "outputs": [ @@ -652,7 +652,7 @@ }, { "cell_type": "markdown", - "id": "02c4cecc", + "id": "d7c74d54", "metadata": {}, "source": [ "Different *perception*, though. A crystal's neighbours come from Voronoi solid\n", @@ -663,13 +663,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "431aaf4d", + "id": "7494b47f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.454543Z", - "iopub.status.busy": "2026-08-03T03:45:18.454158Z", - "iopub.status.idle": "2026-08-03T03:45:18.456667Z", - "shell.execute_reply": "2026-08-03T03:45:18.456316Z" + "iopub.execute_input": "2026-08-03T04:24:17.085317Z", + "iopub.status.busy": "2026-08-03T04:24:17.084960Z", + "iopub.status.idle": "2026-08-03T04:24:17.087489Z", + "shell.execute_reply": "2026-08-03T04:24:17.087133Z" } }, "outputs": [ @@ -692,7 +692,7 @@ }, { "cell_type": "markdown", - "id": "2ef2d808", + "id": "cc9d7412", "metadata": {}, "source": [ "## Descriptors that need the graph" @@ -701,13 +701,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "3742a5d3", + "id": "0c3068a1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.457448Z", - "iopub.status.busy": "2026-08-03T03:45:18.457312Z", - "iopub.status.idle": "2026-08-03T03:45:18.471286Z", - "shell.execute_reply": "2026-08-03T03:45:18.470925Z" + "iopub.execute_input": "2026-08-03T04:24:17.088205Z", + "iopub.status.busy": "2026-08-03T04:24:17.088121Z", + "iopub.status.idle": "2026-08-03T04:24:17.102369Z", + "shell.execute_reply": "2026-08-03T04:24:17.101947Z" } }, "outputs": [ @@ -803,7 +803,7 @@ }, { "cell_type": "markdown", - "id": "a551f1ed", + "id": "b0c84149", "metadata": {}, "source": [ "Ethanol has **two rotatable bonds** — C–C and C–O. The C–H bonds are terminal\n", @@ -827,13 +827,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "f7490512", + "id": "65f013ac", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.472013Z", - "iopub.status.busy": "2026-08-03T03:45:18.471929Z", - "iopub.status.idle": "2026-08-03T03:45:18.493488Z", - "shell.execute_reply": "2026-08-03T03:45:18.493077Z" + "iopub.execute_input": "2026-08-03T04:24:17.103184Z", + "iopub.status.busy": "2026-08-03T04:24:17.103094Z", + "iopub.status.idle": "2026-08-03T04:24:17.124983Z", + "shell.execute_reply": "2026-08-03T04:24:17.124574Z" } }, "outputs": [ @@ -972,13 +972,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "a796e09d", + "id": "67ac713a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.494283Z", - "iopub.status.busy": "2026-08-03T03:45:18.494196Z", - "iopub.status.idle": "2026-08-03T03:45:18.497043Z", - "shell.execute_reply": "2026-08-03T03:45:18.496724Z" + "iopub.execute_input": "2026-08-03T04:24:17.125786Z", + "iopub.status.busy": "2026-08-03T04:24:17.125701Z", + "iopub.status.idle": "2026-08-03T04:24:17.128632Z", + "shell.execute_reply": "2026-08-03T04:24:17.128255Z" } }, "outputs": [ @@ -999,7 +999,7 @@ }, { "cell_type": "markdown", - "id": "1e32cfe6", + "id": "cede3fbf", "metadata": {}, "source": [ "Every cut splits nine atoms into pieces that still total nine — mass is\n", @@ -1021,13 +1021,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "d7ba6e73", + "id": "a0ff9c25", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.497774Z", - "iopub.status.busy": "2026-08-03T03:45:18.497691Z", - "iopub.status.idle": "2026-08-03T03:45:18.502449Z", - "shell.execute_reply": "2026-08-03T03:45:18.502041Z" + "iopub.execute_input": "2026-08-03T04:24:17.129414Z", + "iopub.status.busy": "2026-08-03T04:24:17.129322Z", + "iopub.status.idle": "2026-08-03T04:24:17.134201Z", + "shell.execute_reply": "2026-08-03T04:24:17.133839Z" } }, "outputs": [ @@ -1099,7 +1099,7 @@ }, { "cell_type": "markdown", - "id": "b35faccd", + "id": "90c67347", "metadata": {}, "source": [ "Ring bonds are not cut, because one cut cannot separate a ring — the molecule\n", @@ -1120,13 +1120,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "e39abd74", + "id": "aa8cbda7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.503198Z", - "iopub.status.busy": "2026-08-03T03:45:18.503113Z", - "iopub.status.idle": "2026-08-03T03:45:18.515174Z", - "shell.execute_reply": "2026-08-03T03:45:18.514844Z" + "iopub.execute_input": "2026-08-03T04:24:17.134936Z", + "iopub.status.busy": "2026-08-03T04:24:17.134851Z", + "iopub.status.idle": "2026-08-03T04:24:17.147414Z", + "shell.execute_reply": "2026-08-03T04:24:17.146986Z" } }, "outputs": [ @@ -1210,13 +1210,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "a402c794", + "id": "3f83d517", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.515982Z", - "iopub.status.busy": "2026-08-03T03:45:18.515900Z", - "iopub.status.idle": "2026-08-03T03:45:18.517988Z", - "shell.execute_reply": "2026-08-03T03:45:18.517663Z" + "iopub.execute_input": "2026-08-03T04:24:17.148220Z", + "iopub.status.busy": "2026-08-03T04:24:17.148134Z", + "iopub.status.idle": "2026-08-03T04:24:17.150316Z", + "shell.execute_reply": "2026-08-03T04:24:17.149981Z" } }, "outputs": [ @@ -1243,7 +1243,7 @@ }, { "cell_type": "markdown", - "id": "f2ce59fb", + "id": "dc0be8ab", "metadata": {}, "source": [ "The translated copy of water is recognised: matching is on the reduced formula\n", @@ -1259,13 +1259,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "6a96aef1", + "id": "a194a65d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.518704Z", - "iopub.status.busy": "2026-08-03T03:45:18.518624Z", - "iopub.status.idle": "2026-08-03T03:45:18.651310Z", - "shell.execute_reply": "2026-08-03T03:45:18.650903Z" + "iopub.execute_input": "2026-08-03T04:24:17.151029Z", + "iopub.status.busy": "2026-08-03T04:24:17.150949Z", + "iopub.status.idle": "2026-08-03T04:24:17.285758Z", + "shell.execute_reply": "2026-08-03T04:24:17.285345Z" } }, "outputs": [ @@ -1302,7 +1302,7 @@ }, { "cell_type": "markdown", - "id": "3bfe6e40", + "id": "7724e651", "metadata": {}, "source": [ "Crude, and it needs nothing extra. With `py3Dmol` installed the default backend\n", @@ -1319,13 +1319,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "50b99782", + "id": "946421a4", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.652189Z", - "iopub.status.busy": "2026-08-03T03:45:18.652097Z", - "iopub.status.idle": "2026-08-03T03:45:18.696313Z", - "shell.execute_reply": "2026-08-03T03:45:18.695910Z" + "iopub.execute_input": "2026-08-03T04:24:17.286624Z", + "iopub.status.busy": "2026-08-03T04:24:17.286528Z", + "iopub.status.idle": "2026-08-03T04:24:17.330855Z", + "shell.execute_reply": "2026-08-03T04:24:17.330481Z" } }, "outputs": [ @@ -1419,7 +1419,7 @@ }, { "cell_type": "markdown", - "id": "84df520b", + "id": "3578195f", "metadata": {}, "source": [ "QC, composition descriptors and even a calculator run unmodified. EMT is\n", @@ -1435,13 +1435,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "5faa98e4", + "id": "ff0ebdb4", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.697079Z", - "iopub.status.busy": "2026-08-03T03:45:18.696994Z", - "iopub.status.idle": "2026-08-03T03:45:18.702938Z", - "shell.execute_reply": "2026-08-03T03:45:18.702593Z" + "iopub.execute_input": "2026-08-03T04:24:17.331676Z", + "iopub.status.busy": "2026-08-03T04:24:17.331592Z", + "iopub.status.idle": "2026-08-03T04:24:17.337959Z", + "shell.execute_reply": "2026-08-03T04:24:17.337597Z" } }, "outputs": [ @@ -1462,7 +1462,7 @@ }, { "cell_type": "markdown", - "id": "298d1966", + "id": "30b50e1b", "metadata": {}, "source": [ "```{seealso}\n", @@ -1474,7 +1474,7 @@ }, { "cell_type": "markdown", - "id": "d231c270", + "id": "fead71e1", "metadata": {}, "source": [ "## Are the bonds the right length?\n", @@ -1489,13 +1489,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "79c66884", + "id": "9b7ade96", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.703704Z", - "iopub.status.busy": "2026-08-03T03:45:18.703591Z", - "iopub.status.idle": "2026-08-03T03:45:18.720829Z", - "shell.execute_reply": "2026-08-03T03:45:18.720306Z" + "iopub.execute_input": "2026-08-03T04:24:17.338773Z", + "iopub.status.busy": "2026-08-03T04:24:17.338684Z", + "iopub.status.idle": "2026-08-03T04:24:17.355449Z", + "shell.execute_reply": "2026-08-03T04:24:17.355053Z" } }, "outputs": [ @@ -1595,7 +1595,7 @@ }, { "cell_type": "markdown", - "id": "d54d5f62", + "id": "f83eef73", "metadata": {}, "source": [ "Water comes out at **zero** deviation, because it was built at exactly the\n", @@ -1617,7 +1617,7 @@ }, { "cell_type": "markdown", - "id": "2670aa83", + "id": "61635417", "metadata": {}, "source": [ "## Two questions that both mean \"the same molecule\"\n", @@ -1633,13 +1633,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "9a9af95e", + "id": "f8102eaa", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.721796Z", - "iopub.status.busy": "2026-08-03T03:45:18.721698Z", - "iopub.status.idle": "2026-08-03T03:45:18.732665Z", - "shell.execute_reply": "2026-08-03T03:45:18.732257Z" + "iopub.execute_input": "2026-08-03T04:24:17.356277Z", + "iopub.status.busy": "2026-08-03T04:24:17.356185Z", + "iopub.status.idle": "2026-08-03T04:24:17.366618Z", + "shell.execute_reply": "2026-08-03T04:24:17.366259Z" } }, "outputs": [ @@ -1669,7 +1669,7 @@ }, { "cell_type": "markdown", - "id": "c78dc730", + "id": "afe6190d", "metadata": {}, "source": [ "**Geometry says two molecules. Topology says one.**\n", @@ -1686,7 +1686,7 @@ }, { "cell_type": "markdown", - "id": "c2d9b5ea", + "id": "2c55cec4", "metadata": {}, "source": [ "## Which bond breaks first\n", @@ -1700,13 +1700,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "69190cc9", + "id": "477e3af8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.733434Z", - "iopub.status.busy": "2026-08-03T03:45:18.733349Z", - "iopub.status.idle": "2026-08-03T03:45:18.756124Z", - "shell.execute_reply": "2026-08-03T03:45:18.755735Z" + "iopub.execute_input": "2026-08-03T04:24:17.367441Z", + "iopub.status.busy": "2026-08-03T04:24:17.367350Z", + "iopub.status.idle": "2026-08-03T04:24:17.390618Z", + "shell.execute_reply": "2026-08-03T04:24:17.390222Z" } }, "outputs": [ @@ -1829,7 +1829,7 @@ }, { "cell_type": "markdown", - "id": "5b00f616", + "id": "e4d498cd", "metadata": {}, "source": [ "Eight bonds, one row each, every one named. With the placeholder energies above\n", @@ -1854,7 +1854,7 @@ }, { "cell_type": "markdown", - "id": "d155f60e", + "id": "e620ac8b", "metadata": {}, "source": [ "## What is actually on the molecule\n", @@ -1871,13 +1871,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "0775b602", + "id": "b32e0247", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.756929Z", - "iopub.status.busy": "2026-08-03T03:45:18.756833Z", - "iopub.status.idle": "2026-08-03T03:45:18.767403Z", - "shell.execute_reply": "2026-08-03T03:45:18.766923Z" + "iopub.execute_input": "2026-08-03T04:24:17.391608Z", + "iopub.status.busy": "2026-08-03T04:24:17.391457Z", + "iopub.status.idle": "2026-08-03T04:24:17.401834Z", + "shell.execute_reply": "2026-08-03T04:24:17.401478Z" } }, "outputs": [ @@ -1916,7 +1916,7 @@ }, { "cell_type": "markdown", - "id": "491804ba", + "id": "272e214a", "metadata": {}, "source": [ "Ethanol comes back as `[CH3];[OH]` — a methyl and a hydroxyl, which is what it\n", @@ -1939,7 +1939,7 @@ }, { "cell_type": "markdown", - "id": "57256e95", + "id": "62f1961f", "metadata": {}, "source": [ "## Free energies, and the mode you trust least\n", @@ -1957,13 +1957,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "44112148", + "id": "ed3c5c1b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:45:18.768191Z", - "iopub.status.busy": "2026-08-03T03:45:18.768105Z", - "iopub.status.idle": "2026-08-03T03:45:18.778868Z", - "shell.execute_reply": "2026-08-03T03:45:18.778478Z" + "iopub.execute_input": "2026-08-03T04:24:17.402711Z", + "iopub.status.busy": "2026-08-03T04:24:17.402626Z", + "iopub.status.idle": "2026-08-03T04:24:17.413226Z", + "shell.execute_reply": "2026-08-03T04:24:17.412786Z" } }, "outputs": [ @@ -2042,7 +2042,7 @@ }, { "cell_type": "markdown", - "id": "686b38ca", + "id": "e629b950", "metadata": {}, "source": [ "Same molecule, same energy, one mode moved. The stiff case agrees to four\n", diff --git a/matverse_guide/docs/tutorials/screening.ipynb b/matverse_guide/docs/tutorials/screening.ipynb index fc70e7d..0f95626 100644 --- a/matverse_guide/docs/tutorials/screening.ipynb +++ b/matverse_guide/docs/tutorials/screening.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "9212687d", + "id": "fb79cc70", "metadata": {}, "source": [ "# Screening, end to end\n", @@ -26,13 +26,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "1aaef6f2", + "id": "c068cbe5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:50.900930Z", - "iopub.status.busy": "2026-08-03T03:40:50.900848Z", - "iopub.status.idle": "2026-08-03T03:40:54.335645Z", - "shell.execute_reply": "2026-08-03T03:40:54.335159Z" + "iopub.execute_input": "2026-08-03T04:19:50.750675Z", + "iopub.status.busy": "2026-08-03T04:19:50.750591Z", + "iopub.status.idle": "2026-08-03T04:19:54.037992Z", + "shell.execute_reply": "2026-08-03T04:19:54.037516Z" } }, "outputs": [ @@ -63,7 +63,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -78,7 +78,7 @@ }, { "cell_type": "markdown", - "id": "85a842bd", + "id": "367f56fe", "metadata": {}, "source": [ "## Build a dataset\n", @@ -90,13 +90,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "faa30662", + "id": "ace9b9e9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.336834Z", - "iopub.status.busy": "2026-08-03T03:40:54.336573Z", - "iopub.status.idle": "2026-08-03T03:40:54.384090Z", - "shell.execute_reply": "2026-08-03T03:40:54.383678Z" + "iopub.execute_input": "2026-08-03T04:19:54.039072Z", + "iopub.status.busy": "2026-08-03T04:19:54.038817Z", + "iopub.status.idle": "2026-08-03T04:19:54.086162Z", + "shell.execute_reply": "2026-08-03T04:19:54.085786Z" } }, "outputs": [ @@ -164,7 +164,7 @@ }, { "cell_type": "markdown", - "id": "aaafb9a3", + "id": "4e5f4a45", "metadata": {}, "source": [ "The candidates are L1₂ orderings of the same three elements, plus a B2 AlNi.\n", @@ -175,13 +175,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "1738edf6", + "id": "184590c3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.384918Z", - "iopub.status.busy": "2026-08-03T03:40:54.384822Z", - "iopub.status.idle": "2026-08-03T03:40:54.387724Z", - "shell.execute_reply": "2026-08-03T03:40:54.387393Z" + "iopub.execute_input": "2026-08-03T04:19:54.087026Z", + "iopub.status.busy": "2026-08-03T04:19:54.086927Z", + "iopub.status.idle": "2026-08-03T04:19:54.089800Z", + "shell.execute_reply": "2026-08-03T04:19:54.089486Z" } }, "outputs": [], @@ -212,7 +212,7 @@ }, { "cell_type": "markdown", - "id": "dbef20c7", + "id": "0ce2186f", "metadata": {}, "source": [ "Put the published elementals and the candidates into one object. Building it in\n", @@ -223,13 +223,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "d41c45be", + "id": "38092ac3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.388431Z", - "iopub.status.busy": "2026-08-03T03:40:54.388346Z", - "iopub.status.idle": "2026-08-03T03:40:54.395231Z", - "shell.execute_reply": "2026-08-03T03:40:54.394866Z" + "iopub.execute_input": "2026-08-03T04:19:54.090505Z", + "iopub.status.busy": "2026-08-03T04:19:54.090421Z", + "iopub.status.idle": "2026-08-03T04:19:54.097118Z", + "shell.execute_reply": "2026-08-03T04:19:54.096806Z" } }, "outputs": [ @@ -255,7 +255,7 @@ }, { "cell_type": "markdown", - "id": "0706d523", + "id": "682ffced", "metadata": {}, "source": [ "Seven materials, three elements. `X` is already the composition matrix and `var`\n", @@ -276,13 +276,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "b33b6a38", + "id": "3915face", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.396014Z", - "iopub.status.busy": "2026-08-03T03:40:54.395927Z", - "iopub.status.idle": "2026-08-03T03:40:54.525759Z", - "shell.execute_reply": "2026-08-03T03:40:54.525361Z" + "iopub.execute_input": "2026-08-03T04:19:54.098026Z", + "iopub.status.busy": "2026-08-03T04:19:54.097940Z", + "iopub.status.idle": "2026-08-03T04:19:54.228189Z", + "shell.execute_reply": "2026-08-03T04:19:54.227797Z" } }, "outputs": [ @@ -384,7 +384,7 @@ }, { "cell_type": "markdown", - "id": "a8d14caf", + "id": "daa2d251", "metadata": {}, "source": [ "`standardize` deposits two new structure variants rather than replacing the\n", @@ -394,13 +394,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "7fe9419a", + "id": "6ceb2965", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.526653Z", - "iopub.status.busy": "2026-08-03T03:40:54.526562Z", - "iopub.status.idle": "2026-08-03T03:40:54.528776Z", - "shell.execute_reply": "2026-08-03T03:40:54.528422Z" + "iopub.execute_input": "2026-08-03T04:19:54.229033Z", + "iopub.status.busy": "2026-08-03T04:19:54.228932Z", + "iopub.status.idle": "2026-08-03T04:19:54.231073Z", + "shell.execute_reply": "2026-08-03T04:19:54.230770Z" } }, "outputs": [ @@ -421,7 +421,7 @@ }, { "cell_type": "markdown", - "id": "56b4ce27", + "id": "d27e4abe", "metadata": {}, "source": [ "## Throw out what is broken\n", @@ -435,13 +435,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "36305bd8", + "id": "c04849da", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.529523Z", - "iopub.status.busy": "2026-08-03T03:40:54.529421Z", - "iopub.status.idle": "2026-08-03T03:40:54.782676Z", - "shell.execute_reply": "2026-08-03T03:40:54.782232Z" + "iopub.execute_input": "2026-08-03T04:19:54.231771Z", + "iopub.status.busy": "2026-08-03T04:19:54.231690Z", + "iopub.status.idle": "2026-08-03T04:19:54.486291Z", + "shell.execute_reply": "2026-08-03T04:19:54.485929Z" } }, "outputs": [ @@ -558,13 +558,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "8367565e", + "id": "fb0336ee", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.783567Z", - "iopub.status.busy": "2026-08-03T03:40:54.783467Z", - "iopub.status.idle": "2026-08-03T03:40:54.790232Z", - "shell.execute_reply": "2026-08-03T03:40:54.789843Z" + "iopub.execute_input": "2026-08-03T04:19:54.487222Z", + "iopub.status.busy": "2026-08-03T04:19:54.487122Z", + "iopub.status.idle": "2026-08-03T04:19:54.493381Z", + "shell.execute_reply": "2026-08-03T04:19:54.493075Z" } }, "outputs": [ @@ -586,7 +586,7 @@ }, { "cell_type": "markdown", - "id": "6ba22bf6", + "id": "606c314a", "metadata": {}, "source": [ "This is one of the few calls that returns instead of depositing, because AnnData\n", @@ -598,13 +598,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "220cc9ec", + "id": "7a141976", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.791033Z", - "iopub.status.busy": "2026-08-03T03:40:54.790940Z", - "iopub.status.idle": "2026-08-03T03:40:54.829893Z", - "shell.execute_reply": "2026-08-03T03:40:54.829445Z" + "iopub.execute_input": "2026-08-03T04:19:54.494097Z", + "iopub.status.busy": "2026-08-03T04:19:54.494014Z", + "iopub.status.idle": "2026-08-03T04:19:54.533357Z", + "shell.execute_reply": "2026-08-03T04:19:54.532985Z" } }, "outputs": [ @@ -631,7 +631,7 @@ }, { "cell_type": "markdown", - "id": "255cf2a6", + "id": "98886b2e", "metadata": {}, "source": [ "`dedup` blocks on `(reduced formula, space group)` before running pymatgen's\n", @@ -645,13 +645,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "01c374c4", + "id": "7c94bc7f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:54.830822Z", - "iopub.status.busy": "2026-08-03T03:40:54.830724Z", - "iopub.status.idle": "2026-08-03T03:40:55.057103Z", - "shell.execute_reply": "2026-08-03T03:40:55.056652Z" + "iopub.execute_input": "2026-08-03T04:19:54.534134Z", + "iopub.status.busy": "2026-08-03T04:19:54.534048Z", + "iopub.status.idle": "2026-08-03T04:19:54.760585Z", + "shell.execute_reply": "2026-08-03T04:19:54.760230Z" } }, "outputs": [ @@ -761,7 +761,7 @@ }, { "cell_type": "markdown", - "id": "09004f89", + "id": "1a5ff474", "metadata": {}, "source": [ "The relaxed geometry becomes its own variant, `relaxed_emt`, rather than\n", @@ -774,13 +774,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "db8a628d", + "id": "2b86ad9f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:55.057977Z", - "iopub.status.busy": "2026-08-03T03:40:55.057886Z", - "iopub.status.idle": "2026-08-03T03:40:55.060175Z", - "shell.execute_reply": "2026-08-03T03:40:55.059818Z" + "iopub.execute_input": "2026-08-03T04:19:54.761547Z", + "iopub.status.busy": "2026-08-03T04:19:54.761459Z", + "iopub.status.idle": "2026-08-03T04:19:54.763661Z", + "shell.execute_reply": "2026-08-03T04:19:54.763396Z" } }, "outputs": [ @@ -812,7 +812,7 @@ }, { "cell_type": "markdown", - "id": "6e99e252", + "id": "458ff0d3", "metadata": {}, "source": [ "`surrogate: True` and `license: 'LGPL-2.1'` are not decoration. The first is\n", @@ -826,13 +826,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "43fcd10e", + "id": "f95c1fa8", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:55.060983Z", - "iopub.status.busy": "2026-08-03T03:40:55.060898Z", - "iopub.status.idle": "2026-08-03T03:40:55.686436Z", - "shell.execute_reply": "2026-08-03T03:40:55.685987Z" + "iopub.execute_input": "2026-08-03T04:19:54.764387Z", + "iopub.status.busy": "2026-08-03T04:19:54.764307Z", + "iopub.status.idle": "2026-08-03T04:19:55.407166Z", + "shell.execute_reply": "2026-08-03T04:19:55.406768Z" } }, "outputs": [ @@ -942,7 +942,7 @@ }, { "cell_type": "markdown", - "id": "cd8300ab", + "id": "a34c2cf7", "metadata": {}, "source": [ "```{warning}\n", @@ -971,13 +971,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "7aadb074", + "id": "fb58c8e0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:55.687335Z", - "iopub.status.busy": "2026-08-03T03:40:55.687232Z", - "iopub.status.idle": "2026-08-03T03:40:55.836512Z", - "shell.execute_reply": "2026-08-03T03:40:55.836081Z" + "iopub.execute_input": "2026-08-03T04:19:55.408111Z", + "iopub.status.busy": "2026-08-03T04:19:55.408007Z", + "iopub.status.idle": "2026-08-03T04:19:55.561247Z", + "shell.execute_reply": "2026-08-03T04:19:55.560880Z" } }, "outputs": [ @@ -1003,7 +1003,7 @@ }, { "cell_type": "markdown", - "id": "1b92a536", + "id": "ae3fffdd", "metadata": {}, "source": [ "The hull plot labels itself when the hull is closed, because a convex hull drawn\n", @@ -1018,13 +1018,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "63c2d062", + "id": "40044c8d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:55.837356Z", - "iopub.status.busy": "2026-08-03T03:40:55.837265Z", - "iopub.status.idle": "2026-08-03T03:40:55.839459Z", - "shell.execute_reply": "2026-08-03T03:40:55.839133Z" + "iopub.execute_input": "2026-08-03T04:19:55.562317Z", + "iopub.status.busy": "2026-08-03T04:19:55.562204Z", + "iopub.status.idle": "2026-08-03T04:19:55.564458Z", + "shell.execute_reply": "2026-08-03T04:19:55.564128Z" } }, "outputs": [ @@ -1045,7 +1045,7 @@ }, { "cell_type": "markdown", - "id": "c7fee789", + "id": "ea15da74", "metadata": {}, "source": [ "The object records which kind of number you have, so a later reader does not\n", @@ -1077,13 +1077,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "0210aac2", + "id": "9c5980f9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:55.840193Z", - "iopub.status.busy": "2026-08-03T03:40:55.840060Z", - "iopub.status.idle": "2026-08-03T03:40:56.005478Z", - "shell.execute_reply": "2026-08-03T03:40:56.005040Z" + "iopub.execute_input": "2026-08-03T04:19:55.565230Z", + "iopub.status.busy": "2026-08-03T04:19:55.565141Z", + "iopub.status.idle": "2026-08-03T04:19:55.732500Z", + "shell.execute_reply": "2026-08-03T04:19:55.732162Z" } }, "outputs": [ @@ -1182,7 +1182,7 @@ }, { "cell_type": "markdown", - "id": "6e0474eb", + "id": "90cbd4db", "metadata": {}, "source": [ "Three rows, three different answers, none of them small.\n", @@ -1211,13 +1211,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "aab5bb77", + "id": "68da2da1", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.006310Z", - "iopub.status.busy": "2026-08-03T03:40:56.006213Z", - "iopub.status.idle": "2026-08-03T03:40:56.008384Z", - "shell.execute_reply": "2026-08-03T03:40:56.008056Z" + "iopub.execute_input": "2026-08-03T04:19:55.733366Z", + "iopub.status.busy": "2026-08-03T04:19:55.733276Z", + "iopub.status.idle": "2026-08-03T04:19:55.735416Z", + "shell.execute_reply": "2026-08-03T04:19:55.735129Z" } }, "outputs": [ @@ -1245,7 +1245,7 @@ }, { "cell_type": "markdown", - "id": "567730ae", + "id": "865431cf", "metadata": {}, "source": [ "### What it would cost, and whether you could get it\n", @@ -1257,13 +1257,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "e96bb122", + "id": "b755ab57", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.009054Z", - "iopub.status.busy": "2026-08-03T03:40:56.008974Z", - "iopub.status.idle": "2026-08-03T03:40:56.497884Z", - "shell.execute_reply": "2026-08-03T03:40:56.497466Z" + "iopub.execute_input": "2026-08-03T04:19:55.736083Z", + "iopub.status.busy": "2026-08-03T04:19:55.736003Z", + "iopub.status.idle": "2026-08-03T04:19:56.242459Z", + "shell.execute_reply": "2026-08-03T04:19:56.242013Z" } }, "outputs": [ @@ -1346,7 +1346,7 @@ }, { "cell_type": "markdown", - "id": "006048d5", + "id": "a7efa518", "metadata": {}, "source": [ "`cost_per_kg` is raw-material cost from elemental prices — not synthesis, not\n", @@ -1366,13 +1366,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "3e6e8f31", + "id": "1430c21e", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.498773Z", - "iopub.status.busy": "2026-08-03T03:40:56.498681Z", - "iopub.status.idle": "2026-08-03T03:40:56.525437Z", - "shell.execute_reply": "2026-08-03T03:40:56.525032Z" + "iopub.execute_input": "2026-08-03T04:19:56.243563Z", + "iopub.status.busy": "2026-08-03T04:19:56.243474Z", + "iopub.status.idle": "2026-08-03T04:19:56.270197Z", + "shell.execute_reply": "2026-08-03T04:19:56.269840Z" } }, "outputs": [ @@ -1394,7 +1394,7 @@ }, { "cell_type": "markdown", - "id": "638d328c", + "id": "924f3d8c", "metadata": {}, "source": [ "And since the diffraction pattern is on the same grid convention, a neutron\n", @@ -1405,7 +1405,7 @@ }, { "cell_type": "markdown", - "id": "af57573d", + "id": "ccf96b71", "metadata": {}, "source": [ "### Stable, and stable *when*\n", @@ -1418,13 +1418,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "b8cd6793", + "id": "7713bd6f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.526237Z", - "iopub.status.busy": "2026-08-03T03:40:56.526148Z", - "iopub.status.idle": "2026-08-03T03:40:56.607697Z", - "shell.execute_reply": "2026-08-03T03:40:56.607258Z" + "iopub.execute_input": "2026-08-03T04:19:56.271050Z", + "iopub.status.busy": "2026-08-03T04:19:56.270962Z", + "iopub.status.idle": "2026-08-03T04:19:56.353927Z", + "shell.execute_reply": "2026-08-03T04:19:56.353549Z" } }, "outputs": [ @@ -1518,7 +1518,7 @@ }, { "cell_type": "markdown", - "id": "9ced1a45", + "id": "7866e608", "metadata": {}, "source": [ "`chempot_window` is the extent of the region in chemical potential space where\n", @@ -1550,13 +1550,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "57ddac1a", + "id": "bcf3a2ff", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.608606Z", - "iopub.status.busy": "2026-08-03T03:40:56.608457Z", - "iopub.status.idle": "2026-08-03T03:40:56.611031Z", - "shell.execute_reply": "2026-08-03T03:40:56.610667Z" + "iopub.execute_input": "2026-08-03T04:19:56.354743Z", + "iopub.status.busy": "2026-08-03T04:19:56.354657Z", + "iopub.status.idle": "2026-08-03T04:19:56.357070Z", + "shell.execute_reply": "2026-08-03T04:19:56.356761Z" } }, "outputs": [ @@ -1578,7 +1578,7 @@ }, { "cell_type": "markdown", - "id": "90ee4620", + "id": "a816556c", "metadata": {}, "source": [ "It refuses without a key, and the message says why rather than returning zeros.\n", @@ -1591,7 +1591,7 @@ }, { "cell_type": "markdown", - "id": "5d7cab3b", + "id": "dd8787e3", "metadata": {}, "source": [ "Ask for something light and not too far above the hull — two criteria that pull\n", @@ -1601,13 +1601,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "8f27ce24", + "id": "0b853932", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.611840Z", - "iopub.status.busy": "2026-08-03T03:40:56.611692Z", - "iopub.status.idle": "2026-08-03T03:40:56.614489Z", - "shell.execute_reply": "2026-08-03T03:40:56.614154Z" + "iopub.execute_input": "2026-08-03T04:19:56.357763Z", + "iopub.status.busy": "2026-08-03T04:19:56.357679Z", + "iopub.status.idle": "2026-08-03T04:19:56.360263Z", + "shell.execute_reply": "2026-08-03T04:19:56.359985Z" } }, "outputs": [ @@ -1633,13 +1633,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "35128225", + "id": "8ae41d82", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.615211Z", - "iopub.status.busy": "2026-08-03T03:40:56.615124Z", - "iopub.status.idle": "2026-08-03T03:40:56.619992Z", - "shell.execute_reply": "2026-08-03T03:40:56.619634Z" + "iopub.execute_input": "2026-08-03T04:19:56.360974Z", + "iopub.status.busy": "2026-08-03T04:19:56.360892Z", + "iopub.status.idle": "2026-08-03T04:19:56.365829Z", + "shell.execute_reply": "2026-08-03T04:19:56.365523Z" } }, "outputs": [ @@ -1747,13 +1747,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "f7140782", + "id": "b506b721", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.620772Z", - "iopub.status.busy": "2026-08-03T03:40:56.620632Z", - "iopub.status.idle": "2026-08-03T03:40:56.755183Z", - "shell.execute_reply": "2026-08-03T03:40:56.754722Z" + "iopub.execute_input": "2026-08-03T04:19:56.366538Z", + "iopub.status.busy": "2026-08-03T04:19:56.366458Z", + "iopub.status.idle": "2026-08-03T04:19:56.499100Z", + "shell.execute_reply": "2026-08-03T04:19:56.498765Z" } }, "outputs": [ @@ -1793,7 +1793,7 @@ }, { "cell_type": "markdown", - "id": "4a383bf3", + "id": "fab32dee", "metadata": {}, "source": [ "Cu and Ni sit at zero and are still grey — they failed on density, not on\n", @@ -1804,7 +1804,7 @@ }, { "cell_type": "markdown", - "id": "693b5698", + "id": "e36ffd87", "metadata": {}, "source": [ "The screen deposits a boolean column and the criteria that produced it. It does\n", @@ -1821,13 +1821,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "60dc2e84", + "id": "ac5cc9f0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.756079Z", - "iopub.status.busy": "2026-08-03T03:40:56.755985Z", - "iopub.status.idle": "2026-08-03T03:40:56.762453Z", - "shell.execute_reply": "2026-08-03T03:40:56.762061Z" + "iopub.execute_input": "2026-08-03T04:19:56.500161Z", + "iopub.status.busy": "2026-08-03T04:19:56.500072Z", + "iopub.status.idle": "2026-08-03T04:19:56.506254Z", + "shell.execute_reply": "2026-08-03T04:19:56.505948Z" } }, "outputs": [ @@ -1944,7 +1944,7 @@ }, { "cell_type": "markdown", - "id": "4f2b16a7", + "id": "3fb5dcd1", "metadata": {}, "source": [ "`pareto_rank` keeps the second-best trade-offs reachable instead of discarding\n", @@ -1956,13 +1956,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "c9a3e2f4", + "id": "710d0d1f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.763227Z", - "iopub.status.busy": "2026-08-03T03:40:56.763139Z", - "iopub.status.idle": "2026-08-03T03:40:56.768388Z", - "shell.execute_reply": "2026-08-03T03:40:56.768019Z" + "iopub.execute_input": "2026-08-03T04:19:56.506964Z", + "iopub.status.busy": "2026-08-03T04:19:56.506880Z", + "iopub.status.idle": "2026-08-03T04:19:56.511884Z", + "shell.execute_reply": "2026-08-03T04:19:56.511574Z" } }, "outputs": [ @@ -2062,7 +2062,7 @@ }, { "cell_type": "markdown", - "id": "a715df43", + "id": "d0ffb336", "metadata": {}, "source": [ "## Is the reaction downhill?\n", @@ -2075,13 +2075,13 @@ { "cell_type": "code", "execution_count": 26, - "id": "6108f886", + "id": "1ceade3d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.769120Z", - "iopub.status.busy": "2026-08-03T03:40:56.769033Z", - "iopub.status.idle": "2026-08-03T03:40:56.772495Z", - "shell.execute_reply": "2026-08-03T03:40:56.772109Z" + "iopub.execute_input": "2026-08-03T04:19:56.512600Z", + "iopub.status.busy": "2026-08-03T04:19:56.512518Z", + "iopub.status.idle": "2026-08-03T04:19:56.515740Z", + "shell.execute_reply": "2026-08-03T04:19:56.515445Z" } }, "outputs": [ @@ -2108,7 +2108,7 @@ }, { "cell_type": "markdown", - "id": "54abd506", + "id": "970e97b5", "metadata": {}, "source": [ "`favourable: False` and a positive energy — EMT again saying no intermetallic is\n", @@ -2120,13 +2120,13 @@ { "cell_type": "code", "execution_count": 27, - "id": "5ece7fec", + "id": "f4ba5953", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.773213Z", - "iopub.status.busy": "2026-08-03T03:40:56.773127Z", - "iopub.status.idle": "2026-08-03T03:40:56.891271Z", - "shell.execute_reply": "2026-08-03T03:40:56.890837Z" + "iopub.execute_input": "2026-08-03T04:19:56.516427Z", + "iopub.status.busy": "2026-08-03T04:19:56.516351Z", + "iopub.status.idle": "2026-08-03T04:19:56.633799Z", + "shell.execute_reply": "2026-08-03T04:19:56.633418Z" } }, "outputs": [ @@ -2163,7 +2163,7 @@ }, { "cell_type": "markdown", - "id": "c6ef62c6", + "id": "8790b3e6", "metadata": {}, "source": [ "## What the object remembers" @@ -2172,13 +2172,13 @@ { "cell_type": "code", "execution_count": 28, - "id": "2ec04775", + "id": "ae57ea43", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.892145Z", - "iopub.status.busy": "2026-08-03T03:40:56.892051Z", - "iopub.status.idle": "2026-08-03T03:40:56.894109Z", - "shell.execute_reply": "2026-08-03T03:40:56.893781Z" + "iopub.execute_input": "2026-08-03T04:19:56.634636Z", + "iopub.status.busy": "2026-08-03T04:19:56.634549Z", + "iopub.status.idle": "2026-08-03T04:19:56.636511Z", + "shell.execute_reply": "2026-08-03T04:19:56.636228Z" } }, "outputs": [ @@ -2209,13 +2209,13 @@ { "cell_type": "code", "execution_count": 29, - "id": "f9ef80ce", + "id": "44a91e2c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:40:56.894802Z", - "iopub.status.busy": "2026-08-03T03:40:56.894719Z", - "iopub.status.idle": "2026-08-03T03:40:57.072824Z", - "shell.execute_reply": "2026-08-03T03:40:57.072369Z" + "iopub.execute_input": "2026-08-03T04:19:56.637167Z", + "iopub.status.busy": "2026-08-03T04:19:56.637086Z", + "iopub.status.idle": "2026-08-03T04:19:56.813960Z", + "shell.execute_reply": "2026-08-03T04:19:56.813564Z" } }, "outputs": [ @@ -2241,7 +2241,7 @@ }, { "cell_type": "markdown", - "id": "ac75bcf2", + "id": "58a9cace", "metadata": {}, "source": [ "Parameters are recorded with each call, so the history replays as code rather\n", diff --git a/matverse_guide/docs/tutorials/structure_and_bands.ipynb b/matverse_guide/docs/tutorials/structure_and_bands.ipynb index 2c7b6e7..1d8d181 100644 --- a/matverse_guide/docs/tutorials/structure_and_bands.ipynb +++ b/matverse_guide/docs/tutorials/structure_and_bands.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "3aec3a88", + "id": "67a06875", "metadata": {}, "source": [ "# Local environments and electronic structure\n", @@ -26,13 +26,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "e21b7a1a", + "id": "0c073434", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:43:59.243057Z", - "iopub.status.busy": "2026-08-03T03:43:59.242974Z", - "iopub.status.idle": "2026-08-03T03:44:02.325783Z", - "shell.execute_reply": "2026-08-03T03:44:02.325349Z" + "iopub.execute_input": "2026-08-03T04:22:59.512309Z", + "iopub.status.busy": "2026-08-03T04:22:59.512220Z", + "iopub.status.idle": "2026-08-03T04:23:02.505307Z", + "shell.execute_reply": "2026-08-03T04:23:02.504856Z" } }, "outputs": [ @@ -63,7 +63,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -79,7 +79,7 @@ }, { "cell_type": "markdown", - "id": "08c0e70c", + "id": "7c406821", "metadata": {}, "source": [ "That report is the point of `mv.pl.set_style` doing more than set rcParams:\n", @@ -98,13 +98,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "e08cb942", + "id": "f5904731", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:02.326940Z", - "iopub.status.busy": "2026-08-03T03:44:02.326683Z", - "iopub.status.idle": "2026-08-03T03:44:02.409693Z", - "shell.execute_reply": "2026-08-03T03:44:02.409317Z" + "iopub.execute_input": "2026-08-03T04:23:02.506635Z", + "iopub.status.busy": "2026-08-03T04:23:02.506377Z", + "iopub.status.idle": "2026-08-03T04:23:02.591028Z", + "shell.execute_reply": "2026-08-03T04:23:02.590621Z" } }, "outputs": [ @@ -166,7 +166,7 @@ }, { "cell_type": "markdown", - "id": "3e66e60b", + "id": "daaa58e5", "metadata": {}, "source": [ "## Coordination: the sites axis again\n", @@ -178,13 +178,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "55255f36", + "id": "fdbce3a5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:02.410523Z", - "iopub.status.busy": "2026-08-03T03:44:02.410422Z", - "iopub.status.idle": "2026-08-03T03:44:03.189684Z", - "shell.execute_reply": "2026-08-03T03:44:03.189281Z" + "iopub.execute_input": "2026-08-03T04:23:02.591926Z", + "iopub.status.busy": "2026-08-03T04:23:02.591826Z", + "iopub.status.idle": "2026-08-03T04:23:03.370578Z", + "shell.execute_reply": "2026-08-03T04:23:03.370168Z" } }, "outputs": [ @@ -214,7 +214,7 @@ }, { "cell_type": "markdown", - "id": "f7d2d08d", + "id": "1311e5c2", "metadata": {}, "source": [ "**Li 6, Fe 6, P 4, O 4** — the published olivine coordination, recovered from\n", @@ -229,13 +229,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "5bc299d4", + "id": "00791503", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:03.190660Z", - "iopub.status.busy": "2026-08-03T03:44:03.190556Z", - "iopub.status.idle": "2026-08-03T03:44:03.192756Z", - "shell.execute_reply": "2026-08-03T03:44:03.192461Z" + "iopub.execute_input": "2026-08-03T04:23:03.371617Z", + "iopub.status.busy": "2026-08-03T04:23:03.371519Z", + "iopub.status.idle": "2026-08-03T04:23:03.373732Z", + "shell.execute_reply": "2026-08-03T04:23:03.373422Z" } }, "outputs": [ @@ -261,13 +261,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "10aa56df", + "id": "fd727356", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:03.193523Z", - "iopub.status.busy": "2026-08-03T03:44:03.193441Z", - "iopub.status.idle": "2026-08-03T03:44:03.247079Z", - "shell.execute_reply": "2026-08-03T03:44:03.246535Z" + "iopub.execute_input": "2026-08-03T04:23:03.374499Z", + "iopub.status.busy": "2026-08-03T04:23:03.374413Z", + "iopub.status.idle": "2026-08-03T04:23:03.428454Z", + "shell.execute_reply": "2026-08-03T04:23:03.428041Z" } }, "outputs": [ @@ -354,7 +354,7 @@ }, { "cell_type": "markdown", - "id": "d56a8c2c", + "id": "3c7dfa43", "metadata": {}, "source": [ "## A number is not a shape\n", @@ -369,13 +369,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "816f629e", + "id": "ea003c4b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:03.247966Z", - "iopub.status.busy": "2026-08-03T03:44:03.247876Z", - "iopub.status.idle": "2026-08-03T03:44:03.952532Z", - "shell.execute_reply": "2026-08-03T03:44:03.952105Z" + "iopub.execute_input": "2026-08-03T04:23:03.429322Z", + "iopub.status.busy": "2026-08-03T04:23:03.429225Z", + "iopub.status.idle": "2026-08-03T04:23:04.142000Z", + "shell.execute_reply": "2026-08-03T04:23:04.141602Z" } }, "outputs": [ @@ -512,13 +512,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "60d03401", + "id": "bb938387", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:03.953409Z", - "iopub.status.busy": "2026-08-03T03:44:03.953320Z", - "iopub.status.idle": "2026-08-03T03:44:03.957017Z", - "shell.execute_reply": "2026-08-03T03:44:03.956587Z" + "iopub.execute_input": "2026-08-03T04:23:04.142977Z", + "iopub.status.busy": "2026-08-03T04:23:04.142884Z", + "iopub.status.idle": "2026-08-03T04:23:04.146786Z", + "shell.execute_reply": "2026-08-03T04:23:04.146409Z" } }, "outputs": [ @@ -545,7 +545,7 @@ }, { "cell_type": "markdown", - "id": "88052c03", + "id": "2ee4f4fc", "metadata": {}, "source": [ "This is the structural story of an olivine cathode, in one column.\n", @@ -562,13 +562,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "1ced2641", + "id": "f94a087b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:03.957765Z", - "iopub.status.busy": "2026-08-03T03:44:03.957684Z", - "iopub.status.idle": "2026-08-03T03:44:04.055143Z", - "shell.execute_reply": "2026-08-03T03:44:04.054730Z" + "iopub.execute_input": "2026-08-03T04:23:04.147567Z", + "iopub.status.busy": "2026-08-03T04:23:04.147477Z", + "iopub.status.idle": "2026-08-03T04:23:04.245528Z", + "shell.execute_reply": "2026-08-03T04:23:04.245085Z" } }, "outputs": [ @@ -611,7 +611,7 @@ }, { "cell_type": "markdown", - "id": "71f78ff7", + "id": "68a52c82", "metadata": {}, "source": [ "## The bond network belongs in `obsp`\n", @@ -624,13 +624,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "8c73773e", + "id": "178bbbc4", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:04.056014Z", - "iopub.status.busy": "2026-08-03T03:44:04.055919Z", - "iopub.status.idle": "2026-08-03T03:44:04.212138Z", - "shell.execute_reply": "2026-08-03T03:44:04.211749Z" + "iopub.execute_input": "2026-08-03T04:23:04.246523Z", + "iopub.status.busy": "2026-08-03T04:23:04.246410Z", + "iopub.status.idle": "2026-08-03T04:23:04.405377Z", + "shell.execute_reply": "2026-08-03T04:23:04.404954Z" } }, "outputs": [ @@ -654,13 +654,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "131b5d6d", + "id": "c2a6b980", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:04.213012Z", - "iopub.status.busy": "2026-08-03T03:44:04.212863Z", - "iopub.status.idle": "2026-08-03T03:44:04.215646Z", - "shell.execute_reply": "2026-08-03T03:44:04.215207Z" + "iopub.execute_input": "2026-08-03T04:23:04.406251Z", + "iopub.status.busy": "2026-08-03T04:23:04.406155Z", + "iopub.status.idle": "2026-08-03T04:23:04.408723Z", + "shell.execute_reply": "2026-08-03T04:23:04.408406Z" } }, "outputs": [ @@ -682,7 +682,7 @@ }, { "cell_type": "markdown", - "id": "03403606", + "id": "1f945274", "metadata": {}, "source": [ "The degree of the graph is the coordination number, which it had better be.\n", @@ -699,13 +699,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "646e823f", + "id": "92c1de6d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:04.216401Z", - "iopub.status.busy": "2026-08-03T03:44:04.216315Z", - "iopub.status.idle": "2026-08-03T03:44:04.222431Z", - "shell.execute_reply": "2026-08-03T03:44:04.222064Z" + "iopub.execute_input": "2026-08-03T04:23:04.409500Z", + "iopub.status.busy": "2026-08-03T04:23:04.409409Z", + "iopub.status.idle": "2026-08-03T04:23:04.415472Z", + "shell.execute_reply": "2026-08-03T04:23:04.415084Z" } }, "outputs": [ @@ -773,13 +773,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "aebc17ab", + "id": "4e9daf6d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:04.223169Z", - "iopub.status.busy": "2026-08-03T03:44:04.223083Z", - "iopub.status.idle": "2026-08-03T03:44:04.227696Z", - "shell.execute_reply": "2026-08-03T03:44:04.227344Z" + "iopub.execute_input": "2026-08-03T04:23:04.416263Z", + "iopub.status.busy": "2026-08-03T04:23:04.416169Z", + "iopub.status.idle": "2026-08-03T04:23:04.420986Z", + "shell.execute_reply": "2026-08-03T04:23:04.420631Z" } }, "outputs": [ @@ -835,7 +835,7 @@ }, { "cell_type": "markdown", - "id": "153d1b45", + "id": "e48a77b4", "metadata": {}, "source": [ "`coordination_spread` is the one worth screening on: zero means every atom sits\n", @@ -852,13 +852,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "12c24ad6", + "id": "a75f206f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:04.228437Z", - "iopub.status.busy": "2026-08-03T03:44:04.228349Z", - "iopub.status.idle": "2026-08-03T03:44:05.023784Z", - "shell.execute_reply": "2026-08-03T03:44:05.023352Z" + "iopub.execute_input": "2026-08-03T04:23:04.421744Z", + "iopub.status.busy": "2026-08-03T04:23:04.421655Z", + "iopub.status.idle": "2026-08-03T04:23:05.199094Z", + "shell.execute_reply": "2026-08-03T04:23:05.198672Z" } }, "outputs": [ @@ -924,7 +924,7 @@ }, { "cell_type": "markdown", - "id": "9972caa4", + "id": "81c0d6b3", "metadata": {}, "source": [ "For an ion conductor this is the question. A framework whose octahedra share\n", @@ -960,13 +960,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "02077c66", + "id": "71eb4933", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.024727Z", - "iopub.status.busy": "2026-08-03T03:44:05.024635Z", - "iopub.status.idle": "2026-08-03T03:44:05.187599Z", - "shell.execute_reply": "2026-08-03T03:44:05.186982Z" + "iopub.execute_input": "2026-08-03T04:23:05.200342Z", + "iopub.status.busy": "2026-08-03T04:23:05.200235Z", + "iopub.status.idle": "2026-08-03T04:23:05.365332Z", + "shell.execute_reply": "2026-08-03T04:23:05.364957Z" } }, "outputs": [ @@ -1064,7 +1064,7 @@ }, { "cell_type": "markdown", - "id": "9d3aca84", + "id": "d99384f0", "metadata": {}, "source": [ "Graphite 2D, diamond 3D, MoS2 2D — and `n_components` counts two layers per\n", @@ -1079,13 +1079,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "4dc36c6d", + "id": "79416e1f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.188578Z", - "iopub.status.busy": "2026-08-03T03:44:05.188464Z", - "iopub.status.idle": "2026-08-03T03:44:05.193253Z", - "shell.execute_reply": "2026-08-03T03:44:05.192800Z" + "iopub.execute_input": "2026-08-03T04:23:05.366377Z", + "iopub.status.busy": "2026-08-03T04:23:05.366292Z", + "iopub.status.idle": "2026-08-03T04:23:05.370754Z", + "shell.execute_reply": "2026-08-03T04:23:05.370427Z" } }, "outputs": [ @@ -1157,7 +1157,7 @@ }, { "cell_type": "markdown", - "id": "778aef23", + "id": "c411ade5", "metadata": {}, "source": [ "`dimensionality_strategy` is recorded next to the answer for the same reason\n", @@ -1176,13 +1176,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "5c528253", + "id": "5c62fa70", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.194053Z", - "iopub.status.busy": "2026-08-03T03:44:05.193968Z", - "iopub.status.idle": "2026-08-03T03:44:05.258462Z", - "shell.execute_reply": "2026-08-03T03:44:05.258065Z" + "iopub.execute_input": "2026-08-03T04:23:05.371490Z", + "iopub.status.busy": "2026-08-03T04:23:05.371405Z", + "iopub.status.idle": "2026-08-03T04:23:05.437096Z", + "shell.execute_reply": "2026-08-03T04:23:05.436713Z" } }, "outputs": [ @@ -1253,7 +1253,7 @@ }, { "cell_type": "markdown", - "id": "5aa60991", + "id": "f9b3066e", "metadata": {}, "source": [ "Γ–X–W–K–L–U, the standard fcc path. Note that Cu and Al get **different numbers\n", @@ -1279,13 +1279,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "2280e88a", + "id": "5432f7a7", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.259302Z", - "iopub.status.busy": "2026-08-03T03:44:05.259202Z", - "iopub.status.idle": "2026-08-03T03:44:05.301934Z", - "shell.execute_reply": "2026-08-03T03:44:05.301483Z" + "iopub.execute_input": "2026-08-03T04:23:05.437896Z", + "iopub.status.busy": "2026-08-03T04:23:05.437812Z", + "iopub.status.idle": "2026-08-03T04:23:05.480210Z", + "shell.execute_reply": "2026-08-03T04:23:05.479830Z" } }, "outputs": [ @@ -1333,7 +1333,7 @@ }, { "cell_type": "markdown", - "id": "4db7a58a", + "id": "be4c3445", "metadata": {}, "source": [ "**Bands × k-points.** One row per band per spin per material, energies along a\n", @@ -1344,13 +1344,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "893e6a52", + "id": "b799141d", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.302838Z", - "iopub.status.busy": "2026-08-03T03:44:05.302728Z", - "iopub.status.idle": "2026-08-03T03:44:05.309176Z", - "shell.execute_reply": "2026-08-03T03:44:05.308821Z" + "iopub.execute_input": "2026-08-03T04:23:05.481042Z", + "iopub.status.busy": "2026-08-03T04:23:05.480954Z", + "iopub.status.idle": "2026-08-03T04:23:05.487200Z", + "shell.execute_reply": "2026-08-03T04:23:05.486848Z" } }, "outputs": [ @@ -1504,13 +1504,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "a1df04ec", + "id": "843e99a6", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.309922Z", - "iopub.status.busy": "2026-08-03T03:44:05.309836Z", - "iopub.status.idle": "2026-08-03T03:44:05.313459Z", - "shell.execute_reply": "2026-08-03T03:44:05.313044Z" + "iopub.execute_input": "2026-08-03T04:23:05.487952Z", + "iopub.status.busy": "2026-08-03T04:23:05.487868Z", + "iopub.status.idle": "2026-08-03T04:23:05.491209Z", + "shell.execute_reply": "2026-08-03T04:23:05.490903Z" } }, "outputs": [ @@ -1583,7 +1583,7 @@ }, { "cell_type": "markdown", - "id": "1d5c6cc0", + "id": "c31f9e39", "metadata": {}, "source": [ "Two things about the axis are worth reading carefully.\n", @@ -1602,13 +1602,13 @@ { "cell_type": "code", "execution_count": 20, - "id": "e3fc4f49", + "id": "58960e49", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.314198Z", - "iopub.status.busy": "2026-08-03T03:44:05.314110Z", - "iopub.status.idle": "2026-08-03T03:44:05.483756Z", - "shell.execute_reply": "2026-08-03T03:44:05.483337Z" + "iopub.execute_input": "2026-08-03T04:23:05.491901Z", + "iopub.status.busy": "2026-08-03T04:23:05.491819Z", + "iopub.status.idle": "2026-08-03T04:23:05.659644Z", + "shell.execute_reply": "2026-08-03T04:23:05.659163Z" } }, "outputs": [ @@ -1645,7 +1645,7 @@ }, { "cell_type": "markdown", - "id": "b6ae7a1f", + "id": "28df49b4", "metadata": {}, "source": [ "## What the bands say\n", @@ -1657,13 +1657,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "7d9a337a", + "id": "f9903cc0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.485002Z", - "iopub.status.busy": "2026-08-03T03:44:05.484909Z", - "iopub.status.idle": "2026-08-03T03:44:05.492400Z", - "shell.execute_reply": "2026-08-03T03:44:05.492010Z" + "iopub.execute_input": "2026-08-03T04:23:05.660666Z", + "iopub.status.busy": "2026-08-03T04:23:05.660575Z", + "iopub.status.idle": "2026-08-03T04:23:05.667658Z", + "shell.execute_reply": "2026-08-03T04:23:05.667322Z" } }, "outputs": [ @@ -1742,7 +1742,7 @@ }, { "cell_type": "markdown", - "id": "1a9e4355", + "id": "c8652909", "metadata": {}, "source": [ "Metals, gap zero. Correct: two of the four bands cross the Fermi level, and a\n", @@ -1755,13 +1755,13 @@ { "cell_type": "code", "execution_count": 22, - "id": "dd0e71dd", + "id": "9d7fffa2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.493210Z", - "iopub.status.busy": "2026-08-03T03:44:05.493112Z", - "iopub.status.idle": "2026-08-03T03:44:05.539587Z", - "shell.execute_reply": "2026-08-03T03:44:05.539191Z" + "iopub.execute_input": "2026-08-03T04:23:05.668430Z", + "iopub.status.busy": "2026-08-03T04:23:05.668342Z", + "iopub.status.idle": "2026-08-03T04:23:05.714335Z", + "shell.execute_reply": "2026-08-03T04:23:05.713954Z" } }, "outputs": [ @@ -1856,7 +1856,7 @@ }, { "cell_type": "markdown", - "id": "212907a5", + "id": "63de373a", "metadata": {}, "source": [ "1.70 eV, which is exactly what the model was built with, and **direct** —\n", @@ -1923,13 +1923,13 @@ { "cell_type": "code", "execution_count": 23, - "id": "a12d9cd7", + "id": "275bfe32", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.540412Z", - "iopub.status.busy": "2026-08-03T03:44:05.540322Z", - "iopub.status.idle": "2026-08-03T03:44:05.638418Z", - "shell.execute_reply": "2026-08-03T03:44:05.638012Z" + "iopub.execute_input": "2026-08-03T04:23:05.715186Z", + "iopub.status.busy": "2026-08-03T04:23:05.715041Z", + "iopub.status.idle": "2026-08-03T04:23:05.814005Z", + "shell.execute_reply": "2026-08-03T04:23:05.813593Z" } }, "outputs": [ @@ -1950,7 +1950,7 @@ }, { "cell_type": "markdown", - "id": "76bbeebb", + "id": "2f794510", "metadata": {}, "source": [ "It names the install rather than returning zeros — and the docstring says why\n", @@ -1965,13 +1965,13 @@ { "cell_type": "code", "execution_count": 24, - "id": "5aae311d", + "id": "2a814b2a", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.639502Z", - "iopub.status.busy": "2026-08-03T03:44:05.639153Z", - "iopub.status.idle": "2026-08-03T03:44:05.641370Z", - "shell.execute_reply": "2026-08-03T03:44:05.641039Z" + "iopub.execute_input": "2026-08-03T04:23:05.815095Z", + "iopub.status.busy": "2026-08-03T04:23:05.814762Z", + "iopub.status.idle": "2026-08-03T04:23:05.816945Z", + "shell.execute_reply": "2026-08-03T04:23:05.816624Z" } }, "outputs": [ @@ -1993,7 +1993,7 @@ }, { "cell_type": "markdown", - "id": "9782a438", + "id": "7fc9dc74", "metadata": {}, "source": [ "```{seealso}\n", @@ -2006,7 +2006,7 @@ }, { "cell_type": "markdown", - "id": "c07ab1d9", + "id": "7727a540", "metadata": {}, "source": [ "## How sure is a coordination number?\n", @@ -2022,13 +2022,13 @@ { "cell_type": "code", "execution_count": 25, - "id": "1148fec9", + "id": "7c8008f5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:05.642064Z", - "iopub.status.busy": "2026-08-03T03:44:05.641982Z", - "iopub.status.idle": "2026-08-03T03:44:06.106377Z", - "shell.execute_reply": "2026-08-03T03:44:06.105753Z" + "iopub.execute_input": "2026-08-03T04:23:05.817649Z", + "iopub.status.busy": "2026-08-03T04:23:05.817569Z", + "iopub.status.idle": "2026-08-03T04:23:06.277715Z", + "shell.execute_reply": "2026-08-03T04:23:06.277291Z" } }, "outputs": [ @@ -2173,7 +2173,7 @@ }, { "cell_type": "markdown", - "id": "20dcff1e", + "id": "5aec1cc6", "metadata": {}, "source": [ "Sodium gets six faces and six neighbours, every weight 1.0 — nothing to decide.\n", @@ -2191,13 +2191,13 @@ { "cell_type": "code", "execution_count": 26, - "id": "6580862f", + "id": "29affad4", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:06.107654Z", - "iopub.status.busy": "2026-08-03T03:44:06.107518Z", - "iopub.status.idle": "2026-08-03T03:44:06.133585Z", - "shell.execute_reply": "2026-08-03T03:44:06.133192Z" + "iopub.execute_input": "2026-08-03T04:23:06.278604Z", + "iopub.status.busy": "2026-08-03T04:23:06.278513Z", + "iopub.status.idle": "2026-08-03T04:23:06.303846Z", + "shell.execute_reply": "2026-08-03T04:23:06.303426Z" } }, "outputs": [ @@ -2223,7 +2223,7 @@ }, { "cell_type": "markdown", - "id": "7c1b9980", + "id": "8ce16aa8", "metadata": {}, "source": [ "0.58 against 1.00. That is the column to sort on when auditing coordination\n", @@ -2234,7 +2234,7 @@ }, { "cell_type": "markdown", - "id": "2c0076b9", + "id": "a8f4420d", "metadata": {}, "source": [ "## Who counts as a neighbour?\n", @@ -2250,13 +2250,13 @@ { "cell_type": "code", "execution_count": 27, - "id": "f31710ba", + "id": "0b2f7b2c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:06.134464Z", - "iopub.status.busy": "2026-08-03T03:44:06.134339Z", - "iopub.status.idle": "2026-08-03T03:44:06.753606Z", - "shell.execute_reply": "2026-08-03T03:44:06.753207Z" + "iopub.execute_input": "2026-08-03T04:23:06.304754Z", + "iopub.status.busy": "2026-08-03T04:23:06.304659Z", + "iopub.status.idle": "2026-08-03T04:23:06.923649Z", + "shell.execute_reply": "2026-08-03T04:23:06.923220Z" } }, "outputs": [ @@ -2393,7 +2393,7 @@ }, { "cell_type": "markdown", - "id": "06b8cc50", + "id": "8970ba2a", "metadata": {}, "source": [ "Six and octahedral for every site, which is what rocksalt is.\n", @@ -2406,13 +2406,13 @@ { "cell_type": "code", "execution_count": 28, - "id": "0b1cd9d3", + "id": "90b09bff", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:06.754614Z", - "iopub.status.busy": "2026-08-03T03:44:06.754524Z", - "iopub.status.idle": "2026-08-03T03:44:06.942545Z", - "shell.execute_reply": "2026-08-03T03:44:06.942137Z" + "iopub.execute_input": "2026-08-03T04:23:06.924559Z", + "iopub.status.busy": "2026-08-03T04:23:06.924469Z", + "iopub.status.idle": "2026-08-03T04:23:07.112652Z", + "shell.execute_reply": "2026-08-03T04:23:07.112255Z" } }, "outputs": [ @@ -2514,7 +2514,7 @@ }, { "cell_type": "markdown", - "id": "cc81ab45", + "id": "b8531f16", "metadata": {}, "source": [ "Lower coordination, from an identical structure. A geometric criterion would\n", @@ -2540,7 +2540,7 @@ }, { "cell_type": "markdown", - "id": "b679bd30", + "id": "9b53677c", "metadata": {}, "source": [ "## What photoemission actually sees\n", @@ -2558,13 +2558,13 @@ { "cell_type": "code", "execution_count": 29, - "id": "0039ff5a", + "id": "66a798a5", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:06.943426Z", - "iopub.status.busy": "2026-08-03T03:44:06.943284Z", - "iopub.status.idle": "2026-08-03T03:44:06.956215Z", - "shell.execute_reply": "2026-08-03T03:44:06.955814Z" + "iopub.execute_input": "2026-08-03T04:23:07.113533Z", + "iopub.status.busy": "2026-08-03T04:23:07.113444Z", + "iopub.status.idle": "2026-08-03T04:23:07.126640Z", + "shell.execute_reply": "2026-08-03T04:23:07.126263Z" } }, "outputs": [ @@ -2604,7 +2604,7 @@ }, { "cell_type": "markdown", - "id": "bb7435b0", + "id": "fec9f6d2", "metadata": {}, "source": [ "Twenty, exactly the ratio of the two cross-sections. The oxygen states are\n", @@ -2619,13 +2619,13 @@ { "cell_type": "code", "execution_count": 30, - "id": "e4c83532", + "id": "ccb591e3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:44:06.957024Z", - "iopub.status.busy": "2026-08-03T03:44:06.956932Z", - "iopub.status.idle": "2026-08-03T03:44:07.119998Z", - "shell.execute_reply": "2026-08-03T03:44:07.119583Z" + "iopub.execute_input": "2026-08-03T04:23:07.127422Z", + "iopub.status.busy": "2026-08-03T04:23:07.127333Z", + "iopub.status.idle": "2026-08-03T04:23:07.290003Z", + "shell.execute_reply": "2026-08-03T04:23:07.289592Z" } }, "outputs": [ @@ -2671,7 +2671,7 @@ }, { "cell_type": "markdown", - "id": "0af2a00b", + "id": "83eb6315", "metadata": {}, "source": [ "```{note}\n", diff --git a/matverse_guide/docs/tutorials/surfaces_and_adsorption.ipynb b/matverse_guide/docs/tutorials/surfaces_and_adsorption.ipynb index 0a271c3..a1c392a 100644 --- a/matverse_guide/docs/tutorials/surfaces_and_adsorption.ipynb +++ b/matverse_guide/docs/tutorials/surfaces_and_adsorption.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ab478af8", + "id": "d4a41b43", "metadata": {}, "source": [ "# Surfaces and adsorption\n", @@ -20,13 +20,13 @@ { "cell_type": "code", "execution_count": 1, - "id": "a834afbc", + "id": "d0425a6f", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:55.217082Z", - "iopub.status.busy": "2026-08-03T03:41:55.217008Z", - "iopub.status.idle": "2026-08-03T03:41:58.862782Z", - "shell.execute_reply": "2026-08-03T03:41:58.862354Z" + "iopub.execute_input": "2026-08-03T04:20:53.667981Z", + "iopub.status.busy": "2026-08-03T04:20:53.667894Z", + "iopub.status.idle": "2026-08-03T04:20:57.488109Z", + "shell.execute_reply": "2026-08-03T04:20:57.487620Z" } }, "outputs": [ @@ -57,7 +57,7 @@ " / / / / / / /_/ / /_ | |/ / __/ / (__ ) __/\n", "/_/ /_/ /_/\\__,_/\\__/ |___/\\___/_/ /____/\\___/\n", "\n", - "🔖 Version: 0.1.71 🧮 Functions: 211 📚 Tutorials: https://matverse.readthedocs.io/\n", + "🔖 Version: 0.1.71 🧮 Functions: 212 📚 Tutorials: https://matverse.readthedocs.io/\n", "✅ set_style complete.\n", "\n" ] @@ -73,7 +73,7 @@ }, { "cell_type": "markdown", - "id": "efa28572", + "id": "2f275bc9", "metadata": {}, "source": [ "## Loading a dataset\n", @@ -86,13 +86,13 @@ { "cell_type": "code", "execution_count": 2, - "id": "61a9795d", + "id": "4f5f63b0", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:58.864041Z", - "iopub.status.busy": "2026-08-03T03:41:58.863789Z", - "iopub.status.idle": "2026-08-03T03:41:58.995949Z", - "shell.execute_reply": "2026-08-03T03:41:58.995532Z" + "iopub.execute_input": "2026-08-03T04:20:57.489294Z", + "iopub.status.busy": "2026-08-03T04:20:57.489007Z", + "iopub.status.idle": "2026-08-03T04:20:57.619108Z", + "shell.execute_reply": "2026-08-03T04:20:57.618717Z" } }, "outputs": [ @@ -160,7 +160,7 @@ }, { "cell_type": "markdown", - "id": "c0999e5b", + "id": "b671720d", "metadata": {}, "source": [ "The bulk energy is not optional bookkeeping — a surface energy is the cost of\n", @@ -178,13 +178,13 @@ { "cell_type": "code", "execution_count": 3, - "id": "2649a96b", + "id": "4d743169", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:58.996787Z", - "iopub.status.busy": "2026-08-03T03:41:58.996686Z", - "iopub.status.idle": "2026-08-03T03:41:59.213342Z", - "shell.execute_reply": "2026-08-03T03:41:59.212990Z" + "iopub.execute_input": "2026-08-03T04:20:57.619968Z", + "iopub.status.busy": "2026-08-03T04:20:57.619867Z", + "iopub.status.idle": "2026-08-03T04:20:57.832955Z", + "shell.execute_reply": "2026-08-03T04:20:57.832438Z" } }, "outputs": [ @@ -212,13 +212,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "b98e6eec", + "id": "978caec9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.214542Z", - "iopub.status.busy": "2026-08-03T03:41:59.214289Z", - "iopub.status.idle": "2026-08-03T03:41:59.225537Z", - "shell.execute_reply": "2026-08-03T03:41:59.225174Z" + "iopub.execute_input": "2026-08-03T04:20:57.833939Z", + "iopub.status.busy": "2026-08-03T04:20:57.833750Z", + "iopub.status.idle": "2026-08-03T04:20:57.845333Z", + "shell.execute_reply": "2026-08-03T04:20:57.844972Z" } }, "outputs": [ @@ -333,7 +333,7 @@ }, { "cell_type": "markdown", - "id": "0aa93bb0", + "id": "dd2ece2a", "metadata": {}, "source": [ "More rows out than in, with `obs['parent']` pointing back at the bulk material —\n", @@ -349,13 +349,13 @@ { "cell_type": "code", "execution_count": 5, - "id": "e303adce", + "id": "1f0a12c9", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.226273Z", - "iopub.status.busy": "2026-08-03T03:41:59.226187Z", - "iopub.status.idle": "2026-08-03T03:41:59.228352Z", - "shell.execute_reply": "2026-08-03T03:41:59.228057Z" + "iopub.execute_input": "2026-08-03T04:20:57.846138Z", + "iopub.status.busy": "2026-08-03T04:20:57.846048Z", + "iopub.status.idle": "2026-08-03T04:20:57.848299Z", + "shell.execute_reply": "2026-08-03T04:20:57.847961Z" } }, "outputs": [ @@ -382,7 +382,7 @@ }, { "cell_type": "markdown", - "id": "7753ed35", + "id": "26fd05b9", "metadata": {}, "source": [ "## Surface energies" @@ -391,13 +391,13 @@ { "cell_type": "code", "execution_count": 6, - "id": "23b6348e", + "id": "30e703ee", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.229038Z", - "iopub.status.busy": "2026-08-03T03:41:59.228960Z", - "iopub.status.idle": "2026-08-03T03:41:59.251426Z", - "shell.execute_reply": "2026-08-03T03:41:59.251106Z" + "iopub.execute_input": "2026-08-03T04:20:57.849022Z", + "iopub.status.busy": "2026-08-03T04:20:57.848941Z", + "iopub.status.idle": "2026-08-03T04:20:57.871847Z", + "shell.execute_reply": "2026-08-03T04:20:57.871454Z" } }, "outputs": [ @@ -426,7 +426,7 @@ }, { "cell_type": "markdown", - "id": "aa629b36", + "id": "b2467594", "metadata": {}, "source": [ "**(111) < (100) < (110)**, which is the literature ordering for copper and for\n", @@ -441,20 +441,20 @@ { "cell_type": "code", "execution_count": 7, - "id": "58b77928", + "id": "9fa9a594", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.252212Z", - "iopub.status.busy": "2026-08-03T03:41:59.252128Z", - "iopub.status.idle": "2026-08-03T03:41:59.365298Z", - "shell.execute_reply": "2026-08-03T03:41:59.364935Z" + "iopub.execute_input": "2026-08-03T04:20:57.872773Z", + "iopub.status.busy": "2026-08-03T04:20:57.872682Z", + "iopub.status.idle": "2026-08-03T04:20:57.988220Z", + "shell.execute_reply": "2026-08-03T04:20:57.987780Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -494,7 +494,7 @@ }, { "cell_type": "markdown", - "id": "33d804d2", + "id": "911ea8e8", "metadata": {}, "source": [ "## When a slab is not the bulk formula\n", @@ -513,13 +513,13 @@ { "cell_type": "code", "execution_count": 8, - "id": "59f05826", + "id": "e494bb60", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.366204Z", - "iopub.status.busy": "2026-08-03T03:41:59.366113Z", - "iopub.status.idle": "2026-08-03T03:41:59.536108Z", - "shell.execute_reply": "2026-08-03T03:41:59.535730Z" + "iopub.execute_input": "2026-08-03T04:20:57.989156Z", + "iopub.status.busy": "2026-08-03T04:20:57.989005Z", + "iopub.status.idle": "2026-08-03T04:20:58.160326Z", + "shell.execute_reply": "2026-08-03T04:20:58.159909Z" } }, "outputs": [ @@ -610,7 +610,7 @@ }, { "cell_type": "markdown", - "id": "c9f8bee0", + "id": "0a1fff90", "metadata": {}, "source": [ "Four of these five are not Cu₃Au. The leftover atoms have to come from somewhere\n", @@ -622,13 +622,13 @@ { "cell_type": "code", "execution_count": 9, - "id": "4e48bc59", + "id": "1bbf5cbd", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.537010Z", - "iopub.status.busy": "2026-08-03T03:41:59.536915Z", - "iopub.status.idle": "2026-08-03T03:41:59.542544Z", - "shell.execute_reply": "2026-08-03T03:41:59.542223Z" + "iopub.execute_input": "2026-08-03T04:20:58.161201Z", + "iopub.status.busy": "2026-08-03T04:20:58.161110Z", + "iopub.status.idle": "2026-08-03T04:20:58.166880Z", + "shell.execute_reply": "2026-08-03T04:20:58.166500Z" } }, "outputs": [ @@ -722,7 +722,7 @@ }, { "cell_type": "markdown", - "id": "62d3e9b8", + "id": "056482bd", "metadata": {}, "source": [ "### Referencing the surplus to a reservoir\n", @@ -740,13 +740,13 @@ { "cell_type": "code", "execution_count": 10, - "id": "24351927", + "id": "0cc12363", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:41:59.543412Z", - "iopub.status.busy": "2026-08-03T03:41:59.543331Z", - "iopub.status.idle": "2026-08-03T03:42:00.698297Z", - "shell.execute_reply": "2026-08-03T03:42:00.697852Z" + "iopub.execute_input": "2026-08-03T04:20:58.167660Z", + "iopub.status.busy": "2026-08-03T04:20:58.167570Z", + "iopub.status.idle": "2026-08-03T04:20:59.332029Z", + "shell.execute_reply": "2026-08-03T04:20:59.331593Z" } }, "outputs": [ @@ -856,7 +856,7 @@ }, { "cell_type": "markdown", - "id": "73a28711", + "id": "1176f92f", "metadata": {}, "source": [ "Two things to read off. The two (100) terminations carry equal and opposite Au\n", @@ -877,13 +877,13 @@ { "cell_type": "code", "execution_count": 11, - "id": "a7770cd0", + "id": "f8710a8b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.699188Z", - "iopub.status.busy": "2026-08-03T03:42:00.699088Z", - "iopub.status.idle": "2026-08-03T03:42:00.703749Z", - "shell.execute_reply": "2026-08-03T03:42:00.703426Z" + "iopub.execute_input": "2026-08-03T04:20:59.332913Z", + "iopub.status.busy": "2026-08-03T04:20:59.332814Z", + "iopub.status.idle": "2026-08-03T04:20:59.337472Z", + "shell.execute_reply": "2026-08-03T04:20:59.337104Z" } }, "outputs": [ @@ -942,7 +942,7 @@ }, { "cell_type": "markdown", - "id": "f713508b", + "id": "81b070cd", "metadata": {}, "source": [ "## The equilibrium crystal shape\n", @@ -956,13 +956,13 @@ { "cell_type": "code", "execution_count": 12, - "id": "3d16364f", + "id": "919e4f97", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.704545Z", - "iopub.status.busy": "2026-08-03T03:42:00.704458Z", - "iopub.status.idle": "2026-08-03T03:42:00.756194Z", - "shell.execute_reply": "2026-08-03T03:42:00.755822Z" + "iopub.execute_input": "2026-08-03T04:20:59.338211Z", + "iopub.status.busy": "2026-08-03T04:20:59.338123Z", + "iopub.status.idle": "2026-08-03T04:20:59.390212Z", + "shell.execute_reply": "2026-08-03T04:20:59.389833Z" } }, "outputs": [ @@ -1030,13 +1030,13 @@ { "cell_type": "code", "execution_count": 13, - "id": "61ebf6e3", + "id": "59314b07", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.757048Z", - "iopub.status.busy": "2026-08-03T03:42:00.756906Z", - "iopub.status.idle": "2026-08-03T03:42:00.761731Z", - "shell.execute_reply": "2026-08-03T03:42:00.761422Z" + "iopub.execute_input": "2026-08-03T04:20:59.391032Z", + "iopub.status.busy": "2026-08-03T04:20:59.390940Z", + "iopub.status.idle": "2026-08-03T04:20:59.395823Z", + "shell.execute_reply": "2026-08-03T04:20:59.395484Z" } }, "outputs": [ @@ -1108,7 +1108,7 @@ }, { "cell_type": "markdown", - "id": "853fe21e", + "id": "8bce7a49", "metadata": {}, "source": [ "(111) takes **two thirds** of the surface, (100) most of the rest, and (110)\n", @@ -1128,13 +1128,13 @@ { "cell_type": "code", "execution_count": 14, - "id": "86dd7dd3", + "id": "262fc81b", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.762492Z", - "iopub.status.busy": "2026-08-03T03:42:00.762408Z", - "iopub.status.idle": "2026-08-03T03:42:00.764460Z", - "shell.execute_reply": "2026-08-03T03:42:00.764172Z" + "iopub.execute_input": "2026-08-03T04:20:59.396584Z", + "iopub.status.busy": "2026-08-03T04:20:59.396500Z", + "iopub.status.idle": "2026-08-03T04:20:59.398614Z", + "shell.execute_reply": "2026-08-03T04:20:59.398300Z" } }, "outputs": [ @@ -1158,13 +1158,13 @@ { "cell_type": "code", "execution_count": 15, - "id": "af1d6c24", + "id": "3207666c", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.765165Z", - "iopub.status.busy": "2026-08-03T03:42:00.765085Z", - "iopub.status.idle": "2026-08-03T03:42:00.858476Z", - "shell.execute_reply": "2026-08-03T03:42:00.858075Z" + "iopub.execute_input": "2026-08-03T04:20:59.399289Z", + "iopub.status.busy": "2026-08-03T04:20:59.399207Z", + "iopub.status.idle": "2026-08-03T04:20:59.492985Z", + "shell.execute_reply": "2026-08-03T04:20:59.492537Z" } }, "outputs": [ @@ -1206,7 +1206,7 @@ }, { "cell_type": "markdown", - "id": "e3a254f7", + "id": "9f75d6f7", "metadata": {}, "source": [ "## Adsorption\n", @@ -1219,13 +1219,13 @@ { "cell_type": "code", "execution_count": 16, - "id": "67b44fbf", + "id": "3608ce60", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.859353Z", - "iopub.status.busy": "2026-08-03T03:42:00.859217Z", - "iopub.status.idle": "2026-08-03T03:42:00.901071Z", - "shell.execute_reply": "2026-08-03T03:42:00.900680Z" + "iopub.execute_input": "2026-08-03T04:20:59.493959Z", + "iopub.status.busy": "2026-08-03T04:20:59.493838Z", + "iopub.status.idle": "2026-08-03T04:20:59.535003Z", + "shell.execute_reply": "2026-08-03T04:20:59.534606Z" } }, "outputs": [ @@ -1295,7 +1295,7 @@ }, { "cell_type": "markdown", - "id": "97c7a636", + "id": "d46e3043", "metadata": {}, "source": [ "### Sites are enumerated, not guessed\n", @@ -1308,13 +1308,13 @@ { "cell_type": "code", "execution_count": 17, - "id": "4e8843e5", + "id": "0a5106f3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.901927Z", - "iopub.status.busy": "2026-08-03T03:42:00.901838Z", - "iopub.status.idle": "2026-08-03T03:42:00.978091Z", - "shell.execute_reply": "2026-08-03T03:42:00.977591Z" + "iopub.execute_input": "2026-08-03T04:20:59.535811Z", + "iopub.status.busy": "2026-08-03T04:20:59.535724Z", + "iopub.status.idle": "2026-08-03T04:20:59.606878Z", + "shell.execute_reply": "2026-08-03T04:20:59.606506Z" } }, "outputs": [ @@ -1395,13 +1395,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "8c4ed925", + "id": "350d5172", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.979044Z", - "iopub.status.busy": "2026-08-03T03:42:00.978932Z", - "iopub.status.idle": "2026-08-03T03:42:00.982406Z", - "shell.execute_reply": "2026-08-03T03:42:00.982045Z" + "iopub.execute_input": "2026-08-03T04:20:59.607730Z", + "iopub.status.busy": "2026-08-03T04:20:59.607638Z", + "iopub.status.idle": "2026-08-03T04:20:59.610631Z", + "shell.execute_reply": "2026-08-03T04:20:59.610302Z" } }, "outputs": [ @@ -1426,7 +1426,7 @@ }, { "cell_type": "markdown", - "id": "49b173da", + "id": "d52d3dca", "metadata": {}, "source": [ "On-top, bridge and hollow — the three coordination environments a close-packed\n", @@ -1436,13 +1436,13 @@ { "cell_type": "code", "execution_count": 19, - "id": "8217017c", + "id": "b7f29613", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:00.983162Z", - "iopub.status.busy": "2026-08-03T03:42:00.983074Z", - "iopub.status.idle": "2026-08-03T03:42:01.340872Z", - "shell.execute_reply": "2026-08-03T03:42:01.340451Z" + "iopub.execute_input": "2026-08-03T04:20:59.611334Z", + "iopub.status.busy": "2026-08-03T04:20:59.611248Z", + "iopub.status.idle": "2026-08-03T04:20:59.955512Z", + "shell.execute_reply": "2026-08-03T04:20:59.955092Z" } }, "outputs": [ @@ -1471,7 +1471,7 @@ }, { "cell_type": "markdown", - "id": "e8ee5e0f", + "id": "f5540238", "metadata": {}, "source": [ "**Hollow is lowest, then bridge, then on-top** — more neighbours, more bonding.\n", @@ -1488,20 +1488,20 @@ { "cell_type": "code", "execution_count": 20, - "id": "5f93cdcc", + "id": "f38f81e3", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:01.341739Z", - "iopub.status.busy": "2026-08-03T03:42:01.341596Z", - "iopub.status.idle": "2026-08-03T03:42:01.448424Z", - "shell.execute_reply": "2026-08-03T03:42:01.447986Z" + "iopub.execute_input": "2026-08-03T04:20:59.956512Z", + "iopub.status.busy": "2026-08-03T04:20:59.956421Z", + "iopub.status.idle": "2026-08-03T04:21:00.062112Z", + "shell.execute_reply": "2026-08-03T04:21:00.061666Z" } }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -1539,7 +1539,7 @@ }, { "cell_type": "markdown", - "id": "f890c536", + "id": "451ff314", "metadata": {}, "source": [ "About 170 meV between on-top and hollow. That is the size of difference that\n", @@ -1548,7 +1548,7 @@ }, { "cell_type": "markdown", - "id": "bf2b6a15", + "id": "6a81c4ce", "metadata": {}, "source": [ "```{warning}\n", @@ -1572,13 +1572,13 @@ { "cell_type": "code", "execution_count": 21, - "id": "6e11c674", + "id": "822208b2", "metadata": { "execution": { - "iopub.execute_input": "2026-08-03T03:42:01.449310Z", - "iopub.status.busy": "2026-08-03T03:42:01.449206Z", - "iopub.status.idle": "2026-08-03T03:42:01.451314Z", - "shell.execute_reply": "2026-08-03T03:42:01.450960Z" + "iopub.execute_input": "2026-08-03T04:21:00.063067Z", + "iopub.status.busy": "2026-08-03T04:21:00.062893Z", + "iopub.status.idle": "2026-08-03T04:21:00.065019Z", + "shell.execute_reply": "2026-08-03T04:21:00.064665Z" } }, "outputs": [ @@ -1602,7 +1602,7 @@ }, { "cell_type": "markdown", - "id": "474ff5fd", + "id": "aa384d75", "metadata": {}, "source": [ "```{seealso}\n", diff --git a/pyproject.toml b/pyproject.toml index 2557f5b..4912252 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ ml = ["scikit-learn"] # mv.model estimators matminer = ["matminer"] cost = ["bibtexparser"] # mv.prop.cost price table screening = ["smact"] # mv.gen.compositions +generation = ["pyxtal"] # mv.gen.from_symmetry diffusion = ["pymatgen-analysis-diffusion"] # mv.md.rdf, mv.md.sites, # mv.neb.percolation # mv.gen.alloy_pairs, plus mv.disorder.cluster_expansion and diff --git a/tests/_contract_cases.py b/tests/_contract_cases.py index 82450bd..197c496 100644 --- a/tests/_contract_cases.py +++ b/tests/_contract_cases.py @@ -149,6 +149,10 @@ def two_elements(): return ["Ti", "O"] +def perovskite_candidates(): + return mv.data.from_compositions(["BaTiO3", "SrTiO3"]) + + def cu_au_parent(): """The disordered fcc primitive a cluster expansion is defined on.""" return mv.data.from_structures([_mixed({"Cu": 0.5, "Au": 0.5}, a=3.9)]) @@ -837,6 +841,8 @@ def measured_alloy(): (mv.data.from_compositions, formulas, (), {"returns": "new"}), (mv.gen.compositions, two_elements, (), {"threshold": 4, "returns": "new"}), + (mv.gen.from_symmetry, perovskite_candidates, (), + {"space_groups": [221], "seed": 0, "returns": "new"}), (mv.disorder.cluster_expansion, cu_au_training, (), {"parent": cu_au_parent(), "level": "emt", "cutoffs": {2: 6.0, 3: 4.5}}), diff --git a/tests/test_prediction.py b/tests/test_prediction.py index f2e6982..fa5b79c 100644 --- a/tests/test_prediction.py +++ b/tests/test_prediction.py @@ -941,3 +941,94 @@ def test_one_element_cannot_balance_anything(self): def test_it_says_that_survival_is_not_a_prediction(self): found = mv.gen.compositions(["Ti", "O"], threshold=4) assert "not a prediction" in found.uns["compositions"]["note"] + + +def _has_pyxtal() -> bool: + import importlib.util + return importlib.util.find_spec("pyxtal") is not None + + +@pytest.mark.skipif(not _has_pyxtal(), reason="PyXtal is an optional extra") +class TestSymmetryGeneration: + """Turning a composition into something a calculator can accept.""" + + @pytest.fixture(scope="class") + def built(self): + candidates = mv.data.from_compositions(["BaTiO3", "SrTiO3"]) + return mv.gen.from_symmetry(candidates, space_groups=[221, 99], + per_composition=1, seed=0) + + def test_it_produces_structures_for_each_composition(self, built): + assert built.n_obs == 4 + assert len(mv.structures(built, "input")) == 4 + assert set(built.obs["formula"]) == {"BaTiO3", "SrTiO3"} + + def test_the_structures_have_the_composition_asked_for(self, built): + for structure, formula in zip(mv.structures(built, "input"), + built.obs["formula"]): + assert structure.composition.reduced_formula == formula + + def test_the_symmetry_is_verified_not_assumed(self, built): + """obs['space_group'] is what pymatgen finds in the structure that + came back, not what pyxtal was asked for. Both are kept.""" + assert "requested_space_group" in built.obs + assert "space_group" in built.obs + for row in built.obs.itertuples(): + assert row.symmetry_as_requested == ( + row.space_group == row.requested_space_group) + + def test_the_verification_actually_catches_disagreements(self): + """A flag that is always True is untested. Random free parameters land + on special positions often: 40 random groups for TiO2 gave 7 + structures, 5 of them at higher symmetry than requested.""" + candidates = mv.data.from_compositions(["TiO2"]) + built = mv.gen.from_symmetry(candidates, per_composition=40, seed=1) + disagreed = (~built.obs["symmetry_as_requested"]).sum() + assert disagreed > 0 + # And the disagreement is upward — a special position adds symmetry. + rows = built.obs[~built.obs["symmetry_as_requested"]] + assert (rows["space_group"] > rows["requested_space_group"]).all() + + def test_an_impossible_group_is_a_missing_row_not_a_substitute(self): + """Pnma cannot host BaTiO3 at five atoms. The row is absent and the + reason is counted, rather than a different structure appearing under + the name that was asked for.""" + candidates = mv.data.from_compositions(["BaTiO3"]) + with pytest.warns(RuntimeWarning, match="no structure"): + built = mv.gen.from_symmetry(candidates, space_groups=[221, 62], + seed=0) + assert built.n_obs == 1 + assert int(built.obs["requested_space_group"].iloc[0]) == 221 + assert built.uns["from_symmetry"]["n_failed"] == 1 + assert "62" in built.uns["from_symmetry"]["errors"][0] + + def test_the_composition_can_come_from_X_alone(self): + """No formula column: the composition matrix is the composition.""" + candidates = mv.data.from_compositions(["BaTiO3"]) + del candidates.obs["formula"] + built = mv.gen.from_symmetry(candidates, space_groups=[221], seed=0) + assert list(built.obs["formula"]) == ["BaTiO3"] + + def test_the_output_is_an_ordinary_materials_object(self, built): + """It has to flow into the rest of matverse without special casing.""" + out = built.copy() + mv.pp.describe(out) + assert np.isfinite(out.obs["density"]).all() + + def test_it_says_the_geometry_is_only_a_starting_point(self, built): + """Generated BaTiO3 in Pm-3m comes out near 5.06 A against a measured + 4.00, because the cell volume is estimated. Claiming otherwise would + be the dangerous part.""" + assert "relax" in built.uns["from_symmetry"]["note"] + + def test_a_bad_space_group_is_refused(self): + candidates = mv.data.from_compositions(["BaTiO3"]) + with pytest.raises(ValueError, match="1..230"): + mv.gen.from_symmetry(candidates, space_groups=[999]) + + def test_the_seed_makes_it_reproducible(self): + candidates = mv.data.from_compositions(["BaTiO3"]) + runs = [mv.gen.from_symmetry(candidates, space_groups=[221], seed=7) + for _ in range(2)] + first, second = (mv.structures(r, "input")[0] for r in runs) + assert first.lattice.abc == pytest.approx(second.lattice.abc)