From 98999c81a64bc126e4727ebb7bc18a52da30dc50 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Fri, 26 Jun 2026 09:11:40 -0700 Subject: [PATCH 1/2] update: nb interoperability --- ...provenance_and_interoperability_demo.ipynb | 1387 +++++++++++++++++ 1 file changed, 1387 insertions(+) create mode 100644 other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb diff --git a/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb b/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb new file mode 100644 index 00000000..3e30329b --- /dev/null +++ b/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb @@ -0,0 +1,1387 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mat3ra-2D: Provenance and Interoperability Demonstration\n", + "\n", + "This notebook addresses the editor's request for:\n", + "1. **Provenance completeness**: Tracing structures back through their construction history\n", + "2. **Interoperability with ASE/pymatgen**: Converting and accessing structure properties\n", + "3. **Structural diversity**: Showing different structure types and their metadata\n", + "\n", + "Dataset: Mat3rials Explorer Structures (DOI: 10.6084/m9.figshare.32786562)" + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:37.200625Z", + "start_time": "2026-06-26T16:08:34.020196Z" + } + }, + "source": [ + "# Setup: use local cache next to this notebook, or download from Figshare once\n", + "from collections import Counter\n", + "from pathlib import Path\n", + "import json\n", + "import re\n", + "import urllib.parse\n", + "import urllib.request\n", + "\n", + "import yaml\n", + "from mat3ra.made.tools.convert import to_ase, to_pymatgen\n", + "\n", + "FIGSHARE_URL = \"https://figshare.com/articles/dataset/Mat3rials_Explorer_Structures/32786562\"\n", + "MANIFEST_NAME = \"manifest.yaml\"\n", + "\n", + "\n", + "def default_data_dir():\n", + " for notebook_path in (\n", + " Path(\"provenance_and_interoperability_demo.ipynb\"),\n", + " Path(\"examples/material/provenance_and_interoperability_demo.ipynb\"),\n", + " ):\n", + " if notebook_path.exists():\n", + " return notebook_path.parent / \"mat3rials-explorer-figshare\"\n", + " return Path(\"mat3rials-explorer-figshare\")\n", + "\n", + "\n", + "def structure_path(filename):\n", + " direct = DATA_DIR / filename\n", + " if direct.exists():\n", + " return direct\n", + " return DATA_DIR / Path(filename).name\n", + "\n", + "\n", + "def figshare_article_id(url):\n", + " match = re.search(r\"/(\\d+)(?:/|$)\", urllib.parse.urlparse(url).path)\n", + " if match:\n", + " return match.group(1)\n", + " with urllib.request.urlopen(url) as response:\n", + " final_url = response.geturl()\n", + " match = re.search(r\"/(\\d+)(?:/|$)\", urllib.parse.urlparse(final_url).path)\n", + " if not match:\n", + " raise ValueError(f\"Could not find Figshare article id in {url}\")\n", + " return match.group(1)\n", + "\n", + "\n", + "def download_figshare_article(url, data_dir):\n", + " article_id = figshare_article_id(url)\n", + " api_url = f\"https://api.figshare.com/v2/articles/{article_id}\"\n", + " with urllib.request.urlopen(api_url) as response:\n", + " article = json.load(response)\n", + " data_dir.mkdir(parents=True, exist_ok=True)\n", + " for file_info in article[\"files\"]:\n", + " target = data_dir / file_info[\"name\"]\n", + " target.parent.mkdir(parents=True, exist_ok=True)\n", + " urllib.request.urlretrieve(file_info[\"download_url\"], target)\n", + " return data_dir\n", + "\n", + "\n", + "def dataset_is_cached(data_dir):\n", + " manifest_path = data_dir / MANIFEST_NAME\n", + " if not manifest_path.exists():\n", + " return False\n", + " manifest = yaml.safe_load(manifest_path.read_text())\n", + " sources = manifest.get(\"sources\") or []\n", + " if not sources:\n", + " return False\n", + " return all(structure_path(entry[\"filename\"]).exists() for entry in sources)\n", + "\n", + "\n", + "DATA_DIR = default_data_dir()\n", + "if dataset_is_cached(DATA_DIR):\n", + " print(f\"Using cached dataset in {DATA_DIR.resolve()}\")\n", + "else:\n", + " print(f\"Downloading Mat3rials Explorer dataset from Figshare to {DATA_DIR.resolve()}...\")\n", + " download_figshare_article(FIGSHARE_URL, DATA_DIR)\n", + "\n", + "manifest = yaml.safe_load((DATA_DIR / MANIFEST_NAME).read_text())\n", + "print(f\"Loaded {len(manifest['sources'])} structures from {DATA_DIR.resolve()}\")" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cached dataset in /Users/mat3ra/code/GREEN/api-examples/other/mat3rials_explorer/mat3rials-explorer-figshare\n", + "Loaded 77 structures from /Users/mat3ra/code/GREEN/api-examples/other/mat3rials_explorer/mat3rials-explorer-figshare\n" + ] + } + ], + "execution_count": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Dataset Overview and Structural Diversity\n", + "\n", + "First, let's examine the structural diversity in the dataset by categorizing structures by their form factor (Interface, Slab, Grain Boundary, Defect, etc.)." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:37.845191Z", + "start_time": "2026-06-26T16:08:37.204212Z" + } + }, + "source": [ + "import matplotlib.patches as mpatches\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def formula_elements(formula):\n", + " return set(re.findall(r\"[A-Z][a-z]?\", formula or \"\"))\n", + "\n", + "\n", + "def structure_elements(structure, formula):\n", + " values = [item.get(\"value\") for item in structure.get(\"basis\", {}).get(\"elements\", [])]\n", + " elements = {str(value).strip() for value in values if value is not None}\n", + " return elements | formula_elements(formula)\n", + "\n", + "rows = []\n", + "for entry in manifest[\"sources\"]:\n", + " structure = json.loads(structure_path(entry[\"filename\"]).read_text())\n", + " elements = structure_elements(structure, entry.get(\"formula\"))\n", + " rows.append({\n", + " \"formula\": entry.get(\"formula\"),\n", + " \"lattice_type\": entry.get(\"lattice_type\"),\n", + " \"space_group\": entry.get(\"space_group\"),\n", + " \"form_factor\": entry.get(\"form_factor\"),\n", + " \"n_atoms\": len(structure.get(\"basis\", {}).get(\"elements\", [])),\n", + " \"n_elements\": len(elements),\n", + " \"elements\": elements,\n", + " })\n", + "\n", + "element_counts = Counter(element for row in rows for element in row[\"elements\"])\n", + "summary = {\n", + " \"materials\": len(rows),\n", + " \"formulas\": len({row[\"formula\"] for row in rows}),\n", + " \"elements\": len(element_counts),\n", + " \"lattice_types\": len({row[\"lattice_type\"] for row in rows}),\n", + " \"space_groups\": len({row[\"space_group\"] for row in rows}),\n", + "}\n", + "\n", + "\n", + "def tile(ax, label, value, color):\n", + " ax.axis(\"off\")\n", + " ax.add_patch(mpatches.FancyBboxPatch((0.04, 0.08), 0.92, 0.84, boxstyle=\"round,pad=0.02\", facecolor=\"#f8fafc\", edgecolor=\"#e2e8f0\"))\n", + " ax.text(0.5, 0.58, value, ha=\"center\", va=\"center\", fontsize=24, fontweight=\"bold\", color=color)\n", + " ax.text(0.5, 0.28, label, ha=\"center\", va=\"center\", fontsize=10, color=\"#64748b\")\n", + "\n", + "\n", + "def barh(ax, counts, title, color, top=10, xlabel=\"Count\"):\n", + " items = counts.most_common(top)[::-1]\n", + " ax.barh([str(key) for key, _ in items], [value for _, value in items], color=color)\n", + " ax.set_title(title, fontsize=11, fontweight=\"bold\")\n", + " ax.set_xlabel(xlabel)\n", + "\n", + "\n", + "plt.style.use(\"seaborn-v0_8-whitegrid\")\n", + "fig = plt.figure(figsize=(16, 9))\n", + "fig.suptitle(\"Mat3rials Explorer\", fontsize=18, fontweight=\"bold\", y=0.98)\n", + "grid = fig.add_gridspec(3, 3, height_ratios=[0.75, 1.2, 1.2], hspace=0.45, wspace=0.35)\n", + "\n", + "metrics = grid[0, :].subgridspec(1, 5, wspace=0.25)\n", + "for i, (label, key, color) in enumerate([\n", + " (\"Materials\", \"materials\", \"#2563eb\"),\n", + " (\"Formulas\", \"formulas\", \"#7c3aed\"),\n", + " (\"Elements\", \"elements\", \"#059669\"),\n", + " (\"Lattice types\", \"lattice_types\", \"#d97706\"),\n", + " (\"Space groups\", \"space_groups\", \"#dc2626\"),\n", + "]):\n", + " tile(fig.add_subplot(metrics[0, i]), label, str(summary[key]), color)\n", + "\n", + "barh(fig.add_subplot(grid[1, 0]), Counter(row[\"lattice_type\"] for row in rows), \"Lattice types\", \"#2563eb\")\n", + "barh(fig.add_subplot(grid[1, 1]), Counter(row[\"n_atoms\"] for row in rows), \"Atoms per structure\", \"#0891b2\")\n", + "barh(fig.add_subplot(grid[1, 2]), element_counts, \"Most common elements\", \"#059669\", xlabel=\"Materials containing element\")\n", + "barh(fig.add_subplot(grid[2, 0]), Counter(row[\"form_factor\"] for row in rows), \"Form factors\", \"#7c3aed\")\n", + "barh(fig.add_subplot(grid[2, 1]), Counter(row[\"space_group\"] for row in rows), \"Space groups\", \"#dc2626\")\n", + "barh(fig.add_subplot(grid[2, 2]), Counter(row[\"n_elements\"] for row in rows), \"Distinct elements per structure\", \"#d97706\", xlabel=\"Materials\")\n", + "\n", + "plt.show()\n", + "summary\n", + "\n", + "\n", + "# Analyze structural diversity\n", + "form_factors = Counter(entry.get(\"form_factor\") for entry in manifest[\"sources\"])\n", + "dimensionalities = Counter(entry.get(\"dimensionality\") for entry in manifest[\"sources\"])\n", + "\n", + "print(\"Structural Diversity:\")\n", + "print(\"\\nForm Factors:\")\n", + "for form_factor, count in form_factors.most_common():\n", + " print(f\" {form_factor}: {count}\")\n", + "\n", + "print(\"\\nDimensionalities:\")\n", + "for dim, count in dimensionalities.most_common():\n", + " print(f\" {dim}: {count}\")\n", + "\n", + "print(f\"\\nTotal structures: {len(manifest['sources'])}\")\n", + "print(f\"Unique chemical formulas: {len(set(e.get('formula') for e in manifest['sources']))}\")\n", + "\n" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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5qUnbdu2NZmbmj1SvXr1TNczb948M0S8cOHCsmbNGhMk9bTOiIgI6dWrl/m3t8sBAGAXWprlk08+kbffftu0ie7Gjx9vRjDoaIbIyEgTyNQOnJZ8cbZq1SozagEAgEBUokQJ6dGjh+P+E088YbIxnR/TtnHq1KlmJJ/O6XD11VdLtWrV/LTFABC88lwwUzNElE7i44n1uE4KZJk1a5bJOFGasblt2zbZsmWLCXoqa4KgAgUKZPne3i7nLzoZUV6lGbDBLJj3P5j3XbH/2f/8ExMTc/SzgGdJSUkmOKmjGrS9PH78uMvzv/zyi1x33XUmkGnRCffcP6unnnrK1JTWmtYAAASjBx98UPbv32/Ksezdu1duuOEGMzT90ksv9femAUBQyXPBTKse5b59+zxmkGijofRKmEVraOrkP5pVqTW/9DnNzCxSpIjLsocPH84wfNzq6Gknztvl/MXTNuUleX37clsw738w77ti/7P3+es5W8/1yF1RUVGmbVQazHS3c+dOqVmzpnz99deyevVqqVSpkimt4twGa1bnRRddZLJTCGYCAILR0qVLZcWKFaafaSW/FCxYUF599VX55ptv/L15ABBU8lwws27duiagqY2EBijdzZ07V6pUqWI6W54mANIZz7UT9vrrr8uzzz4roaGhZji6BioXLlwoF198scv6tE5mu3btZPjw4dK9e3evlnMeagAAgF3pcDm9UKdtpralTZo0kZ9++kkmT54s06dPN520devWybfffiszZszw9+YGhWDP9r5QHD+Onx3/9hipYJ9J9LRv+cwzzzgeO3LkiGzYsEHS0tLMcwiMUYfnEkxtDfsamGLz8N+wt21ingtmat2uRx55xAQimzdv7pKyv2DBApM5op2urDKkxo4da4bM5c+f38xAHhISInfddZe89dZb0rp1a6lTp45jSPqoUaNMPUwNVHq7HAAAgUAntdOb1op++umnHRcF9eKe1gTTC4VPPvmkPProo+ZiHx3u3KfZPsGe7X2hOH4cP7v97TFSwR6OHj0qZcuWNZMBOevbt6/pLxLMDK5ztd23/3ywr4GpWB79G/a2TcxzwUylE+1oh+mee+4xs5LrrOa7du0ydTBHjhwpXbp0yfL1mompna9hw4ZJq1atpE2bNnLjjTeamVm1Y6adtuLFi8tff/1lrqJpHTHNPlHeLgcAQCDQ0Q5V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JHyMY5gy/HZPX1xc3CljkCF2Rds5cSx/18R+29H23RM7D4n0ekJtGrVt4hP6943073oyBW3YSP2+BDMBAAAAAAAARITouYQAAAAAAAAAIKoRzAQAAAAAAAAQEQhmAgAAAAAAAIgIBDMBAAAAAAAARASCmQAAAAAAAAAiAsFMAAAAAAAAABGBYCaAJK1atYpSAgDEvH///de2b98e8+UAAJHC5/PZL7/8YrGMMqDMoxHBTCCTmzlzpnXs2NHq1atnDRs2tAceeMD++uuvDPv8GTNm2MCBAzPs8wAAiI/qvkceecQaN25sdevWtbZt27o6KiNdc801tnHjRv5AAJBO+vXrZxdeeKG99tprp7y2Z88eq1mzpqsHkuvll1+2119//bS2qUuXLvbOO+8ka9l27drZ5MmTLTNJaRmk5PumZNm0lhnLOi33OyQuexKvAwij/v37208//WQPP/yw1ahRww4cOOAq9ptvvtkduM8777x034ZDhw6l+2cAAJCYH374we644w7r3LmzazQVKFDAli5dao8//rj9/fff1rdv3wwpQOpEAEhfx44ds1KlStncuXPtrrvuCnptwYIFVrx4cdu/f3+GHrffeOMNy5YtW7KWPXr0qJ04ccIyk5SWQUq+b0qWTWuZsaw9nC+kPzIzgUxKlfW8efNs3Lhx7upjkSJFrGzZsjZkyBA799xzbdKkSf5uAxMnTnTZInXq1HFXx37//Xf/eu677z4bMWJE0EFfVzt//fVX/9XPoUOHupMFvb958+Y2f/5899qnn37qXlu9erV7j94LAEBGOnnypKurbrnlFrv//vtdXVioUCFr1qyZDRo0yNWHytaRP//809Vn9evXt6uuusrefPNNV0/K999/7zJ6Aj399NMu21NWrlzp3qOGmZf9qdcOHz7sXr/66qtdo+m2226zt956i50AANJJrVq1bNeuXbZ+/fqg59U20rE/0NatW13d0LRpU/e+a6+91i0nuvj17rvvujaNl82pOmXs2LHu8WWXXWa9e/e2f/75x78+JY2o/aP6QO2iuLg4dzFtwoQJSX5eKLW3VHeph13r1q1dtp5XJ4VS/aLXtV1avkePHrZp0yb3mtpgek3fXXXTvffea5s3b/a/V5+h1/V/7dq17frrr7dly5YlWAZJfYfA75vYulO6rL7HU0895cq9ZcuWrneF6mXve4ZK6m+VkmW1TdpOtZXV5u3QoYPbv7Q9OmfQ9ixZsiRF60tJmSPtEcwEMqkPP/zQrrjiCjv77LNPeU0H4scee8zdV4NKB9JHH33UPv74Y6tatapraO3bt89/dfP48eP+96oCVUWiA7T3+vjx461FixYuiKlKUo03ZYE2adLEHnroIbdOZcXkzJkzw74/AACi+mfLli2ugRlKddd3333ngps7d+60Tp06Wbly5Wz27NkuUKkLgrrgJ6r31CgNpDpQN+91NaiU8al6VkHNL774wt+FTVlCyj7R86pnAQDpI2vWrK4doraNR8d4Xbg655xzgpZVZn6+fPnchS0FjxScGzBggGvvKJtfwSaty0vWUNtpzpw59tJLL7nhvJTpqWO6l7Sh/z/66CO33JgxYyxXrlxBGYCJfV4oBcAaNWrklnvmmWfsvffes4ULF8b7nb3tGTlypGsH6sJdz5493WsKrqpee+6559z/Z5xxhgsievWXPlvbq+cUlKxSpYrr2ad6Lb4ySOo7BH7fxNad0mVVBqrTFeh74YUX7O2333YZjN7roZL6W6VkWf0/evRoFyTWtulC5Y033mglSpRw71NAU709UrK+lJQ50h7BTCCTUre5888/P97XcuTI4b+vKz/33HOPu2J05plnuuyVwoUL25QpU5L9WTp462pSsWLF3LpUqaxdu9adSGTP/n+jUagiBwAgHPWhGm7xXdzLkiWLv3ubMjwKFizohmg566yz7JJLLnHZK/GNu5YYvV+fddFFF7mslZ9//tk9713QUx0cri51ABArlGARGAhSYFPZkqF08enJJ5907ZiiRYu6IJLaMuqKrmO1bmrT6BiupA5dkNJxvlq1aq6u8JI4vv76a/86dexX0LR8+fIp+rxACnYpk0/LaGgUfd4333wTb6aegoHvv/++61GnocUUYNN2qT138OBBmzp1qguUVa9e3b2mbEJlrgYGRtVL78orr3RBt+7du7uLgDt27DilDFLyHZJad0qWVfBw+vTp7nupjVupUiWXjJOQ5P6tUrKsLoDq3ECv6++gv8udd97pyuGGG25wFzSPHDmS7PWlpMyR9hgzE8ik1EBLqBuCR1cndcBUxRb4Ph10161bl+zPKlOmjP++gpY6+AZmcwIAkJnrQ6+Lueo/NR48qh81+7jXWyGldWLevHldgxEAkLHU1frff/91bRoFFZUd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smVP6/NOZx3pIbNuFxBNCGYCKbRgwQIbMWJEvK8VL17cvv7667CX6dGjR61du3auoSkXXXSRTZkyJU3WvX37djvrrLPSZF0AgMji8/ns2WeftXfffddOnDjhf/68886zwYMHW+3atcO6fQCA8JkwYYLNnDkz3oSPHj162D333HPKso888ojddtttyf6MHTt22Jlnnnla60jp56RUem5Xejid75oZZfT3ibbyixRcQgdSSZmOTZo0CbpllqzM1atXu0CmrobWr1/frrjiitNep7JRO3fubMOGDUuTbQQARJ5p06bZ22+/bVmyZLFatWq5+kX14fr1610j9cCBA+HeRABAmJ1zzjn+tpGy9+Pi4mzUqFE2adIk/zJVq1Z1yyQ3c3H58uV2/fXXu4tpqV1Haj8nWkXbd83o7xNt5RdpyMwEUqlatWo2duzYRJfZv3+/Cyyqy7cq28KFC/tfU7Bx8+bNduGFF9p///3nGoBqGKpbwr///mt16tRxGZZaTt33ypQp4973119/2ZYtW9z7ChYseMpnap3ffvutu1+iRAkXgNSyoiwabc/u3bstb968dsEFF9gZZ5wR9P5t27bZ2rVrrVChQq57es6cOd326ArjsmXLXNbNwoUL7corr7QcOXKk+nsq0Hr48GH7448/bM+ePa4xXKVKFddABgBkTosXL3b/33fffXbnnXe6+zquP/bYY67OUh1y/vnn+7vY1ahRw2Vz/vbbby5rQcf5QOqmrvpD9YC6IqpeUgZPINUhCpYWKVLE1UvZswefvqqeUT2lujKpBq22Rdu2b98+V5+pXvrll19cHatukKtWrXLrUj2lulbbV7NmTX/dpO3U52k92tbAbpP6jnpPhQoVXEPe2zZtv8qkXLlyyS6XgwcPuvpR26neEPreABApFGDs37+/u6/jqJIh3nvvPdd2uummmyxbtmzuGFyqVCl3fPSoTaFjn46BasfoeOoN8/XOO++4Y6aO119++aU1bNjwlHXoeK56yGtr6LGOsVpP6FAof//9t7upDaJjrF5P6HPio2O46q9du3ZZ+fLl7eyzz060TBJb/vvvv3fDtyj4q15wau9pm7zecKpLVF+p7ghsuyW2zqTKIrHvmtDfIT4///yzy0xU21XDm6kdqfeoi31yv/9PP/3knr/44ovdd9f2Va9ePd7PS+k+ktC6V65c6cpa9a+3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a5dlyZLFihQp4v4fPny4jRs3LsGxNAEAAAAgozBmJgAAMUyZl+vWrXP3T5w4YevXr7fnn3/eWrdubXnz5nXPX3bZZWHeSgAAAAD4PwQzAQCIYf/++6/de++97n62bNmscOHCdsMNN1j37t3DvWkAEDF2796d6vfGxcWl6bYAABDtCGYCABDDvAmAAACpp2E5UuvQoUO2detWih8AgHCPmblv3z7bv39/spfftGmTrV69+rQ/V1c29dkAAAAAAKT1uNKLFi2yP/74g4IFgGgLZj788MM2ZMiQZC/fo0cP+/3330/rM9955x2rXbu2NW3a1JYsWXJa6wIAAAAAwDN79mxr2bKlvfHGG9a1a1fXhj169CgFBADROJu5z+ezHTt2uPvHjx8/JXNyz549bgICZXIeOHAg6DU91oQEgU6ePOlf3+HDh/3j1Khy6dixo82bN88uueSSoGzNxLJE1bVDnx+f+D4fAIBooPExy5Qpk+zlNZt58eLF03WbAADIjNTefOKJJ2zMmDEuiUZtzpUrV9qcOXPCvWkAEHMyZMzM//77zxo0aGD33HOPTZgwwY4cOWLnnXeevfTSS1auXDl77LHHbPPmze7xP//847I6N2zYYI888oj9+uuvbkKCxo0bu8qjYMGCLrVf69MEBZ988om7v2XLFlu7dq17388//2wffPCBTZ8+3V599VV/l/dSpUq5GVpr1Kjhtkuztz766KOue7sCrg0bNrRhw4ZZvnz5Ev18AACiQYcOHdwtuVSPAwAQi/7++29r1aqV1alTxz0uUKCAaxvu3bs33JsGADEnQzIzPT/++KN98cUX9t1331nu3Llt7Nix7vmXX37ZypYtawMGDHCBTGVe9urVy2rWrOne880339jBgwftySefjHedTz/9tAtcVq1a1Xr37u0Cmdu2bXPB0eHDh9vSpUtt2bJlVrJkSRs9erR7n7oDqFtAlSpVbPny5a5betasWe3tt99O0ecDAAAAAKKb2oaDBw9295WV2adPH8uVK5e1adMm3JsGADEnQ2cz7969u+XPn9/d11gjs2bNinc5BTs1IVCXLl1cVqfceuut1q1bN38FItdcc437P75syRIlSthXX33lf6xsS2VwLliwwD3+4Ycf7N9//7WHHnrIcubM6W4KfsrixYsT/fw8efKkYakAABBdysycSV2Ziu6LpzMbcqyi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gFjHmJkAAMQoBTLfffddi4uLczcFLX/99Ve75pprbNy4cW6ZvXv32vXXX2+zZ8+2jRs3WteuXe21114L96YDAAAAiFFkZgIAEMMKFy5sffv2DXqufPny9uKLL9rNN99sr7/+up1zzjnuf7n00kvd8rfddpvlypUrTFsNAAAAIFYRzAQAAEEuuugiO3LkiO3cudMFMps0aeJ/7dixY5Y9e3bLkiULpQYAAAAgwxHMBAAAQX788UfLly+flSxZ0tq3b++eW7lypc2YMcONnTl06FDLmTMnpQYAAAAgwxHMBAAghu3Zs8fGjh3r7p84ccLWr19vCxYssIEDB7oMTI/G1CxXrpyVKFHCJk6caJdffrnlzZvXookmOAqXAwcOhO2zIxnlRrlFw/6m4ysAAEg+gpkAAMQwn8/nb0hny5bNatWqZffcc49VqFAhaLmLL77Y3dq1a2dXX321TZs2zbp06WLRpEiRIjH9+ZGKcqPcIn1/O3TokG3dujXN1wsAQLQimAkAQAyLbwKgQO+8847LwtSkQKJsTI2juW3btgzcSgAAAAD4P1n///8AAACn+O677+zNN9/0P1b20O+//241a9aktAAAAABkuKjKzGzdurUdPXrU3dcsq3ny5LELL7zQevTo4cb4Sopmbb3lllvs3XffdZknbdu2tTfeeMPKlCmTAVsPAEDm89BDD7m6sXfv3nb22WfbRx99ZE2bNnU3AABi1ZAhQ1ybsU+fPuHeFACIOVEVzPzrr7/svvvus0aNGrkxwDSpwXPPPWddu3a1efPmuQBnYo4fP+7WcezYMTt58qS77wVHAQCINnXq1ElyEh91L1cdunDhQtu7d6+NGDHC6tWrl2HbCABAZrNo0SIbP368S34BAGS8qOtmfuaZZ7qG1/nnn+8aaZrEQDOzavZBZV42b97c/v33X//y06dPT3SsMM/ixYvtmmuusR9++CGdvwEAABmjbt26yZrER+NqauKf7t27E8gEAMS0gwcP2uOPP07vPQAIo6jKzAyl7ExdNevUqZPlz5/fVTxe5qVH2ZtbtmxJdD0rVqywe++913W1U4AUAAAAABB71EOhVq1alitXrnBvCgDErKgLZqpb+SuvvOLuqzvckSNH7Iknnkj1+v744w/3fo272bFjxzTcUgAAolOZmTPduNUAAEQT9dJbsGCBGz/6+eefD/fmAEDM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F19YmzZtwrTVAAAAAGIVwUwAABCkQIEC7v/jx4/bwIED7cwzzwzqih74PwAAAABkJIKZAAAgKCtz4sSJVrFiRStevLi7Bfrwww/t4MGDdtlll1FqAAAAADIcwUwAAGLYli1b7LrrrnP3T5w44R6XLFnSRo4cecqyP/74oz399NNuTM1ixYqFYWvNTUIUjQ4cOBDuTYhIlBvlFg37W1wcsyoDAJASBDMBAIhh6kI+bNgwf9fxwoUL21lnnXXKcosXL7a+ffvaU089ZS1atLBwKVKkiEWraP5u6Ylyo9wifX87dOiQbd26Nc3XCwBAtCKYCQBADItvAqBQ8+bNcxmZo0aNsvr162fYtgEAAABAKIKZAAAgQR9//LE98cQTblbzpIKeAAAAAJDeoiqYqfFmli9fbtu3b3fd5GrXrm358uVzrx0+fNjmzJljLVu2tLx58ya6nqNHj7oJDtSNzns/AACxRvXh448/blmyZLGHH3446LVbbrnF2rVrF7ZtAwAgHNatW2dr1qyxAgUKWJ06dSx37tz8IQAgg0VNMHPFihXWs2dPN2lBuXLl3LgzqmQ0SUHTpk1t79699thjj9kll1ySZDBTg3tr2bp16xLMBABErfbt21uzZs0SfF1BTGVkJjTWJgAAseS5556zadOmuTblxo0bbc+ePfb222+79icAIONETTBz4MCBbjbWhx56yP/cpEmTrF+/fi4omdBVtfXr17uszQsuuMDKly8f9PrJkydt6dKltmvXLjdGGAPMAwCiiWYkT2xW8hw5ctC1HAAAM/vll19s/PjxNnfuXCtbtqz5fD7r1auXC3COGTOGMgKADJTVosTmzZutVKlSQc/deOON1qpVKxeMDKSK57777rM777zTPv30U5s+fbrrfj558uSg5R588EF78cUX7f3333frWbVqVYZ8FwAAAABA5nHw4EG74447XCDT672ghJe//vor3JsGADEnajIzW7dubcOHD7fVq1fbFVdc4cYvKVq0qA0ePNi9vm3bNv+y//77rxvjZObMme5/0eQGs2fPtg4dOviXq1y5sg0ZMsTdf+qpp9xMrlOmTMnw7wYAQCQpM3Om5cmTJ9ybAQBAmqlXr567Bfr222+tatWqlDIAZLCoCWZqggJVJMqyVJBSXcTVdVyp/w0bNgxatkSJEi4w6WVpKqvz2LFjbqKDQJ07d/bf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1Khhy5Yts/fff98mTZqUIcsDAAAAQEYimAkAQJhNmTLF9u/fb927d483mPn111/bsGHD/I81dqbG0FR2ZOnSpW3EiBFuHRdddJGtW7fOWrZs6ZYpVapUhiwPAAAAABmFYCYAAGG0bds2l/347rvvWvbsp1bL27dvtz179lilSpX8z2lMTa+bd5kyZSxPnjwu0Chnn322+1+TCHnBxvRePiXim9wIZgcOHKAYUoFySx3KLXOVmzLhAQBA8hHMBAAgjAYOHGgdOnSwypUrx9ugVRfzyy+/POi5vHnz+u9nyZLFBRsDH3td1zNq+ZQInNgIlE1aYJ+i3CJ9fzt06JDLdgcAAMlDMBMAgDD58ssvbdGiRVazZk1766237MSJE+75WbNmuW7ndevWdcHMNm3a8DcCAAAAADPLSikAABC+DJ/OnTu7mcJ37tzpbqJu5QcPHrRjx47Z8uXL7ZJLLuFPBAAAAABkZgIAED7Vq1d3N4+6mWvszNtuu82qVKliS5YssapVqwZ18wYAAACAWEY3cwAAMlDJkiWtW7dulitXrlNey5Ytm3stcEy2rl27Bi3TsGFDy5Ejh//xueee68bcDF3HmWeemSHLAwAAAECmDWaOGzfOdXnr2LGj5cuXL+i1zZs327x589xsq1deeaVlxGyCkyZNcg2s/Pnzp/vnAQCQFsqWLWv9+/eP9zXNZh74Wnzdy1u1ahX0WPVu4EznoetI7+UBAIgVv/76qxvrOlBGtX8BAP+TojEzX3rpJXv55Zftiy++OOW1qVOn2pgxY2zBggWWERTMHDFihBtnDAAAAACA9KQJ+j755BPbt2+f/6YhYgAAmbybeYMGDezjjz+2a6+9Nuj5zz//3OrUqXPK8uvWrbMffvjBsmbN6rqued3Sjhw5YuPHj7dOnTq52Vx37NhhF198sV1wwQXJen+okydP2o8//mjr16+3w4cPu/V42zN//nzLnTu3e79n1apV9ueff/pniNXnaGyyAgUK2KWXXmrFihVzzx86dMjee+89a926tQvililTxpUBAACIX5mZMxnnEwAQdVavXm1t27YNGn4FABABs5k3btzYBf2UGelZuXKl6zaXN2/eoGVff/11a9euna1YscI+++wza9asmQtMekFCZVa2b9/eXd36+eefXcWgrurJeX9oIFPjdw0ePNgFJX/66Se79dZb7Y03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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Structural Diversity:\n", + "\n", + "Form Factors:\n", + " Interface: 45\n", + " Bulk: 20\n", + " Slab: 8\n", + " Surface: 2\n", + " Monolayer: 2\n", + "\n", + "Dimensionalities:\n", + " 2D: 55\n", + " 3D: 22\n", + "\n", + "Total structures: 77\n", + "Unique chemical formulas: 76\n" + ] + } + ], + "execution_count": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Interoperability with ASE and Pymatgen\n", + "\n", + "Demonstrating conversion to ASE Atoms and pymatgen Structure objects, and accessing key properties." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:37.970966Z", + "start_time": "2026-06-26T16:08:37.861201Z" + } + }, + "source": [ + "# Install required packages if needed\n", + "try:\n", + " import ase\n", + " from ase.visualize import view\n", + "except ImportError:\n", + " print(\"Installing ASE...\")\n", + " !pip install ase\n", + " import ase\n", + " from ase.visualize import view\n", + "\n", + "try:\n", + " import pymatgen\n", + " from pymatgen.core import Structure as PymatgenStructure\n", + "except ImportError:\n", + " print(\"Installing pymatgen...\")\n", + " !pip install pymatgen\n", + " import pymatgen\n", + " from pymatgen.core import Structure as PymatgenStructure" + ], + "outputs": [], + "execution_count": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example: Convert a Slab Structure\n", + "\n", + "Let's take a slab structure and demonstrate ASE/pymatgen interoperability." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:38.051545Z", + "start_time": "2026-06-26T16:08:37.974303Z" + } + }, + "source": [ + "# Find a slab example\n", + "slab_entry = next((e for e in manifest[\"sources\"] if e.get(\"form_factor\") == \"Slab\"), None)\n", + "\n", + "if slab_entry:\n", + " slab_path = structure_path(slab_entry[\"filename\"])\n", + " slab_data = json.loads(slab_path.read_text())\n", + " \n", + " print(f\"Example Slab: {slab_entry['name']}\")\n", + " print(f\"Formula: {slab_entry.get('formula')}\")\n", + " print(f\"Space Group: {slab_entry.get('space_group')}\")\n", + " print(f\"Lattice Type: {slab_entry.get('lattice_type')}\")\n", + " \n", + " # Convert to ASE\n", + " ase_atoms = to_ase(slab_data)\n", + " print(f\"\\nASE Atoms object:\")\n", + " print(f\" Number of atoms: {len(ase_atoms)}\")\n", + " print(f\" Chemical symbols: {ase_atoms.get_chemical_symbols()}\")\n", + " print(f\" Cell parameters: {ase_atoms.cell.cellpar()}\")\n", + " print(f\" Positions shape: {ase_atoms.positions.shape}\")\n", + " \n", + " # Convert to pymatgen\n", + " pmg_structure = to_pymatgen(slab_data)\n", + " print(f\"\\nPymatgen Structure object:\")\n", + " print(f\" Composition: {pmg_structure.composition}\")\n", + " print(f\" Number of sites: {len(pmg_structure)}\")\n", + " print(f\" Species: {[str(site.specie) for site in pmg_structure[:5]]}...\") # First 5\n", + " print(f\" Volume: {pmg_structure.volume:.2f} ų\")\n", + " print(f\" Density: {pmg_structure.density:.2f} g/cm³\")\n", + "else:\n", + " print(\"No slab structure found in dataset\")" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Example Slab: ZrO2(011), termination O2_P2:m_1, Slab - Island defect\n", + "Formula: Zr138O289\n", + "Space Group: P1\n", + "Lattice Type: MCL\n", + "\n", + "ASE Atoms object:\n", + " Number of atoms: 4270\n", + " Chemical symbols: ['O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O']\n", + " Cell parameters: [41.86919 60.460396 35.82282 90. 90. 97.1908 ]\n", + " Positions shape: (4270, 3)\n", + "\n", + "Pymatgen Structure object:\n", + " Composition: O2890 Zr1380\n", + " Number of sites: 4270\n", + " Species: ['O', 'O', 'Zr', 'Zr', 'Zr']...\n", + " Volume: 89969.64 ų\n", + " Density: 3.18 g/cm³\n" + ] + } + ], + "execution_count": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Provenance Demonstration: Interface → Slabs → Bulk Materials\n", + "\n", + "Now we demonstrate provenance tracking by selecting an interface structure and tracing its lineage back through the construction workflow.\n", + "\n", + "For a Mat3ra-generated interface, we show the construction hierarchy:\n", + "\n", + "**Level 3: Interface** (final structure)\n", + "- Created by combining film and substrate slabs\n", + "- Records: interfacial gap, strain, lateral shift, vacuum\n", + "\n", + "**Level 2: Slabs** (intermediate structures)\n", + "- Film slab and substrate slab\n", + "- Records: Miller indices, termination, layer count, vacuum\n", + "\n", + "**Level 1: Bulk Materials** (source structures)\n", + "- Parent bulk crystals\n", + "- Retrieved from reference data repository (mat3ra-standata or Materials Project)" + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:40.857263Z", + "start_time": "2026-06-26T16:08:38.053069Z" + } + }, + "source": [ + "from mat3ra.notebooks_utils.ipython.entity.material.visualize import visualize_materials\n", + "from mat3ra.made.tools.build_components.metadata.material_with_build_metadata import MaterialWithBuildMetadata\n", + "\n", + "def normalize_build_metadata(data):\n", + " \"\"\"Normalize build metadata to list format and remove Mat3ra external field.\"\"\"\n", + " # Remove external field for Mat3ra-generated materials\n", + " if \"external\" in data and data.get(\"external\", {}).get(\"source\") == \"Mat3ra\":\n", + " del data[\"external\"]\n", + " # Normalize metadata.build to list if it's a dict\n", + " if \"metadata\" in data and \"build\" in data[\"metadata\"]:\n", + " if isinstance(data[\"metadata\"][\"build\"], dict):\n", + " data[\"metadata\"][\"build\"] = [data[\"metadata\"][\"build\"]]\n", + " return data\n", + "\n", + "def embedded_parent_materials(build_config):\n", + " \"\"\"Return embedded parent materials from supported build metadata shapes.\"\"\"\n", + " parents = []\n", + "\n", + " for component_data in build_config.get(\"merge_components\", []):\n", + " parents.append(component_data)\n", + "\n", + " for stack_component in build_config.get(\"stack_components\", []):\n", + " parents.append(stack_component.get(\"crystal\"))\n", + "\n", + " if build_config.get(\"type\") == \"InterfaceConfiguration\":\n", + " for key in (\"film_configuration\", \"substrate_configuration\"):\n", + " parent = (build_config.get(key) or {}).get(\"bulk\")\n", + " parents.append(parent)\n", + "\n", + " return [parent for parent in parents if isinstance(parent, dict) and \"basis\" in parent and \"lattice\" in parent]\n", + "\n", + "\n", + "def extract_provenance_chain(material_data, depth=0):\n", + " \"\"\"Recursively extract the full provenance chain from a material.\"\"\"\n", + " chain = []\n", + " material_data = normalize_build_metadata(material_data)\n", + " material = MaterialWithBuildMetadata(**material_data)\n", + " has_children = False\n", + "\n", + " chain.append({\n", + " \"material\": material,\n", + " \"depth\": depth,\n", + " \"data\": material_data,\n", + " \"is_leaf\": False,\n", + " \"is_complete\": True,\n", + " })\n", + "\n", + " if material.metadata.build:\n", + " build_config = material.metadata.build[0].configuration\n", + " for parent_data in embedded_parent_materials(build_config):\n", + " has_children = True\n", + " chain.extend(extract_provenance_chain(parent_data, depth + 1))\n", + " if not has_children:\n", + " chain[0][\"is_complete\"] = False\n", + " chain[0][\"is_leaf\"] = False\n", + " else:\n", + " chain[0][\"is_leaf\"] = True\n", + "\n", + " return chain\n", + "\n", + "# Statistics\n", + "total_with_metadata = 0\n", + "complete_chains = 0\n", + "incomplete_chains = 0\n", + "\n", + "# Find structures with build metadata\n", + "for entry in manifest[\"sources\"]:\n", + " entry_path = structure_path(entry[\"filename\"])\n", + " try:\n", + " data = json.loads(entry_path.read_text())\n", + " data = normalize_build_metadata(data)\n", + " \n", + " # Check if this material has build metadata\n", + " if \"metadata\" not in data or \"build\" not in data[\"metadata\"] or not data[\"metadata\"][\"build\"]:\n", + " continue\n", + " \n", + " total_with_metadata += 1\n", + " \n", + " # Extract full provenance chain\n", + " chain = extract_provenance_chain(data)\n", + " \n", + " # Check if chain is complete (ends with a leaf node)\n", + " is_complete = any(item[\"is_leaf\"] for item in chain)\n", + " if is_complete:\n", + " complete_chains += 1\n", + " else:\n", + " incomplete_chains += 1\n", + " \n", + " if chain:\n", + " print(\"=\"*70)\n", + " print(f\"PROVENANCE CHAIN FOR: {entry.get('name', 'Unknown')}\")\n", + " print(f\"Form Factor: {entry.get('form_factor', 'Unknown')}\")\n", + " if not is_complete:\n", + " print(\"WARNING: Incomplete chain - parent structures not embedded\")\n", + " print(\"=\"*70)\n", + " \n", + " for item in chain:\n", + " material = item[\"material\"]\n", + " depth = item[\"depth\"]\n", + " is_leaf = item[\"is_leaf\"]\n", + " is_complete_node = item[\"is_complete\"]\n", + " indent = \" \" * depth\n", + " prefix = \"-> \" if depth > 0 else \"\"\n", + " \n", + " status = \"\"\n", + " if is_leaf:\n", + " status = \" [PRISTINE - Original Material]\"\n", + " elif not is_complete_node:\n", + " status = \" [INCOMPLETE - Parent not embedded]\"\n", + " \n", + " print(f\"\\n{indent}{prefix}Level {depth}: {material.name}{status}\")\n", + " print(f\"{indent} Formula: {material.formula}\")\n", + " print(f\"{indent} Atoms: {len(material.basis.elements.values)}\")\n", + " \n", + " try:\n", + " visualize_materials([material])\n", + " except Exception as e:\n", + " print(f\"{indent} (Visualization skipped: {e})\")\n", + " \n", + " print(\"\\n\" + \"=\"*70 + \"\\n\")\n", + " \n", + " except Exception as e:\n", + " print(f\"Error processing {entry.get('filename', 'unknown')}: {e}\")\n", + " continue\n", + "\n", + "print(\"\\n\" + \"=\"*70)\n", + "print(\"PROVENANCE CHAIN STATISTICS\")\n", + "print(\"=\"*70)\n", + "print(f\"Total materials with build metadata: {total_with_metadata}\")\n", + "print(f\"Complete chains (to pristine material): {complete_chains}\")\n", + "print(f\"Incomplete chains (parent not embedded): {incomplete_chains}\")\n", + "print(f\"Completeness rate: {complete_chains/total_with_metadata*100:.1f}%\" if total_with_metadata > 0 else \"N/A\")\n", + "print(\"=\"*70)" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "======================================================================\n", + "PROVENANCE CHAIN FOR: Si: Substitution Ge, Interstitial B\n", + "Form Factor: Bulk\n", + "WARNING: Incomplete chain - parent structures not embedded\n", + "======================================================================\n", + "\n", + "Level 0: Si: Substitution Ge, Interstitial B [INCOMPLETE - Parent not embedded]\n", + " Formula: Si16Ge2B\n", + " Atoms: 57\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='B3Ge6Si48 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "208af0ee09ec44a6aa6a83d69b10bb54" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "Error processing mat3ra_structure_000037_Qi5uWRA7CdkCroqrK.json: 'NoneType' object has no attribute 'get'\n", + "Error processing mat3ra_structure_000058_Zc9HEMAHafbHY4BtL.json: 'NoneType' object has no attribute 'get'\n", + "======================================================================\n", + "PROVENANCE CHAIN FOR: AlP(001)-GaP(001), Interface, Strain 0.389pct with 1 defects\n", + "Form Factor: Interface\n", + "WARNING: Incomplete chain - parent structures not embedded\n", + "======================================================================\n", + "\n", + "Level 0: AlP(001)-GaP(001), Interface, Strain 0.389pct with 1 defects\n", + " Formula: Al4Ga4P8O\n", + " Atoms: 17\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='Al4Ga4OP8 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "107b29472afc4db18f6f6d6530da9da3" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 1: AlP(001)-GaP(001), Interface, Strain 0.389pct\n", + " Formula: None\n", + " Atoms: 16\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='Al4Ga4P8 - Material - rotation: 0x,0y,0z', layout=Layout(align_s…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "a3760a401689438ea4b2a198e77526b1" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 2: GaP(001), termination P_P4/mmm_2, Slab [INCOMPLETE - Parent not embedded]\n", + " Formula: GaP\n", + " Atoms: 16\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='Ga8P8 - Material - rotation: 0x,0y,0z', layout=Layout(align_self…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "91dec2eadbc04b10ac548a6619144953" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "======================================================================\n", + "PROVENANCE CHAIN FOR: O2Zr(110)-HfO2(110), Interface, Strain 0.495pct\n", + "Form Factor: Interface\n", + "WARNING: Incomplete chain - parent structures not embedded\n", + "======================================================================\n", + "\n", + "Level 0: O2Zr(110)-HfO2(110), Interface, Strain 0.495pct\n", + " Formula: HfZrO4\n", + " Atoms: 48\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='Hf8O32Zr8 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "4420575617b54f4fa140215636dc829f" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 1: HfO2(110), termination Hf_P-1_1, Slab [INCOMPLETE - Parent not embedded]\n", + " Formula: HfO2\n", + " Atoms: 24\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='Hf8O16 - Material - rotation: 0x,0y,0z', layout=Layout(align_sel…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "9750e73c6c0e42249ccecc4dc2234193" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "======================================================================\n", + "PROVENANCE CHAIN FOR: O2Zr(110), termination Zr_P-1_1, Slab, F-passivated F-passivated\n", + "Form Factor: Slab\n", + "======================================================================\n", + "\n", + "Level 0: O2Zr(110), termination Zr_P-1_1, Slab, F-passivated F-passivated\n", + " Formula: Zr12O23F2\n", + " Atoms: 37\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='F2O23Zr12 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "1e018a425c7e4cb08c7efece2d5f4711" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 1: O2Zr(110), termination Zr_P-1_1, Slab, F-passivated\n", + " Formula: ZrO2\n", + " Atoms: 36\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='O24Zr12 - Material - rotation: 0x,0y,0z', layout=Layout(align_se…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "d6b5c4c7314d4d49a7a7d3d63fad0344" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 2: O2Zr(110), termination Zr_P-1_1, Slab\n", + " Formula: None\n", + " Atoms: 36\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='O24Zr12 - Material - rotation: 0x,0y,0z', layout=Layout(align_se…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "c36d41a438af480380a8836efc9e6704" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 3: Zr4 O8 [PRISTINE - Original Material]\n", + " Formula: None\n", + " Atoms: 12\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='O8Zr4 - Material - rotation: 0x,0y,0z', layout=Layout(align_self…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "a6890e4009d146e1a94035296445b420" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 3: O2Zr(110), termination Zr_P-1_1 [INCOMPLETE - Parent not embedded]\n", + " Formula: O2Zr\n", + " Atoms: 36\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='O24Zr12 - Material - rotation: 0x,0y,0z', layout=Layout(align_se…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "1161cb03fd1c4f61a4f8b717984c0d80" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "======================================================================\n", + "PROVENANCE CHAIN FOR: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with 6 defects\n", + "Form Factor: Bulk\n", + "WARNING: Incomplete chain - parent structures not embedded\n", + "======================================================================\n", + "\n", + "Level 0: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with 6 defects\n", + " Formula: Ti17(N7O)2\n", + " Atoms: 66\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N28O4Ti34 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "355378a996cb49c6b9cb4e7ac687367b" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 1: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with substitutional defect with substitutional defect with substitutional defect with substitutional defect with interstitial defect\n", + " Formula: None\n", + " Atoms: 65\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N28O4Ti33 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "a8bb83b462484509aaee32080d48a60b" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 2: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with substitutional defect with substitutional defect with substitutional defect with substitutional defect\n", + " Formula: None\n", + " Atoms: 64\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N28O4Ti32 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "b9fbc53d90df4bdca020e416363da4c5" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 3: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with substitutional defect with substitutional defect with substitutional defect\n", + " Formula: None\n", + " Atoms: 64\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N29O3Ti32 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "ef22015d1caf4ff0a37b9de27466f1dd" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 4: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with substitutional defect with substitutional defect\n", + " Formula: None\n", + " Atoms: 64\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N30O2Ti32 - Material - rotation: 0x,0y,0z', layout=Layout(align_…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "ad8e7ec34ef7481dba77b45fb752dc54" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 5: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 with substitutional defect\n", + " Formula: None\n", + " Atoms: 64\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N31OTi32 - Material - rotation: 0x,0y,0z', layout=Layout(align_s…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "168cb5d0710445c9ba3c7860b332e334" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 6: TiN, Titanium Nitride, FCC (Fm-3m) 3D (Bulk), mp-492 [INCOMPLETE - Parent not embedded]\n", + " Formula: None\n", + " Atoms: 64\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='N32Ti32 - Material - rotation: 0x,0y,0z', layout=Layout(align_se…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "dea4de087a534de1b4fefe01ebd1a895" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "======================================================================\n", + "PROVENANCE CHAIN FOR: N-doped Graphene\n", + "Form Factor: Bulk\n", + "WARNING: Incomplete chain - parent structures not embedded\n", + "======================================================================\n", + "\n", + "Level 0: N-doped Graphene\n", + " Formula: C28N3\n", + " Atoms: 31\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='C28N3 - Material - rotation: 0x,0y,0z', layout=Layout(align_self…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "34ee6c2318c84d8db0fee8bfa8ef4b09" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 1: C, Graphene, HEX (P6/mmm) 2D (Monolayer), 2dm-3993 with substitutional defect with substitutional defect with substitutional defect\n", + " Formula: None\n", + " Atoms: 32\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='C29N3 - Material - rotation: 0x,0y,0z', layout=Layout(align_self…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "fbd4d06bba8445adb1c820f461cb321d" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 2: C, Graphene, HEX (P6/mmm) 2D (Monolayer), 2dm-3993 with substitutional defect with substitutional defect\n", + " Formula: None\n", + " Atoms: 32\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='C30N2 - Material - rotation: 0x,0y,0z', layout=Layout(align_self…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "d230e31f94c24a1c9c2c073f45b02866" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 3: C, Graphene, HEX (P6/mmm) 2D (Monolayer), 2dm-3993 with substitutional defect\n", + " Formula: None\n", + " Atoms: 32\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='C31N - Material - rotation: 0x,0y,0z', layout=Layout(align_self=…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "09dbd21c567d49af9a8908ae13ab5564" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 4: C, Graphene, HEX (P6/mmm) 2D (Monolayer), 2dm-3993 [INCOMPLETE - Parent not embedded]\n", + " Formula: None\n", + " Atoms: 32\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='C32 - Material - rotation: 0x,0y,0z', layout=Layout(align_self='…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "b675608dc21b4c798cb491371bb1c48f" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "======================================================================\n", + "PROVENANCE CHAIN FOR: MoO3(010)-AsGa(001), Interface, Strain 2.630pct\n", + "Form Factor: Interface\n", + "WARNING: Incomplete chain - parent structures not embedded\n", + "======================================================================\n", + "\n", + "Level 0: MoO3(010)-AsGa(001), Interface, Strain 2.630pct\n", + " Formula: Ga4Mo3As4O9\n", + " Atoms: 240\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='As48Ga48Mo36O108 - Material - rotation: 0x,0y,0z', layout=Layout…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "ecabd77a146e42ceb524b1852e1a2087" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " -> Level 1: AsGa(001), termination As_P4/mmm_2, Slab [INCOMPLETE - Parent not embedded]\n", + " Formula: AsGa\n", + " Atoms: 96\n" + ] + }, + { + "data": { + "text/plain": [ + "GridBox(children=(VBox(children=(Label(value='As48Ga48 - Material - rotation: 0x,0y,0z', layout=Layout(align_s…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "7380e62d4542478d804ddaccc39b1116" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "======================================================================\n", + "\n", + "\n", + "======================================================================\n", + "PROVENANCE CHAIN STATISTICS\n", + "======================================================================\n", + "Total materials with build metadata: 9\n", + "Complete chains (to pristine material): 1\n", + "Incomplete chains (parent not embedded): 6\n", + "Completeness rate: 11.1%\n", + "======================================================================\n" + ] + } + ], + "execution_count": 6 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Provenance Chain Demonstrated\n", + "\n", + "The above demonstration shows the complete construction hierarchy:\n", + "\n", + "1. **Interface structure** - loaded and analyzed\n", + "2. **Film and substrate components** - inferred from interface naming\n", + "3. **Related slab structures** - searched and displayed (if archived)\n", + "4. **Parent bulk materials** - searched and displayed (if archived)\n", + "\n", + "This creates the provenance chain: **Bulk → Slab → Interface**\n", + "\n", + "Each structure in the chain records the transformation parameters (Miller indices, termination, layers, vacuum, gap, strain, shift) that were used to generate it from its parent structure. This metadata enables reproducible workflows and transparent dataset construction." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:40.956973Z", + "start_time": "2026-06-26T16:08:40.907244Z" + } + }, + "source": [ + "# Try to find related structures in the dataset\n", + "# For demonstration, we'll show any grain boundaries and their components\n", + "gb_entry = next((e for e in manifest[\"sources\"] if e.get(\"form_factor\") == \"Grain Boundary\"), None)\n", + "\n", + "if gb_entry:\n", + " print(f\"Grain Boundary Example: {gb_entry['name']}\")\n", + " gb_path = structure_path(gb_entry[\"filename\"])\n", + " gb_data = json.loads(gb_path.read_text())\n", + " \n", + " gb_atoms = to_ase(gb_data)\n", + " print(f\" Total atoms: {len(gb_atoms)}\")\n", + " print(f\" Chemical formula: {gb_atoms.get_chemical_formula()}\")\n", + " \n", + " # Check for provenance\n", + " if \"metadata\" in gb_data:\n", + " print(f\"\\n Metadata keys: {list(gb_data['metadata'].keys())}\")\n", + " if \"build\" in gb_data:\n", + " print(f\" Build keys: {list(gb_data['build'].keys())}\")" + ], + "outputs": [], + "execution_count": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Demonstrating Multiple Structure Types\n", + "\n", + "Show conversion and property access for different structure types to demonstrate versatility." + ] + }, + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2026-06-26T16:08:41.051394Z", + "start_time": "2026-06-26T16:08:40.981361Z" + } + }, + "source": [ + "# Sample different structure types\n", + "structure_types = [\"Interface\", \"Slab\", \"Grain Boundary\", \"Defect\", \"3D Crystal\"]\n", + "\n", + "print(\"Structure Type Demonstrations:\\n\")\n", + "for struct_type in structure_types:\n", + " entry = next((e for e in manifest[\"sources\"] if e.get(\"form_factor\") == struct_type), None)\n", + " if entry:\n", + " struct_path = structure_path(entry[\"filename\"])\n", + " struct_data = json.loads(struct_path.read_text())\n", + " \n", + " pmg_struct = to_pymatgen(struct_data)\n", + " \n", + " print(f\"{struct_type}: {entry['name']}\")\n", + " print(f\" Formula: {pmg_struct.composition.reduced_formula}\")\n", + " print(f\" N atoms: {len(pmg_struct)}\")\n", + " print(f\" Volume: {pmg_struct.volume:.2f} ų\")\n", + " print(f\" Density: {pmg_struct.density:.2f} g/cm³\")\n", + " print()" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Structure Type Demonstrations:\n", + "\n", + "Interface: C(001)-Cu(011), Interface, Strain 9.404pct\n", + " Formula: Cu27C14\n", + " N atoms: 164\n", + " Volume: 3739.01 ų\n", + " Density: 3.35 g/cm³\n", + "\n", + "Slab: ZrO2(011), termination O2_P2:m_1, Slab - Island defect\n", + " Formula: Zr138O289\n", + " N atoms: 4270\n", + " Volume: 89969.64 ų\n", + " Density: 3.18 g/cm³\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/mat3ra/code/GREEN/api-examples/.venv-prod/lib/python3.11/site-packages/pymatgen/core/composition.py:1211: FutureWarning: gcd is deprecated, and will be removed on 2028-01-01\n", + "Use math.gcd instead.\n", + " factor = abs(gcd(*(int(i) for i in sym_amt.values())))\n" + ] + } + ], + "execution_count": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Summary and Relation to ML Performance\n", + "\n", + "This demonstration shows:\n", + "\n", + "1. **Interoperability**: Mat3ra-2D structures can be converted to ASE and pymatgen formats and accessed programmatically\n", + "2. **Provenance**: Structures carry metadata about their construction workflow\n", + "3. **Diversity**: The dataset spans multiple structure types (interfaces, slabs, grain boundaries, defects)\n", + "4. **Accessibility**: Structures are available with DOI and can be downloaded and processed\n", + "\n", + "### Relevance to AI/ML Training\n", + "\n", + "The importance of including realistic structures (surfaces, interfaces, defects) in ML training datasets has been demonstrated by Choudhary et al. in the InterMat work, where they showed that:\n", + "\n", + "- ML models trained on bulk-only data fail to generalize to interface structures\n", + "- Including diverse realistic structures improves model transferability\n", + "- Provenance tracking enables systematic dataset curation and diagnosis of model failures\n", + "\n", + "**Reference**: Choudhary, K., et al. \"InterMat: Accelerating band offset prediction in semiconductor interfaces with DFT and deep learning.\" *Patterns* 5.2 (2024). DOI: 10.1016/j.patter.2024.100909\n", + "\n", + "Mat3ra-2D provides the structure-generation and provenance-tracking layer needed to create such datasets systematically." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 34843d3f512d9b79f435fcd50cbcd2e1c2209088 Mon Sep 17 00:00:00 2001 From: VsevolodX Date: Fri, 26 Jun 2026 09:15:24 -0700 Subject: [PATCH 2/2] update: nb interoperability --- ...provenance_and_interoperability_demo.ipynb | 37 ++----------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb b/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb index 3e30329b..8a3252ad 100644 --- a/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb +++ b/other/mat3rials_explorer/provenance_and_interoperability_demo.ipynb @@ -310,12 +310,7 @@ }, { "cell_type": "code", - "metadata": { - "ExecuteTime": { - "end_time": "2026-06-26T16:08:38.051545Z", - "start_time": "2026-06-26T16:08:37.974303Z" - } - }, + "metadata": {}, "source": [ "# Find a slab example\n", "slab_entry = next((e for e in manifest[\"sources\"] if e.get(\"form_factor\") == \"Slab\"), None)\n", @@ -333,7 +328,7 @@ " ase_atoms = to_ase(slab_data)\n", " print(f\"\\nASE Atoms object:\")\n", " print(f\" Number of atoms: {len(ase_atoms)}\")\n", - " print(f\" Chemical symbols: {ase_atoms.get_chemical_symbols()}\")\n", + " # print(f\" Chemical symbols: {ase_atoms.get_chemical_symbols()}\")\n", " print(f\" Cell parameters: {ase_atoms.cell.cellpar()}\")\n", " print(f\" Positions shape: {ase_atoms.positions.shape}\")\n", " \n", @@ -348,32 +343,8 @@ "else:\n", " print(\"No slab structure found in dataset\")" ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Example Slab: ZrO2(011), termination O2_P2:m_1, Slab - Island defect\n", - "Formula: Zr138O289\n", - "Space Group: P1\n", - "Lattice Type: MCL\n", - "\n", - "ASE Atoms object:\n", - " Number of atoms: 4270\n", - " Chemical symbols: ['O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'Zr', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O', 'Zr', 'Zr', 'O', 'O', 'O', 'O', 'O', 'O']\n", - " Cell parameters: [41.86919 60.460396 35.82282 90. 90. 97.1908 ]\n", - " Positions shape: (4270, 3)\n", - "\n", - "Pymatgen Structure object:\n", - " Composition: O2890 Zr1380\n", - " Number of sites: 4270\n", - " Species: ['O', 'O', 'Zr', 'Zr', 'Zr']...\n", - " Volume: 89969.64 ų\n", - " Density: 3.18 g/cm³\n" - ] - } - ], - "execution_count": 5 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown",