MEIDNet / site /use /studio.html
Babu09's picture
Scope, limitations and roadmap: what the released package does and does not, what a dataset needs, what has been validated; the landing page, the ecosystem page and the assistant say Matter runs your data on your computer
06cdeef verified
Raw History Blame Contribute Delete
59.4 kB
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Multimodal inverse design of crystalline materials โ€” with your own data, rules and families.">
<link rel="canonical" href="https://babu09-meidnet.hf.space/docs/use/studio.html">
<link rel="prev" href="../start/colab.html">
<link rel="next" href="your-data.html">
<link rel="icon" href="../assets/favicon-64.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>MEIDNet Studio - MEIDNet Prism</title>
<link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="stylesheet" href="../assets/extra.css">
<link rel="stylesheet" href="../assets/prism-docs.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#meidnet-studio-the-live-workbench" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../index.html" title="MEIDNet Prism" class="md-header__button md-logo" aria-label="MEIDNet Prism" data-md-component="logo">
<img src="../assets/prism-mark.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
MEIDNet Prism
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
MEIDNet Studio
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/ABnano/MEIDNet" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
ABnano/MEIDNet
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../index.html" class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../learn/index.html" class="md-tabs__link">
Learn
</a>
</li>
<li class="md-tabs__item">
<a href="../benchmarks/index.html" class="md-tabs__link">
Benchmark
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../develop.html" class="md-tabs__link">
Develop
</a>
</li>
<li class="md-tabs__item">
<a href="https://babu09-meidnet-matter.hf.space/" class="md-tabs__link">
Matter โ†—
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../index.html" title="MEIDNet Prism" class="md-nav__button md-logo" aria-label="MEIDNet Prism" data-md-component="logo">
<img src="../assets/prism-mark.png" alt="logo">
</a>
MEIDNet Prism
</label>
<div class="md-nav__source">
<a href="https://github.com/ABnano/MEIDNet" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
ABnano/MEIDNet
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../index.html" class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Learn
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Learn
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../learn/index.html" class="md-nav__link">
<span class="md-ellipsis">
Learn multimodality
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../learn/architectures.html" class="md-nav__link">
<span class="md-ellipsis">
Architectures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../learn/recipes.html" class="md-nav__link">
<span class="md-ellipsis">
Recipes by problem
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../understand/how-it-works.html" class="md-nav__link">
<span class="md-ellipsis">
How MEIDNet works
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../understand/interpretability.html" class="md-nav__link">
<span class="md-ellipsis">
Interpreting a candidate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../understand/limits.html" class="md-nav__link">
<span class="md-ellipsis">
Scope, limitations and roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ecosystem.html" class="md-nav__link">
<span class="md-ellipsis">
The ecosystem
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../research/paper.html" class="md-nav__link">
<span class="md-ellipsis">
Paper and citation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Benchmark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Benchmark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../benchmarks/index.html" class="md-nav__link">
<span class="md-ellipsis">
MEIDNet Benchmarks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/compatibility.html" class="md-nav__link">
<span class="md-ellipsis">
Benchmark compatibility
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/perov5.html" class="md-nav__link">
<span class="md-ellipsis">
Perov-5
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/perov5-reproduction.html" class="md-nav__link">
<span class="md-ellipsis">
Perov-5: alignment across seeds
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/perov5-insights.html" class="md-nav__link">
<span class="md-ellipsis">
Perov-5: what the runs show
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/perov5-guide.html" class="md-nav__link">
<span class="md-ellipsis">
Perov-5: choose a model and generate
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/mp20.html" class="md-nav__link">
<span class="md-ellipsis">
MP-20
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/carbon24.html" class="md-nav__link">
<span class="md-ellipsis">
Carbon-24
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../explore/datasets.html" class="md-nav__link">
<span class="md-ellipsis">
Datasets
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../explore/databases.html" class="md-nav__link">
<span class="md-ellipsis">
Databases by application
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../community/contribute.html" class="md-nav__link">
<span class="md-ellipsis">
Contribute a result
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../community/index.html" class="md-nav__link">
<span class="md-ellipsis">
Community results
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Develop
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Develop
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../develop.html" class="md-nav__link">
<span class="md-ellipsis">
Develop with MEIDNet
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../start/quickstart.html" class="md-nav__link">
<span class="md-ellipsis">
5-minute quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../start/what-data.html" class="md-nav__link">
<span class="md-ellipsis">
What data do I need?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../start/colab.html" class="md-nav__link">
<span class="md-ellipsis">
Run in Colab
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
MEIDNet Studio
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="studio.html" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
MEIDNet Studio
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#reading-the-workflow-strip" class="md-nav__link">
<span class="md-ellipsis">
Reading the workflow strip
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-flow-chain-and-the-flow-log" class="md-nav__link">
<span class="md-ellipsis">
The flow chain and the flow log
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#what-is-live-and-how" class="md-nav__link">
<span class="md-ellipsis">
What is live, and how
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-two-directions-of-the-model" class="md-nav__link">
<span class="md-ellipsis">
The two directions of the model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-blocks" class="md-nav__link">
<span class="md-ellipsis">
The blocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#beginner-view-and-researcher-mode" class="md-nav__link">
<span class="md-ellipsis">
Beginner view and Researcher mode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#behind-the-scenes" class="md-nav__link">
<span class="md-ellipsis">
Behind the scenes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bring-your-own-data" class="md-nav__link">
<span class="md-ellipsis">
Bring your own data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#edit-the-configuration-as-text" class="md-nav__link">
<span class="md-ellipsis">
Edit the configuration as text
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#explore-in-3d" class="md-nav__link">
<span class="md-ellipsis">
Explore in 3D
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#deep-links" class="md-nav__link">
<span class="md-ellipsis">
Deep links
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#dark-mode" class="md-nav__link">
<span class="md-ellipsis">
Dark mode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-copy-for-a-website" class="md-nav__link">
<span class="md-ellipsis">
Static copy for a website
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="your-data.html" class="md-nav__link">
<span class="md-ellipsis">
Bring your own dataset
</span>
</a>
</li>
<li class="md-nav__item">
<a href="config.html" class="md-nav__link">
<span class="md-ellipsis">
The configuration file
</span>
</a>
</li>
<li class="md-nav__item">
<a href="explore-3d.html" class="md-nav__link">
<span class="md-ellipsis">
Explore in 3D
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reports.html" class="md-nav__link">
<span class="md-ellipsis">
Reading the reports
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../explore/capabilities.html" class="md-nav__link">
<span class="md-ellipsis">
Capabilities
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11" >
<label class="md-nav__link" for="__nav_4_11" id="__nav_4_11_label" tabindex="">
<span class="md-ellipsis">
Recipes
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_11">
<span class="md-nav__icon md-icon"></span>
Recipes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../recipes/change-targets.html" class="md-nav__link">
<span class="md-ellipsis">
Change the target properties
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../recipes/add-property.html" class="md-nav__link">
<span class="md-ellipsis">
Add a property
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../recipes/elements.html" class="md-nav__link">
<span class="md-ellipsis">
Exclude or restrict elements
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../recipes/change-family.html" class="md-nav__link">
<span class="md-ellipsis">
Change the material family
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../recipes/add-constraint.html" class="md-nav__link">
<span class="md-ellipsis">
Add a rule (constraint)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../recipes/screen.html" class="md-nav__link">
<span class="md-ellipsis">
Screen with MACE
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_12" >
<label class="md-nav__link" for="__nav_4_12" id="__nav_4_12_label" tabindex="">
<span class="md-ellipsis">
Examples
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_12">
<span class="md-nav__icon md-icon"></span>
Examples
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../examples/perov5.html" class="md-nav__link">
<span class="md-ellipsis">
Perov-5 (the paper)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../examples/double-perovskite.html" class="md-nav__link">
<span class="md-ellipsis">
Double perovskites
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13" >
<label class="md-nav__link" for="__nav_4_13" id="__nav_4_13_label" tabindex="">
<span class="md-ellipsis">
Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_13">
<span class="md-nav__icon md-icon"></span>
Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../reference/cli.html" class="md-nav__link">
<span class="md-ellipsis">
Command line
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/config.html" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/families.html" class="md-nav__link">
<span class="md-ellipsis">
Family files
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/rules.html" class="md-nav__link">
<span class="md-ellipsis">
Rules and search terms
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reference/api.html" class="md-nav__link">
<span class="md-ellipsis">
Python API
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../community/help.html" class="md-nav__link">
<span class="md-ellipsis">
Getting help
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="https://babu09-meidnet-matter.hf.space/" class="md-nav__link">
<span class="md-ellipsis">
Matter โ†—
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#reading-the-workflow-strip" class="md-nav__link">
<span class="md-ellipsis">
Reading the workflow strip
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-flow-chain-and-the-flow-log" class="md-nav__link">
<span class="md-ellipsis">
The flow chain and the flow log
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#what-is-live-and-how" class="md-nav__link">
<span class="md-ellipsis">
What is live, and how
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-two-directions-of-the-model" class="md-nav__link">
<span class="md-ellipsis">
The two directions of the model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#the-blocks" class="md-nav__link">
<span class="md-ellipsis">
The blocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#beginner-view-and-researcher-mode" class="md-nav__link">
<span class="md-ellipsis">
Beginner view and Researcher mode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#behind-the-scenes" class="md-nav__link">
<span class="md-ellipsis">
Behind the scenes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bring-your-own-data" class="md-nav__link">
<span class="md-ellipsis">
Bring your own data
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#edit-the-configuration-as-text" class="md-nav__link">
<span class="md-ellipsis">
Edit the configuration as text
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#explore-in-3d" class="md-nav__link">
<span class="md-ellipsis">
Explore in 3D
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#deep-links" class="md-nav__link">
<span class="md-ellipsis">
Deep links
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#dark-mode" class="md-nav__link">
<span class="md-ellipsis">
Dark mode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#static-copy-for-a-website" class="md-nav__link">
<span class="md-ellipsis">
Static copy for a website
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="meidnet-studio-the-live-workbench">MEIDNet Studio โ€” the live workbench<a class="headerlink" href="#meidnet-studio-the-live-workbench" title="Permanent link">&para;</a></h1>
<div class="highlight"><pre><span></span><code>meidnet<span class="w"> </span>studio<span class="w"> </span><span class="c1"># the published perovskite model</span>
meidnet<span class="w"> </span>studio<span class="w"> </span>meidnet.yaml<span class="w"> </span><span class="c1"># your project</span>
</code></pre></div>
<p>A page opens in your browser. The workflow is drawn as a strip of seven coloured blocks; click a block to open
it. <strong>Whatever you change, the blocks after it update at once</strong>, and a line under the strip says, in words, what
the change did to each later block โ€” the way a LabVIEW diagram shows data flowing after you turn a knob.</p>
<p>No installation? Use the <a href="https://babu09-meidnet.hf.space/">hosted Studio</a> โ€” the same page, running on a shared
server.</p>
<div class="pflow" data-flow="studio"></div>
<h2 id="reading-the-workflow-strip">Reading the workflow strip<a class="headerlink" href="#reading-the-workflow-strip" title="Permanent link">&para;</a></h2>
<p>Each block has its own colour, used everywhere on the page (its panel, its charts, its chips in the flow chain):</p>
<table>
<thead>
<tr>
<th>Block</th>
<th>Colour</th>
<th>What it holds</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data</td>
<td>blue</td>
<td>the table of materials the model learns from</td>
</tr>
<tr>
<td>Model</td>
<td>orange</td>
<td>the trained network (published or yours)</td>
</tr>
<tr>
<td>Family</td>
<td>green</td>
<td>the crystal prototype and the elements allowed on each site</td>
</tr>
<tr>
<td>Rules</td>
<td>amber</td>
<td>the hard checks every candidate must pass</td>
</tr>
<tr>
<td>Targets</td>
<td>pink</td>
<td>the property values you want</td>
</tr>
<tr>
<td>Search</td>
<td>dark green</td>
<td>the latent search of the paper</td>
</tr>
<tr>
<td>Candidates</td>
<td>violet</td>
<td>what the search found</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>The dot in the corner of a block</strong> tells its state: grey = idle, green = fine, amber = just changed or needs a
look (for example a target outside the training range), red = error, pulsing = running.</li>
<li><strong>The two lines inside a block</strong> are its live status: "924 comps", "27 pass all", "MAE 0.17", "running".</li>
<li><strong>The label on each arrow</strong> says what flows to the next block: "11,356 materials ยท 2 properties",
"924 compositions", "27 pass all rules", "3 found".</li>
<li><strong>Moving dots on the arrows</strong> appear after every change: they travel from the block you edited to every block
it reaches, and those blocks flash. This is the quickest way to see what depends on what.</li>
</ul>
<p>Dashed pink lines are always a target; a violet โ˜… is always something the search found; green โœ“ means passes.</p>
<h2 id="the-flow-chain-and-the-flow-log">The flow chain and the flow log<a class="headerlink" href="#the-flow-chain-and-the-flow-log" title="Permanent link">&para;</a></h2>
<p>Under the strip, the <strong>flow chain</strong> repeats the last change in words, block by block, for example:</p>
<blockquote>
<p><strong>Rules:</strong> Goldschmidt tolerance factor max 1.05 โ†’ 1 โžœ <strong>Rules:</strong> pass all rules 27 โ†’ 23 (โˆ’4) โžœ
<strong>Targets:</strong> best match CsSnBrโ‚ƒ โ†’ CsGeBrโ‚ƒ โžœ <strong>Candidates:</strong> 1 of 3 found candidates would now be rejected</p>
</blockquote>
<p>Click a step to open that block.</p>
<p>The <strong>Flow log</strong> below it keeps the last 60 changes. Click an entry to replay its flow on the strip.</p>
<h2 id="what-is-live-and-how">What is live, and how<a class="headerlink" href="#what-is-live-and-how" title="Permanent link">&para;</a></h2>
<p>For a prototype family the set of possible compositions is finite (924 for halide perovskites, 10,340 for
halide double perovskites). When you open a family the server builds this <strong>design space</strong> once: every
composition on the prototype, the value of each rule's descriptor (tolerance factor, octahedral factor, โ€ฆ) and
the model's predicted properties from the structure encoder. From then on, the page can answer instantly:</p>
<table>
<thead>
<tr>
<th>You change</th>
<th>You see immediately</th>
</tr>
</thead>
<tbody>
<tr>
<td>a rule's limit</td>
<td>how many compositions still pass that rule and all rules; the histogram of the descriptor with the window shaded; the funnel</td>
</tr>
<tr>
<td>an element (click a chip to exclude it)</td>
<td>compositions removed, new counts, new best matches</td>
</tr>
<tr>
<td>a target</td>
<td>the compositions predicted closest; the target drawn on the predicted-property histogram and scatter; an extrapolation warning if it lies outside the training range</td>
</tr>
<tr>
<td>the comparison kind (as close as possible / at most / at least)</td>
<td>the ranking</td>
</tr>
<tr>
<td>anything, after a search</td>
<td>which of the found candidates <strong>would now be rejected</strong></td>
</tr>
</tbody>
</table>
<p>Descriptor values are computed by the same Python functions that <code>meidnet generate</code> uses, so what the page
shows is what the search enforces.</p>
<h2 id="the-two-directions-of-the-model">The two directions of the model<a class="headerlink" href="#the-two-directions-of-the-model" title="Permanent link">&para;</a></h2>
<p>The live tables use <strong>structure โ†’ property</strong> (encode the prototype structure, decode its properties): fast,
and it scores <em>every</em> composition. The <strong>Search</strong> block runs the paper's <strong>property โ†’ structure</strong> latent
optimisation and shows its progress (target, round, step, loss), the log, and each candidate as it is found,
with its checklist. Both views are of the same network; comparing them tells you whether the search found what
the encoder considers best, and whether the predictions agree.</p>
<h2 id="the-blocks">The blocks<a class="headerlink" href="#the-blocks" title="Permanent link">&para;</a></h2>
<p>Each block, with what it shows. The animation is the same block in the tour of the landing page.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Data</label><label for="__tabbed_1_2">Model</label><label for="__tabbed_1_3">Family</label><label for="__tabbed_1_4">Rules</label><label for="__tabbed_1_5">Targets</label><label for="__tabbed_1_6">Search</label><label for="__tabbed_1_7">Candidates</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><figure class="pscene" data-scene="data"></figure></p>
<p>How many materials were usable, why rows were skipped, property distributions, the elements present; <em>Bring your own data</em> (below).</p>
</div>
<div class="tabbed-block">
<p><figure class="pscene" data-scene="model"></figure></p>
<p>Properties, units, training ranges, validation errors, loss and alignment curves; <em>Train your own model</em> (below).</p>
</div>
<div class="tabbed-block">
<p><figure class="pscene" data-scene="family"></figure></p>
<p>Prototype sites with a rotatable 3D preview of the cell, element chips per site group with their charges (click to exclude), cell-size rule.</p>
</div>
<div class="tabbed-block">
<p><figure class="pscene" data-scene="rules"></figure></p>
<p>Each rule with its explanation, parameters, pass count and descriptor histogram; add a <em>predicted-property window</em> rule; the funnel.</p>
</div>
<div class="tabbed-block">
<p><figure class="pscene" data-scene="targets"></figure></p>
<p>One card per objective: target value, comparison kind, weights; the predicted-property scatter of all compositions (coloured = passes, grey = rejected, โ˜… = found by the search). Click any point or table row for its checklist and its crystal in 3D.</p>
</div>
<div class="tabbed-block">
<p><figure class="pscene" data-scene="search"></figure></p>
<p>Budget (candidates, latents per round, rounds, steps), a rough time estimate, Run/Stop, progress, log, link to the full report.</p>
</div>
<div class="tabbed-block">
<p><figure class="pscene" data-scene="candidates"></figure></p>
<p>One card per candidate: a rotatable 3D cell, elements, gauges of predicted values against the targets, the rule checklist, warnings, CIF links.</p>
</div>
</div>
</div>
<p>Crystals are drawn by a small built-in viewer: drag to rotate, double-click to spin.</p>
<h2 id="beginner-view-and-researcher-mode">Beginner view and Researcher mode<a class="headerlink" href="#beginner-view-and-researcher-mode" title="Permanent link">&para;</a></h2>
<p>The page opens in the <strong>beginner view</strong>: every block has an <strong>Input โžœ Logic โžœ Output</strong> strip with live numbers
("924 compositions โžœ 5 hard rules, applied in order โžœ 27 pass every rule") and the name of the Python function that
does the work, a short <strong>In short</strong> explanation, and a <strong>glossary</strong> in the side panel (composition, rule,
target, latent space, extrapolation).</p>
<p>The <strong>Researcher mode</strong> switch in the header trades these for the technical view: the <strong>โœŽ Edit as text</strong> YAML
drawer, and a <strong>Behind the scenes</strong> panel in every block with the <code>meidnet.yaml</code> and the Python of that block.
The choice is remembered by your browser.</p>
<h2 id="behind-the-scenes">Behind the scenes<a class="headerlink" href="#behind-the-scenes" title="Permanent link">&para;</a></h2>
<p>At the bottom of every block, <strong>Behind the scenes</strong> shows the same settings as the part of <code>meidnet.yaml</code> they
come from and as the Python that does the same thing โ€” with the values currently on the page. Copy either into
your own project; nothing on the page is hidden from the command line.</p>
<h2 id="bring-your-own-data">Bring your own data<a class="headerlink" href="#bring-your-own-data" title="Permanent link">&para;</a></h2>
<p>The Data block has an <strong>adapter</strong>: it maps your column names to what MEIDNet expects. Nothing in your files is
changed.</p>
<div class="psteps">
<ol>
<li><strong>Upload</strong> a table โ€” CSV, Excel (<code>.xlsx</code>) or JSON, one row per material โ€” with an id column, numeric property
columns and the structures, either as a column of CIF text or as a zip of <code>&lt;id&gt;.cif</code> files (select both files
together). Parquet works too when <code>pyarrow</code> is installed.</li>
<li><strong>Map the columns.</strong> The Studio suggests the id column, the CIF column and the numeric property columns; pick
the properties you want, give each a unit (eV, eV/atom, โ€ฆ) and optionally a label, and choose the family (and
variant) your structures belong to. <em>Align to prototype</em> re-orders each structure's atoms onto the family's
sites, which generation needs; raise the <em>prototype tolerance</em> if many rows are skipped as "does not match the
prototype".</li>
<li><strong>Check my data.</strong> Every row is parsed and checked; you see how many are usable, why the others were skipped
(with examples), the distribution of each property and the elements present.</li>
<li><strong>Train</strong> in the Model block: choose the number of epochs and press โ–ถ Train. The loss and alignment curves
grow while it trains; at the end the validation errors appear and <strong>every block switches to your model and
your properties</strong> โ€” the design space is re-scored, the targets are your properties. Each property's typical
error (MAE) is judged in words against the spread (standard deviation) of that property in your data โ€” <em>good</em> below a quarter of
the spread, <em>fair</em> below half, <em>weak</em> above โ€” the same rule the training report uses; "matched correctly" is
how often a validation structure is matched to its own properties.</li>
<li>Switch between <strong>your model</strong> and the <strong>published model</strong> at any time in the Model block. <em>Start over</em>
removes your upload and model from the session.</li>
</ol>
</div>
<p>A few epochs give a rough model in a minute or two; 100โ€“200 epochs are typical for real work โ€” run
<code>meidnet train</code> locally (with a GPU if you have one) and open the result with <code>meidnet studio meidnet.yaml</code>.</p>
<div class="admonition note">
<p class="admonition-title">On the hosted Studio</p>
<p>Each browser tab has its own private session: other visitors never see your data, model or candidates, and
a session's files are deleted after an hour without activity. The shared machine allows up to 1,500 rows and
8 MB per upload, 30 training epochs, 20 atoms per cell, and two jobs (training or search) at a time across
all visitors; search budgets are capped too. Run the Studio on your own computer to lift every limit.</p>
</div>
<h2 id="edit-the-configuration-as-text">Edit the configuration as text<a class="headerlink" href="#edit-the-configuration-as-text" title="Permanent link">&para;</a></h2>
<p><strong>โœŽ Edit as text</strong> in the header opens a drawer with the <code>generation</code> section of <code>meidnet.yaml</code> exactly as the
blocks have it: family, variant, excluded elements, rule overrides, extra rules, objectives, targets and search
budget. Change anything and press <strong>Apply</strong> โ€” the blocks update and the flow chain shows what changed in each.</p>
<ul>
<li><strong>Validate only</strong> checks without applying. Errors name the exact setting, for example
<code>steps: Input should be greater than or equal to 1</code>.</li>
<li>On the hosted Studio, values above the shared limits are accepted but capped, and a note says so:
<code>rounds 99 โ†’ 6 (limit on this shared server)</code>.</li>
<li>Predicted-property windows added in the Rules block appear as <code>extra_constraints</code>, so the file round-trips:
apply it, download it, run it with <code>meidnet generate</code>.</li>
</ul>
<p><strong>โฌ‡ Download meidnet.yaml</strong> (also in the Search block) writes the whole configuration โ€” rules switched off on
the page are listed under <code>disabled_rules</code>, excluded elements become <code>exclude_elements</code>, changed limits become
<code>overrides</code> โ€” so the command line reproduces exactly what the page shows. Settings the blocks do not show (for
example search terms set in your own <code>meidnet.yaml</code>) are kept as they are.</p>
<h2 id="explore-in-3d">Explore in 3D<a class="headerlink" href="#explore-in-3d" title="Permanent link">&para;</a></h2>
<p>Buttons marked ๐ŸงŠ open the <strong>3D explorer</strong>: a map with one point per structure, linked to a 3D viewer โ€” the
design space of the family, the candidates of a search, or the training data. See
<a href="explore-3d.html">Explore in 3D</a>.</p>
<h2 id="deep-links">Deep links<a class="headerlink" href="#deep-links" title="Permanent link">&para;</a></h2>
<p>Add to the address to open the page at a given place:</p>
<table>
<thead>
<tr>
<th>Address ends with</th>
<th>Opens</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>?panel=rules</code></td>
<td>the Rules block (any block: <code>data</code>, <code>model</code>, <code>family</code>, <code>rules</code>, <code>targets</code>, <code>search</code>, <code>candidates</code>)</td>
</tr>
<tr>
<td><code>?explore=space</code></td>
<td>the 3D explorer on the design space (<code>candidates</code> or <code>data</code> work too)</td>
</tr>
</tbody>
</table>
<p>Both can be combined: <code>?panel=targets&amp;explore=space</code>.</p>
<h2 id="dark-mode">Dark mode<a class="headerlink" href="#dark-mode" title="Permanent link">&para;</a></h2>
<p>The ๐ŸŒ™ / โ˜€๏ธ button in the header switches between the light and the dark theme; your browser remembers the choice.</p>
<h2 id="static-copy-for-a-website">Static copy for a website<a class="headerlink" href="#static-copy-for-a-website" title="Permanent link">&para;</a></h2>
<div class="highlight"><pre><span></span><code>meidnet<span class="w"> </span>studio<span class="w"> </span>--export-static<span class="w"> </span>docs/studio.html
</code></pre></div>
<p>embeds the state and design spaces into one HTML file. Everything works without a server except uploading,
training and running a new search โ€” useful for a plain web host. The
<a href="https://babu09-meidnet.hf.space/">hosted Studio</a> is the full server instead:</p>
<div class="highlight"><pre><span></span><code>meidnet<span class="w"> </span>studio<span class="w"> </span>--public<span class="w"> </span>--host<span class="w"> </span><span class="m">0</span>.0.0.0<span class="w"> </span>--port<span class="w"> </span><span class="m">7860</span><span class="w"> </span>--run-root<span class="w"> </span>/tmp/runs<span class="w"> </span>--docs-dir<span class="w"> </span>site
</code></pre></div>
<p><code>--public</code> gives every visitor a private session and caps the budgets so the shared machine stays responsive;
<code>--docs-dir</code> also serves a built copy of this documentation at <code>/docs/</code>.</p>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
MIT licence ยท Anand Babu
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.tabs", "navigation.sections", "navigation.top", "content.code.copy", "content.tabs.link", "search.suggest"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
<script src="../assets/vendor/mathjax-3.2.2/es5/tex-mml-chtml.js"></script>
<script src="../assets/vendor/tablesort-5.3.0/tablesort.min.js"></script>
<script src="../assets/vendor/tablesort-5.3.0/sorts/tablesort.number.min.js"></script>
<script src="../assets/tablesort.js"></script>
<script src="../assets/learn.js"></script>
<script src="../assets/links.js"></script>
<script src="../assets/prism3d.js"></script>
<script src="../assets/prism-tour.js"></script>
<script src="../assets/prism-docs.js"></script>
<script src="/ask-prism.js"></script>
</body>
</html>