From e94adc90148c9c0bb0fda607431b62121e31e8ac Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Fri, 16 Aug 2024 11:24:36 -0400 Subject: [PATCH 1/2] Created using Colab --- ...un_job_using_material_from_jarvis_db.ipynb | 1805 +++++++++++------ 1 file changed, 1235 insertions(+), 570 deletions(-) diff --git a/other/jarvis/run_job_using_material_from_jarvis_db.ipynb b/other/jarvis/run_job_using_material_from_jarvis_db.ipynb index bd1153a3..0de65d26 100644 --- a/other/jarvis/run_job_using_material_from_jarvis_db.ipynb +++ b/other/jarvis/run_job_using_material_from_jarvis_db.ipynb @@ -1,574 +1,1239 @@ { - "cells": [ - { - "cell_type": "markdown", - "source": [ - "\n", - "\"Open\n", - "" - ], - "metadata": { - "collapsed": false - }, - "id": "3c567b6400249971" - }, - { - "cell_type": "markdown", - "source": [ - "## Install Packages\n", - "First, install `express-py` which includes `jarvis-tools` as dependency." - ], - "metadata": { - "collapsed": false - }, - "id": "8b00ab6854f2263b" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "!pip install express-py==2024.1.25.post7" - ], - "metadata": { - "collapsed": false - }, - "id": "b1288bc79ee2c828" - }, - { - "cell_type": "markdown", - "source": [ - "## Get Materials Data From JARVIS\n", - "Then, let\"s get the dataset containing 2D materials from JARVIS and wrap it into a pandas dataframe." - ], - "metadata": { - "collapsed": false - }, - "id": "f418c51a7f794f9f" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from jarvis.db.figshare import data, get_jid_data\n", - "\n", - "dft_2d = data(\"dft_2d\")\n", - "df = pd.DataFrame(dft_2d)" - ], - "metadata": { - "collapsed": false - }, - "id": "b1ee775d1476f884" - }, - { - "cell_type": "markdown", - "source": [ - "## Create a simple heterostructure\n", - "\n", - "We use two material ids and place them one above another." - ], - "metadata": { - "collapsed": false - }, - "id": "9035ff20f1483b33" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "from jarvis.core.atoms import Atoms\n", - "from jarvis.analysis.interface.zur import make_interface\n", - "\n", - "## Note: JVASP-670 is an entry for MoTe2\n", - "jid1 = \"JVASP-670\"\n", - "jid2 =\"JVASP-664\"\n", - "\n", - "for i in dft_2d:\n", - " if i[\"jid\"] == jid1:\n", - " atoms1 = Atoms.from_dict(i[\"atoms\"])\n", - "for i in dft_2d:\n", - " if i[\"jid\"] == jid2:\n", - " atoms2 = Atoms.from_dict(i[\"atoms\"])\n", - "\n", - "interface_atoms_dict = make_interface(film=atoms1, subs=atoms2)\n", - "heterostructure_atoms = interface_atoms_dict[\"interface\"].center_around_origin()\n", - "\n", - "print (jid1,jid2,atoms1.composition.reduced_formula,atoms2.composition.reduced_formula, heterostructure_atoms)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "1b3e7d016f30b61" - }, - { - "cell_type": "markdown", - "source": [ - "## Extract the film and substrate" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "id": "4d59e226b39bbf41" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "# Using the fractional coordinate Z level of 0.5 to separate top/bottom\n", - "# See also https://github.com/usnistgov/jarvis/issues/311\n", - "heterostructure_atoms_copy = Atoms.from_dict(heterostructure_atoms.to_dict())\n", - "indices_to_remove = []\n", - "for index, coord in enumerate(heterostructure_atoms_copy.coords):\n", - " print(coord, index)\n", - " if coord[2] < 0.5:\n", - " indices_to_remove.append(index)\n", - "for i, ind in enumerate(indices_to_remove):\n", - " heterostructure_atoms_copy = heterostructure_atoms_copy.remove_site_by_index(ind - i)\n", - " print(\"removed\", ind, heterostructure_atoms_copy.props)\n", - "substrate_atoms = Atoms.from_dict(heterostructure_atoms_copy.to_dict())\n", - "\n", - "heterostructure_atoms_copy = Atoms.from_dict(heterostructure_atoms.to_dict())\n", - "indices_to_remove = []\n", - "for index, coord in enumerate(heterostructure_atoms_copy.coords):\n", - " print(coord, index)\n", - " if coord[2] > 0.5:\n", - " indices_to_remove.append(index)\n", - "for i, ind in enumerate(indices_to_remove):\n", - " heterostructure_atoms_copy = heterostructure_atoms_copy.remove_site_by_index(ind - i)\n", - " print(\"removed\", ind, heterostructure_atoms_copy.props)\n", - "film_atoms = Atoms.from_dict(heterostructure_atoms_copy.to_dict())" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "c60f1cdeca83df6a" - }, - { - "cell_type": "markdown", - "source": [ - "## Extract Structure and Convert to ESSE\n", - "Next, we extract an entry from the JARVIS dataset and convert it into ESSE format ready to be uploaded to Mat3ra.com." - ], - "metadata": { - "collapsed": false - }, - "id": "15fe5f9de299c935" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "import json\n", - "from express import ExPrESS\n", - "\n", - "def jarvis_atoms_to_esse(atoms):\n", - " # JARVIS Atoms return poscar as representation\n", - " # https://github.com/usnistgov/jarvis/blob/master/jarvis/core/atoms.py#L1333\n", - " poscar = atoms.__repr__()\n", - " kwargs = {\n", - " \"structure_string\": poscar,\n", - " \"cell_type\": \"original\",\n", - " \"structure_format\": \"poscar\"\n", - " }\n", - " handler = ExPrESS(\"structure\", **kwargs)\n", - " material = handler.property(\"material\", **kwargs)\n", - " return material\n", - "\n", - "material_film = jarvis_atoms_to_esse(film_atoms)\n", - "material_substrate = jarvis_atoms_to_esse(substrate_atoms)\n", - "material_heterostructure = jarvis_atoms_to_esse(heterostructure_atoms)\n", - "\n", - "# To preview resulting JSON data\n", - "print(json.dumps(material_heterostructure, indent=4))" - ], - "metadata": { - "collapsed": false - }, - "id": "c41fb68c6d25fe48" - }, - { - "cell_type": "markdown", - "source": [ - "## Setup the API credentials\n", - "Finally, we can upload the material to Mat3ra.com using the REST API: follow the explanation in another example notebook [here](../../examples/material/create_material.ipynb). One can replace the content of the `CONFIG` variable with the JSON data above." - ], - "metadata": { - "collapsed": false - }, - "id": "a4a48479c7ea090f" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "# @title Authorization Form\n", - "ACCOUNT_ID = \"\" # @param {type:\"string\"}\n", - "AUTH_TOKEN = \"\" # @param {type:\"string\"}\n", - "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" # @param {type:\"string\"}\n", - "ORGANIZATION_ID = \"\"\n", - "\n", - "\n", - "import os\n", - "\n", - "if \"COLAB_JUPYTER_IP\" in os.environ:\n", - " os.environ.update(\n", - " dict(\n", - " ACCOUNT_ID=ACCOUNT_ID,\n", - " AUTH_TOKEN=AUTH_TOKEN,\n", - " MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY,\n", - " ORGANIZATION_ID=ORGANIZATION_ID,\n", - " )\n", - " )\n", - "\n", - " !GIT_BRANCH=\"dev\"; export GIT_BRANCH; curl -s \"https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh\" | bash" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "5b2ae68afcacc16" - }, - { - "cell_type": "markdown", - "source": [ - "## Initialize the API Endpoints" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "id": "deac6f9f10d31b19" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "from utils.settings import ENDPOINT_ARGS, ACCOUNT_ID\n", - "from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkflow_and_unit_indicies, dataframe_to_html, display_JSON\n", - "\n", - "# Relevant functions from the API client\n", - "from exabyte_api_client.endpoints.jobs import JobEndpoints\n", - "from exabyte_api_client.endpoints.projects import ProjectEndpoints\n", - "from exabyte_api_client.endpoints.materials import MaterialEndpoints\n", - "from exabyte_api_client.endpoints.bank_workflows import BankWorkflowEndpoints\n", - "from exabyte_api_client.endpoints.properties import PropertiesEndpoints\n", - "\n", - "job_endpoints = JobEndpoints(*ENDPOINT_ARGS)\n", - "project_endpoints = ProjectEndpoints(*ENDPOINT_ARGS)\n", - "material_endpoints = MaterialEndpoints(*ENDPOINT_ARGS)\n", - "property_endpoints = PropertiesEndpoints(*ENDPOINT_ARGS)\n", - "bank_workflow_endpoints = BankWorkflowEndpoints(*ENDPOINT_ARGS)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "979e35d5e828f794" - }, - { - "cell_type": "markdown", - "source": [ - "## Create Material in the platform" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "id": "6ea47ba011947ad5" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "material_heterostructure[\"name\"] = f\"Heterostructure - {jid1} with {jid2}\"\n", - "material_heterostructure_in_the_platform = material_endpoints.create(material_heterostructure)\n", - "\n", - "material_film[\"name\"] = f\"Film - {jid1}\"\n", - "material_film_in_the_platform = material_endpoints.create(material_film)\n", - "\n", - "material_substrate[\"name\"] = f\"Substrate - {jid2}\"\n", - "material_substrate_in_the_platform = material_endpoints.create(material_substrate)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "\n", + "\"Open\n", + "" + ], + "metadata": { + "collapsed": false, + "id": "3c567b6400249971" + }, + "id": "3c567b6400249971" + }, + { + "cell_type": "markdown", + "source": [ + "## Install Packages\n", + "First, install `express-py` which includes `jarvis-tools` as dependency." + ], + "metadata": { + "collapsed": false, + "id": "8b00ab6854f2263b" + }, + "id": "8b00ab6854f2263b" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting express-py==2024.1.25.post7\n", + " Downloading express_py-2024.1.25.post7-py3-none-any.whl.metadata (9.1 kB)\n", + "Collecting munch==2.5.0 (from express-py==2024.1.25.post7)\n", + " Downloading munch-2.5.0-py2.py3-none-any.whl.metadata (5.8 kB)\n", + "Collecting pymatgen>=2023.8.10 (from express-py==2024.1.25.post7)\n", + " Downloading pymatgen-2024.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + "Collecting ase>=3.17.0 (from express-py==2024.1.25.post7)\n", + " Downloading ase-3.23.0-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting mat3ra-esse>=2024.1.25.post7 (from express-py==2024.1.25.post7)\n", + " Downloading mat3ra_esse-2024.6.4.post1-py3-none-any.whl.metadata (8.9 kB)\n", + "Collecting rdkit-pypi>=2022.3.5 (from express-py==2024.1.25.post7)\n", + " Downloading rdkit_pypi-2022.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.9 kB)\n", + "Collecting jarvis-tools>=2023.12.12 (from express-py==2024.1.25.post7)\n", + " Downloading jarvis_tools-2024.5.10-py2.py3-none-any.whl.metadata (3.5 kB)\n", + "Collecting numpy==1.23.5 (from express-py==2024.1.25.post7)\n", + " Downloading numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.3 kB)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from munch==2.5.0->express-py==2024.1.25.post7) (1.16.0)\n", + "Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from ase>=3.17.0->express-py==2024.1.25.post7) (1.13.1)\n", + "Requirement already satisfied: matplotlib>=3.3.4 in /usr/local/lib/python3.10/dist-packages (from ase>=3.17.0->express-py==2024.1.25.post7) (3.7.1)\n", + "Collecting spglib>=1.14.1 (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7)\n", + " Downloading spglib-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)\n", + "Requirement already satisfied: joblib>=0.14.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (1.4.2)\n", + "Requirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (2.32.3)\n", + "Requirement already satisfied: toolz>=0.9.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (0.12.1)\n", + "Collecting xmltodict>=0.11.0 (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7)\n", + " Downloading xmltodict-0.13.0-py2.py3-none-any.whl.metadata (7.7 kB)\n", + "Requirement already satisfied: tqdm>=4.41.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (4.66.5)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (1.3.2)\n", + "Requirement already satisfied: inflect in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (7.3.1)\n", + "Collecting exabyte-json-include>=2023.12.23.post0 (from mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7)\n", + " Downloading exabyte_json_include-2023.12.23.post0-py3-none-any.whl.metadata (3.1 kB)\n", + "Requirement already satisfied: jsonschema>=2.6.0 in /usr/local/lib/python3.10/dist-packages (from mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (4.23.0)\n", + "Collecting matplotlib>=3.3.4 (from ase>=3.17.0->express-py==2024.1.25.post7)\n", + " Downloading matplotlib-3.9.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)\n", + "Collecting monty>=2024.7.29 (from pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading monty-2024.7.30-py3-none-any.whl.metadata (3.2 kB)\n", + "Requirement already satisfied: networkx>=2.2 in /usr/local/lib/python3.10/dist-packages (from pymatgen>=2023.8.10->express-py==2024.1.25.post7) (3.3)\n", + "Collecting palettable>=3.3.3 (from pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading palettable-3.3.3-py2.py3-none-any.whl.metadata (3.3 kB)\n", + "Requirement already satisfied: pandas>=2 in /usr/local/lib/python3.10/dist-packages (from pymatgen>=2023.8.10->express-py==2024.1.25.post7) (2.1.4)\n", + "Requirement already satisfied: plotly>=4.5.0 in /usr/local/lib/python3.10/dist-packages (from pymatgen>=2023.8.10->express-py==2024.1.25.post7) (5.15.0)\n", + "Collecting pybtex>=0.24.0 (from pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading pybtex-0.24.0-py2.py3-none-any.whl.metadata (2.0 kB)\n", + "Collecting ruamel.yaml>=0.17.0 (from pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading ruamel.yaml-0.18.6-py3-none-any.whl.metadata (23 kB)\n", + "Requirement already satisfied: sympy>=1.2 in /usr/local/lib/python3.10/dist-packages (from pymatgen>=2023.8.10->express-py==2024.1.25.post7) (1.13.1)\n", + "Requirement already satisfied: tabulate>=0.9 in /usr/local/lib/python3.10/dist-packages (from pymatgen>=2023.8.10->express-py==2024.1.25.post7) (0.9.0)\n", + "Collecting uncertainties>=3.1.4 (from pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading uncertainties-3.2.2-py3-none-any.whl.metadata (6.9 kB)\n", + "INFO: pip is looking at multiple versions of pymatgen to determine which version is compatible with other requirements. This could take a while.\n", + "Collecting pymatgen>=2023.8.10 (from express-py==2024.1.25.post7)\n", + " Downloading pymatgen-2024.7.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.6.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.4.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.4.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + "INFO: pip is still looking at multiple versions of pymatgen to determine which version is compatible with other requirements. This could take a while.\n", + " Downloading pymatgen-2024.2.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2024.2.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2024.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2024.1.27.tar.gz (7.2 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.2/7.2 MB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + " Downloading pymatgen-2024.1.26-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + "INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.\n", + " Downloading pymatgen-2023.12.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2023.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2023.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2023.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2023.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + " Downloading pymatgen-2023.9.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from rdkit-pypi>=2022.3.5->express-py==2024.1.25.post7) (9.4.0)\n", + "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (24.1.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (2023.12.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (0.35.1)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (0.19.1)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (4.53.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (24.1)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (2.8.2)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly>=4.5.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (9.0.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (3.7)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (2024.7.4)\n", + "Collecting ruamel.yaml.clib>=0.2.7 (from ruamel.yaml>=0.17.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.metadata (2.2 kB)\n", + "Requirement already satisfied: more-itertools>=8.5.0 in /usr/local/lib/python3.10/dist-packages (from inflect->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (10.3.0)\n", + "Requirement already satisfied: typeguard>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from inflect->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (4.3.0)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (2024.1)\n", + "Requirement already satisfied: PyYAML>=3.01 in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (6.0.1)\n", + "Collecting latexcodec>=1.0.4 (from pybtex>=0.24.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", + " Downloading latexcodec-3.0.0-py3-none-any.whl.metadata (4.9 kB)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (3.5.0)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy>=1.2->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (1.3.0)\n", + "Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.10/dist-packages (from typeguard>=4.0.1->inflect->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (4.12.2)\n", + "Downloading express_py-2024.1.25.post7-py3-none-any.whl (82 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m82.6/82.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading munch-2.5.0-py2.py3-none-any.whl (10 kB)\n", + "Downloading numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.1/17.1 MB\u001b[0m \u001b[31m78.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading ase-3.23.0-py3-none-any.whl (2.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.9/2.9 MB\u001b[0m \u001b[31m23.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading jarvis_tools-2024.5.10-py2.py3-none-any.whl (4.2 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m73.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading mat3ra_esse-2024.6.4.post1-py3-none-any.whl (488 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m488.6/488.6 kB\u001b[0m \u001b[31m25.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pymatgen-2023.9.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.6/9.6 MB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading rdkit_pypi-2022.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m29.4/29.4 MB\u001b[0m \u001b[31m17.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading exabyte_json_include-2023.12.23.post0-py3-none-any.whl (5.3 kB)\n", + "Downloading monty-2024.7.30-py3-none-any.whl (48 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m48.9/48.9 kB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading palettable-3.3.3-py2.py3-none-any.whl (332 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m332.3/332.3 kB\u001b[0m \u001b[31m17.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading ruamel.yaml-0.18.6-py3-none-any.whl (117 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m117.8/117.8 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading spglib-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading uncertainties-3.2.2-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading xmltodict-0.13.0-py2.py3-none-any.whl (10.0 kB)\n", + "Downloading pybtex-0.24.0-py2.py3-none-any.whl (561 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m561.4/561.4 kB\u001b[0m \u001b[31m25.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading latexcodec-3.0.0-py3-none-any.whl (18 kB)\n", + "Downloading ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (526 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m526.7/526.7 kB\u001b[0m \u001b[31m26.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: xmltodict, uncertainties, ruamel.yaml.clib, palettable, numpy, munch, monty, latexcodec, exabyte-json-include, spglib, ruamel.yaml, rdkit-pypi, pybtex, pymatgen, mat3ra-esse, jarvis-tools, ase, express-py\n", + " Attempting uninstall: numpy\n", + " Found existing installation: numpy 1.26.4\n", + " Uninstalling numpy-1.26.4:\n", + " Successfully uninstalled numpy-1.26.4\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "xgboost 2.1.1 requires nvidia-nccl-cu12; platform_system == \"Linux\" and platform_machine != \"aarch64\", which is not installed.\n", + "albucore 0.0.13 requires numpy<2,>=1.24.4, but you have numpy 1.23.5 which is incompatible.\n", + "albumentations 1.4.12 requires numpy>=1.24.4, but you have numpy 1.23.5 which is incompatible.\n", + "chex 0.1.86 requires numpy>=1.24.1, but you have numpy 1.23.5 which is incompatible.\n", + "pandas-stubs 2.1.4.231227 requires numpy>=1.26.0; python_version < \"3.13\", but you have numpy 1.23.5 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed ase-3.23.0 exabyte-json-include-2023.12.23.post0 express-py-2024.1.25.post7 jarvis-tools-2024.5.10 latexcodec-3.0.0 mat3ra-esse-2024.6.4.post1 monty-2024.7.30 munch-2.5.0 numpy-1.23.5 palettable-3.3.3 pybtex-0.24.0 pymatgen-2023.9.25 rdkit-pypi-2022.9.5 ruamel.yaml-0.18.6 ruamel.yaml.clib-0.2.8 spglib-2.5.0 uncertainties-3.2.2 xmltodict-0.13.0\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.colab-display-data+json": { + "pip_warning": { + "packages": [ + "numpy" + ] + }, + "id": "c347a50fa91f480bbfb607464fbcc7ae" + } + }, + "metadata": {} + } + ], + "source": [ + "!pip install express-py==2024.1.25.post7" + ], + "metadata": { + "id": "b1288bc79ee2c828", + "outputId": "6d4b3123-4223-4ff8-e98f-c6a3129ec31d", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "id": "b1288bc79ee2c828" + }, + { + "cell_type": "code", + "source": [ + "pip install intermat" + ], + "metadata": { + "id": "rmuCwrRU2kAY", + "outputId": "ca340a89-d157-4160-9df6-71a8815c79cf", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "rmuCwrRU2kAY", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting intermat\n", + " Using cached intermat-2024.3.24-py2.py3-none-any.whl.metadata (30 kB)\n", + "Requirement already satisfied: numpy>=1.22.0 in /usr/local/lib/python3.10/dist-packages (from intermat) (1.23.5)\n", + "Requirement already satisfied: scipy>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from intermat) (1.13.1)\n", + "Requirement already satisfied: jarvis-tools>=2021.07.19 in /usr/local/lib/python3.10/dist-packages (from intermat) (2024.5.10)\n", + "Collecting pydantic-settings (from intermat)\n", + " Downloading pydantic_settings-2.4.0-py3-none-any.whl.metadata (3.5 kB)\n", + "Requirement already satisfied: matplotlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (3.7.1)\n", + "Requirement already satisfied: spglib>=1.14.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (2.5.0)\n", + "Requirement already satisfied: joblib>=0.14.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (1.4.2)\n", + "Requirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (2.32.3)\n", + "Requirement already satisfied: toolz>=0.9.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (0.12.1)\n", + "Requirement already satisfied: xmltodict>=0.11.0 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (0.13.0)\n", + "Requirement already satisfied: tqdm>=4.41.1 in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (4.66.5)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (1.3.2)\n", + "Requirement already satisfied: inflect in /usr/local/lib/python3.10/dist-packages (from jarvis-tools>=2021.07.19->intermat) (7.3.1)\n", + "Requirement already satisfied: pydantic>=2.7.0 in /usr/local/lib/python3.10/dist-packages (from pydantic-settings->intermat) (2.8.2)\n", + "Collecting python-dotenv>=0.21.0 (from pydantic-settings->intermat)\n", + " Downloading python_dotenv-1.0.1-py3-none-any.whl.metadata (23 kB)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (4.53.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (24.1)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (2.8.2)\n", + "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.7.0->pydantic-settings->intermat) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.20.1 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.7.0->pydantic-settings->intermat) (2.20.1)\n", + "Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.7.0->pydantic-settings->intermat) (4.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2021.07.19->intermat) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2021.07.19->intermat) (3.7)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2021.07.19->intermat) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.23.0->jarvis-tools>=2021.07.19->intermat) (2024.7.4)\n", + "Requirement already satisfied: more-itertools>=8.5.0 in /usr/local/lib/python3.10/dist-packages (from inflect->jarvis-tools>=2021.07.19->intermat) (10.3.0)\n", + "Requirement already satisfied: typeguard>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from inflect->jarvis-tools>=2021.07.19->intermat) (4.3.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->jarvis-tools>=2021.07.19->intermat) (3.5.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (1.16.0)\n", + "Downloading intermat-2024.3.24-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.1/49.1 kB\u001b[0m \u001b[31m2.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pydantic_settings-2.4.0-py3-none-any.whl (23 kB)\n", + "Downloading python_dotenv-1.0.1-py3-none-any.whl (19 kB)\n", + "Installing collected packages: python-dotenv, pydantic-settings, intermat\n", + "Successfully installed intermat-2024.3.24 pydantic-settings-2.4.0 python-dotenv-1.0.1\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from jarvis.db.jsonutils import dumpjson,loadjson\n", + "from jarvis.db.jsonutils import dumpjson\n", + "import plotly.graph_objects as go\n", + "\n", + "config = {'calculator_method': 'ewald',\n", + " 'disp_intvl': 0.1,\n", + " 'film_index': '1_1_0',\n", + " 'film_jid': 'JVASP-1002',\n", + " 'substrate_index': '1_1_0',\n", + " 'substrate_jid': 'JVASP-1174'}\n", + "\n", + "dumpjson(data=config,filename='config_example2.json')\n", + "!run_intermat.py --config_file config_example2.json >out2\n", + "\n", + "res=loadjson('intermat_results.json')" + ], + "metadata": { + "id": "P6zHf-Sl3rBi", + "outputId": "fc423ce2-78a9-4514-f4df-fdbcff80261a", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "P6zHf-Sl3rBi", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "100% 40.8M/40.8M [00:00<00:00, 59.2MiB/s]\n", + "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['number']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", + " warnings.warn(\n", + "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['international']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", + " warnings.warn(\n", + "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:52: RuntimeWarning: invalid value encountered in double_scalars\n", + " strain_x = (\n", + "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:55: RuntimeWarning: invalid value encountered in double_scalars\n", + " strain_y = (\n", + "100% 100/100 [00:20<00:00, 4.99it/s]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.contourf(res['wads'],cmap='plasma')\n", + "plt.axis('off')\n" + ], + "metadata": { + "id": "wtXpDYge3-fB", + "outputId": "f4163b89-e31f-4b0e-81ae-2a7c64eefb60", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } + }, + "id": "wtXpDYge3-fB", + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 9.0, 0.0, 9.0)" + ] + }, + "metadata": {}, + "execution_count": 3 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAQN0lEQVR4nO3du7IsZQEF4ObUgQyRhADESDShisDyCXwEE9/AZ/INfBfLwCoSkAjUwARLMgi2AUzt2XPm0pe/+7+s74uscrNPn5lZq1f3zN7nraenp6cJAIj1qvYBAAB1GQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAuNdzv/BPb/1lz+PY5K9v/7f2IVz1ux9+XvsQgAVa7ZJp0ies9+enPz78mtljoGWnkLQQZIGFfp3nt3af6BKONMQYOKkRZIGFMdW4yNAn1DLUGDi35zAQWMihS0gw7Bg4t3XhCywwTWWGgT6hRRFj4GRJkAUWuGfuRYYuoQdRY+Dc5TAQWGCNaxcZ+oTexI6Bc4ILlKBL6JVfOgQA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAI97r2AQAvffb+99M0TdPfv32n8pEAPTt1yRzGAOxgSQgffQ+jAHKV6JI5jAG44agQPmIUQP9a6ZNbjAGG1noAl/js/e8NAqhopD65ZAzQpZFDeY+7BFBeap+cMwbojuAaBVCCLnlmDNANwX2TUQDL6ZI3GQM0T3AfMwpgHn1ynTFAs4R2OR8yhOv0yX3GAE0S3PXcJYBnumQeY4CmCG45RgHp9Ml8xgBNENr9GAWk0SfLGQNUJ7jHMAoYnS5Zz79aSDWfvf+98FbgMWdEXtfbuDPA4YS2PncJGIU+KcMY4BAC26bz58UwoBf6pDxjgF0Ia3+uPWcGArXpkmMYA2wmrOMyEDiaPqnDGGAxYc12+fwbB6ylS9phDHCXsPKIuwfMpU/aZQzwgrBSgrsH6JK+zB4DfhRpPMLKUW691vTJOPRJ3xbfGXj0hAt3u4SV1uiTfumTsRR/m0C46xNSRnHvtaxL9qdLchz+mQFjYR2hhJd0yTq6hGua+wBhUsCFEvaT1CXTpE/Yprkx8Ejrtw0FEvrQw1jQJxyluzFwz17hFkjIo09IMtQYeEQIgVL0CSN5VfsAAIC6jAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCRf1DRbDFb37172p/9hdffVjtzwbKq9kn1xgDdKe1EB3h1t/ZSID1ErvkFmOAZgnqY0YCzKNP7jMGqE5IyzMSSKVP1jEGOIyQ1mckMAp9UpYxQHFC2h8jgVbpk2MYA2wiqGMzEjiKLqnLGGAWQeWckcBauqRNxgAvCCpbGAmc6JK+zB4Dl0+scPdNUDnSo9ebPumXLhnD6jsDS18Awl6HoNKDJa9TXVKPPhnXYW8TCPs6wgcvuRBZT59wS5OfGRgp7MIHdY10IaJP2EuTY2CpPcMufJBj7wsRfUKrhhgDSwgjUIo+YRSvah8AAFCXMQAA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcK9rHwCM7JeffLP5e3z9j48LHAnQsxJdco8xQJP2fuH3ZMtjYUiQTpfMYwxQnPC1Y+tzYUxQmz45hjHAG4SPE3cl2EKX9GP2GKj1pCYXiiDRsxZfv/oErmv+zoAXMFCKPoHr/GghAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACPe69gGs8cGv/1n7EFb7z5e/qH0IwE90CfxolzHQc8D2VuuxURz0SJfcVvOx0SfjmT0GhLJvpZ8/ZcCJbshT8jnXJW3o8m0C6jMu+uOkTYt0SRuMAZrgRAWUoEvW8dMEABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEe137AGp599N/3fz/vvv8owOPBOjZvS6ZJn1CH4YdA48CWuq/FXQY3xF9okuoqesxsCWgRx+DoEO7euqSadInlNf0GGghoKUIOtQzUpdMkz6hvKpjYLSAliLosJw+uc7dS+bYdQwI5/7mPMZCzgj0yb6Mhmybx4CAtu/acyTQtEaX9OHyedIlY5g9BgR1LAJNDXpkPLpkDE1/gJDjCDR7cPLP405kn4wBrjIOWMqJn1v0SfuMAWax9rnk5M9axkF7jAFWE+gcTvzsycVGfcYAxRgH43DypzZ9cixjgN1Y+31w4qcHxsG+jAEOJdB1OfEzChcbZRkDVGUc7MvJnyT6ZD1jgKZY++s58cNLxsF8xgDNOw+0ML9kAMB8xsFtr2ofACzh5PfMYwHbyNAzY4DuCLDHAEqRpR8ZA3QpOcDJf3fYg0z5zAAdS3z/T2nBPhL75JwxwDDmnih7DbkhAMcZvU8uGQPE6S3kRgC0q7c+ucUYgBtaCLkhAGNooU/uMQZgo71CbghAnlqjwRiAgywJuSEA3FN6NPjRQmiMIQCUMrdPjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMgWmafvjt/2ofAjAAXUKvon8d8XlwT//77b/9rNbhAJ261iXTpE/oR+QYuLfejQJgCX3CCKLGwJJbeNY9cM+aPtEltCpmDGx5L0+QgRNdwoiGHwMlP9AjyJBrjy6ZJn1CG4YdA3t+qtcogCz6hNENNwaO/NEe6x7GVqNPdAk1DDUGav6MryDDOFrokmnSJxxniDHQ0i/6MAqgXy11yTTpE47T9RhoLbjnrHvoSw99okvYS5djoOXQXiPI0K6e+sRFBnvpbgz0FNxLRgG0o+cumSZ9QlndjIHeg3vOuod6RuqSaTIKKKP5MTBacC8JMhxn5D7RJWzR7BgYObTXCDLsJ6lP3HlkjSbHQFJwLxkFUE5yl0yTPmG+psZAenDPWfewjT55ZhTwSBNjQGjvE2SYT5/c5iKDW6qOAaFdxiiA2/TJMvqEc9XGgOCuZ93DM12yjVHANFUYA4JbliCTTJ+Uo0uyHToGBHc/gkwSXbIfXZLpVe0DoBzhJYXX+r48vnkOvTNweoFZ9eUILan0SXn6JFeVDxAK8XZCCz/SJ9voEqap8o8WCvEyQgu36ZNl9AnnmvilQ0J8n9DCfPrkNl3CLU2MgRMhfia0sI0+eaZPeKSpMXCSGmKBhfL0CTzW5Bg4SQmx0ML+EvpEl7BW02PgZMQQCy3UoU/gTV2MgZMRQiy00Ia3//YzXQI/6WoMnPQ2CoQW2tRbl0yTPmEfXY6Bk5aDLLDQj5a7ZJr0CfvregyctBRkoYV+6RJSDTEGTmoFWWhhLDVHgT6hhqHGwMlRQRZaGJsuIcWQY+BkjyALLeTZaxToE1ox9Bg42RpkgQWmqcwo0Ce0KGIMnCwNstAC1+gSRhM1Bk7uBVlogbkejQJ9Qi8ix8DJeZCFFlhLl9C7V7UPoAXCC5SgS+iVMQAA4YwBAAhnDABAuOgPEEIN333+0ayve/fTf+18JEDv5vTJe394/H2MAdho7sl97fc1CiDHXn3yiDEAF2qF8ZbvPv/IIIBOtdYntxgDDK+XMN5jEEAbRuiTa4wBujZqMK/xtgHsJ6lLrvHTBHTpu88/ig1v6t8b9iJTxgAdElyPAZSQfFFxyRigK4L7TJHBerLzkjFAF5z4bvO4wDIy8yZjgOYJ7mPGEswjJ9cZAzRNcJfxeMF1BvN9xgBNEtz1PG7wkkw8ZgzQHMHdzpiCH8nBPMYATRHcsjyepDKIl/EbCGmC0O7Hby4kjT5Zzp0BqhPcY3icSeB1vo4xQFWCeyyPN6PytsA23iagCqGtx9sGjESXlGEMcAiBbc+158RAoHW6ZB/GAMUJa78MBFqjT45hDLCZsI7t8vk1DtiTPqnDGGAxYc3m7gGl6JJ2GAPcJazM4e4Bc+iTdhkDvCCslODuAdOkT3oyewycP6lCPQ5h5SgGwth0Sd9W3Rm496QLd9sElpbokn7pkrEUf5tAuNsgqPROl7RBl2Q49DMDwr2dYIIuKUGXcK6ZDxCmh1swoYz0LpkmfcJyzYyBe3oOt1BCOx7lUZ+QqosxcE/NoSCYMJZafaJLqK37MXDP2mALJnBJnzCyocfAPQIKlKJP6N2r2gcAANRlDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAISL/SeM4Sj/+fIXq//bD379z4JHAvRuTZ+8N+NrjAGat+Vk2rslf3fDAR5L7pN7jAGqEcqylj6exgOj0CXbGQMUJZT9cNeB1umT4xgDPCSQGA6Uok/aNHsMXHsChb5vQske1ryudEnfdEn/Nt0Z2PoCUADbCCCjKPFa1ifr6RKqvk2QMiYEDfanT2C9rj8zUPpqQsggV+kxoU/oSddjoASBBUrQJfTMryMGgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4V7P/cKv//HxnsdB5375yTe1D4Gd6QCOoEvqmD0G4J6RThStl9FIjzVcGu313XqfnBgDcGG0MgLqaaFPPpnxNT4zAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAj3uvYBrPXFVx/WPoTFfvOrf9c+BOAKfUK6w8dAj6Er5Yi/u4IgRXKXTJM+oaxNYyA9jC2a85wIOK3RJW3SJzlmjwFhHce951Kw2YP+GNet51aX9KXbzwywD0OBtZzwOadL+mIMMJsrAJzwKcFQaI8xwGaCPRYnfGrSJ3UYA+xKsNvlpE9v3J3cjzFANYK9Pyd8Erjo2M4YoDmCvYwTPtymT+YxBuhKrRNfC6XhpA9lJffJJWMAZnAiBko5uk9+P+Nr/ENFABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAuNe1D+AIf//2naLf77P3vy/6/YA+lO6SadIntKH7MbBHOEv/mcIOfWi9T3QJe2l+DNQIZ2nCDvWldck06RPmqz4GRghoScIO6+iSN7kQYa5dx4Bw7m/OYyzkjECf7Gvu46tPxrRpDAhnH649TwJNS3RJPy6fK10yhtljQFjHItDUoEfG42JjDNU/M0AbBJrSnPhzudjojzHATQLNXE783ONio33GALMJNCdO/mzlYqMtxgCbCPT4nPg5gouNuowBihLo/jn50woXG8cxBtidQLfLiZ+euNjYjzHA4QS6Did+RuRiowxjgCYIdHlO/iRysbHOW09PT0+1DwIAqOdV7QMAAOoyBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhPs/aTr/bV7piyQAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(res.keys())" + ], + "metadata": { + "id": "XyD6CziN4SjN", + "outputId": "89861441-3e9b-4939-dd57-834486a6a676", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "XyD6CziN4SjN", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "dict_keys(['systems', 'time_taken', 'wads'])\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from jarvis.core.atoms import Atoms\n", + "\n", + "intf = Atoms.from_dict(res['systems'])\n", + "print (intf)" + ], + "metadata": { + "id": "ugq7lJ804VlP", + "outputId": "3bb8bd09-476b-47c5-ade4-6a076113d699", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "ugq7lJ804VlP", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "System\n", + "1.0\n", + "-0.0 5.73163 -0.0\n", + "8.10575 -0.0 -0.0\n", + "-0.0 -0.0 -26.34364366645526\n", + "As Ga Si \n", + "12 12 24 \n", + "direct\n", + "0.12500000000000017 0.033333436916792386 0.8511499074085056 bottom\n", + "0.12500000000000017 0.5333333678611532 0.6973034974115482 bottom\n", + "0.12500000000000017 0.033333298805513695 0.5434570874145908 bottom\n", + "0.12500000000000017 0.5333332297498745 0.5434570874145905 bottom\n", + "0.12500000000000017 0.033333298805513695 0.6973034974115482 bottom\n", + "0.12500000000000017 0.5333333678611529 0.8511499074085056 bottom\n", + "0.6249999999999999 -0.21666666666666684 0.6203802924130692 bottom\n", + "0.6249999999999999 0.28333340238897264 0.7742267024100271 bottom\n", + "0.6249999999999999 -0.2166665285553881 0.9280731124069845 bottom\n", + "0.6249999999999999 0.28333340238897264 0.9280731124069845 bottom\n", + "0.6249999999999999 -0.21666666666666684 0.7742267024100271 bottom\n", + "0.6249999999999999 0.2833332642776941 0.6203802924130692 bottom\n", + "0.37499999999999994 0.28333340238897264 0.8511499074085056 bottom\n", + "0.37499999999999994 -0.21666666666666684 0.6973034974115482 bottom\n", + "0.37499999999999994 0.2833332642776941 0.5434570874145908 bottom\n", + "0.37499999999999994 0.7833331952220548 0.5434570874145905 bottom\n", + "0.875 0.033333298805513695 0.7742267024100271 bottom\n", + "0.875 0.5333332297498745 0.6203802924130692 bottom\n", + "0.875 0.033333436916792164 0.9280731124069845 bottom\n", + "0.875 0.5333333678611529 0.7742267024100271 bottom\n", + "0.875 0.033333298805513695 0.6203802924130692 bottom\n", + "0.37499999999999994 -0.21666666666666684 0.8511499074085056 bottom\n", + "0.37499999999999994 0.2833332642776941 0.6973034974115482 bottom\n", + "0.875 0.5333333678611532 0.9280731124069845 bottom\n", + "-0.3750000000000001 0.5416666666666665 0.3010994243760031 top\n", + "-0.3750000000000001 0.0416669207054052 0.4485575215231648 top\n", + "-0.12499999999999999 0.2916662856085588 0.1536413272288415 top\n", + "-0.12499999999999999 -0.20833346035270264 0.3010994243760031 top\n", + "0.12500000000000003 0.2916667936860361 0.2273703758024223 top\n", + "0.12500000000000003 -0.20833346035270264 0.07991227865526063 top\n", + "-0.3750000000000001 0.04166641262792811 0.1536413272288415 top\n", + "0.12500000000000003 -0.20833295227522575 0.374828472949584 top\n", + "0.375 0.04166641262792811 0.07991227865526063 top\n", + "-0.12499999999999999 0.2916667936860361 0.44855752152316475 top\n", + "-0.12499999999999999 -0.20833295227522575 0.44855752152316475 top\n", + "-0.3750000000000001 0.04166692070540543 0.30109942437600307 top\n", + "-0.12499999999999999 -0.20833346035270264 0.1536413272288415 top\n", + "-0.3750000000000001 -0.458332825255856 0.44855752152316475 top\n", + "-0.3750000000000001 -0.4583333333333334 0.1536413272288415 top\n", + "0.375 -0.4583333333333334 0.3748284729495839 top\n", + "0.375 0.04166641262792811 0.2273703758024223 top\n", + "0.375 0.5416661585891899 0.07991227865526063 top\n", + "0.12500000000000003 0.2916667936860363 0.3748284729495839 top\n", + "0.12500000000000003 -0.20833346035270264 0.2273703758024223 top\n", + "0.12500000000000003 0.2916662856085588 0.07991227865526063 top\n", + "0.375 -0.4583333333333334 0.2273703758024223 top\n", + "-0.12499999999999999 0.2916667936860361 0.3010994243760031 top\n", + "0.375 0.0416669207054052 0.3748284729495839 top\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "pos_subs=\"\"\"GaAs\n", + "1.0\n", + "3.509895098013499 -6.584084e-10 2.026439508259945\n", + "1.169965032050413 3.3091606691404545 2.026439508259945\n", + "-1.8622597e-09 -1.3168164e-09 4.052878022970947\n", + "Ga As\n", + "1 1\n", + "Cartesian\n", + "0.0 0.0 0.0\n", + "1.1699675 0.82729 2.02644\n", + "\"\"\"\n", + "\n", + "pos_film=\"\"\"Si2\n", + "1.0\n", + "3.3641499856336465 -2.5027128e-09 1.94229273881412\n", + "1.121382991333525 3.1717517190189715 1.9422927388141193\n", + "-2.5909987e-09 -1.8321133e-09 3.884586486670313\n", + "Si\n", + "2\n", + "Cartesian\n", + "3.92483875 2.77528125 6.7980237500000005\n", + "0.56069125 0.39646875 0.9711462500000001\n", + "\"\"\"\n", + "with open('pos_film','w') as f:\n", + " f.write(pos_film)\n", + "\n", + "with open('pos_subs','w') as f:\n", + " f.write(pos_subs)" + ], + "metadata": { + "id": "SD-aFiTF4n_F" + }, + "id": "SD-aFiTF4n_F", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from jarvis.db.jsonutils import dumpjson,loadjson\n", + "from jarvis.db.jsonutils import dumpjson\n", + "import plotly.graph_objects as go\n", + "\n", + "config = {'calculator_method': 'ewald',\n", + " 'disp_intvl': 0.1,\n", + " 'film_file_path': 'pos_film',\n", + " 'substrate_file_path': 'pos_subs',\n", + " 'film_index': '1_1_0',\n", + " 'substrate_index': '1_1_0'}\n", + "\n", + "dumpjson(data=config,filename='config_example2.json')\n", + "!run_intermat.py --config_file config_example2.json >out2\n", + "\n", + "res=loadjson('intermat_results.json')" + ], + "metadata": { + "id": "iiZy09iU4n8d", + "outputId": "926105ff-b0d0-4d76-8212-ba7c2c108aee", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "iiZy09iU4n8d", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['number']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", + " warnings.warn(\n", + "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['international']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", + " warnings.warn(\n", + "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:52: RuntimeWarning: invalid value encountered in double_scalars\n", + " strain_x = (\n", + "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:55: RuntimeWarning: invalid value encountered in double_scalars\n", + " strain_y = (\n", + "100% 100/100 [00:32<00:00, 3.05it/s]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "plt.contourf(res['wads'],cmap='plasma')\n", + "plt.axis('off')\n" + ], + "metadata": { + "id": "Gbk5MPBw7o1z", + "outputId": "24d0fafa-12c1-42aa-b180-ecc9f298cf19", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } + }, + "id": "Gbk5MPBw7o1z", + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 9.0, 0.0, 9.0)" + ] + }, + "metadata": {}, + "execution_count": 11 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAQN0lEQVR4nO3du7IsZQEF4ObUgQyRhADESDShisDyCXwEE9/AZ/INfBfLwCoSkAjUwARLMgi2AUzt2XPm0pe/+7+s74uscrNPn5lZq1f3zN7nraenp6cJAIj1qvYBAAB1GQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAuNdzv/BPb/1lz+PY5K9v/7f2IVz1ux9+XvsQgAVa7ZJp0ies9+enPz78mtljoGWnkLQQZIGFfp3nt3af6BKONMQYOKkRZIGFMdW4yNAn1DLUGDi35zAQWMihS0gw7Bg4t3XhCywwTWWGgT6hRRFj4GRJkAUWuGfuRYYuoQdRY+Dc5TAQWGCNaxcZ+oTexI6Bc4ILlKBL6JVfOgQA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAI97r2AQAvffb+99M0TdPfv32n8pEAPTt1yRzGAOxgSQgffQ+jAHKV6JI5jAG44agQPmIUQP9a6ZNbjAGG1noAl/js/e8NAqhopD65ZAzQpZFDeY+7BFBeap+cMwbojuAaBVCCLnlmDNANwX2TUQDL6ZI3GQM0T3AfMwpgHn1ynTFAs4R2OR8yhOv0yX3GAE0S3PXcJYBnumQeY4CmCG45RgHp9Ml8xgBNENr9GAWk0SfLGQNUJ7jHMAoYnS5Zz79aSDWfvf+98FbgMWdEXtfbuDPA4YS2PncJGIU+KcMY4BAC26bz58UwoBf6pDxjgF0Ia3+uPWcGArXpkmMYA2wmrOMyEDiaPqnDGGAxYc12+fwbB6ylS9phDHCXsPKIuwfMpU/aZQzwgrBSgrsH6JK+zB4DfhRpPMLKUW691vTJOPRJ3xbfGXj0hAt3u4SV1uiTfumTsRR/m0C46xNSRnHvtaxL9qdLchz+mQFjYR2hhJd0yTq6hGua+wBhUsCFEvaT1CXTpE/Yprkx8Ejrtw0FEvrQw1jQJxyluzFwz17hFkjIo09IMtQYeEQIgVL0CSN5VfsAAIC6jAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCRf1DRbDFb37172p/9hdffVjtzwbKq9kn1xgDdKe1EB3h1t/ZSID1ErvkFmOAZgnqY0YCzKNP7jMGqE5IyzMSSKVP1jEGOIyQ1mckMAp9UpYxQHFC2h8jgVbpk2MYA2wiqGMzEjiKLqnLGGAWQeWckcBauqRNxgAvCCpbGAmc6JK+zB4Dl0+scPdNUDnSo9ebPumXLhnD6jsDS18Awl6HoNKDJa9TXVKPPhnXYW8TCPs6wgcvuRBZT59wS5OfGRgp7MIHdY10IaJP2EuTY2CpPcMufJBj7wsRfUKrhhgDSwgjUIo+YRSvah8AAFCXMQAA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcK9rHwCM7JeffLP5e3z9j48LHAnQsxJdco8xQJP2fuH3ZMtjYUiQTpfMYwxQnPC1Y+tzYUxQmz45hjHAG4SPE3cl2EKX9GP2GKj1pCYXiiDRsxZfv/oErmv+zoAXMFCKPoHr/GghAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACPe69gGs8cGv/1n7EFb7z5e/qH0IwE90CfxolzHQc8D2VuuxURz0SJfcVvOx0SfjmT0GhLJvpZ8/ZcCJbshT8jnXJW3o8m0C6jMu+uOkTYt0SRuMAZrgRAWUoEvW8dMEABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAOGMAAMIZAwAQzhgAgHDGAACEe137AGp599N/3fz/vvv8owOPBOjZvS6ZJn1CH4YdA48CWuq/FXQY3xF9okuoqesxsCWgRx+DoEO7euqSadInlNf0GGghoKUIOtQzUpdMkz6hvKpjYLSAliLosJw+uc7dS+bYdQwI5/7mPMZCzgj0yb6Mhmybx4CAtu/acyTQtEaX9OHyedIlY5g9BgR1LAJNDXpkPLpkDE1/gJDjCDR7cPLP405kn4wBrjIOWMqJn1v0SfuMAWax9rnk5M9axkF7jAFWE+gcTvzsycVGfcYAxRgH43DypzZ9cixjgN1Y+31w4qcHxsG+jAEOJdB1OfEzChcbZRkDVGUc7MvJnyT6ZD1jgKZY++s58cNLxsF8xgDNOw+0ML9kAMB8xsFtr2ofACzh5PfMYwHbyNAzY4DuCLDHAEqRpR8ZA3QpOcDJf3fYg0z5zAAdS3z/T2nBPhL75JwxwDDmnih7DbkhAMcZvU8uGQPE6S3kRgC0q7c+ucUYgBtaCLkhAGNooU/uMQZgo71CbghAnlqjwRiAgywJuSEA3FN6NPjRQmiMIQCUMrdPjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMgWmafvjt/2ofAjAAXUKvon8d8XlwT//77b/9rNbhAJ261iXTpE/oR+QYuLfejQJgCX3CCKLGwJJbeNY9cM+aPtEltCpmDGx5L0+QgRNdwoiGHwMlP9AjyJBrjy6ZJn1CG4YdA3t+qtcogCz6hNENNwaO/NEe6x7GVqNPdAk1DDUGav6MryDDOFrokmnSJxxniDHQ0i/6MAqgXy11yTTpE47T9RhoLbjnrHvoSw99okvYS5djoOXQXiPI0K6e+sRFBnvpbgz0FNxLRgG0o+cumSZ9QlndjIHeg3vOuod6RuqSaTIKKKP5MTBacC8JMhxn5D7RJWzR7BgYObTXCDLsJ6lP3HlkjSbHQFJwLxkFUE5yl0yTPmG+psZAenDPWfewjT55ZhTwSBNjQGjvE2SYT5/c5iKDW6qOAaFdxiiA2/TJMvqEc9XGgOCuZ93DM12yjVHANFUYA4JbliCTTJ+Uo0uyHToGBHc/gkwSXbIfXZLpVe0DoBzhJYXX+r48vnkOvTNweoFZ9eUILan0SXn6JFeVDxAK8XZCCz/SJ9voEqap8o8WCvEyQgu36ZNl9AnnmvilQ0J8n9DCfPrkNl3CLU2MgRMhfia0sI0+eaZPeKSpMXCSGmKBhfL0CTzW5Bg4SQmx0ML+EvpEl7BW02PgZMQQCy3UoU/gTV2MgZMRQiy00Ia3//YzXQI/6WoMnPQ2CoQW2tRbl0yTPmEfXY6Bk5aDLLDQj5a7ZJr0CfvregyctBRkoYV+6RJSDTEGTmoFWWhhLDVHgT6hhqHGwMlRQRZaGJsuIcWQY+BkjyALLeTZaxToE1ox9Bg42RpkgQWmqcwo0Ce0KGIMnCwNstAC1+gSRhM1Bk7uBVlogbkejQJ9Qi8ix8DJeZCFFlhLl9C7V7UPoAXCC5SgS+iVMQAA4YwBAAhnDABAuOgPEEIN333+0ayve/fTf+18JEDv5vTJe394/H2MAdho7sl97fc1CiDHXn3yiDEAF2qF8ZbvPv/IIIBOtdYntxgDDK+XMN5jEEAbRuiTa4wBujZqMK/xtgHsJ6lLrvHTBHTpu88/ig1v6t8b9iJTxgAdElyPAZSQfFFxyRigK4L7TJHBerLzkjFAF5z4bvO4wDIy8yZjgOYJ7mPGEswjJ9cZAzRNcJfxeMF1BvN9xgBNEtz1PG7wkkw8ZgzQHMHdzpiCH8nBPMYATRHcsjyepDKIl/EbCGmC0O7Hby4kjT5Zzp0BqhPcY3icSeB1vo4xQFWCeyyPN6PytsA23iagCqGtx9sGjESXlGEMcAiBbc+158RAoHW6ZB/GAMUJa78MBFqjT45hDLCZsI7t8vk1DtiTPqnDGGAxYc3m7gGl6JJ2GAPcJazM4e4Bc+iTdhkDvCCslODuAdOkT3oyewycP6lCPQ5h5SgGwth0Sd9W3Rm496QLd9sElpbokn7pkrEUf5tAuNsgqPROl7RBl2Q49DMDwr2dYIIuKUGXcK6ZDxCmh1swoYz0LpkmfcJyzYyBe3oOt1BCOx7lUZ+QqosxcE/NoSCYMJZafaJLqK37MXDP2mALJnBJnzCyocfAPQIKlKJP6N2r2gcAANRlDABAOGMAAMIZAwAQzhgAgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAISL/SeM4Sj/+fIXq//bD379z4JHAvRuTZ+8N+NrjAGat+Vk2rslf3fDAR5L7pN7jAGqEcqylj6exgOj0CXbGQMUJZT9cNeB1umT4xgDPCSQGA6Uok/aNHsMXHsChb5vQske1ryudEnfdEn/Nt0Z2PoCUADbCCCjKPFa1ifr6RKqvk2QMiYEDfanT2C9rj8zUPpqQsggV+kxoU/oSddjoASBBUrQJfTMryMGgHDGAACEMwYAIJwxAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4V7P/cKv//HxnsdB5375yTe1D4Gd6QCOoEvqmD0G4J6RThStl9FIjzVcGu313XqfnBgDcGG0MgLqaaFPPpnxNT4zAADhjAEACGcMAEA4YwAAwhkDABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAj3uvYBrPXFVx/WPoTFfvOrf9c+BOAKfUK6w8dAj6Er5Yi/u4IgRXKXTJM+oaxNYyA9jC2a85wIOK3RJW3SJzlmjwFhHce951Kw2YP+GNet51aX9KXbzwywD0OBtZzwOadL+mIMMJsrAJzwKcFQaI8xwGaCPRYnfGrSJ3UYA+xKsNvlpE9v3J3cjzFANYK9Pyd8Erjo2M4YoDmCvYwTPtymT+YxBuhKrRNfC6XhpA9lJffJJWMAZnAiBko5uk9+P+Nr/ENFABDOGACAcMYAAIQzBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhDMGACCcMQAA4YwBAAhnDABAuNe1D+AIf//2naLf77P3vy/6/YA+lO6SadIntKH7MbBHOEv/mcIOfWi9T3QJe2l+DNQIZ2nCDvWldck06RPmqz4GRghoScIO6+iSN7kQYa5dx4Bw7m/OYyzkjECf7Gvu46tPxrRpDAhnH649TwJNS3RJPy6fK10yhtljQFjHItDUoEfG42JjDNU/M0AbBJrSnPhzudjojzHATQLNXE783ONio33GALMJNCdO/mzlYqMtxgCbCPT4nPg5gouNuowBihLo/jn50woXG8cxBtidQLfLiZ+euNjYjzHA4QS6Did+RuRiowxjgCYIdHlO/iRysbHOW09PT0+1DwIAqOdV7QMAAOoyBgAgnDEAAOGMAQAIZwwAQDhjAADCGQMAEM4YAIBwxgAAhPs/aTr/bV7piyQAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "from jarvis.core.atoms import Atoms\n", + "\n", + "intf = Atoms.from_dict(res['systems'])\n", + "print (intf)" + ], + "metadata": { + "id": "WZ8LRJbK4n6G", + "outputId": "c9535f8e-d0a5-43e4-a219-8820191e2da5", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "WZ8LRJbK4n6G", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "System\n", + "1.0\n", + "-0.0 5.73163 -0.0\n", + "8.10575 -0.0 -0.0\n", + "-0.0 -0.0 -26.34364366645526\n", + "As Ga Si \n", + "12 12 24 \n", + "direct\n", + "0.12500000000000017 0.033333436916792386 0.8511499074085056 bottom\n", + "0.12500000000000017 0.5333333678611532 0.6973034974115482 bottom\n", + "0.12500000000000017 0.033333298805513695 0.5434570874145908 bottom\n", + "0.12500000000000017 0.5333332297498745 0.5434570874145905 bottom\n", + "0.12500000000000017 0.033333298805513695 0.6973034974115482 bottom\n", + "0.12500000000000017 0.5333333678611529 0.8511499074085056 bottom\n", + "0.6249999999999999 -0.21666666666666684 0.6203802924130692 bottom\n", + "0.6249999999999999 0.28333340238897264 0.7742267024100271 bottom\n", + "0.6249999999999999 -0.2166665285553881 0.9280731124069845 bottom\n", + "0.6249999999999999 0.28333340238897264 0.9280731124069845 bottom\n", + "0.6249999999999999 -0.21666666666666684 0.7742267024100271 bottom\n", + "0.6249999999999999 0.2833332642776941 0.6203802924130692 bottom\n", + "0.37499999999999994 0.28333340238897264 0.8511499074085056 bottom\n", + "0.37499999999999994 -0.21666666666666684 0.6973034974115482 bottom\n", + "0.37499999999999994 0.2833332642776941 0.5434570874145908 bottom\n", + "0.37499999999999994 0.7833331952220548 0.5434570874145905 bottom\n", + "0.875 0.033333298805513695 0.7742267024100271 bottom\n", + "0.875 0.5333332297498745 0.6203802924130692 bottom\n", + "0.875 0.033333436916792164 0.9280731124069845 bottom\n", + "0.875 0.5333333678611529 0.7742267024100271 bottom\n", + "0.875 0.033333298805513695 0.6203802924130692 bottom\n", + "0.37499999999999994 -0.21666666666666684 0.8511499074085056 bottom\n", + "0.37499999999999994 0.2833332642776941 0.6973034974115482 bottom\n", + "0.875 0.5333333678611532 0.9280731124069845 bottom\n", + "-0.3750000000000001 0.5416666666666665 0.3010994243760031 top\n", + "-0.3750000000000001 0.0416669207054052 0.4485575215231648 top\n", + "-0.12499999999999999 0.2916662856085588 0.1536413272288415 top\n", + "-0.12499999999999999 -0.20833346035270264 0.3010994243760031 top\n", + "0.12500000000000003 0.2916667936860361 0.2273703758024223 top\n", + "0.12500000000000003 -0.20833346035270264 0.07991227865526063 top\n", + "-0.3750000000000001 0.04166641262792811 0.1536413272288415 top\n", + "0.12500000000000003 -0.20833295227522575 0.374828472949584 top\n", + "0.375 0.04166641262792811 0.07991227865526063 top\n", + "-0.12499999999999999 0.2916667936860361 0.44855752152316475 top\n", + "-0.12499999999999999 -0.20833295227522575 0.44855752152316475 top\n", + "-0.3750000000000001 0.04166692070540543 0.30109942437600307 top\n", + "-0.12499999999999999 -0.20833346035270264 0.1536413272288415 top\n", + "-0.3750000000000001 -0.458332825255856 0.44855752152316475 top\n", + "-0.3750000000000001 -0.4583333333333334 0.1536413272288415 top\n", + "0.375 -0.4583333333333334 0.3748284729495839 top\n", + "0.375 0.04166641262792811 0.2273703758024223 top\n", + "0.375 0.5416661585891899 0.07991227865526063 top\n", + "0.12500000000000003 0.2916667936860363 0.3748284729495839 top\n", + "0.12500000000000003 -0.20833346035270264 0.2273703758024223 top\n", + "0.12500000000000003 0.2916662856085588 0.07991227865526063 top\n", + "0.375 -0.4583333333333334 0.2273703758024223 top\n", + "-0.12499999999999999 0.2916667936860361 0.3010994243760031 top\n", + "0.375 0.0416669207054052 0.3748284729495839 top\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Get Materials Data From JARVIS\n", + "Then, let\"s get the dataset containing 2D materials from JARVIS and wrap it into a pandas dataframe." + ], + "metadata": { + "collapsed": false, + "id": "f418c51a7f794f9f" + }, + "id": "f418c51a7f794f9f" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from jarvis.db.figshare import data, get_jid_data\n", + "\n", + "dft_2d = data(\"dft_2d\")\n", + "df = pd.DataFrame(dft_2d)" + ], + "metadata": { + "id": "b1ee775d1476f884" + }, + "id": "b1ee775d1476f884" + }, + { + "cell_type": "markdown", + "source": [ + "## Create a simple heterostructure\n", + "\n", + "We use two material ids and place them one above another." + ], + "metadata": { + "collapsed": false, + "id": "9035ff20f1483b33" + }, + "id": "9035ff20f1483b33" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "from jarvis.core.atoms import Atoms\n", + "from jarvis.analysis.interface.zur import make_interface\n", + "\n", + "## Note: JVASP-670 is an entry for MoTe2\n", + "jid1 = \"JVASP-670\"\n", + "jid2 =\"JVASP-664\"\n", + "\n", + "for i in dft_2d:\n", + " if i[\"jid\"] == jid1:\n", + " atoms1 = Atoms.from_dict(i[\"atoms\"])\n", + "for i in dft_2d:\n", + " if i[\"jid\"] == jid2:\n", + " atoms2 = Atoms.from_dict(i[\"atoms\"])\n", + "\n", + "interface_atoms_dict = make_interface(film=atoms1, subs=atoms2)\n", + "heterostructure_atoms = interface_atoms_dict[\"interface\"].center_around_origin()\n", + "\n", + "print (jid1,jid2,atoms1.composition.reduced_formula,atoms2.composition.reduced_formula, heterostructure_atoms)" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "1b3e7d016f30b61" + }, + "id": "1b3e7d016f30b61" + }, + { + "cell_type": "markdown", + "source": [ + "## Extract the film and substrate" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + }, + "id": "4d59e226b39bbf41" + }, + "id": "4d59e226b39bbf41" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "# Using the fractional coordinate Z level of 0.5 to separate top/bottom\n", + "# See also https://github.com/usnistgov/jarvis/issues/311\n", + "heterostructure_atoms_copy = Atoms.from_dict(heterostructure_atoms.to_dict())\n", + "indices_to_remove = []\n", + "for index, coord in enumerate(heterostructure_atoms_copy.coords):\n", + " print(coord, index)\n", + " if coord[2] < 0.5:\n", + " indices_to_remove.append(index)\n", + "for i, ind in enumerate(indices_to_remove):\n", + " heterostructure_atoms_copy = heterostructure_atoms_copy.remove_site_by_index(ind - i)\n", + " print(\"removed\", ind, heterostructure_atoms_copy.props)\n", + "substrate_atoms = Atoms.from_dict(heterostructure_atoms_copy.to_dict())\n", + "\n", + "heterostructure_atoms_copy = Atoms.from_dict(heterostructure_atoms.to_dict())\n", + "indices_to_remove = []\n", + "for index, coord in enumerate(heterostructure_atoms_copy.coords):\n", + " print(coord, index)\n", + " if coord[2] > 0.5:\n", + " indices_to_remove.append(index)\n", + "for i, ind in enumerate(indices_to_remove):\n", + " heterostructure_atoms_copy = heterostructure_atoms_copy.remove_site_by_index(ind - i)\n", + " print(\"removed\", ind, heterostructure_atoms_copy.props)\n", + "film_atoms = Atoms.from_dict(heterostructure_atoms_copy.to_dict())" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "c60f1cdeca83df6a" + }, + "id": "c60f1cdeca83df6a" + }, + { + "cell_type": "markdown", + "source": [ + "## Extract Structure and Convert to ESSE\n", + "Next, we extract an entry from the JARVIS dataset and convert it into ESSE format ready to be uploaded to Mat3ra.com." + ], + "metadata": { + "collapsed": false, + "id": "15fe5f9de299c935" + }, + "id": "15fe5f9de299c935" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "import json\n", + "from express import ExPrESS\n", + "\n", + "def jarvis_atoms_to_esse(atoms):\n", + " # JARVIS Atoms return poscar as representation\n", + " # https://github.com/usnistgov/jarvis/blob/master/jarvis/core/atoms.py#L1333\n", + " poscar = atoms.__repr__()\n", + " kwargs = {\n", + " \"structure_string\": poscar,\n", + " \"cell_type\": \"original\",\n", + " \"structure_format\": \"poscar\"\n", + " }\n", + " handler = ExPrESS(\"structure\", **kwargs)\n", + " material = handler.property(\"material\", **kwargs)\n", + " return material\n", + "\n", + "material_film = jarvis_atoms_to_esse(film_atoms)\n", + "material_substrate = jarvis_atoms_to_esse(substrate_atoms)\n", + "material_heterostructure = jarvis_atoms_to_esse(heterostructure_atoms)\n", + "\n", + "# To preview resulting JSON data\n", + "print(json.dumps(material_heterostructure, indent=4))" + ], + "metadata": { + "id": "c41fb68c6d25fe48" + }, + "id": "c41fb68c6d25fe48" + }, + { + "cell_type": "markdown", + "source": [ + "## Setup the API credentials\n", + "Finally, we can upload the material to Mat3ra.com using the REST API: follow the explanation in another example notebook [here](../../examples/material/create_material.ipynb). One can replace the content of the `CONFIG` variable with the JSON data above." + ], + "metadata": { + "collapsed": false, + "id": "a4a48479c7ea090f" + }, + "id": "a4a48479c7ea090f" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "# @title Authorization Form\n", + "ACCOUNT_ID = \"\" # @param {type:\"string\"}\n", + "AUTH_TOKEN = \"\" # @param {type:\"string\"}\n", + "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" # @param {type:\"string\"}\n", + "ORGANIZATION_ID = \"\"\n", + "\n", + "\n", + "import os\n", + "\n", + "if \"COLAB_JUPYTER_IP\" in os.environ:\n", + " os.environ.update(\n", + " dict(\n", + " ACCOUNT_ID=ACCOUNT_ID,\n", + " AUTH_TOKEN=AUTH_TOKEN,\n", + " MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY,\n", + " ORGANIZATION_ID=ORGANIZATION_ID,\n", + " )\n", + " )\n", + "\n", + " !GIT_BRANCH=\"dev\"; export GIT_BRANCH; curl -s \"https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh\" | bash" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "5b2ae68afcacc16" + }, + "id": "5b2ae68afcacc16" + }, + { + "cell_type": "markdown", + "source": [ + "## Initialize the API Endpoints" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + }, + "id": "deac6f9f10d31b19" + }, + "id": "deac6f9f10d31b19" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "from utils.settings import ENDPOINT_ARGS, ACCOUNT_ID\n", + "from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkflow_and_unit_indicies, dataframe_to_html, display_JSON\n", + "\n", + "# Relevant functions from the API client\n", + "from exabyte_api_client.endpoints.jobs import JobEndpoints\n", + "from exabyte_api_client.endpoints.projects import ProjectEndpoints\n", + "from exabyte_api_client.endpoints.materials import MaterialEndpoints\n", + "from exabyte_api_client.endpoints.bank_workflows import BankWorkflowEndpoints\n", + "from exabyte_api_client.endpoints.properties import PropertiesEndpoints\n", + "\n", + "job_endpoints = JobEndpoints(*ENDPOINT_ARGS)\n", + "project_endpoints = ProjectEndpoints(*ENDPOINT_ARGS)\n", + "material_endpoints = MaterialEndpoints(*ENDPOINT_ARGS)\n", + "property_endpoints = PropertiesEndpoints(*ENDPOINT_ARGS)\n", + "bank_workflow_endpoints = BankWorkflowEndpoints(*ENDPOINT_ARGS)" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "979e35d5e828f794" + }, + "id": "979e35d5e828f794" + }, + { + "cell_type": "markdown", + "source": [ + "## Create Material in the platform" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + }, + "id": "6ea47ba011947ad5" + }, + "id": "6ea47ba011947ad5" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "material_heterostructure[\"name\"] = f\"Heterostructure - {jid1} with {jid2}\"\n", + "material_heterostructure_in_the_platform = material_endpoints.create(material_heterostructure)\n", + "\n", + "material_film[\"name\"] = f\"Film - {jid1}\"\n", + "material_film_in_the_platform = material_endpoints.create(material_film)\n", + "\n", + "material_substrate[\"name\"] = f\"Substrate - {jid2}\"\n", + "material_substrate_in_the_platform = material_endpoints.create(material_substrate)" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "84b4ae0786b716cc" + }, + "id": "84b4ae0786b716cc" + }, + { + "cell_type": "markdown", + "source": [ + "## Create a workflow if it does not exist yet\n", + "\n", + "Here we utilize the id of the Valence Band bank workflow from \"curators\" account `kXJ9j9piJTddX9FHz` and import it if it does not exist in the account collection." + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + }, + "id": "ca5e8436bab6f5bd" + }, + "id": "ca5e8436bab6f5bd" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "BANK_ID = \"kXJ9j9piJTddX9FHz\"\n", + "workflow_in_the_platform = bank_workflow_endpoints.copy(BANK_ID, ACCOUNT_ID)" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "443484aaa75ac2ff" + }, + "id": "443484aaa75ac2ff" + }, + { + "cell_type": "markdown", + "source": [ + "## Create and Run a Job\n", + "\n", + "Create Job config" + ], + "metadata": { + "collapsed": false, + "id": "da418324b250a490" + }, + "id": "da418324b250a490" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "PPN = \"4\"\n", + "QUEUE = \"D\"\n", + "NODES = \"1\"\n", + "TIME_LIMIT = \"01:00:00\"\n", + "# Using MSFT Azure cluster with a bit larger memory bandwidth in \"D\" queue\n", + "CLUSTER = \"master-production-20160630-cluster-007.exabyte.io\"\n", + "\n", + "compute = job_endpoints.get_compute(CLUSTER, PPN, NODES, QUEUE, TIME_LIMIT)\n", + "\n", + "config = {\n", + " \"owner\": {\"_id\": ACCOUNT_ID},\n", + " \"_material\": {\n", + " \"_id\": material_heterostructure_in_the_platform[\"_id\"]\n", + " },\n", + " \"_materials\": [\n", + " {\"_id\": material_heterostructure_in_the_platform[\"_id\"]},\n", + " {\"_id\": material_substrate_in_the_platform[\"_id\"]},\n", + " {\"_id\": material_film_in_the_platform[\"_id\"]},\n", + " ],\n", + " \"workflow\": {\"_id\": workflow_in_the_platform[\"_id\"]},\n", + " \"name\": f\"Valence Band - {material_heterostructure['name']}\",\n", + " \"compute\": compute,\n", + "}" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "b4354c90697ee8de" + }, + "id": "b4354c90697ee8de" + }, + { + "cell_type": "markdown", + "source": [ + "Then create a job" + ], + "metadata": { + "collapsed": false, + "id": "c907fce6c3a3f59e" + }, + "id": "c907fce6c3a3f59e" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "job = job_endpoints.create(config)" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "d6537b79de46978a" + }, + "id": "d6537b79de46978a" + }, + { + "cell_type": "markdown", + "source": [ + "then run it" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + }, + "id": "f4b7b12d8cd5019e" + }, + "id": "f4b7b12d8cd5019e" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "job_endpoints.submit(job[\"_id\"])" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "cc878e6674215ecc" + }, + "id": "cc878e6674215ecc" + }, + { + "cell_type": "markdown", + "source": [ + "and wait for it to finish" + ], + "metadata": { + "collapsed": false, + "id": "2ef0dfa179949972" + }, + "id": "2ef0dfa179949972" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkflow_and_unit_indicies\n", + "job_id = job[\"_id\"]\n", + "wait_for_jobs_to_finish(job_endpoints, [job_id])" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "436d477f7245ea02" + }, + "id": "436d477f7245ea02" + }, + { + "cell_type": "markdown", + "source": [ + "Then get job files:" + ], + "metadata": { + "collapsed": false, + "id": "2a2cc84332f6d98b" + }, + "id": "2a2cc84332f6d98b" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "files = job_endpoints.list_files(job_id)\n", + "paths = [file[\"key\"] for file in files]\n", + "for path in paths:\n", + " if \"outdir\" not in path:\n", + " print(path)\n", + "\n", + "for file in files:\n", + " if file[\"name\"] == \"pw_scf.out\":\n", + " output_file_metadata = file\n", + "\n", + "import urllib\n", + "\n", + "server_response = urllib.request.urlopen(output_file_metadata[\"signedUrl\"])\n", + "output_file = server_response.read().decode(encoding=\"UTF-8\")\n", + "\n", + "with open(output_file_metadata[\"name\"], \"w\") as file_descriptor:\n", + " file_descriptor.write(output_file)" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "3199c5b7ecf347ef" + }, + "id": "3199c5b7ecf347ef" + }, + { + "cell_type": "markdown", + "source": [ + "and get job properties using the index of a subworkflow in workflow and the index of unit in subworkflow (0, 0) below" + ], + "metadata": { + "collapsed": false, + "id": "d155c1096b7499f5" + }, + "id": "d155c1096b7499f5" + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "pressure = get_property_by_subworkflow_and_unit_indicies(property_endpoints, \"pressure\", job, 0, 0)\n", + "print(pressure[\"data\"][\"value\"])" + ], + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "651c91cebd378528" + }, + "id": "651c91cebd378528" } - }, - "id": "84b4ae0786b716cc" - }, - { - "cell_type": "markdown", - "source": [ - "## Create a workflow if it does not exist yet\n", - "\n", - "Here we utilize the id of the Valence Band bank workflow from \"curators\" account `kXJ9j9piJTddX9FHz` and import it if it does not exist in the account collection." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "id": "ca5e8436bab6f5bd" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "BANK_ID = \"kXJ9j9piJTddX9FHz\"\n", - "workflow_in_the_platform = bank_workflow_endpoints.copy(BANK_ID, ACCOUNT_ID)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "443484aaa75ac2ff" - }, - { - "cell_type": "markdown", - "source": [ - "## Create and Run a Job\n", - "\n", - "Create Job config" - ], - "metadata": { - "collapsed": false - }, - "id": "da418324b250a490" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "PPN = \"4\"\n", - "QUEUE = \"D\"\n", - "NODES = \"1\"\n", - "TIME_LIMIT = \"01:00:00\"\n", - "# Using MSFT Azure cluster with a bit larger memory bandwidth in \"D\" queue\n", - "CLUSTER = \"master-production-20160630-cluster-007.exabyte.io\"\n", - "\n", - "compute = job_endpoints.get_compute(CLUSTER, PPN, NODES, QUEUE, TIME_LIMIT)\n", - "\n", - "config = {\n", - " \"owner\": {\"_id\": ACCOUNT_ID},\n", - " \"_material\": {\n", - " \"_id\": material_heterostructure_in_the_platform[\"_id\"]\n", - " },\n", - " \"_materials\": [\n", - " {\"_id\": material_heterostructure_in_the_platform[\"_id\"]},\n", - " {\"_id\": material_substrate_in_the_platform[\"_id\"]},\n", - " {\"_id\": material_film_in_the_platform[\"_id\"]},\n", - " ],\n", - " \"workflow\": {\"_id\": workflow_in_the_platform[\"_id\"]},\n", - " \"name\": f\"Valence Band - {material_heterostructure['name']}\",\n", - " \"compute\": compute,\n", - "}" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "b4354c90697ee8de" - }, - { - "cell_type": "markdown", - "source": [ - "Then create a job" - ], - "metadata": { - "collapsed": false - }, - "id": "c907fce6c3a3f59e" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "job = job_endpoints.create(config)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "d6537b79de46978a" - }, - { - "cell_type": "markdown", - "source": [ - "then run it" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - }, - "id": "f4b7b12d8cd5019e" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "job_endpoints.submit(job[\"_id\"])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "cc878e6674215ecc" - }, - { - "cell_type": "markdown", - "source": [ - "and wait for it to finish" - ], - "metadata": { - "collapsed": false - }, - "id": "2ef0dfa179949972" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkflow_and_unit_indicies\n", - "job_id = job[\"_id\"]\n", - "wait_for_jobs_to_finish(job_endpoints, [job_id])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "436d477f7245ea02" - }, - { - "cell_type": "markdown", - "source": [ - "Then get job files:" - ], - "metadata": { - "collapsed": false - }, - "id": "2a2cc84332f6d98b" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "files = job_endpoints.list_files(job_id)\n", - "paths = [file[\"key\"] for file in files]\n", - "for path in paths:\n", - " if \"outdir\" not in path:\n", - " print(path)\n", - "\n", - "for file in files:\n", - " if file[\"name\"] == \"pw_scf.out\":\n", - " output_file_metadata = file\n", - "\n", - "import urllib\n", - "\n", - "server_response = urllib.request.urlopen(output_file_metadata[\"signedUrl\"])\n", - "output_file = server_response.read().decode(encoding=\"UTF-8\")\n", - "\n", - "with open(output_file_metadata[\"name\"], \"w\") as file_descriptor:\n", - " file_descriptor.write(output_file)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "id": "3199c5b7ecf347ef" - }, - { - "cell_type": "markdown", - "source": [ - "and get job properties using the index of a subworkflow in workflow and the index of unit in subworkflow (0, 0) below" - ], - "metadata": { - "collapsed": false - }, - "id": "d155c1096b7499f5" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "pressure = get_property_by_subworkflow_and_unit_indicies(property_endpoints, \"pressure\", job, 0, 0)\n", - "print(pressure[\"data\"][\"value\"])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + }, + "colab": { + "provenance": [] } - }, - "id": "651c91cebd378528" - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file From 1507cff44ed7fe3dccefa4c3470cb0f4b3e8d811 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Fri, 16 Aug 2024 11:25:39 -0400 Subject: [PATCH 2/2] Created using Colab --- ...un_job_using_material_from_jarvis_db.ipynb | 982 ++++++++++++------ 1 file changed, 640 insertions(+), 342 deletions(-) diff --git a/other/jarvis/run_job_using_material_from_jarvis_db.ipynb b/other/jarvis/run_job_using_material_from_jarvis_db.ipynb index 0de65d26..769b0089 100644 --- a/other/jarvis/run_job_using_material_from_jarvis_db.ipynb +++ b/other/jarvis/run_job_using_material_from_jarvis_db.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "outputs": [ { "output_type": "stream", @@ -38,7 +38,7 @@ "Collecting munch==2.5.0 (from express-py==2024.1.25.post7)\n", " Downloading munch-2.5.0-py2.py3-none-any.whl.metadata (5.8 kB)\n", "Collecting pymatgen>=2023.8.10 (from express-py==2024.1.25.post7)\n", - " Downloading pymatgen-2024.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", + " Downloading pymatgen-2024.8.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n", "Collecting ase>=3.17.0 (from express-py==2024.1.25.post7)\n", " Downloading ase-3.23.0-py3-none-any.whl.metadata (3.8 kB)\n", "Collecting mat3ra-esse>=2024.1.25.post7 (from express-py==2024.1.25.post7)\n", @@ -66,7 +66,7 @@ " Downloading exabyte_json_include-2023.12.23.post0-py3-none-any.whl.metadata (3.1 kB)\n", "Requirement already satisfied: jsonschema>=2.6.0 in /usr/local/lib/python3.10/dist-packages (from mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (4.23.0)\n", "Collecting matplotlib>=3.3.4 (from ase>=3.17.0->express-py==2024.1.25.post7)\n", - " Downloading matplotlib-3.9.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)\n", + " Downloading matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)\n", "Collecting monty>=2024.7.29 (from pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", " Downloading monty-2024.7.30-py3-none-any.whl.metadata (3.2 kB)\n", "Requirement already satisfied: networkx>=2.2 in /usr/local/lib/python3.10/dist-packages (from pymatgen>=2023.8.10->express-py==2024.1.25.post7) (3.3)\n", @@ -96,7 +96,7 @@ " Downloading pymatgen-2024.2.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", " Downloading pymatgen-2024.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", " Downloading pymatgen-2024.1.27.tar.gz (7.2 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.2/7.2 MB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.2/7.2 MB\u001b[0m \u001b[31m25.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", @@ -110,10 +110,10 @@ " Downloading pymatgen-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", " Downloading pymatgen-2023.9.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from rdkit-pypi>=2022.3.5->express-py==2024.1.25.post7) (9.4.0)\n", - "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (24.1.0)\n", + "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (24.2.0)\n", "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (2023.12.1)\n", "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (0.35.1)\n", - "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (0.19.1)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6.0->mat3ra-esse>=2024.1.25.post7->express-py==2024.1.25.post7) (0.20.0)\n", "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (1.2.1)\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib>=3.3.4->ase>=3.17.0->express-py==2024.1.25.post7) (4.53.1)\n", @@ -132,44 +132,44 @@ "Requirement already satisfied: typeguard>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from inflect->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (4.3.0)\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (2024.1)\n", "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (2024.1)\n", - "Requirement already satisfied: PyYAML>=3.01 in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (6.0.1)\n", + "Requirement already satisfied: PyYAML>=3.01 in /usr/local/lib/python3.10/dist-packages (from pybtex>=0.24.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (6.0.2)\n", "Collecting latexcodec>=1.0.4 (from pybtex>=0.24.0->pymatgen>=2023.8.10->express-py==2024.1.25.post7)\n", " Downloading latexcodec-3.0.0-py3-none-any.whl.metadata (4.9 kB)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (3.5.0)\n", "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy>=1.2->pymatgen>=2023.8.10->express-py==2024.1.25.post7) (1.3.0)\n", "Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.10/dist-packages (from typeguard>=4.0.1->inflect->jarvis-tools>=2023.12.12->express-py==2024.1.25.post7) (4.12.2)\n", "Downloading express_py-2024.1.25.post7-py3-none-any.whl (82 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m82.6/82.6 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m82.6/82.6 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading munch-2.5.0-py2.py3-none-any.whl (10 kB)\n", "Downloading numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.1/17.1 MB\u001b[0m \u001b[31m78.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.1/17.1 MB\u001b[0m \u001b[31m50.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading ase-3.23.0-py3-none-any.whl (2.9 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.9/2.9 MB\u001b[0m \u001b[31m23.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.9/2.9 MB\u001b[0m \u001b[31m61.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading jarvis_tools-2024.5.10-py2.py3-none-any.whl (4.2 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m73.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m58.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading mat3ra_esse-2024.6.4.post1-py3-none-any.whl (488 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m488.6/488.6 kB\u001b[0m \u001b[31m25.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m488.6/488.6 kB\u001b[0m \u001b[31m25.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading pymatgen-2023.9.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.6 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.6/9.6 MB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.6/9.6 MB\u001b[0m \u001b[31m33.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading rdkit_pypi-2022.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (29.4 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m29.4/29.4 MB\u001b[0m \u001b[31m17.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m29.4/29.4 MB\u001b[0m \u001b[31m19.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading exabyte_json_include-2023.12.23.post0-py3-none-any.whl (5.3 kB)\n", "Downloading monty-2024.7.30-py3-none-any.whl (48 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m48.9/48.9 kB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m48.9/48.9 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading palettable-3.3.3-py2.py3-none-any.whl (332 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m332.3/332.3 kB\u001b[0m \u001b[31m17.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m332.3/332.3 kB\u001b[0m \u001b[31m15.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading ruamel.yaml-0.18.6-py3-none-any.whl (117 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m117.8/117.8 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m117.8/117.8 kB\u001b[0m \u001b[31m7.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading spglib-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m37.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading uncertainties-3.2.2-py3-none-any.whl (58 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m4.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading xmltodict-0.13.0-py2.py3-none-any.whl (10.0 kB)\n", "Downloading pybtex-0.24.0-py2.py3-none-any.whl (561 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m561.4/561.4 kB\u001b[0m \u001b[31m25.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m561.4/561.4 kB\u001b[0m \u001b[31m25.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading latexcodec-3.0.0-py3-none-any.whl (18 kB)\n", "Downloading ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (526 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m526.7/526.7 kB\u001b[0m \u001b[31m26.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m526.7/526.7 kB\u001b[0m \u001b[31m29.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hInstalling collected packages: xmltodict, uncertainties, ruamel.yaml.clib, palettable, numpy, munch, monty, latexcodec, exabyte-json-include, spglib, ruamel.yaml, rdkit-pypi, pybtex, pymatgen, mat3ra-esse, jarvis-tools, ase, express-py\n", " Attempting uninstall: numpy\n", " Found existing installation: numpy 1.26.4\n", @@ -178,7 +178,7 @@ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "xgboost 2.1.1 requires nvidia-nccl-cu12; platform_system == \"Linux\" and platform_machine != \"aarch64\", which is not installed.\n", "albucore 0.0.13 requires numpy<2,>=1.24.4, but you have numpy 1.23.5 which is incompatible.\n", - "albumentations 1.4.12 requires numpy>=1.24.4, but you have numpy 1.23.5 which is incompatible.\n", + "albumentations 1.4.13 requires numpy>=1.24.4, but you have numpy 1.23.5 which is incompatible.\n", "chex 0.1.86 requires numpy>=1.24.1, but you have numpy 1.23.5 which is incompatible.\n", "pandas-stubs 2.1.4.231227 requires numpy>=1.26.0; python_version < \"3.13\", but you have numpy 1.23.5 which is incompatible.\u001b[0m\u001b[31m\n", "\u001b[0mSuccessfully installed ase-3.23.0 exabyte-json-include-2023.12.23.post0 express-py-2024.1.25.post7 jarvis-tools-2024.5.10 latexcodec-3.0.0 mat3ra-esse-2024.6.4.post1 monty-2024.7.30 munch-2.5.0 numpy-1.23.5 palettable-3.3.3 pybtex-0.24.0 pymatgen-2023.9.25 rdkit-pypi-2022.9.5 ruamel.yaml-0.18.6 ruamel.yaml.clib-0.2.8 spglib-2.5.0 uncertainties-3.2.2 xmltodict-0.13.0\n" @@ -193,7 +193,7 @@ "numpy" ] }, - "id": "c347a50fa91f480bbfb607464fbcc7ae" + "id": "0d43ec263d394e1080b24103f14c3b34" } }, "metadata": {} @@ -204,7 +204,7 @@ ], "metadata": { "id": "b1288bc79ee2c828", - "outputId": "6d4b3123-4223-4ff8-e98f-c6a3129ec31d", + "outputId": "ac71d8df-2be8-46f0-eb92-a4b0207a37c2", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 @@ -218,21 +218,21 @@ "pip install intermat" ], "metadata": { - "id": "rmuCwrRU2kAY", - "outputId": "ca340a89-d157-4160-9df6-71a8815c79cf", + "id": "onRcB7rou8ZM", + "outputId": "130beabc-5c2d-4e8c-a8ac-f3a5bcaf8bcb", "colab": { "base_uri": "https://localhost:8080/" } }, - "id": "rmuCwrRU2kAY", - "execution_count": null, + "id": "onRcB7rou8ZM", + "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Collecting intermat\n", - " Using cached intermat-2024.3.24-py2.py3-none-any.whl.metadata (30 kB)\n", + " Downloading intermat-2024.3.24-py2.py3-none-any.whl.metadata (30 kB)\n", "Requirement already satisfied: numpy>=1.22.0 in /usr/local/lib/python3.10/dist-packages (from intermat) (1.23.5)\n", "Requirement already satisfied: scipy>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from intermat) (1.13.1)\n", "Requirement already satisfied: jarvis-tools>=2021.07.19 in /usr/local/lib/python3.10/dist-packages (from intermat) (2024.5.10)\n", @@ -270,7 +270,7 @@ "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->jarvis-tools>=2021.07.19->intermat) (3.5.0)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib>=3.0.0->jarvis-tools>=2021.07.19->intermat) (1.16.0)\n", "Downloading intermat-2024.3.24-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.1/49.1 kB\u001b[0m \u001b[31m2.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.1/49.1 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading pydantic_settings-2.4.0-py3-none-any.whl (23 kB)\n", "Downloading python_dotenv-1.0.1-py3-none-any.whl (19 kB)\n", "Installing collected packages: python-dotenv, pydantic-settings, intermat\n", @@ -279,6 +279,61 @@ } ] }, + { + "cell_type": "code", + "source": [ + "# pos_subs=\"\"\"GaAs\n", + "# 1.0\n", + "# 3.509895098013499 -6.584084e-10 2.026439508259945\n", + "# 1.169965032050413 3.3091606691404545 2.026439508259945\n", + "# -1.8622597e-09 -1.3168164e-09 4.052878022970947\n", + "# Ga As\n", + "# 1 1\n", + "# Cartesian\n", + "# 0.0 0.0 0.0\n", + "# 1.1699675 0.82729 2.02644\n", + "# \"\"\"\n", + "\n", + "# pos_film=\"\"\"Si2\n", + "# 1.0\n", + "# 3.3641499856336465 -2.5027128e-09 1.94229273881412\n", + "# 1.121382991333525 3.1717517190189715 1.9422927388141193\n", + "# -2.5909987e-09 -1.8321133e-09 3.884586486670313\n", + "# Si\n", + "# 2\n", + "# Cartesian\n", + "# 3.92483875 2.77528125 6.7980237500000005\n", + "# 0.56069125 0.39646875 0.9711462500000001\n", + "# \"\"\"\n", + "# with open('pos_film','w') as f:\n", + "# f.write(pos_film)\n", + "\n", + "# with open('pos_subs','w') as f:\n", + "# f.write(pos_subs)\n", + "\n", + "# from jarvis.db.jsonutils import dumpjson,loadjson\n", + "# from jarvis.db.jsonutils import dumpjson\n", + "# import plotly.graph_objects as go\n", + "\n", + "# config = {'calculator_method': 'ewald',\n", + "# 'disp_intvl': 0.1,\n", + "# 'film_file_path': 'pos_film',\n", + "# 'substrate_file_path': 'pos_subs',\n", + "# 'film_index': '1_1_0',\n", + "# 'substrate_index': '1_1_0'}\n", + "\n", + "# dumpjson(data=config,filename='config_example2.json')\n", + "# !run_intermat.py --config_file config_example2.json >out2\n", + "\n", + "# res=loadjson('intermat_results.json')" + ], + "metadata": { + "id": "XWx2Suvau3Dc" + }, + "id": "XWx2Suvau3Dc", + "execution_count": 4, + "outputs": [] + }, { "cell_type": "code", "source": [ @@ -288,10 +343,11 @@ "\n", "config = {'calculator_method': 'ewald',\n", " 'disp_intvl': 0.1,\n", - " 'film_index': '1_1_0',\n", - " 'film_jid': 'JVASP-1002',\n", - " 'substrate_index': '1_1_0',\n", - " 'substrate_jid': 'JVASP-1174'}\n", + " 'film_index': '0_0_1',\n", + " 'film_jid': 'JVASP-670',\n", + " 'substrate_index': '0_0_1',\n", + " 'dataset':'dft_2d',\n", + " 'substrate_jid': 'JVASP-664'}\n", "\n", "dumpjson(data=config,filename='config_example2.json')\n", "!run_intermat.py --config_file config_example2.json >out2\n", @@ -299,29 +355,24 @@ "res=loadjson('intermat_results.json')" ], "metadata": { - "id": "P6zHf-Sl3rBi", - "outputId": "fc423ce2-78a9-4514-f4df-fdbcff80261a", + "id": "gjRSGGmJvLPS", + "outputId": "469ee7d0-7e56-4576-8e73-095a712a621e", "colab": { "base_uri": "https://localhost:8080/" } }, - "id": "P6zHf-Sl3rBi", - "execution_count": null, + "id": "gjRSGGmJvLPS", + "execution_count": 15, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "100% 40.8M/40.8M [00:00<00:00, 59.2MiB/s]\n", "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['number']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", " warnings.warn(\n", - "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['international']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", - " warnings.warn(\n", - "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:52: RuntimeWarning: invalid value encountered in double_scalars\n", - " strain_x = (\n", - "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:55: RuntimeWarning: invalid value encountered in double_scalars\n", + "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:55: RuntimeWarning: divide by zero encountered in double_scalars\n", " strain_y = (\n", - "100% 100/100 [00:20<00:00, 4.99it/s]\n" + "100% 100/100 [00:03<00:00, 25.66it/s]\n" ] } ] @@ -335,15 +386,15 @@ "plt.axis('off')\n" ], "metadata": { - "id": "wtXpDYge3-fB", - "outputId": "f4163b89-e31f-4b0e-81ae-2a7c64eefb60", + "id": "v9EdTNV1vLMU", + "outputId": "994bfa21-18ef-457b-acd2-6ca65c2253d6", "colab": { "base_uri": "https://localhost:8080/", "height": 424 } }, - "id": "wtXpDYge3-fB", - "execution_count": null, + "id": "v9EdTNV1vLMU", + "execution_count": 16, "outputs": [ { "output_type": "execute_result", @@ -353,7 +404,7 @@ ] }, "metadata": {}, - "execution_count": 3 + "execution_count": 16 }, { "output_type": "display_data", @@ -361,7 +412,7 @@ "text/plain": [ "
" ], - "image/png": "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\n" + "image/png": "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\n" }, "metadata": {} } @@ -370,24 +421,27 @@ { "cell_type": "code", "source": [ - "print(res.keys())" + "res.keys()" ], "metadata": { - "id": "XyD6CziN4SjN", - "outputId": "89861441-3e9b-4939-dd57-834486a6a676", + "id": "y0TxKCx9vLJs", + "outputId": "fccd65c4-ea2b-4ed5-9f6d-7905c1341260", "colab": { "base_uri": "https://localhost:8080/" } }, - "id": "XyD6CziN4SjN", - "execution_count": null, + "id": "y0TxKCx9vLJs", + "execution_count": 17, "outputs": [ { - "output_type": "stream", - "name": "stdout", - "text": [ - "dict_keys(['systems', 'time_taken', 'wads'])\n" - ] + "output_type": "execute_result", + "data": { + "text/plain": [ + "dict_keys(['systems', 'time_taken', 'wads'])" + ] + }, + "metadata": {}, + "execution_count": 17 } ] }, @@ -395,19 +449,18 @@ "cell_type": "code", "source": [ "from jarvis.core.atoms import Atoms\n", - "\n", - "intf = Atoms.from_dict(res['systems'])\n", - "print (intf)" + "atoms=Atoms.from_dict(res['systems'])\n", + "print(atoms)" ], "metadata": { - "id": "ugq7lJ804VlP", - "outputId": "3bb8bd09-476b-47c5-ade4-6a076113d699", + "id": "X6XF6is1u3AD", + "outputId": "c4c1fa74-3ef3-4b38-bf0d-9121624dcc2c", "colab": { "base_uri": "https://localhost:8080/" } }, - "id": "ugq7lJ804VlP", - "execution_count": null, + "id": "X6XF6is1u3AD", + "execution_count": 18, "outputs": [ { "output_type": "stream", @@ -415,60 +468,33 @@ "text": [ "System\n", "1.0\n", - "-0.0 5.73163 -0.0\n", - "8.10575 -0.0 -0.0\n", - "-0.0 -0.0 -26.34364366645526\n", - "As Ga Si \n", - "12 12 24 \n", + "3.18796 5.52171 -0.0\n", + "6.37591 -0.0 -0.0\n", + "-0.0 -0.0 -13.257305101620515\n", + "Mo S Te \n", + "7 8 6 \n", "direct\n", - "0.12500000000000017 0.033333436916792386 0.8511499074085056 bottom\n", - "0.12500000000000017 0.5333333678611532 0.6973034974115482 bottom\n", - "0.12500000000000017 0.033333298805513695 0.5434570874145908 bottom\n", - "0.12500000000000017 0.5333332297498745 0.5434570874145905 bottom\n", - "0.12500000000000017 0.033333298805513695 0.6973034974115482 bottom\n", - "0.12500000000000017 0.5333333678611529 0.8511499074085056 bottom\n", - "0.6249999999999999 -0.21666666666666684 0.6203802924130692 bottom\n", - "0.6249999999999999 0.28333340238897264 0.7742267024100271 bottom\n", - "0.6249999999999999 -0.2166665285553881 0.9280731124069845 bottom\n", - "0.6249999999999999 0.28333340238897264 0.9280731124069845 bottom\n", - "0.6249999999999999 -0.21666666666666684 0.7742267024100271 bottom\n", - "0.6249999999999999 0.2833332642776941 0.6203802924130692 bottom\n", - "0.37499999999999994 0.28333340238897264 0.8511499074085056 bottom\n", - "0.37499999999999994 -0.21666666666666684 0.6973034974115482 bottom\n", - "0.37499999999999994 0.2833332642776941 0.5434570874145908 bottom\n", - "0.37499999999999994 0.7833331952220548 0.5434570874145905 bottom\n", - "0.875 0.033333298805513695 0.7742267024100271 bottom\n", - "0.875 0.5333332297498745 0.6203802924130692 bottom\n", - "0.875 0.033333436916792164 0.9280731124069845 bottom\n", - "0.875 0.5333333678611529 0.7742267024100271 bottom\n", - "0.875 0.033333298805513695 0.6203802924130692 bottom\n", - "0.37499999999999994 -0.21666666666666684 0.8511499074085056 bottom\n", - "0.37499999999999994 0.2833332642776941 0.6973034974115482 bottom\n", - "0.875 0.5333333678611532 0.9280731124069845 bottom\n", - "-0.3750000000000001 0.5416666666666665 0.3010994243760031 top\n", - "-0.3750000000000001 0.0416669207054052 0.4485575215231648 top\n", - "-0.12499999999999999 0.2916662856085588 0.1536413272288415 top\n", - "-0.12499999999999999 -0.20833346035270264 0.3010994243760031 top\n", - "0.12500000000000003 0.2916667936860361 0.2273703758024223 top\n", - "0.12500000000000003 -0.20833346035270264 0.07991227865526063 top\n", - "-0.3750000000000001 0.04166641262792811 0.1536413272288415 top\n", - "0.12500000000000003 -0.20833295227522575 0.374828472949584 top\n", - "0.375 0.04166641262792811 0.07991227865526063 top\n", - "-0.12499999999999999 0.2916667936860361 0.44855752152316475 top\n", - "-0.12499999999999999 -0.20833295227522575 0.44855752152316475 top\n", - "-0.3750000000000001 0.04166692070540543 0.30109942437600307 top\n", - "-0.12499999999999999 -0.20833346035270264 0.1536413272288415 top\n", - "-0.3750000000000001 -0.458332825255856 0.44855752152316475 top\n", - "-0.3750000000000001 -0.4583333333333334 0.1536413272288415 top\n", - "0.375 -0.4583333333333334 0.3748284729495839 top\n", - "0.375 0.04166641262792811 0.2273703758024223 top\n", - "0.375 0.5416661585891899 0.07991227865526063 top\n", - "0.12500000000000003 0.2916667936860363 0.3748284729495839 top\n", - "0.12500000000000003 -0.20833346035270264 0.2273703758024223 top\n", - "0.12500000000000003 0.2916662856085588 0.07991227865526063 top\n", - "0.375 -0.4583333333333334 0.2273703758024223 top\n", - "-0.12499999999999999 0.2916667936860361 0.3010994243760031 top\n", - "0.375 0.0416669207054052 0.3748284729495839 top\n", + "-0.07222168858380806 0.494444157057984 0.6900402511350963 bottom\n", + "0.11111017016386371 0.3333340338057745 0.2466129984865384 top\n", + "-0.22222316316946963 7.004724414460908e-07 0.2466129984865384 top\n", + "-0.5555564965028031 -0.33333263286089165 0.2466129984865384 top\n", + "-0.07222168858380806 -0.005555842942016054 0.6900402511350963 bottom\n", + "-0.5722216885838081 -0.005555842942015943 0.6900402511350963 bottom\n", + "-0.5722216885838081 0.494444157057984 0.6900402511350963 bottom\n", + "0.261110844291904 -0.172222078528992 0.5718700367088436 bottom\n", + "-0.2388891557080959 -0.672222078528992 0.80821046556135 bottom\n", + "-0.2388891557080959 -0.17222207852899196 0.80821046556135 bottom\n", + "0.261110844291904 -0.172222078528992 0.80821046556135 bottom\n", + "-0.2388891557080959 -0.672222078528992 0.5718700367088436 bottom\n", + "-0.2388891557080959 -0.17222207852899196 0.5718700367088436 bottom\n", + "0.261110844291904 -0.672222078528992 0.5718700367088436 bottom\n", + "0.261110844291904 -0.672222078528992 0.80821046556135 bottom\n", + "0.11111158158473486 -3.5023622067277174e-07 0.10993116896041677 top\n", + "-0.22222175174859857 -0.33333368356955384 0.10993116896041677 top\n", + "0.44444491491806815 0.3333329830971121 0.38329482801266024 top\n", + "0.111111581584735 -3.5023622077783913e-07 0.38329482801266024 top\n", + "-0.2222217517485984 -0.33333368356955395 0.38329482801266024 top\n", + "0.44444491491806815 0.3333329830971121 0.10993116896041677 top\n", "\n" ] } @@ -476,229 +502,42 @@ }, { "cell_type": "code", - "source": [ - "pos_subs=\"\"\"GaAs\n", - "1.0\n", - "3.509895098013499 -6.584084e-10 2.026439508259945\n", - "1.169965032050413 3.3091606691404545 2.026439508259945\n", - "-1.8622597e-09 -1.3168164e-09 4.052878022970947\n", - "Ga As\n", - "1 1\n", - "Cartesian\n", - "0.0 0.0 0.0\n", - "1.1699675 0.82729 2.02644\n", - "\"\"\"\n", - "\n", - "pos_film=\"\"\"Si2\n", - "1.0\n", - "3.3641499856336465 -2.5027128e-09 1.94229273881412\n", - "1.121382991333525 3.1717517190189715 1.9422927388141193\n", - "-2.5909987e-09 -1.8321133e-09 3.884586486670313\n", - "Si\n", - "2\n", - "Cartesian\n", - "3.92483875 2.77528125 6.7980237500000005\n", - "0.56069125 0.39646875 0.9711462500000001\n", - "\"\"\"\n", - "with open('pos_film','w') as f:\n", - " f.write(pos_film)\n", - "\n", - "with open('pos_subs','w') as f:\n", - " f.write(pos_subs)" - ], + "source": [], "metadata": { - "id": "SD-aFiTF4n_F" + "id": "qf7V_m_lu288" }, - "id": "SD-aFiTF4n_F", + "id": "qf7V_m_lu288", "execution_count": null, "outputs": [] }, { - "cell_type": "code", - "source": [ - "from jarvis.db.jsonutils import dumpjson,loadjson\n", - "from jarvis.db.jsonutils import dumpjson\n", - "import plotly.graph_objects as go\n", - "\n", - "config = {'calculator_method': 'ewald',\n", - " 'disp_intvl': 0.1,\n", - " 'film_file_path': 'pos_film',\n", - " 'substrate_file_path': 'pos_subs',\n", - " 'film_index': '1_1_0',\n", - " 'substrate_index': '1_1_0'}\n", - "\n", - "dumpjson(data=config,filename='config_example2.json')\n", - "!run_intermat.py --config_file config_example2.json >out2\n", - "\n", - "res=loadjson('intermat_results.json')" - ], - "metadata": { - "id": "iiZy09iU4n8d", - "outputId": "926105ff-b0d0-4d76-8212-ba7c2c108aee", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "id": "iiZy09iU4n8d", - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['number']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", - " warnings.warn(\n", - "/usr/local/lib/python3.10/dist-packages/spglib/spglib.py:115: DeprecationWarning: dict interface (SpglibDataset['international']) is deprecated.Use attribute interface ({self.__class__.__name__}.{key}) instead\n", - " warnings.warn(\n", - "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:52: RuntimeWarning: invalid value encountered in double_scalars\n", - " strain_x = (\n", - "/usr/local/lib/python3.10/dist-packages/intermat/generate.py:55: RuntimeWarning: invalid value encountered in double_scalars\n", - " strain_y = (\n", - "100% 100/100 [00:32<00:00, 3.05it/s]\n" - ] - } - ] - }, - { - "cell_type": "code", + "cell_type": "markdown", "source": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt\n", - "plt.contourf(res['wads'],cmap='plasma')\n", - "plt.axis('off')\n" + "## Get Materials Data From JARVIS\n", + "Then, let\"s get the dataset containing 2D materials from JARVIS and wrap it into a pandas dataframe." ], "metadata": { - "id": "Gbk5MPBw7o1z", - "outputId": "24d0fafa-12c1-42aa-b180-ecc9f298cf19", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 424 - } + "collapsed": false, + "id": "f418c51a7f794f9f" }, - "id": "Gbk5MPBw7o1z", - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "(0.0, 9.0, 0.0, 9.0)" - ] - }, - "metadata": {}, - "execution_count": 11 - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] + "id": "f418c51a7f794f9f" }, { "cell_type": "code", - "source": [ - "from jarvis.core.atoms import Atoms\n", - "\n", - "intf = Atoms.from_dict(res['systems'])\n", - "print (intf)" - ], - "metadata": { - "id": "WZ8LRJbK4n6G", - "outputId": "c9535f8e-d0a5-43e4-a219-8820191e2da5", - "colab": { - "base_uri": "https://localhost:8080/" - } - }, - "id": "WZ8LRJbK4n6G", - "execution_count": null, + "execution_count": 19, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "System\n", - "1.0\n", - "-0.0 5.73163 -0.0\n", - "8.10575 -0.0 -0.0\n", - "-0.0 -0.0 -26.34364366645526\n", - "As Ga Si \n", - "12 12 24 \n", - "direct\n", - "0.12500000000000017 0.033333436916792386 0.8511499074085056 bottom\n", - "0.12500000000000017 0.5333333678611532 0.6973034974115482 bottom\n", - "0.12500000000000017 0.033333298805513695 0.5434570874145908 bottom\n", - "0.12500000000000017 0.5333332297498745 0.5434570874145905 bottom\n", - "0.12500000000000017 0.033333298805513695 0.6973034974115482 bottom\n", - "0.12500000000000017 0.5333333678611529 0.8511499074085056 bottom\n", - "0.6249999999999999 -0.21666666666666684 0.6203802924130692 bottom\n", - "0.6249999999999999 0.28333340238897264 0.7742267024100271 bottom\n", - "0.6249999999999999 -0.2166665285553881 0.9280731124069845 bottom\n", - "0.6249999999999999 0.28333340238897264 0.9280731124069845 bottom\n", - "0.6249999999999999 -0.21666666666666684 0.7742267024100271 bottom\n", - "0.6249999999999999 0.2833332642776941 0.6203802924130692 bottom\n", - "0.37499999999999994 0.28333340238897264 0.8511499074085056 bottom\n", - "0.37499999999999994 -0.21666666666666684 0.6973034974115482 bottom\n", - "0.37499999999999994 0.2833332642776941 0.5434570874145908 bottom\n", - "0.37499999999999994 0.7833331952220548 0.5434570874145905 bottom\n", - "0.875 0.033333298805513695 0.7742267024100271 bottom\n", - "0.875 0.5333332297498745 0.6203802924130692 bottom\n", - "0.875 0.033333436916792164 0.9280731124069845 bottom\n", - "0.875 0.5333333678611529 0.7742267024100271 bottom\n", - "0.875 0.033333298805513695 0.6203802924130692 bottom\n", - "0.37499999999999994 -0.21666666666666684 0.8511499074085056 bottom\n", - "0.37499999999999994 0.2833332642776941 0.6973034974115482 bottom\n", - "0.875 0.5333333678611532 0.9280731124069845 bottom\n", - "-0.3750000000000001 0.5416666666666665 0.3010994243760031 top\n", - "-0.3750000000000001 0.0416669207054052 0.4485575215231648 top\n", - "-0.12499999999999999 0.2916662856085588 0.1536413272288415 top\n", - "-0.12499999999999999 -0.20833346035270264 0.3010994243760031 top\n", - "0.12500000000000003 0.2916667936860361 0.2273703758024223 top\n", - "0.12500000000000003 -0.20833346035270264 0.07991227865526063 top\n", - "-0.3750000000000001 0.04166641262792811 0.1536413272288415 top\n", - "0.12500000000000003 -0.20833295227522575 0.374828472949584 top\n", - "0.375 0.04166641262792811 0.07991227865526063 top\n", - "-0.12499999999999999 0.2916667936860361 0.44855752152316475 top\n", - "-0.12499999999999999 -0.20833295227522575 0.44855752152316475 top\n", - "-0.3750000000000001 0.04166692070540543 0.30109942437600307 top\n", - "-0.12499999999999999 -0.20833346035270264 0.1536413272288415 top\n", - "-0.3750000000000001 -0.458332825255856 0.44855752152316475 top\n", - "-0.3750000000000001 -0.4583333333333334 0.1536413272288415 top\n", - "0.375 -0.4583333333333334 0.3748284729495839 top\n", - "0.375 0.04166641262792811 0.2273703758024223 top\n", - "0.375 0.5416661585891899 0.07991227865526063 top\n", - "0.12500000000000003 0.2916667936860363 0.3748284729495839 top\n", - "0.12500000000000003 -0.20833346035270264 0.2273703758024223 top\n", - "0.12500000000000003 0.2916662856085588 0.07991227865526063 top\n", - "0.375 -0.4583333333333334 0.2273703758024223 top\n", - "-0.12499999999999999 0.2916667936860361 0.3010994243760031 top\n", - "0.375 0.0416669207054052 0.3748284729495839 top\n", - "\n" + "Obtaining 2D dataset 1.1k ...\n", + "Reference:https://www.nature.com/articles/s41524-020-00440-1\n", + "Other versions:https://doi.org/10.6084/m9.figshare.6815705\n", + "Loading the zipfile...\n", + "Loading completed.\n" ] } - ] - }, - { - "cell_type": "markdown", - "source": [ - "## Get Materials Data From JARVIS\n", - "Then, let\"s get the dataset containing 2D materials from JARVIS and wrap it into a pandas dataframe." ], - "metadata": { - "collapsed": false, - "id": "f418c51a7f794f9f" - }, - "id": "f418c51a7f794f9f" - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], "source": [ "import pandas as pd\n", "from jarvis.db.figshare import data, get_jid_data\n", @@ -707,7 +546,11 @@ "df = pd.DataFrame(dft_2d)" ], "metadata": { - "id": "b1ee775d1476f884" + "id": "b1ee775d1476f884", + "outputId": "81fbfdf4-f998-49d6-953b-9fbcbfe7c553", + "colab": { + "base_uri": "https://localhost:8080/" + } }, "id": "b1ee775d1476f884" }, @@ -726,8 +569,46 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "mismatch_u,mismatch_v -0.03226692878349979 -0.03226692878349979\n", + "JVASP-670 JVASP-664 Te2Mo MoS2 System\n", + "1.0\n", + "6.37593 -0.0 -0.0\n", + "3.18796 -5.52171 -0.0\n", + "-0.0 -0.0 -25.75734579378708\n", + "Mo S Te \n", + "7 8 6 \n", + "direct\n", + "0.36111136029246144 0.02777693088071573 0.6061329711247329 bottom\n", + "0.5555559999999957 0.11111066666667094 0.3584887699946901 bottom\n", + "0.22222266666666238 -0.2222226666666623 0.3584887699946901 bottom\n", + "-0.11111066666667099 -0.5555559999999956 0.3584887699946901 bottom\n", + "0.36111136029246127 -0.4722230691192842 0.6061329711247329 bottom\n", + "-0.13888863970753865 -0.4722230691192842 0.6061329711247329 bottom\n", + "-0.1388886397075386 0.02777693088071573 0.6061329711247329 bottom\n", + "0.19444431985376934 0.36111153455964207 0.5453107527903425 bottom\n", + "-0.30555568014623086 -0.13888846544035782 0.6669565435968711 bottom\n", + "-0.30555568014623075 0.36111153455964207 0.6669565435968711 bottom\n", + "0.19444431985376934 0.36111153455964207 0.6669565435968711 bottom\n", + "-0.30555568014623086 -0.13888846544035782 0.5453107527903425 bottom\n", + "-0.30555568014623075 0.36111153455964207 0.5453107527903425 top\n", + "0.1944443198537693 -0.13888846544035782 0.5453107527903425 top\n", + "0.1944443198537693 -0.13888846544035782 0.6669565435968711 top\n", + "-0.11111133333333112 0.11111133333333116 0.28813862196335355 top\n", + "-0.4444446666666646 -0.2222220000000021 0.28813862196335355 top\n", + "0.22222200000000225 0.44444466666666443 0.42883891802602647 top\n", + "-0.11111133333333112 0.11111133333333116 0.42883891802602647 top\n", + "-0.4444446666666646 -0.2222220000000021 0.42883891802602647 top\n", + "0.22222200000000225 0.44444466666666443 0.28813862196335355 top\n", + "\n" + ] + } + ], "source": [ "from jarvis.core.atoms import Atoms\n", "from jarvis.analysis.interface.zur import make_interface\n", @@ -752,7 +633,11 @@ "pycharm": { "name": "#%%\n" }, - "id": "1b3e7d016f30b61" + "id": "1b3e7d016f30b61", + "outputId": "9f37a6c4-039c-4449-8075-adaf232b5b13", + "colab": { + "base_uri": "https://localhost:8080/" + } }, "id": "1b3e7d016f30b61" }, @@ -772,7 +657,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "outputs": [], "source": [ "# Using the fractional coordinate Z level of 0.5 to separate top/bottom\n", @@ -780,23 +665,23 @@ "heterostructure_atoms_copy = Atoms.from_dict(heterostructure_atoms.to_dict())\n", "indices_to_remove = []\n", "for index, coord in enumerate(heterostructure_atoms_copy.coords):\n", - " print(coord, index)\n", + " #print(coord, index)\n", " if coord[2] < 0.5:\n", " indices_to_remove.append(index)\n", "for i, ind in enumerate(indices_to_remove):\n", " heterostructure_atoms_copy = heterostructure_atoms_copy.remove_site_by_index(ind - i)\n", - " print(\"removed\", ind, heterostructure_atoms_copy.props)\n", + " #print(\"removed\", ind, heterostructure_atoms_copy.props)\n", "substrate_atoms = Atoms.from_dict(heterostructure_atoms_copy.to_dict())\n", "\n", "heterostructure_atoms_copy = Atoms.from_dict(heterostructure_atoms.to_dict())\n", "indices_to_remove = []\n", "for index, coord in enumerate(heterostructure_atoms_copy.coords):\n", - " print(coord, index)\n", + " #print(coord, index)\n", " if coord[2] > 0.5:\n", " indices_to_remove.append(index)\n", "for i, ind in enumerate(indices_to_remove):\n", " heterostructure_atoms_copy = heterostructure_atoms_copy.remove_site_by_index(ind - i)\n", - " print(\"removed\", ind, heterostructure_atoms_copy.props)\n", + " #print(\"removed\", ind, heterostructure_atoms_copy.props)\n", "film_atoms = Atoms.from_dict(heterostructure_atoms_copy.to_dict())" ], "metadata": { @@ -821,8 +706,371 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 26, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{\n", + " \"_id\": \"\",\n", + " \"name\": \"material\",\n", + " \"exabyteId\": \"\",\n", + " \"hash\": \"\",\n", + " \"formula\": \"Te6Mo7S8\",\n", + " \"unitCellFormula\": \"Te6 Mo7 S8\",\n", + " \"lattice\": {\n", + " \"type\": \"HEX\",\n", + " \"a\": 6.37593,\n", + " \"b\": 6.375921132330606,\n", + " \"c\": 25.75734579378708,\n", + " \"alpha\": 90.0,\n", + " \"beta\": 90.0,\n", + " \"gamma\": 60.000005874789395,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " }\n", + " },\n", + " \"basis\": {\n", + " \"units\": \"crystal\",\n", + " \"elements\": [\n", + " {\n", + " \"id\": 1,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 2,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 3,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 4,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 5,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 6,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 7,\n", + " \"value\": \"Mo\"\n", + " },\n", + " {\n", + " \"id\": 8,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 9,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 10,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 11,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 12,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 13,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 14,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 15,\n", + " \"value\": \"S\"\n", + " },\n", + " {\n", + " \"id\": 16,\n", + " \"value\": \"Te\"\n", + " },\n", + " {\n", + " \"id\": 17,\n", + " \"value\": \"Te\"\n", + " },\n", + " {\n", + " \"id\": 18,\n", + " \"value\": \"Te\"\n", + " },\n", + " {\n", + " \"id\": 19,\n", + " \"value\": \"Te\"\n", + " },\n", + " {\n", + " \"id\": 20,\n", + " \"value\": \"Te\"\n", + " },\n", + " {\n", + " \"id\": 21,\n", + " \"value\": \"Te\"\n", + " }\n", + " ],\n", + " \"coordinates\": [\n", + " {\n", + " \"id\": 1,\n", + " \"value\": [\n", + " 0.36111136029246144,\n", + " 0.02777693088071573,\n", + " 0.6061329711247329\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 2,\n", + " \"value\": [\n", + " 0.5555559999999957,\n", + " 0.11111066666667094,\n", + " 0.3584887699946901\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 3,\n", + " \"value\": [\n", + " 0.22222266666666238,\n", + " -0.2222226666666623,\n", + " 0.3584887699946901\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 4,\n", + " \"value\": [\n", + " -0.11111066666667099,\n", + " -0.5555559999999956,\n", + " 0.3584887699946901\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 5,\n", + " \"value\": [\n", + " 0.36111136029246127,\n", + " -0.4722230691192842,\n", + " 0.6061329711247329\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 6,\n", + " \"value\": [\n", + " -0.13888863970753865,\n", + " -0.4722230691192842,\n", + " 0.6061329711247329\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 7,\n", + " \"value\": [\n", + " -0.1388886397075386,\n", + " 0.02777693088071573,\n", + " 0.6061329711247329\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 8,\n", + " \"value\": [\n", + " 0.19444431985376934,\n", + " 0.36111153455964207,\n", + " 0.5453107527903425\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 9,\n", + " \"value\": [\n", + " -0.30555568014623086,\n", + " -0.13888846544035782,\n", + " 0.6669565435968711\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 10,\n", + " \"value\": [\n", + " -0.30555568014623075,\n", + " 0.36111153455964207,\n", + " 0.6669565435968711\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 11,\n", + " \"value\": [\n", + " 0.19444431985376934,\n", + " 0.36111153455964207,\n", + " 0.6669565435968711\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 12,\n", + " \"value\": [\n", + " -0.30555568014623086,\n", + " -0.13888846544035782,\n", + " 0.5453107527903425\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 13,\n", + " \"value\": [\n", + " -0.30555568014623075,\n", + " 0.36111153455964207,\n", + " 0.5453107527903425\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 14,\n", + " \"value\": [\n", + " 0.1944443198537693,\n", + " -0.13888846544035782,\n", + " 0.5453107527903425\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 15,\n", + " \"value\": [\n", + " 0.1944443198537693,\n", + " -0.13888846544035782,\n", + " 0.6669565435968711\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 16,\n", + " \"value\": [\n", + " -0.11111133333333112,\n", + " 0.11111133333333116,\n", + " 0.28813862196335355\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 17,\n", + " \"value\": [\n", + " -0.4444446666666646,\n", + " -0.2222220000000021,\n", + " 0.28813862196335355\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 18,\n", + " \"value\": [\n", + " 0.22222200000000225,\n", + " 0.44444466666666443,\n", + " 0.42883891802602647\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 19,\n", + " \"value\": [\n", + " -0.11111133333333112,\n", + " 0.11111133333333116,\n", + " 0.42883891802602647\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 20,\n", + " \"value\": [\n", + " -0.4444446666666646,\n", + " -0.2222220000000021,\n", + " 0.42883891802602647\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 21,\n", + " \"value\": [\n", + " 0.22222200000000225,\n", + " 0.44444466666666443,\n", + " 0.28813862196335355\n", + " ]\n", + " }\n", + " ]\n", + " },\n", + " \"derivedProperties\": [\n", + " {\n", + " \"name\": \"density\",\n", + " \"units\": \"g/cm^3\",\n", + " \"value\": 3.1014682698917806\n", + " },\n", + " {\n", + " \"name\": \"elemental_ratio\",\n", + " \"value\": 0.3333333333333333,\n", + " \"element\": \"Mo\"\n", + " },\n", + " {\n", + " \"name\": \"elemental_ratio\",\n", + " \"value\": 0.38095238095238093,\n", + " \"element\": \"S\"\n", + " },\n", + " {\n", + " \"name\": \"elemental_ratio\",\n", + " \"value\": 0.2857142857142857,\n", + " \"element\": \"Te\"\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 3,\n", + " \"degree\": 0\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 0.5812645531301763,\n", + " \"degree\": 2\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 0.4872036450876167,\n", + " \"degree\": 3\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 0.4260777976120271,\n", + " \"degree\": 5\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 0.4046691319025099,\n", + " \"degree\": 7\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 0.39165888314483055,\n", + " \"degree\": 10\n", + " },\n", + " {\n", + " \"spaceGroupSymbol\": \"P1\",\n", + " \"tolerance\": {\n", + " \"value\": 0.3,\n", + " \"units\": \"angstrom\"\n", + " },\n", + " \"name\": \"symmetry\"\n", + " },\n", + " {\n", + " \"name\": \"volume\",\n", + " \"units\": \"angstrom^3\",\n", + " \"value\": 906.8140546214759\n", + " }\n", + " ],\n", + " \"creator\": {\n", + " \"_id\": \"\",\n", + " \"cls\": \"User\",\n", + " \"slug\": \"\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"\",\n", + " \"cls\": \"Account\",\n", + " \"slug\": \"\"\n", + " },\n", + " \"schemaVersion\": \"0.2.0\"\n", + "}\n" + ] + } + ], "source": [ "import json\n", "from express import ExPrESS\n", @@ -848,7 +1096,11 @@ "print(json.dumps(material_heterostructure, indent=4))" ], "metadata": { - "id": "c41fb68c6d25fe48" + "id": "c41fb68c6d25fe48", + "outputId": "4f3273d1-c47d-40f0-e59e-fd15a4ba7e8b", + "colab": { + "base_uri": "https://localhost:8080/" + } }, "id": "c41fb68c6d25fe48" }, @@ -866,8 +1118,23 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 27, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Traceback (most recent call last):\n", + " File \"/usr/local/bin/notebook-path\", line 8, in \n", + " sys.exit(print_notebook_path())\n", + " File \"/usr/local/lib/python3.10/dist-packages/utils/notebook.py\", line 46, in print_notebook_path\n", + " print(get_notebook_info()[\"notebook_path\"])\n", + " File \"/usr/local/lib/python3.10/dist-packages/utils/notebook.py\", line 22, in get_notebook_info\n", + " parsed = re.findall(\"(.*)/blob/(.*)/examples/(.*)\", path)[0]\n", + "IndexError: list index out of range\n" + ] + } + ], "source": [ "# @title Authorization Form\n", "ACCOUNT_ID = \"\" # @param {type:\"string\"}\n", @@ -894,7 +1161,11 @@ "pycharm": { "name": "#%%\n" }, - "id": "5b2ae68afcacc16" + "id": "5b2ae68afcacc16", + "outputId": "22071750-5b24-4880-9a44-af79ef0bb090", + "colab": { + "base_uri": "https://localhost:8080/" + } }, "id": "5b2ae68afcacc16" }, @@ -914,7 +1185,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "outputs": [], "source": [ "from utils.settings import ENDPOINT_ARGS, ACCOUNT_ID\n", @@ -957,8 +1228,30 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 29, + "outputs": [ + { + "output_type": "error", + "ename": "InvalidHeader", + "evalue": "Invalid leading whitespace, reserved character(s), or return character(s) in header value: '\\xa07qzeKmx8jH8M73whg'", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mInvalidHeader\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mmaterial_heterostructure\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mf\"Heterostructure - {jid1} with {jid2}\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmaterial_heterostructure_in_the_platform\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmaterial_endpoints\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmaterial_heterostructure\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mmaterial_film\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mf\"Film - {jid1}\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mmaterial_film_in_the_platform\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmaterial_endpoints\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmaterial_film\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/exabyte_api_client/endpoints/entity.py\u001b[0m in \u001b[0;36mcreate\u001b[0;34m(self, config)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mnew\u001b[0m \u001b[0mentity\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 88\u001b[0m \"\"\"\n\u001b[0;32m---> 89\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"PUT\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"/\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"create\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdumps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mid_\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/exabyte_api_client/endpoints/__init__.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, endpoint_path, params, data, headers)\u001b[0m\n\u001b[1;32m 36\u001b[0m \"\"\"\n\u001b[1;32m 37\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mendpoint_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjson\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"status\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;34m\"success\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/exabyte_api_client/utils/http.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, endpoint_path, params, data, headers)\u001b[0m\n\u001b[1;32m 145\u001b[0m \"\"\"\n\u001b[1;32m 146\u001b[0m \u001b[0murl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murllib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murljoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpreamble\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mendpoint_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 147\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mConnection\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/exabyte_api_client/utils/http.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mURL\u001b[0m \u001b[0mparameters\u001b[0m \u001b[0mto\u001b[0m \u001b[0mappend\u001b[0m \u001b[0mto\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mURL\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \"\"\"\n\u001b[0;32m---> 34\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 35\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_for_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 573\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 574\u001b[0m )\n\u001b[0;32m--> 575\u001b[0;31m \u001b[0mprep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_request\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 576\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 577\u001b[0m \u001b[0mproxies\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mproxies\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/requests/sessions.py\u001b[0m in \u001b[0;36mprepare_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 482\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 483\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPreparedRequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 484\u001b[0;31m p.prepare(\n\u001b[0m\u001b[1;32m 485\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 486\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/requests/models.py\u001b[0m in \u001b[0;36mprepare\u001b[0;34m(self, method, url, headers, files, data, params, auth, cookies, hooks, json)\u001b[0m\n\u001b[1;32m 366\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 368\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_headers\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 369\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_cookies\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcookies\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 370\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprepare_body\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfiles\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/requests/models.py\u001b[0m in \u001b[0;36mprepare_headers\u001b[0;34m(self, headers)\u001b[0m\n\u001b[1;32m 488\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mheader\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 489\u001b[0m \u001b[0;31m# Raise exception on invalid header value.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 490\u001b[0;31m \u001b[0mcheck_header_validity\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheader\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 491\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mheader\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mto_native_string\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/requests/utils.py\u001b[0m in \u001b[0;36mcheck_header_validity\u001b[0;34m(header)\u001b[0m\n\u001b[1;32m 1040\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mheader\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1041\u001b[0m \u001b[0m_validate_header_part\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1042\u001b[0;31m \u001b[0m_validate_header_part\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1043\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1044\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/requests/utils.py\u001b[0m in \u001b[0;36m_validate_header_part\u001b[0;34m(header, header_part, header_validator_index)\u001b[0m\n\u001b[1;32m 1056\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mvalidator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheader_part\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1057\u001b[0m \u001b[0mheader_kind\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"name\"\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mheader_validator_index\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"value\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1058\u001b[0;31m raise InvalidHeader(\n\u001b[0m\u001b[1;32m 1059\u001b[0m \u001b[0;34mf\"Invalid leading whitespace, reserved character(s), or return \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1060\u001b[0m \u001b[0;34mf\"character(s) in header {header_kind}: {header_part!r}\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mInvalidHeader\u001b[0m: Invalid leading whitespace, reserved character(s), or return character(s) in header value: '\\xa07qzeKmx8jH8M73whg'" + ] + } + ], "source": [ "material_heterostructure[\"name\"] = f\"Heterostructure - {jid1} with {jid2}\"\n", "material_heterostructure_in_the_platform = material_endpoints.create(material_heterostructure)\n", @@ -973,7 +1266,12 @@ "pycharm": { "name": "#%%\n" }, - "id": "84b4ae0786b716cc" + "id": "84b4ae0786b716cc", + "outputId": "7edc8e07-da2b-429c-cba5-8d18f0f6d942", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + } }, "id": "84b4ae0786b716cc" },