diff --git a/.gitignore b/.gitignore index 7f305ad4..f6a262d5 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,4 @@ venv.bak/ # Miscellaneous examples/assets/Molecules_Dataset_Collection +examples/job/pw_scf.* diff --git a/README.md b/README.md index 9ef11ba0..d6234487 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Exabyte API Examples +# Mat3ra API Examples ## Contents of this Repository @@ -6,14 +6,15 @@ Below, we list the contents of this repository, in roughly the order that a user | Folder | Notebook | Description | | ------------------|-----------------------------------------| ----------- | -| [Examples/System](examples/system/) | [Get Authentication Params](examples/system/get_authentication_params.ipynb) | Demonstrates how to programatically find your user ID and access token, which is to [authenticate](https://docs.mat3ra.com/rest-api/authentication/) for many portions of the Exabyte API. -| [Examples/Workflow](examples/workflow/) | [Get Workflows](examples/workflow/get_workflows.ipynb) | Walks through how to [query](https://docs.mat3ra.com/rest-api/query-structure/) the Exabyte API to programatically search for workflows. In this example, we search for workflows that calculate the total energy of a material. +| [Examples/System](examples/system/) | [Get Authentication Params](examples/system/get_authentication_params.ipynb) | Demonstrates how to programatically find your user ID and access token, which is to [authenticate](https://docs.mat3ra.com/rest-api/authentication/) for many portions of the Mat3ra API. +| [Examples/Workflow](examples/workflow/) | [Get Workflows](examples/workflow/get_workflows.ipynb) | Walks through how to [query](https://docs.mat3ra.com/rest-api/query-structure/) the Mat3ra API to programatically search for workflows. In this example, we search for workflows that calculate the total energy of a material. | [Examples/Material](examples/material/) | [Get Materials by Formula](examples/material/get_materials_by_formula.ipynb) | Shows how [queries](https://docs.mat3ra.com/rest-api/query-structure/) can be made to search for materials stored on your account by their formula. In this example, we search for a system containing Si. | [Examples/Material](examples/material/) | [Create Material](examples/material/create_material.ipynb) | Gives an overview of how materials can be generated in [JSON format](https://docs.mat3ra.com/materials/data/) and uploaded to your user account. In this example, we create an FCC Si crystal and upload it. | [Examples/Material](examples/material/) | [Import Materials from Materials Project](examples/material/import_materials_from_materialsproject.ipynb) | Demonstrates how materials can be imported from [Materials Project](https://materialsproject.org/about), if their Materials Project ID is known. In this example, we import monoclinic and hexagonal SiGe cells. | [Examples/Material](examples/material/) | [Import Materials from Poscar](examples/material/import_materials_from_poscar.ipynb) | Provides an example of how materials can be imported directly from Poscar files (a common chemical file format best-known [for its use in VASP](https://www.vasp.at/wiki/index.php/Input)). In this example, we import the unit cell of SiGe. -| [Examples/Job](examples/job/) | [Create and Submit Job](examples/job/create_and_submit_job.ipynb) | Shows how to use the Exabyte API to [create jobs](https://docs.mat3ra.com/jobs/data/) and run them on our cluster. In this example, we run a DFT calculation to get the total energy of an FCC Si unit cell using Quantum Espresso. -| [Examples/Job](examples/job/) | [Get File from Job](examples/job/get-file-from-job.ipynb) | Guides you through using the Exabyte API to query for a list of files produced by a job, describes the metadata assigned to each file, and ends by demonstrating how to download any remote file generated by a job to the local disk. +| [Examples/Material](examples/material/) | [Interoperability between Mat3ra and Materials Project](examples/material/api_interoperability_showcase.ipynb) | In this notebook, we showcase a major advantage of APIs: interoperability. We begin by performing a query using the [Materials Project](https://materialsproject.org) API for all systems containing Iron and Oxygen. We then filter our results (for demonstraiton purposes, we keep only the first 10 materials found). Finally, we upload our results to the Mat3ra platform, where further calculations could be performed to characterize these materials. +| [Examples/Job](examples/job/) | [Create and Submit Job](examples/job/create_and_submit_job.ipynb) | Shows how to use the Mat3ra API to [create jobs](https://docs.mat3ra.com/jobs/data/) and run them on our cluster. In this example, we run a DFT calculation to get the total energy of an FCC Si unit cell using Quantum Espresso. +| [Examples/Job](examples/job/) | [Get File from Job](examples/job/get-file-from-job.ipynb) | Guides you through using the Mat3ra API to query for a list of files produced by a job, describes the metadata assigned to each file, and ends by demonstrating how to download any remote file generated by a job to the local disk. | [Examples/Job](examples/job/) | [Run Simulations and Extract Properties](examples/job/run-simulations-and-extract-properties.ipynb) | Leads you through the process of copying a [bank workflow](https://docs.mat3ra.com/workflows/bank/) to your account and using it to automatically calculate the [properties](https://docs.mat3ra.com/properties/overview/) of multiple materials. In this example, we determine the [band gap](https://docs.mat3ra.com/properties-directory/non-scalar/band-gaps/) of Si and Ge. | [Examples/Job](examples/job/) | [ML - Train Model Predict Properties](examples/job/ml-train-model-predict-properties.ipynb) | Walks you through automated dataset generation and the training/prediction of material properties using [machine learning](https://docs.mat3ra.com/software-directory/overview/#machine-learning). In this example, we calculate the band gaps of Si and SiGe, and using various materials properties as descriptors, train a model to predict their band gaps. Finally, we use this trained model to predict the band gap of Ge. @@ -50,6 +51,7 @@ Follow the steps below in order to setup and view the Jupyter notebooks: virtualenv .env source .env/bin/activate pip install --no-deps -r requirements.txt + pip install --no-deps -e . ``` 4. Run Jupyter and open a notebook in a browser. In order for the post-save hook feature to work properly, one must launch their Jupyter Notebook environment in the folder that contains the file `config.py`, which is the `examples` folder shown below: @@ -63,7 +65,7 @@ Follow the steps below in order to setup and view the Jupyter notebooks: In order to run or edit the examples: -1. Assert an existing Exabyte.io account. Examples require an account to run. New users can register [here](https://platform.mat3ra.com/register) to obtain one. +1. Assert an existing Mat3ra.com account. Examples require an account to run. New users can register [here](https://platform.mat3ra.com/register) to obtain one. 2. Open [settings](examples/settings.json) and adjust it to provide the API authentication parameters. See the [corresponding example](examples/system/get_authentication_params.ipynb) to learn how to obtain the authentication parameters. @@ -90,7 +92,7 @@ If you would like to add new examples or adjust existing ones, please consider t ## Links -1. Exabyte.io RESTful API, description in the online documentation: [link](https://docs.mat3ra.com/rest-api/overview/) +1. Mat3ra.com RESTful API, description in the online documentation: [link](https://docs.mat3ra.com/rest-api/overview/) 2. Jupyter.org, official website: [link](https://jupyter.org/) 3. Git Large File Storage, official website: [link](https://git-lfs.github.com/) 4. GitHub Standard Fork & Pull Request Workflow, online explanation: [link](https://gist.github.com/Chaser324/ce0505fbed06b947d962) diff --git a/examples/__init__.py b/examples/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/job/create_and_submit_job.ipynb b/examples/job/create_and_submit_job.ipynb index 905bbc02..db0fb532 100644 --- a/examples/job/create_and_submit_job.ipynb +++ b/examples/job/create_and_submit_job.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "4iM5tpoN3sR3" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "mHaR0BOJ3sR5" @@ -19,10 +21,11 @@ "source": [ "# Overview\n", "\n", - "This example demonstrates how to create and submit a job via [Job](https://docs.exabyte.io/api/Job/put_jobs_create) endpoints." + "This example demonstrates how to create and submit a job via [Job](https://docs.mat3ra.com/api/Job/put_jobs_create) endpoints." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "i-kHKlAM3sR5" @@ -34,13 +37,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -51,47 +54,62 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:34:29.145070Z", + "iopub.status.busy": "2023-06-21T01:34:29.144039Z", + "iopub.status.idle": "2023-06-21T01:34:29.146795Z", + "shell.execute_reply": "2023-06-21T01:34:29.147519Z" + }, "id": "BCOL6ona3sR6", "outputId": "e2ee53a4-5013-4730-c074-54ba11b381fd" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'exabyte-api-examples'...\n", - "remote: Enumerating objects: 2448, done.\u001b[K\n", - "remote: Counting objects: 100% (414/414), done.\u001b[K\n", - "remote: Compressing objects: 100% (197/197), done.\u001b[K\n", - "remote: Total 2448 (delta 320), reused 299 (delta 217), pack-reused 2034\u001b[K\n", - "Receiving objects: 100% (2448/2448), 34.85 MiB | 35.72 MiB/s, done.\n", - "Resolving deltas: 100% (1382/1382), done.\n" - ] - } - ], + "outputs": [], "source": [ "#@title Authorization Form\n", "ACCOUNT_ID = \"ACCOUNT_ID\" #@param {type:\"string\"}\n", "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:29.153958Z", + "iopub.status.busy": "2023-06-21T01:34:29.152493Z", + "iopub.status.idle": "2023-06-21T01:34:29.250442Z", + "shell.execute_reply": "2023-06-21T01:34:29.251000Z" + }, "id": "QRLd1WW23sR6" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, ACCOUNT_ID\n", - "from utils.generic import display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID\n", + "from examples.utils.generic import display_JSON\n", "\n", "from exabyte_api_client.endpoints.jobs import JobEndpoints\n", "from exabyte_api_client.endpoints.materials import MaterialEndpoints\n", @@ -99,6 +117,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "zjK-3ew_3sR7" @@ -111,6 +130,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:29.257128Z", + "iopub.status.busy": "2023-06-21T01:34:29.256313Z", + "iopub.status.idle": "2023-06-21T01:34:29.258817Z", + "shell.execute_reply": "2023-06-21T01:34:29.258223Z" + }, "id": "IEPURdwU3sR7" }, "outputs": [], @@ -121,6 +146,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "21aAFcwp3sR8" @@ -133,6 +159,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:29.263271Z", + "iopub.status.busy": "2023-06-21T01:34:29.262475Z", + "iopub.status.idle": "2023-06-21T01:34:29.264713Z", + "shell.execute_reply": "2023-06-21T01:34:29.265250Z" + }, "id": "lYUKdszw3sR8" }, "outputs": [], @@ -141,6 +173,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "efnIafH13sR9" @@ -155,6 +188,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:29.271853Z", + "iopub.status.busy": "2023-06-21T01:34:29.270403Z", + "iopub.status.idle": "2023-06-21T01:34:30.694705Z", + "shell.execute_reply": "2023-06-21T01:34:30.695286Z" + }, "id": "qGTJOZDa3sR9" }, "outputs": [], @@ -168,6 +207,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "IL8DTcqB3sR9" @@ -182,6 +222,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:30.700446Z", + "iopub.status.busy": "2023-06-21T01:34:30.699624Z", + "iopub.status.idle": "2023-06-21T01:34:30.701534Z", + "shell.execute_reply": "2023-06-21T01:34:30.702006Z" + }, "id": "BHQnJpvR3sR-" }, "outputs": [], @@ -201,6 +247,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "L_pFN5n33sR-" @@ -213,6 +260,12 @@ "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:30.707015Z", + "iopub.status.busy": "2023-06-21T01:34:30.706276Z", + "iopub.status.idle": "2023-06-21T01:34:33.387986Z", + "shell.execute_reply": "2023-06-21T01:34:33.388992Z" + }, "id": "xaSRHY4j3sR-" }, "outputs": [], @@ -222,6 +275,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "1dkTzmQn3sR-" @@ -239,6 +293,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:34:33.394825Z", + "iopub.status.busy": "2023-06-21T01:34:33.393790Z", + "iopub.status.idle": "2023-06-21T01:34:34.077525Z", + "shell.execute_reply": "2023-06-21T01:34:34.078311Z" + }, "id": "dJbjoBoJ3sR_", "outputId": "5f2ee6e2-edc1-450c-9eb1-4a29a83a12fb" }, @@ -248,11 +308,11 @@ "output_type": "stream", "text": [ "{\n", - " \"_id\": \"93TZ4APKc9XKhiDgS\",\n", + " \"_id\": \"neBrw59Lr36QXt3kq\",\n", " \"name\": \"TEST JOB\",\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"compute\": {\n", @@ -263,22 +323,29 @@ " \"notify\": \"n\",\n", " \"cluster\": {\n", " \"fqdn\": \"master-production-20160630-cluster-001.exabyte.io\",\n", - " \"jid\": \"80455.master-production-20160630-cluster-001.exabyte.io\"\n", + " \"jid\": \"90931.master-production-20160630-cluster-001.exabyte.io\"\n", " },\n", " \"timeLimitType\": \"per single attempt\",\n", - " \"arguments\": {}\n", + " \"isRestartable\": true,\n", + " \"arguments\": {\n", + " \"nimage\": 1,\n", + " \"npools\": 1,\n", + " \"nband\": 1,\n", + " \"ntg\": 1,\n", + " \"ndiag\": 1\n", + " }\n", " },\n", " \"_project\": {\n", - " \"_id\": \"8kaucWfLQSLyKbnCK\",\n", - " \"slug\": \"bsmith-default\",\n", + " \"_id\": \"dT2hhdDoyqhripAaW\",\n", + " \"slug\": \"mrakitin1-default\",\n", " \"cls\": \"Project\"\n", " },\n", " \"workflow\": {\n", - " \"_id\": \"759db973ac0d17d1d619d33f\",\n", + " \"_id\": \"gnt78LeBHH4QCgxiw\",\n", " \"name\": \"Total Energy\",\n", " \"subworkflows\": [\n", " {\n", - " \"_id\": \"88720c95261b067a17488b79\",\n", + " \"_id\": \"0c20976ea2206f598b78d761\",\n", " \"name\": \"Total Energy\",\n", " \"application\": {\n", " \"_id\": \"XXNZ9pqkerTJtfkwk\",\n", @@ -287,11 +354,19 @@ " \"build\": \"Default\",\n", " \"isDefault\": true,\n", " \"summary\": \"Quantum Espresso\",\n", - " \"updatedAt\": \"2021-04-16T22:26:57.811Z\",\n", - " \"shortName\": \"qe\"\n", + " \"updatedAt\": \"2023-05-26T16:56:57.071Z\",\n", + " \"shortName\": \"qe\",\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"updatedBy\": \"0\"\n", " },\n", " \"properties\": [\n", - " null\n", + " \"total_energy\",\n", + " \"total_energy_contributions\",\n", + " \"pressure\",\n", + " \"fermi_energy\",\n", + " \"atomic_forces\",\n", + " \"total_force\",\n", + " \"stress_tensor\"\n", " ],\n", " \"model\": {\n", " \"type\": \"dft\",\n", @@ -303,24 +378,23 @@ " \"searchText\": \"\",\n", " \"pseudo\": [\n", " {\n", - " \"_id\": \"5670a1c89abea1170bc8cfae\",\n", - " \"textHeading\": \"0 Version Number\\n Si Element\\n US Ultrasoft pseudopotential\\n T Nonlinear Core Correction\\nSLA PW PBE PBE PBE Exchange-Correlation functional\\n 4.00000000000 Z valence\\n -9.19868380872 Total energy\\n 0.00000 0.00000 Suggested cutoff for wfc and rho\\n 2 Max angular momentum component\\n 899 Number of points in mesh\\n 2 6 Number of Wavefunctions, Number of Projectors\\n Wavefunctions nl l occ\\n 3S 0 2.00\\n 3P 1 2.00\",\n", + " \"element\": \"Si\",\n", + " \"hash\": \"9d3353ad597f4669d598900a4a25d674\",\n", + " \"filename\": \"si_pbe_gbrv_1.0.upf\",\n", + " \"path\": \"/export/share/pseudo/si/gga/pbe/gbrv/1.0/us/si_pbe_gbrv_1.0.upf\",\n", " \"apps\": [\n", " \"espresso\"\n", " ],\n", - " \"element\": \"Si\",\n", - " \"source\": \"gbrv\",\n", - " \"version\": \"1.0\",\n", - " \"path\": \"/export/share/pseudo/si/gga/pbe/gbrv/1.0/us/si_pbe_gbrv_1.0.upf\",\n", - " \"type\": \"us\",\n", " \"exchangeCorrelation\": {\n", - " \"approximation\": \"gga\",\n", - " \"functional\": \"pbe\"\n", + " \"functional\": \"pbe\",\n", + " \"approximation\": \"gga\"\n", " },\n", - " \"filename\": \"si_pbe_gbrv_1.0.upf\",\n", - " \"schemaVersion\": \"0.2.0\",\n", - " \"inSet\": [],\n", - " \"tags\": []\n", + " \"name\": \"pseudopotential\",\n", + " \"source\": \"gbrv\",\n", + " \"type\": \"us\",\n", + " \"version\": \"1.0\",\n", + " \"schemaVersion\": \"2022.8.16\",\n", + " \"isDefault\": false\n", " }\n", " ]\n", " }\n", @@ -367,7 +441,7 @@ " \"name\": \"convergence_electronic\"\n", " }\n", " ],\n", - " \"flowchartId\": \"3cdb01d7e21b28f25d6749bd\",\n", + " \"flowchartId\": \"c1a43599-6d18-4653-b1b0-91fbe224b782\",\n", " \"preProcessors\": [],\n", " \"postProcessors\": [],\n", " \"application\": {\n", @@ -377,17 +451,22 @@ " \"build\": \"Default\",\n", " \"isDefault\": true,\n", " \"summary\": \"Quantum Espresso\",\n", - " \"updatedAt\": \"2021-04-16T22:26:57.811Z\",\n", - " \"shortName\": \"qe\"\n", + " \"updatedAt\": \"2023-05-26T16:56:57.071Z\",\n", + " \"shortName\": \"qe\",\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"updatedBy\": \"0\"\n", " },\n", " \"executable\": {\n", - " \"_id\": \"YoysB5wYKWWBhbF8s\",\n", + " \"isDefault\": true,\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"postProcessors\": [\n", + " \"remove_non_zero_weight_kpoints\"\n", + " ],\n", " \"monitors\": [\n", " \"standard_output\",\n", " \"convergence_ionic\",\n", " \"convergence_electronic\"\n", " ],\n", - " \"name\": \"pw.x\",\n", " \"results\": [\n", " \"atomic_forces\",\n", " \"band_gaps\",\n", @@ -405,31 +484,13 @@ " \"potential_profile\",\n", " \"charge_density_profile\"\n", " ],\n", - " \"isDefault\": true,\n", - " \"postProcessors\": [\n", - " \"remove_non_zero_weight_kpoints\"\n", - " ],\n", - " \"applicationId\": [\n", - " \"meE8WJ9Xci649i76e\",\n", - " \"XXNZ9pqkerTJtfkwk\",\n", - " \"xqepjmWk7MfsNwPp5\",\n", - " \"a2skXBfaexWa5r2Fd\"\n", - " ],\n", - " \"createdAt\": \"2018-03-14T18:39:55.805Z\",\n", - " \"updatedAt\": \"2021-07-07T23:27:41.365Z\",\n", - " \"schemaVersion\": \"0.2.0\",\n", - " \"tags\": [],\n", - " \"inSet\": []\n", + " \"name\": \"pw.x\"\n", " },\n", " \"flavor\": {\n", - " \"_id\": \"Q8zRDZ2MNPzQbuxAL\",\n", - " \"name\": \"pw_scf\",\n", - " \"executableId\": \"YoysB5wYKWWBhbF8s\",\n", " \"isDefault\": true,\n", " \"input\": [\n", " {\n", - " \"name\": \"pw_scf.in\",\n", - " \"templateId\": \"rXQNWpqq2eYZZDbNc\"\n", + " \"name\": \"pw_scf.in\"\n", " }\n", " ],\n", " \"results\": [\n", @@ -445,20 +506,46 @@ " \"standard_output\",\n", " \"convergence_electronic\"\n", " ],\n", - " \"schemaVersion\": \"0.2.0\",\n", - " \"tags\": [],\n", - " \"updatedAt\": \"2021-07-07T23:27:41.373Z\",\n", - " \"inSet\": []\n", + " \"applicationName\": \"espresso\",\n", + " \"executableName\": \"pw.x\",\n", + " \"name\": \"pw_scf\",\n", + " \"executable\": {\n", + " \"isDefault\": true,\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"postProcessors\": [\n", + " \"remove_non_zero_weight_kpoints\"\n", + " ],\n", + " \"monitors\": [\n", + " \"standard_output\",\n", + " \"convergence_ionic\",\n", + " \"convergence_electronic\"\n", + " ],\n", + " \"results\": [\n", + " \"atomic_forces\",\n", + " \"band_gaps\",\n", + " \"density_of_states\",\n", + " \"fermi_energy\",\n", + " \"pressure\",\n", + " \"stress_tensor\",\n", + " \"total_energy\",\n", + " \"total_energy_contributions\",\n", + " \"total_force\",\n", + " \"final_structure\",\n", + " \"magnetic_moments\",\n", + " \"reaction_energy_barrier\",\n", + " \"reaction_energy_profile\",\n", + " \"potential_profile\",\n", + " \"charge_density_profile\"\n", + " ],\n", + " \"name\": \"pw.x\"\n", + " }\n", " },\n", " \"status\": \"idle\",\n", " \"statusTrack\": [],\n", " \"input\": [\n", " {\n", - " \"_id\": \"rXQNWpqq2eYZZDbNc\",\n", - " \"applicationName\": \"espresso\",\n", - " \"executableName\": \"pw.x\",\n", + " \"content\": \"{% if subworkflowContext.MATERIAL_INDEX %}\\n{%- set input = input.perMaterial[subworkflowContext.MATERIAL_INDEX] -%}\\n{% endif -%}\\n&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = '{{ input.RESTART_MODE }}'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n wfcdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n prefix = '__prefix__'\\n pseudo_dir = {% raw %}'{{ JOB_WORK_DIR }}/pseudo'{% endraw %}\\n/\\n&SYSTEM\\n ibrav = {{ input.IBRAV }}\\n nat = {{ input.NAT }}\\n ntyp = {{ input.NTYP }}\\n ecutwfc = {{ cutoffs.wavefunction }}\\n ecutrho = {{ cutoffs.density }}\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\n{{ input.ATOMIC_SPECIES }}\\nATOMIC_POSITIONS crystal\\n{{ input.ATOMIC_POSITIONS }}\\nCELL_PARAMETERS angstrom\\n{{ input.CELL_PARAMETERS }}\\nK_POINTS automatic\\n{% for d in kgrid.dimensions %}{{d}} {% endfor %}{% for s in kgrid.shifts %}{{s}} {% endfor %}\",\n", " \"name\": \"pw_scf.in\",\n", - " \"content\": \"&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = '{{ input.RESTART_MODE }}'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n wfcdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n prefix = '__prefix__'\\n pseudo_dir = {% raw %}'{{ JOB_WORK_DIR }}/pseudo'{% endraw %}\\n/\\n&SYSTEM\\n ibrav = {{ input.IBRAV }}\\n nat = {{ input.NAT }}\\n ntyp = {{ input.NTYP }}\\n ecutwfc = {{ cutoffs.wavefunction }}\\n ecutrho = {{ cutoffs.density }}\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\n{{ input.ATOMIC_SPECIES }}\\nATOMIC_POSITIONS crystal\\n{{ input.ATOMIC_POSITIONS }}\\nCELL_PARAMETERS angstrom\\n{{ input.CELL_PARAMETERS }}\\nK_POINTS automatic\\n{% for d in kgrid.dimensions %}{{d}} {% endfor %}{% for s in kgrid.shifts %}{{s}} {% endfor %}\",\n", " \"contextProviders\": [\n", " {\n", " \"name\": \"KGridFormDataManager\"\n", @@ -470,28 +557,37 @@ " \"name\": \"PlanewaveCutoffDataManager\"\n", " }\n", " ],\n", - " \"updatedAt\": \"2021-04-16T22:26:56.645Z\",\n", - " \"rendered\": \"&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = 'from_scratch'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = '{{ JOB_WORK_DIR }}/outdir'\\n wfcdir = '{{ JOB_WORK_DIR }}/outdir'\\n prefix = '__prefix__'\\n pseudo_dir = '{{ JOB_WORK_DIR }}/pseudo'\\n/\\n&SYSTEM\\n ibrav = 0\\n nat = 2\\n ntyp = 1\\n ecutwfc = 40\\n ecutrho = 200\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\nSi 28.0855 si_pbe_gbrv_1.0.upf\\nATOMIC_POSITIONS crystal\\nSi 0.000000000 0.000000000 0.000000000 \\nSi 0.250000000 0.250000000 0.250000000 \\nCELL_PARAMETERS angstrom\\n3.348920236 0.000000000 1.933500000\\n1.116307420 3.157392040 1.933500000\\n0.000000000 0.000000000 3.867000000\\nK_POINTS automatic\\n10 10 10 0 0 0 \"\n", + " \"applicationName\": \"espresso\",\n", + " \"executableName\": \"pw.x\",\n", + " \"updatedAt\": \"2023-05-26T16:56:54.663Z\",\n", + " \"updatedBy\": \"0\",\n", + " \"rendered\": \"&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = 'from_scratch'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = '{{ JOB_WORK_DIR }}/outdir'\\n wfcdir = '{{ JOB_WORK_DIR }}/outdir'\\n prefix = '__prefix__'\\n pseudo_dir = '{{ JOB_WORK_DIR }}/pseudo'\\n/\\n&SYSTEM\\n ibrav = 0\\n nat = 2\\n ntyp = 1\\n ecutwfc = 40\\n ecutrho = 200\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\nSi 28.0855 si_pbe_gbrv_1.0.upf\\nATOMIC_POSITIONS crystal\\nSi 0.000000000 0.000000000 0.000000000 \\nSi 0.250000000 0.250000000 0.250000000 \\nCELL_PARAMETERS angstrom\\n3.348920236 0.000000000 1.933500000\\n1.116307420 3.157392040 1.933500000\\n0.000000000 0.000000000 3.867000000\\nK_POINTS automatic\\n2 2 2 0 0 0 \"\n", " }\n", " ],\n", - " \"context\": {}\n", + " \"context\": {\n", + " \"subworkflowContext\": {}\n", + " }\n", " }\n", - " ]\n", + " ],\n", + " \"compute\": null,\n", + " \"isDraft\": false\n", " }\n", " ],\n", " \"units\": [\n", " {\n", - " \"type\": \"subworkflow\",\n", - " \"_id\": \"88720c95261b067a17488b79\",\n", " \"name\": \"Total Energy\",\n", + " \"type\": \"subworkflow\",\n", + " \"_id\": \"0c20976ea2206f598b78d761\",\n", + " \"flowchartId\": \"eb4e069ed1314c1981331aff\",\n", " \"status\": \"idle\",\n", " \"statusTrack\": [],\n", - " \"flowchartId\": \"af0883f9f46268241aed2937\",\n", " \"results\": [],\n", " \"monitors\": [],\n", " \"preProcessors\": [],\n", " \"postProcessors\": [],\n", - " \"head\": true\n", + " \"head\": true,\n", + " \"schemaVersion\": \"2022.8.16\",\n", + " \"isDefault\": false\n", " }\n", " ],\n", " \"properties\": [\n", @@ -504,24 +600,26 @@ " \"stress_tensor\"\n", " ],\n", " \"isDefault\": true,\n", - " \"hash\": \"50b01eb183ba4f861da835af14102b55\",\n", + " \"hash\": \"87148c7947ede06e787ec9d0197190f8\",\n", " \"isOutdated\": false,\n", - " \"createdAt\": \"2021-04-27T17:01:23.637Z\",\n", - " \"updatedAt\": \"2021-04-27T17:01:32.762Z\",\n", " \"workflows\": [],\n", - " \"schemaVersion\": \"0.2.0\",\n", + " \"schemaVersion\": \"2022.8.16\",\n", " \"tags\": [],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", + " \"compute\": null,\n", " \"exabyteId\": \"84DAjE9YyTFndx6z3\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-03T03:29:27.386Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -529,72 +627,50 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", + " \"updatedAt\": \"2023-06-03T03:29:27.891Z\",\n", + " \"updatedBy\": \"0\",\n", " \"history\": [\n", " {\n", - " \"id\": \"y6FZHw9yPA2rnqZzs\",\n", + " \"id\": \"ioBHNtM6Zs5CGmsSZ\",\n", " \"revision\": 0\n", " },\n", " {\n", - " \"id\": \"4k2PWq47jzW6csacC\",\n", + " \"id\": \"k9LGu6QaCbyoxHDFh\",\n", " \"revision\": 1\n", " },\n", " {\n", - " \"id\": \"gAhQ326kaxdqDAihz\",\n", + " \"id\": \"pnMFXEBQhHEWZHvyi\",\n", " \"revision\": 2\n", - " },\n", - " {\n", - " \"id\": \"ShxKWNYJoQ6ajv32r\",\n", - " \"revision\": 3\n", - " },\n", - " {\n", - " \"id\": \"sQdJbX2EAznhxSg3L\",\n", - " \"revision\": 4\n", - " },\n", - " {\n", - " \"id\": \"xhfsgmotgJwqMj32Y\",\n", - " \"revision\": 5\n", - " },\n", - " {\n", - " \"id\": \"Kf5raq49JnBGT3K8r\",\n", - " \"revision\": 6\n", - " },\n", - " {\n", - " \"id\": \"9r6YQ492QZ98k9ijt\",\n", - " \"revision\": 7\n", - " },\n", - " {\n", - " \"id\": \"XxbSAN9chq67rnKfb\",\n", - " \"revision\": 8\n", " }\n", " ]\n", " },\n", @@ -606,38 +682,38 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"8kaucWfLQSLyKbnCK\",\n", - " \"slug\": \"bsmith-default\",\n", + " \"_id\": \"dT2hhdDoyqhripAaW\",\n", + " \"slug\": \"mrakitin1-default\",\n", " \"cls\": \"Project\"\n", " }\n", " ],\n", @@ -654,38 +730,42 @@ " }\n", " },\n", " \"_material\": {\n", - " \"_id\": \"5Kag8gkz74ibqCBu5\",\n", + " \"_id\": \"nz7586D2ZobsQajza\",\n", + " \"slug\": null,\n", " \"cls\": \"Material\"\n", " },\n", " \"tags\": [],\n", - " \"schemaVersion\": \"0.2.0\",\n", " \"runtimeContext\": {},\n", " \"_materials\": [],\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", - " \"isEntitySet\": false,\n", - " \"createdAt\": \"2021-07-09T20:06:02.056Z\",\n", - " \"friendlySlugs\": {\n", - " \"slug\": {\n", - " \"base\": \"test-job\",\n", - " \"index\": 7\n", - " }\n", - " },\n", - " \"slug\": \"test-job-7\",\n", + " \"schemaVersion\": \"2022.8.16\",\n", + " \"isDefault\": false,\n", " \"statusTrack\": [\n", " {\n", - " \"trackedAt\": 1625861162061,\n", + " \"trackedAt\": 1687311271738,\n", " \"status\": \"pre-submission\"\n", " },\n", " {\n", - " \"trackedAt\": 1625861163020,\n", + " \"trackedAt\": 1687311273505,\n", " \"status\": \"submitted\"\n", " }\n", " ],\n", - " \"updatedAt\": \"2021-07-09T20:06:03.281Z\"\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-21T01:34:31.738Z\",\n", + " \"createdBy\": \"0\",\n", + " \"friendlySlugs\": {\n", + " \"slug\": {\n", + " \"base\": \"test-job\",\n", + " \"index\": 11\n", + " }\n", + " },\n", + " \"slug\": \"test-job-11\",\n", + " \"updatedAt\": \"2023-06-21T01:34:33.810Z\",\n", + " \"updatedBy\": \"0\"\n", "}\n" ] } diff --git a/examples/job/create_and_submit_job.py b/examples/job/create_and_submit_job.py index 54a8d855..a700a871 100644 --- a/examples/job/create_and_submit_job.py +++ b/examples/job/create_and_submit_job.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# This example demonstrates how to create and submit a job via [Job](https://docs.exabyte.io/api/Job/put_jobs_create) endpoints. +# This example demonstrates how to create and submit a job via [Job](https://docs.mat3ra.com/api/Job/put_jobs_create) endpoints. # # Complete Authorization Form and Initialize Settings # @@ -15,15 +15,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -31,18 +31,26 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') -# In[]: +# In[ ]: -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, ACCOUNT_ID -from utils.generic import display_JSON + +from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID +from examples.utils.generic import display_JSON from exabyte_api_client.endpoints.jobs import JobEndpoints from exabyte_api_client.endpoints.materials import MaterialEndpoints @@ -51,7 +59,7 @@ # ## Initialize the endpoints -# In[]: +# In[ ]: job_endpoints = JobEndpoints(*ENDPOINT_ARGS) @@ -61,7 +69,7 @@ # Set job name. -# In[]: +# In[ ]: JOB_NAME = "TEST JOB" @@ -71,7 +79,7 @@ # # Default account's materail and workflow are used in this example to create the job. Adjust the queries to use different material and workflow. -# In[]: +# In[ ]: default_material = material_endpoints.list({"isDefault": True, "owner._id": ACCOUNT_ID})[0] @@ -86,7 +94,7 @@ # # The job belongs to user's default account and it is created inside the defauult account's project. -# In[]: +# In[ ]: config = { @@ -105,7 +113,7 @@ # ## Create and submit job -# In[]: +# In[ ]: job = job_endpoints.create(config) @@ -116,8 +124,9 @@ # # Print the job in pretty JSON below. Check `status` field to make sure job is submiited. -# In[]: +# In[ ]: job = job_endpoints.get(job['_id']) display_JSON(job) + diff --git a/examples/job/get-file-from-job.ipynb b/examples/job/get-file-from-job.ipynb index f60df66a..b5989f77 100644 --- a/examples/job/get-file-from-job.ipynb +++ b/examples/job/get-file-from-job.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "_eLv7xE68GIo" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "q1kKqnws8GIq" @@ -19,9 +21,9 @@ "source": [ "# Get-File-From-Job\n", "\n", - "This example demonstrates how to use Exabyte RESTful API to check for and acquire files from jobs which have been run. This example assumes that the user is already familiar with the [creation and submission of jobs](create_and_submit_jobs.ipynb) using our API.\n", + "This example demonstrates how to use Mat3ra RESTful API to check for and acquire files from jobs which have been run. This example assumes that the user is already familiar with the [creation and submission of jobs](create_and_submit_jobs.ipynb) using our API.\n", "\n", - "> **IMPORTANT NOTE**: In order to run this example in full, an active Exabyte.io account is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for VASP, for example) and adjust extraction of the results (\"Viewing job files\" section). RESTful API credentials shall be updated in [settings](../settings.py).\n", + "> **IMPORTANT NOTE**: In order to run this example in full, an active Mat3ra.com account is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for VASP, for example) and adjust extraction of the results (\"Viewing job files\" section). RESTful API credentials shall be updated in [settings](../settings.json).\n", "\n", "\n", "## Steps\n", @@ -37,7 +39,7 @@ "\n", "## Pre-requisites\n", "\n", - "The explanation below assumes that the reader is familiar with the concepts used in Exabyte platform and RESTful API. We outline these below and direct the reader to the original sources of information:\n", + "The explanation below assumes that the reader is familiar with the concepts used in Mat3ra platform and RESTful API. We outline these below and direct the reader to the original sources of information:\n", "\n", "- [Generating RESTful API authentication parameters](../system/get_authentication_params.ipynb)\n", "- [Importing materials from materials project](../material/import_materials_from_materialsproject.ipynb)\n", @@ -45,6 +47,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "p1oEmy_N8GIr" @@ -56,13 +59,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -73,37 +76,39 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:34:38.055203Z", + "iopub.status.busy": "2023-06-21T01:34:38.054348Z", + "iopub.status.idle": "2023-06-21T01:34:38.056673Z", + "shell.execute_reply": "2023-06-21T01:34:38.057290Z" + }, "id": "nXDYU_oP8GIr", "outputId": "aee909b7-1a48-43c2-81b7-3659e0fc9c79" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'exabyte-api-examples'...\n", - "remote: Enumerating objects: 2455, done.\u001b[K\n", - "remote: Counting objects: 100% (421/421), done.\u001b[K\n", - "remote: Compressing objects: 100% (203/203), done.\u001b[K\n", - "remote: Total 2455 (delta 325), reused 302 (delta 218), pack-reused 2034\u001b[K\n", - "Receiving objects: 100% (2455/2455), 34.86 MiB | 24.45 MiB/s, done.\n", - "Resolving deltas: 100% (1387/1387), done.\n" - ] - } - ], + "outputs": [], "source": [ "#@title Authorization Form\n", "ACCOUNT_ID = \"ACCOUNT_ID\" #@param {type:\"string\"}\n", "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "6Z9Cr0_M8GIs" @@ -116,14 +121,28 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:38.065149Z", + "iopub.status.busy": "2023-06-21T01:34:38.063926Z", + "iopub.status.idle": "2023-06-21T01:34:38.132329Z", + "shell.execute_reply": "2023-06-21T01:34:38.132884Z" + }, "id": "rG9HfjnR8GIs" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ "# Import settings file and utils file\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY\n", - "from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html, display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY\n", + "from examples.utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_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", @@ -134,6 +153,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "_zKrDX3q8GIt" @@ -141,7 +161,7 @@ "source": [ "### Create and submit the job\n", "\n", - "For this job, we'll use the workflow located [here](https://platform.exabyte.io/analytics/workflows/84DAjE9YyTFndx6z3).\n", + "For this job, we'll use the workflow located [here](https://platform.mat3ra.com/analytics/workflows/84DAjE9YyTFndx6z3).\n", "\n", "This workflow is a single-point total energy calculation using Density-Functional Energy as-implemented in Quantum Espresso version 5.4.0.\n", "\n", @@ -159,6 +179,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:34:38.139708Z", + "iopub.status.busy": "2023-06-21T01:34:38.138929Z", + "iopub.status.idle": "2023-06-21T01:35:14.500138Z", + "shell.execute_reply": "2023-06-21T01:35:14.500659Z" + }, "id": "le9f28c08GIt", "outputId": "27e9b94f-29dd-4742-9448-2e1bce79cb15" }, @@ -171,122 +197,17 @@ "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:52 | 1 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:02 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:13 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:24 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:34 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:45 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:55 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:06 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:17 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:27 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:38 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:49 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:59 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:10 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:20 | 0 | 1 | 0 | 0 |\n", + "| 2023-06-20-21:34:53 | 1 | 0 | 0 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:31 | 0 | 1 | 0 | 0 |\n", + "| 2023-06-20-21:35:04 | 0 | 1 | 0 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:42 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:52 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:58:03 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:58:13 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:58:24 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:58:35 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:58:45 | 0 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:58:56 | 0 | 0 | 0 | 1 |\n", + "| 2023-06-20-21:35:14 | 0 | 0 | 1 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n" ] } @@ -322,6 +243,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "kiCDWnVP8GIu" @@ -331,6 +253,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "XygP7P1m8GIv" @@ -349,6 +272,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:35:14.505975Z", + "iopub.status.busy": "2023-06-21T01:35:14.505237Z", + "iopub.status.idle": "2023-06-21T01:35:15.929270Z", + "shell.execute_reply": "2023-06-21T01:35:15.929883Z" + }, "id": "yijRe7qp8GIv", "outputId": "19b147fc-736e-41f0-bd0f-6f69e77b0adf" }, @@ -357,15 +286,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/.exabyte/checkpoint\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/.exabyte/job.rms\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/.exabyte/machines-80482.master-production-20160630-cluster-001.exabyte.io\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/.exabyte/rupy.log\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/6zP7nscCSArCXbWMC.json\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/job.log\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/pseudo/si_pbe_gbrv_1.0.upf\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/pw_scf.in\n", - "/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/pw_scf.out\n" + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/.exabyte/90932.master-production-20160630-cluster-001.exabyte.io\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/.exabyte/checkpoint\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/.exabyte/job.rms\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/.exabyte/machines-90932.master-production-20160630-cluster-001.exabyte.io\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/.exabyte/rupy.log\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/3fkkcB2Wf2tGkpNAx.json\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/job.log\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/pseudo/si_pbe_gbrv_1.0.upf\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/pw_scf.in\n", + "/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/pw_scf.out\n" ] } ], @@ -378,6 +308,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "exnQTPwF8GIv" @@ -404,6 +335,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:35:15.934611Z", + "iopub.status.busy": "2023-06-21T01:35:15.933841Z", + "iopub.status.idle": "2023-06-21T01:35:15.936460Z", + "shell.execute_reply": "2023-06-21T01:35:15.936981Z" + }, "id": "U2dq0A1e8GIw", "outputId": "7b4f8c36-6342-46fa-d02e-0825b44e6c64" }, @@ -413,14 +350,14 @@ "output_type": "stream", "text": [ "{\n", - " \"key\": \"/cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/pw_scf.out\",\n", - " \"size\": 10553,\n", + " \"key\": \"/cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/pw_scf.out\",\n", + " \"size\": 11939,\n", " \"bucket\": \"production-20160630-cluster-001\",\n", " \"region\": \"us-east-1\",\n", " \"provider\": \"aws\",\n", - " \"lastModified\": 1626098186,\n", + " \"lastModified\": 1687311306,\n", " \"name\": \"pw_scf.out\",\n", - " \"signedUrl\": \"https://production-20160630-cluster-001.s3.amazonaws.com//cluster-001-home/bsmith/data/bsmith-default/test-job-output-si-7-6zP7nscCSArCXbWMC/pw_scf.out?AWSAccessKeyId=AKIAJVUKZ43HBUUYOVFQ&Expires=1626099269&Signature=7E4e3lXd%2BHdhl0YNAKp1TJ7k%2FpE%3D\"\n", + " \"signedUrl\": \"https://production-20160630-cluster-001.s3.amazonaws.com//cluster-001-home/mrakitin1/data/mrakitin1-default/test-job-output-si-11-3fkkcB2Wf2tGkpNAx/pw_scf.out?AWSAccessKeyId=AKIAJVUKZ43HBUUYOVFQ&Expires=1687312216&Signature=xUkC%2Fdw%2FzX%2FM4nYkL9PD%2FRQkIRA%3D\"\n", "}\n" ] } @@ -433,6 +370,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "PwC7wQZR8GIw" @@ -450,6 +388,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:35:15.941793Z", + "iopub.status.busy": "2023-06-21T01:35:15.941033Z", + "iopub.status.idle": "2023-06-21T01:35:16.152302Z", + "shell.execute_reply": "2023-06-21T01:35:16.152924Z" + }, "id": "OpdOMuDT8GIw", "outputId": "e4e2e6b1-8431-439a-8606-ae500534e601" }, @@ -459,90 +403,90 @@ "output_type": "stream", "text": [ "\n", - " Number of k-points >= 100: set verbosity='high' to print the bands.\n", + " -1.5106 -1.5106 3.4108 3.4108 6.9197 6.9197 16.1487 16.1487\n", "\n", - " the Fermi energy is 6.3221 ev\n", + " the Fermi energy is 6.6081 ev\n", "\n", - "! total energy = -19.19341539 Ry\n", - " Harris-Foulkes estimate = -19.19341500 Ry\n", - " estimated scf accuracy < 0.00000029 Ry\n", + "! total energy = -19.00890069 Ry\n", + " Harris-Foulkes estimate = -19.00890026 Ry\n", + " estimated scf accuracy < 0.00000057 Ry\n", "\n", " The total energy is the sum of the following terms:\n", "\n", - " one-electron contribution = 4.94851199 Ry\n", - " hartree contribution = 1.13424409 Ry\n", - " xc contribution = -8.59619469 Ry\n", + " one-electron contribution = 5.04610005 Ry\n", + " hartree contribution = 1.30263425 Ry\n", + " xc contribution = -8.67765820 Ry\n", " ewald contribution = -16.67997678 Ry\n", " smearing contrib. (-TS) = -0.00000000 Ry\n", "\n", - " convergence has been achieved in 5 iterations\n", + " convergence has been achieved in 6 iterations\n", "\n", " Forces acting on atoms (Ry/au):\n", "\n", - " atom 1 type 1 force = 0.00000019 0.00000022 0.00000000\n", - " atom 2 type 1 force = -0.00000019 -0.00000022 0.00000000\n", + " atom 1 type 1 force = -0.00000037 0.00000042 0.00000000\n", + " atom 2 type 1 force = 0.00000037 -0.00000042 0.00000000\n", "\n", - " Total force = 0.000000 Total SCF correction = 0.000000\n", + " Total force = 0.000001 Total SCF correction = 0.000002\n", " SCF correction compared to forces is large: reduce conv_thr to get better values\n", "\n", "\n", " entering subroutine stress ...\n", "\n", - " total stress (Ry/bohr**3) (kbar) P= -0.55\n", - " -0.00000372 0.00000000 0.00000000 -0.55 0.00 0.00\n", - " 0.00000000 -0.00000371 0.00000000 0.00 -0.55 0.00\n", - " 0.00000000 0.00000000 -0.00000371 0.00 0.00 -0.55\n", + " total stress (Ry/bohr**3) (kbar) P= 73.74\n", + " 0.00050127 0.00000001 0.00000000 73.74 0.00 0.00\n", + " 0.00000001 0.00050125 -0.00000000 0.00 73.74 -0.00\n", + " 0.00000000 -0.00000000 0.00050127 0.00 -0.00 73.74\n", "\n", "\n", " Writing output data file __prefix__.save\n", " \n", - " init_run : 2.68s CPU 2.75s WALL ( 1 calls)\n", - " electrons : 52.57s CPU 53.39s WALL ( 1 calls)\n", - " forces : 0.40s CPU 0.43s WALL ( 1 calls)\n", - " stress : 1.51s CPU 1.58s WALL ( 1 calls)\n", + " init_run : 0.28s CPU 0.31s WALL ( 1 calls)\n", + " electrons : 1.64s CPU 1.93s WALL ( 1 calls)\n", + " forces : 0.09s CPU 0.11s WALL ( 1 calls)\n", + " stress : 0.33s CPU 0.39s WALL ( 1 calls)\n", "\n", " Called by init_run:\n", - " wfcinit : 2.42s CPU 2.46s WALL ( 1 calls)\n", + " wfcinit : 0.05s CPU 0.05s WALL ( 1 calls)\n", " potinit : 0.03s CPU 0.04s WALL ( 1 calls)\n", "\n", " Called by electrons:\n", - " c_bands : 44.66s CPU 45.18s WALL ( 6 calls)\n", - " sum_band : 7.62s CPU 7.82s WALL ( 6 calls)\n", - " v_of_rho : 0.15s CPU 0.16s WALL ( 6 calls)\n", - " newd : 0.16s CPU 0.28s WALL ( 6 calls)\n", - " mix_rho : 0.01s CPU 0.01s WALL ( 6 calls)\n", + " c_bands : 0.91s CPU 0.92s WALL ( 6 calls)\n", + " sum_band : 0.40s CPU 0.54s WALL ( 6 calls)\n", + " v_of_rho : 0.16s CPU 0.17s WALL ( 7 calls)\n", + " newd : 0.18s CPU 0.33s WALL ( 7 calls)\n", + " mix_rho : 0.02s CPU 0.02s WALL ( 6 calls)\n", "\n", " Called by c_bands:\n", - " init_us_2 : 1.10s CPU 1.12s WALL ( 4230 calls)\n", - " cegterg : 39.81s CPU 40.26s WALL ( 1692 calls)\n", + " init_us_2 : 0.02s CPU 0.02s WALL ( 90 calls)\n", + " cegterg : 0.81s CPU 0.82s WALL ( 36 calls)\n", "\n", " Called by sum_band:\n", - " sum_band:bec : 0.01s CPU 0.01s WALL ( 1692 calls)\n", - " addusdens : 0.21s CPU 0.33s WALL ( 6 calls)\n", + " sum_band:bec : 0.00s CPU 0.00s WALL ( 36 calls)\n", + " addusdens : 0.21s CPU 0.34s WALL ( 6 calls)\n", "\n", " Called by *egterg:\n", - " h_psi : 38.83s CPU 39.27s WALL ( 6240 calls)\n", - " s_psi : 0.61s CPU 0.62s WALL ( 6240 calls)\n", - " g_psi : 0.19s CPU 0.19s WALL ( 4266 calls)\n", - " cdiaghg : 0.68s CPU 0.69s WALL ( 5676 calls)\n", + " h_psi : 0.79s CPU 0.80s WALL ( 127 calls)\n", + " s_psi : 0.01s CPU 0.01s WALL ( 127 calls)\n", + " g_psi : 0.00s CPU 0.00s WALL ( 85 calls)\n", + " cdiaghg : 0.01s CPU 0.01s WALL ( 121 calls)\n", "\n", " Called by h_psi:\n", - " add_vuspsi : 0.61s CPU 0.62s WALL ( 6240 calls)\n", + " add_vuspsi : 0.01s CPU 0.01s WALL ( 127 calls)\n", "\n", " General routines\n", - " calbec : 0.98s CPU 0.99s WALL ( 9342 calls)\n", - " fft : 0.13s CPU 0.13s WALL ( 121 calls)\n", - " ffts : 0.01s CPU 0.01s WALL ( 12 calls)\n", - " fftw : 40.39s CPU 40.84s WALL ( 90708 calls)\n", - " interpolate : 0.02s CPU 0.02s WALL ( 12 calls)\n", + " calbec : 0.02s CPU 0.02s WALL ( 193 calls)\n", + " fft : 0.14s CPU 0.15s WALL ( 133 calls)\n", + " ffts : 0.01s CPU 0.01s WALL ( 13 calls)\n", + " fftw : 0.84s CPU 0.84s WALL ( 1912 calls)\n", + " interpolate : 0.03s CPU 0.03s WALL ( 13 calls)\n", " \n", " Parallel routines\n", - " fft_scatter : 1.94s CPU 1.96s WALL ( 90841 calls)\n", + " fft_scatter : 0.05s CPU 0.05s WALL ( 2058 calls)\n", " \n", - " PWSCF : 0m57.73s CPU 1m 7.92s WALL\n", + " PWSCF : 2.38s CPU 2.80s WALL\n", "\n", " \n", - " This run was terminated on: 13:56: 2 12Jul2021 \n", + " This run was terminated on: 1:35: 0 21Jun2023 \n", "\n", "=------------------------------------------------------------------------------=\n", " JOB DONE.\n", @@ -552,6 +496,7 @@ } ], "source": [ + "import urllib\n", "server_response = urllib.request.urlopen(output_file_metadata['signedUrl'])\n", "output_file_bytes = server_response.read()\n", "\n", @@ -566,6 +511,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "-z7VqM3K8GIx" @@ -580,6 +526,12 @@ "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:16.164598Z", + "iopub.status.busy": "2023-06-21T01:35:16.156977Z", + "iopub.status.idle": "2023-06-21T01:35:16.280578Z", + "shell.execute_reply": "2023-06-21T01:35:16.281239Z" + }, "id": "osy2JKpB8GIx" }, "outputs": [], @@ -596,6 +548,12 @@ "cell_type": "code", "execution_count": 8, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:16.285718Z", + "iopub.status.busy": "2023-06-21T01:35:16.284883Z", + "iopub.status.idle": "2023-06-21T01:35:16.290198Z", + "shell.execute_reply": "2023-06-21T01:35:16.290717Z" + }, "id": "COPinBrO8GIx" }, "outputs": [], @@ -610,6 +568,12 @@ "cell_type": "code", "execution_count": 9, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:16.295022Z", + "iopub.status.busy": "2023-06-21T01:35:16.293999Z", + "iopub.status.idle": "2023-06-21T01:35:16.297457Z", + "shell.execute_reply": "2023-06-21T01:35:16.297944Z" + }, "id": "rzDcWyrL8GIx" }, "outputs": [], diff --git a/examples/job/get-file-from-job.py b/examples/job/get-file-from-job.py index 4f285ca8..c1c88dfe 100644 --- a/examples/job/get-file-from-job.py +++ b/examples/job/get-file-from-job.py @@ -1,15 +1,15 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Get-File-From-Job # -# This example demonstrates how to use Exabyte RESTful API to check for and acquire files from jobs which have been run. This example assumes that the user is already familiar with the [creation and submission of jobs](create_and_submit_jobs.ipynb) using our API. +# This example demonstrates how to use Mat3ra RESTful API to check for and acquire files from jobs which have been run. This example assumes that the user is already familiar with the [creation and submission of jobs](create_and_submit_jobs.ipynb) using our API. # -# > **IMPORTANT NOTE**: In order to run this example in full, an active Exabyte.io account is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for VASP, for example) and adjust extraction of the results ("Viewing job files" section). RESTful API credentials shall be updated in [settings](../settings.py). +# > **IMPORTANT NOTE**: In order to run this example in full, an active Mat3ra.com account is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for VASP, for example) and adjust extraction of the results ("Viewing job files" section). RESTful API credentials shall be updated in [settings](../settings.json). # # # ## Steps @@ -25,7 +25,7 @@ # # ## Pre-requisites # -# The explanation below assumes that the reader is familiar with the concepts used in Exabyte platform and RESTful API. We outline these below and direct the reader to the original sources of information: +# The explanation below assumes that the reader is familiar with the concepts used in Mat3ra platform and RESTful API. We outline these below and direct the reader to the original sources of information: # # - [Generating RESTful API authentication parameters](../system/get_authentication_params.ipynb) # - [Importing materials from materials project](../material/import_materials_from_materialsproject.ipynb) @@ -37,15 +37,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -53,21 +53,29 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # ## Imports -# In[]: +# In[ ]: # Import settings file and utils file -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY -from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html, display_JSON +from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY +from examples.utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html, display_JSON # Relevant functions from the API client from exabyte_api_client.endpoints.jobs import JobEndpoints @@ -79,7 +87,7 @@ # ### Create and submit the job # -# For this job, we'll use the workflow located [here](https://platform.exabyte.io/analytics/workflows/84DAjE9YyTFndx6z3). +# For this job, we'll use the workflow located [here](https://platform.mat3ra.com/analytics/workflows/84DAjE9YyTFndx6z3). # # This workflow is a single-point total energy calculation using Density-Functional Energy as-implemented in Quantum Espresso version 5.4.0. # @@ -89,7 +97,7 @@ # # > Note: This cell uses our API to copy the unit cell of silicon from Materials Project into your account. It then copies a workflow to get the total energy of a system using Quantum Espresso to your account. Finally, a job is created using the Quantum Espresso workflow for the silicon unit cell, and the job is submitted to the cluster. For more information, please refer to our [run-simulation-and-extract-properties](./run-simulations-and-extract-properties.ipynb) notebook, located in this directory. -# In[]: +# In[ ]: # Get some account information @@ -128,7 +136,7 @@ # # Here, we'll get a list of all files that belong to the job. -# In[]: +# In[ ]: files = job_endpoints.list_files(job['_id']) @@ -151,7 +159,7 @@ # - name - The filename. # - signedUrl - This is a link which can be used to download the file for a short amount of time. -# In[]: +# In[ ]: for file in files: @@ -164,9 +172,10 @@ # # The signedUrl gives us a place to access the file and download it. Let's read it into memory, and print out the last few lines of our job. -# In[]: +# In[ ]: +import urllib server_response = urllib.request.urlopen(output_file_metadata['signedUrl']) output_file_bytes = server_response.read() @@ -184,7 +193,7 @@ # # Now that we've verified the job is done, let's go ahead and save it and its input to disk. -# In[]: +# In[ ]: # We've already got an output file, so let's grab the input file we sent to Quantum Espresso @@ -195,7 +204,7 @@ input_file_bytes = server_response.read() -# In[]: +# In[ ]: # Let's write the input file to disk. Note that we get files as a bytes string from the server, which is convenient for binaries, images, and other non-human-readable data. @@ -204,9 +213,10 @@ file_descriptor.write(input_file_bytes) -# In[]: +# In[ ]: # Now, let's write our output file to the disk. Note that because we already decoded it, we can just use the 'w' file mode. with open(output_file_metadata['name'], 'w') as file_descriptor: file_descriptor.write(output_file) + diff --git a/examples/job/ml-train-model-predict-properties.ipynb b/examples/job/ml-train-model-predict-properties.ipynb index 11f6c141..3b9418c1 100644 --- a/examples/job/ml-train-model-predict-properties.ipynb +++ b/examples/job/ml-train-model-predict-properties.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "n7Si3HU22QxW" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "7m-SyWOK2QxY" @@ -19,7 +21,7 @@ "source": [ "# Overview\n", "\n", - "This example demonstrates how to use Exabyte RESTful API to build a machine learning (ML) model for a set of materials called \"train materials\" and use the model to predict properties of another set called \"target materials\". The general approach can work for multiple properties, we use the Electronic Band Gap in this example.\n", + "This example demonstrates how to use Mat3ra RESTful API to build a machine learning (ML) model for a set of materials called \"train materials\" and use the model to predict properties of another set called \"target materials\". The general approach can work for multiple properties, we use the Electronic Band Gap in this example.\n", "\n", "\n", "\n", @@ -36,15 +38,16 @@ "\n", "## Pre-requisites\n", "\n", - "The explanation below assumes that the reader is familiar with the concepts used in Exabyte platform and RESTful API. We outline these below and direct the reader to the original sources of information:\n", + "The explanation below assumes that the reader is familiar with the concepts used in Mat3ra platform and RESTful API. We outline these below and direct the reader to the original sources of information:\n", "\n", "- [Generating RESTful API authentication parameters](../system/get_authentication_params.ipynb)\n", "- [Importing materials from materials project](../material/import_materials_from_materialsproject.ipynb)\n", "- [Creating and submitting jobs](./create_and_submit_job.ipynb)\n", - "- [Running DFT calculations](./dft-band-gaps-calculation.ipynb)" + "- [Running DFT calculations](./run-simulations-and-extract-properties.ipynb)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "nl8vlnAD2QxZ" @@ -56,13 +59,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -73,37 +76,39 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.002145Z", + "iopub.status.busy": "2023-06-21T01:35:24.001188Z", + "iopub.status.idle": "2023-06-21T01:35:24.003535Z", + "shell.execute_reply": "2023-06-21T01:35:24.004656Z" + }, "id": "6fBhrNDO2QxZ", "outputId": "2f059fa9-ccf4-476d-cf20-043ad9cd320d" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'exabyte-api-examples'...\n", - "remote: Enumerating objects: 2455, done.\u001b[K\n", - "remote: Counting objects: 100% (421/421), done.\u001b[K\n", - "remote: Compressing objects: 100% (203/203), done.\u001b[K\n", - "remote: Total 2455 (delta 325), reused 302 (delta 218), pack-reused 2034\u001b[K\n", - "Receiving objects: 100% (2455/2455), 34.86 MiB | 24.62 MiB/s, done.\n", - "Resolving deltas: 100% (1387/1387), done.\n" - ] - } - ], + "outputs": [], "source": [ "#@title Authorization Form\n", "ACCOUNT_ID = \"ACCOUNT_ID\" #@param {type:\"string\"}\n", "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "EMKMnghw2Qxa" @@ -116,17 +121,31 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.011047Z", + "iopub.status.busy": "2023-06-21T01:35:24.010313Z", + "iopub.status.idle": "2023-06-21T01:35:24.547721Z", + "shell.execute_reply": "2023-06-21T01:35:24.548220Z" + }, "id": "xpXAOeAp2Qxa" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ "import time\n", "from IPython.display import IFrame\n", "\n", "# Import settings file and utils file\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY\n", - "from utils.generic import dataframe_to_html, copy_bank_workflow_by_system_name, wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY\n", + "from examples.utils.generic import dataframe_to_html, copy_bank_workflow_by_system_name, wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, display_JSON\n", "\n", "import pandas as pd\n", "\n", @@ -141,6 +160,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "TNXq-lpw2Qxb" @@ -158,6 +178,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.552784Z", + "iopub.status.busy": "2023-06-21T01:35:24.551937Z", + "iopub.status.idle": "2023-06-21T01:35:24.553963Z", + "shell.execute_reply": "2023-06-21T01:35:24.554487Z" + }, "id": "qeZIEenS2Qxb" }, "outputs": [], @@ -167,6 +193,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "zSGV807V2Qxb" @@ -183,6 +210,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.558665Z", + "iopub.status.busy": "2023-06-21T01:35:24.557844Z", + "iopub.status.idle": "2023-06-21T01:35:24.560153Z", + "shell.execute_reply": "2023-06-21T01:35:24.560666Z" + }, "id": "1Z68p_zB2Qxc" }, "outputs": [], @@ -191,6 +224,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "6hyr1rez2Qxc" @@ -198,7 +232,7 @@ "source": [ "#### Compute\n", "\n", - "Setup compute parameters. See [this](https://docs.exabyte.io/infrastructure/compute-settings/ui) for more information about compute parameters.\n", + "Setup compute parameters. See [this](https://docs.mat3ra.com/infrastructure/compute-settings/ui) for more information about compute parameters.\n", "\n", "- **NODES**: Number of nodes. Defaults to 1.\n", "- **PPN**: Number of MPI processes per each node, Defaults to 1.\n", @@ -211,6 +245,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.564857Z", + "iopub.status.busy": "2023-06-21T01:35:24.564004Z", + "iopub.status.idle": "2023-06-21T01:35:24.566405Z", + "shell.execute_reply": "2023-06-21T01:35:24.567001Z" + }, "id": "wiudje4-2Qxc" }, "outputs": [], @@ -223,6 +263,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "fDGy9Qh52Qxd" @@ -235,6 +276,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.572220Z", + "iopub.status.busy": "2023-06-21T01:35:24.571527Z", + "iopub.status.idle": "2023-06-21T01:35:24.573664Z", + "shell.execute_reply": "2023-06-21T01:35:24.574169Z" + }, "id": "EaRDDZ2E2Qxd" }, "outputs": [], @@ -248,18 +295,25 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "uKukWQNL2Qxd" }, "source": [ - "Retrieve the owner and project IDs as they are needed by the endpoints. The default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.exabyte.io/entities-general/overview/)." + "Retrieve the owner and project IDs as they are needed by the endpoints. The default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.mat3ra.com/entities-general/overview/)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:24.578749Z", + "iopub.status.busy": "2023-06-21T01:35:24.578035Z", + "iopub.status.idle": "2023-06-21T01:35:25.740698Z", + "shell.execute_reply": "2023-06-21T01:35:25.741249Z" + }, "id": "g_YTcLgD2Qxd" }, "outputs": [], @@ -269,6 +323,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "c1aYxrn12Qxe" @@ -283,6 +338,12 @@ "cell_type": "code", "execution_count": 8, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:25.746262Z", + "iopub.status.busy": "2023-06-21T01:35:25.745524Z", + "iopub.status.idle": "2023-06-21T01:35:29.602860Z", + "shell.execute_reply": "2023-06-21T01:35:29.601957Z" + }, "id": "_JUT4f9E2Qxe" }, "outputs": [], @@ -292,6 +353,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "aleETRhq2Qxe" @@ -306,6 +368,12 @@ "cell_type": "code", "execution_count": 9, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:29.607702Z", + "iopub.status.busy": "2023-06-21T01:35:29.607015Z", + "iopub.status.idle": "2023-06-21T01:35:42.557631Z", + "shell.execute_reply": "2023-06-21T01:35:42.558185Z" + }, "id": "t1dMm9ke2Qxe" }, "outputs": [], @@ -315,6 +383,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "eZTeParO2Qxe" @@ -329,6 +398,12 @@ "cell_type": "code", "execution_count": 10, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:42.563552Z", + "iopub.status.busy": "2023-06-21T01:35:42.562775Z", + "iopub.status.idle": "2023-06-21T01:35:44.705804Z", + "shell.execute_reply": "2023-06-21T01:35:44.706404Z" + }, "id": "gJ7TMXLt2Qxe" }, "outputs": [], @@ -338,6 +413,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "ZXJbytcT2Qxe" @@ -350,6 +426,12 @@ "cell_type": "code", "execution_count": 11, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:35:44.711604Z", + "iopub.status.busy": "2023-06-21T01:35:44.710832Z", + "iopub.status.idle": "2023-06-21T01:35:46.292042Z", + "shell.execute_reply": "2023-06-21T01:35:46.292765Z" + }, "id": "uKLT6vQr2Qxf" }, "outputs": [], @@ -358,6 +440,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "pUpm3qYO2Qxf" @@ -373,6 +456,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:35:46.298046Z", + "iopub.status.busy": "2023-06-21T01:35:46.297289Z", + "iopub.status.idle": "2023-06-21T01:36:29.638454Z", + "shell.execute_reply": "2023-06-21T01:36:29.639041Z" + }, "id": "VIfaCdYQ2Qxf", "outputId": "d0a4aa6a-a26b-48ed-b318-39e030ee9ae3" }, @@ -385,102 +474,27 @@ "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:53:54 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:05 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:16 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:26 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:37 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:47 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:54:58 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:09 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:19 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:30 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:40 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:55:51 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:02 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:12 | 0 | 2 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:23 | 0 | 2 | 0 | 0 |\n", + "| 2023-06-20-21:35:46 | 2 | 0 | 0 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:34 | 0 | 2 | 0 | 0 |\n", + "| 2023-06-20-21:35:57 | 1 | 1 | 0 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:44 | 0 | 1 | 1 | 0 |\n", + "| 2023-06-20-21:36:08 | 0 | 1 | 1 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:56:55 | 0 | 1 | 1 | 0 |\n", + "| 2023-06-20-21:36:18 | 0 | 1 | 1 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:05 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:16 | 0 | 0 | 2 | 0 |\n", + "| 2023-06-20-21:36:29 | 0 | 0 | 2 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n" ] } @@ -491,6 +505,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "JSJjMpiw2Qxg" @@ -505,6 +520,12 @@ "cell_type": "code", "execution_count": 13, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:29.644554Z", + "iopub.status.busy": "2023-06-21T01:36:29.643846Z", + "iopub.status.idle": "2023-06-21T01:36:30.993605Z", + "shell.execute_reply": "2023-06-21T01:36:30.994211Z" + }, "id": "6LNWH-8f2Qxg" }, "outputs": [], @@ -516,6 +537,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "_LmJY5Pj2Qxg" @@ -528,6 +550,12 @@ "cell_type": "code", "execution_count": 14, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:30.998937Z", + "iopub.status.busy": "2023-06-21T01:36:30.998020Z", + "iopub.status.idle": "2023-06-21T01:36:31.790394Z", + "shell.execute_reply": "2023-06-21T01:36:31.790966Z" + }, "id": "WQMOm3Qk2Qxg" }, "outputs": [], @@ -536,6 +564,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "4dub7yC52Qxg" @@ -551,6 +580,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:36:31.795984Z", + "iopub.status.busy": "2023-06-21T01:36:31.794766Z", + "iopub.status.idle": "2023-06-21T01:36:43.010453Z", + "shell.execute_reply": "2023-06-21T01:36:43.010958Z" + }, "id": "0Q3SU-Es2Qxg", "outputId": "dfca0a46-6318-40a9-84a0-5e8925f5958e" }, @@ -563,12 +598,12 @@ "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:19 | 1 | 0 | 0 | 0 |\n", + "| 2023-06-20-21:36:32 | 1 | 0 | 0 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:29 | 0 | 0 | 1 | 0 |\n", + "| 2023-06-20-21:36:43 | 0 | 0 | 1 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n" ] } @@ -578,6 +613,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "GjyQbQTQ2Qxh" @@ -592,6 +628,12 @@ "cell_type": "code", "execution_count": 16, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:43.016156Z", + "iopub.status.busy": "2023-06-21T01:36:43.015253Z", + "iopub.status.idle": "2023-06-21T01:36:43.693134Z", + "shell.execute_reply": "2023-06-21T01:36:43.693618Z" + }, "id": "xq_rGr5b2Qxh" }, "outputs": [], @@ -601,6 +643,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "VPOx3SxH2Qxh" @@ -616,6 +659,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:36:43.699299Z", + "iopub.status.busy": "2023-06-21T01:36:43.698361Z", + "iopub.status.idle": "2023-06-21T01:36:43.701764Z", + "shell.execute_reply": "2023-06-21T01:36:43.702306Z" + }, "id": "PiUO0kzN2Qxh", "outputId": "de75edbe-a3ac-4e1c-c548-9bb2d504b8b8" }, @@ -628,18 +677,18 @@ " \"name\": \"workflow:ml_predict\",\n", " \"displayName\": \"workflow:ml_predict\",\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"schemaVersion\": \"0.2.0\",\n", " \"hash\": \"\",\n", - " \"_id\": \"J443sTiRvraysd8uD\",\n", + " \"_id\": \"MeAn6CA9teqBBo4Tf\",\n", " \"units\": [\n", " {\n", " \"_id\": \"LCthJ6E2QabYCZqf4\",\n", @@ -696,12 +745,12 @@ " \"p-norm:degree=5\",\n", " \"p-norm:degree=7\",\n", " \"p-norm:degree=10\",\n", - " \"atomic_radius:Si\",\n", " \"electronegativity:Si\",\n", + " \"atomic_radius:Si\",\n", " \"ionization_potential:Si\",\n", " \"elemental_ratio:element=Ge\",\n", - " \"atomic_radius:Ge\",\n", " \"electronegativity:Ge\",\n", + " \"atomic_radius:Ge\",\n", " \"ionization_potential:Ge\"\n", " ],\n", " \"ids\": [],\n", @@ -826,19 +875,19 @@ " },\n", " {\n", " \"variance\": 0,\n", - " \"mean\": 132,\n", + " \"mean\": 1.9,\n", " \"scale\": 1,\n", - " \"name\": \"atomic_radius:Si\"\n", + " \"name\": \"electronegativity:Si\"\n", " },\n", " {\n", " \"variance\": 0,\n", - " \"mean\": 1.9,\n", + " \"mean\": 110,\n", " \"scale\": 1,\n", - " \"name\": \"electronegativity:Si\"\n", + " \"name\": \"atomic_radius:Si\"\n", " },\n", " {\n", " \"variance\": 0,\n", - " \"mean\": 8.1461826,\n", + " \"mean\": 786,\n", " \"scale\": 1,\n", " \"name\": \"ionization_potential:Si\"\n", " },\n", @@ -849,21 +898,21 @@ " \"name\": \"elemental_ratio:element=Ge\"\n", " },\n", " {\n", - " \"variance\": 4692.25,\n", - " \"mean\": 68.5,\n", - " \"scale\": 68.5,\n", - " \"name\": \"atomic_radius:Ge\"\n", - " },\n", - " {\n", " \"variance\": 1.0100249999999997,\n", " \"mean\": 1.005,\n", " \"scale\": 1.005,\n", " \"name\": \"electronegativity:Ge\"\n", " },\n", " {\n", - " \"variance\": 15.510663736163997,\n", - " \"mean\": 3.9383579999999996,\n", - " \"scale\": 3.9383579999999996,\n", + " \"variance\": 3906.25,\n", + " \"mean\": 62.5,\n", + " \"scale\": 62.5,\n", + " \"name\": \"atomic_radius:Ge\"\n", + " },\n", + " {\n", + " \"variance\": 144400,\n", + " \"mean\": 380,\n", + " \"scale\": 380,\n", " \"name\": \"ionization_potential:Ge\"\n", " }\n", " ]\n", @@ -918,56 +967,56 @@ " \"perFeature\": [\n", " {\n", " \"name\": \"volume\",\n", - " \"coefficient\": -0.08325020834740948,\n", + " \"coefficient\": -0.08324446799667684,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"density\",\n", - " \"coefficient\": -0.08325020834740947,\n", + " \"coefficient\": -0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"elemental_ratio:element=Si\",\n", - " \"coefficient\": 0.08325020834740947,\n", + " \"coefficient\": 0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=0\",\n", - " \"coefficient\": -0.08325020834740947,\n", + " \"coefficient\": -0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=2\",\n", - " \"coefficient\": 0.08325020834740947,\n", + " \"coefficient\": 0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=3\",\n", - " \"coefficient\": 0.08325020834740947,\n", + " \"coefficient\": 0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=5\",\n", - " \"coefficient\": 0.08325020834740947,\n", + " \"coefficient\": 0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=7\",\n", - " \"coefficient\": 0.08325020834740947,\n", + " \"coefficient\": 0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=10\",\n", - " \"coefficient\": 0.08325020834740947,\n", + " \"coefficient\": 0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"atomic_radius:Si\",\n", + " \"name\": \"electronegativity:Si\",\n", " \"coefficient\": 0,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"electronegativity:Si\",\n", + " \"name\": \"atomic_radius:Si\",\n", " \"coefficient\": 0,\n", " \"importance\": \"NaN\"\n", " },\n", @@ -978,22 +1027,22 @@ " },\n", " {\n", " \"name\": \"elemental_ratio:element=Ge\",\n", - " \"coefficient\": -0.08325020834740947,\n", + " \"coefficient\": -0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"atomic_radius:Ge\",\n", - " \"coefficient\": -0.08325020834740947,\n", + " \"name\": \"electronegativity:Ge\",\n", + " \"coefficient\": -0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"electronegativity:Ge\",\n", - " \"coefficient\": -0.08325020834740947,\n", + " \"name\": \"atomic_radius:Ge\",\n", + " \"coefficient\": -0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"ionization_potential:Ge\",\n", - " \"coefficient\": -0.08325020834740947,\n", + " \"coefficient\": -0.08324446799667683,\n", " \"importance\": \"NaN\"\n", " }\n", " ],\n", @@ -1004,56 +1053,56 @@ " \"perFeature\": [\n", " {\n", " \"name\": \"volume\",\n", - " \"coefficient\": -0.008810962700503994,\n", + " \"coefficient\": -0.00880522234977136,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"density\",\n", - " \"coefficient\": -0.008810962700503988,\n", + " \"coefficient\": -0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"elemental_ratio:element=Si\",\n", - " \"coefficient\": 0.008810962700503988,\n", + " \"coefficient\": 0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=0\",\n", - " \"coefficient\": -0.008810962700503988,\n", + " \"coefficient\": -0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=2\",\n", - " \"coefficient\": 0.008810962700503988,\n", + " \"coefficient\": 0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=3\",\n", - " \"coefficient\": 0.008810962700503988,\n", + " \"coefficient\": 0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=5\",\n", - " \"coefficient\": 0.008810962700503988,\n", + " \"coefficient\": 0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=7\",\n", - " \"coefficient\": 0.008810962700503988,\n", + " \"coefficient\": 0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"p-norm:degree=10\",\n", - " \"coefficient\": 0.008810962700503988,\n", + " \"coefficient\": 0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"atomic_radius:Si\",\n", + " \"name\": \"electronegativity:Si\",\n", " \"coefficient\": 0,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"electronegativity:Si\",\n", + " \"name\": \"atomic_radius:Si\",\n", " \"coefficient\": 0,\n", " \"importance\": \"NaN\"\n", " },\n", @@ -1064,22 +1113,22 @@ " },\n", " {\n", " \"name\": \"elemental_ratio:element=Ge\",\n", - " \"coefficient\": -0.008810962700503988,\n", + " \"coefficient\": -0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"atomic_radius:Ge\",\n", - " \"coefficient\": -0.008810962700503988,\n", + " \"name\": \"electronegativity:Ge\",\n", + " \"coefficient\": -0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", - " \"name\": \"electronegativity:Ge\",\n", - " \"coefficient\": -0.008810962700503988,\n", + " \"name\": \"atomic_radius:Ge\",\n", + " \"coefficient\": -0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " },\n", " {\n", " \"name\": \"ionization_potential:Ge\",\n", - " \"coefficient\": -0.008810962700503988,\n", + " \"coefficient\": -0.008805222349771354,\n", " \"importance\": \"NaN\"\n", " }\n", " ],\n", @@ -1091,7 +1140,7 @@ " \"perProperty\": [\n", " {\n", " \"name\": \"band_gaps:direct\",\n", - " \"score\": -0.5990544943416674,\n", + " \"score\": -0.5992750363271038,\n", " \"trainingError\": 1.8729260368583518\n", " },\n", " {\n", @@ -1124,6 +1173,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "efI91bkq2Qxh" @@ -1138,6 +1188,12 @@ "cell_type": "code", "execution_count": 18, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:43.708995Z", + "iopub.status.busy": "2023-06-21T01:36:43.707770Z", + "iopub.status.idle": "2023-06-21T01:36:44.755158Z", + "shell.execute_reply": "2023-06-21T01:36:44.755796Z" + }, "id": "c-LwLBpY2Qxh" }, "outputs": [], @@ -1149,6 +1205,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "UheWoZdU2Qxh" @@ -1161,6 +1218,12 @@ "cell_type": "code", "execution_count": 19, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:44.760765Z", + "iopub.status.busy": "2023-06-21T01:36:44.760077Z", + "iopub.status.idle": "2023-06-21T01:36:45.562357Z", + "shell.execute_reply": "2023-06-21T01:36:45.562997Z" + }, "id": "C7esLsJC2Qxh" }, "outputs": [], @@ -1169,6 +1232,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "pwMJ2FXR2Qxi" @@ -1184,6 +1248,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:36:45.568519Z", + "iopub.status.busy": "2023-06-21T01:36:45.567724Z", + "iopub.status.idle": "2023-06-21T01:36:56.731554Z", + "shell.execute_reply": "2023-06-21T01:36:56.730872Z" + }, "id": "2psMosZs2Qxi", "outputId": "3892222c-1f00-4d83-d5b7-83195af3ec5a" }, @@ -1196,12 +1266,12 @@ "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:32 | 1 | 0 | 0 | 0 |\n", + "| 2023-06-20-21:36:46 | 1 | 0 | 0 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "+---------------------+------------------+---------------+-----------------+----------------+\n", "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-13:57:43 | 0 | 0 | 1 | 0 |\n", + "| 2023-06-20-21:36:56 | 0 | 0 | 1 | 0 |\n", "+---------------------+------------------+---------------+-----------------+----------------+\n" ] } @@ -1211,6 +1281,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "eSozkejF2Qxi" @@ -1225,6 +1296,12 @@ "cell_type": "code", "execution_count": 21, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:56.736168Z", + "iopub.status.busy": "2023-06-21T01:36:56.735482Z", + "iopub.status.idle": "2023-06-21T01:36:57.468622Z", + "shell.execute_reply": "2023-06-21T01:36:57.469225Z" + }, "id": "oI_xESvQ2Qxi" }, "outputs": [], @@ -1234,6 +1311,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "xAcQrMz02Qxi" @@ -1248,6 +1326,12 @@ "cell_type": "code", "execution_count": 22, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:36:57.475895Z", + "iopub.status.busy": "2023-06-21T01:36:57.475090Z", + "iopub.status.idle": "2023-06-21T01:36:57.477295Z", + "shell.execute_reply": "2023-06-21T01:36:57.478013Z" + }, "id": "8tInR6TY2Qxi" }, "outputs": [], @@ -1262,6 +1346,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "EiwiUrqZ2Qxi" @@ -1280,6 +1365,12 @@ "base_uri": "https://localhost:8080/", "height": 57 }, + "execution": { + "iopub.execute_input": "2023-06-21T01:36:57.483902Z", + "iopub.status.busy": "2023-06-21T01:36:57.482731Z", + "iopub.status.idle": "2023-06-21T01:36:58.144469Z", + "shell.execute_reply": "2023-06-21T01:36:58.145034Z" + }, "id": "aMKkorTl2Qxi", "outputId": "e93d96bf-68b6-4e97-baf5-b1fc78a1dacb" }, @@ -1288,30 +1379,28 @@ "data": { "text/html": [ "\n", + " }
ID NAME FORMULA EXABYTE-ID DIRECT-GAP INDIRECT-GAP
\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
ID NAME FORMULA EXABYTE-ID DIRECT-GAP INDIRECT-GAP
0T3ehZ7QzHoaeNGzScmp-32Gets2ghFDZLBrKPiQaN1.0700000.4650000HkgdoLcyp8e8wqzeSmp-32Gets2ghFDZLBrKPiQaN1.0700000.465000
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 23, - "metadata": { - "tags": [] - }, + "execution_count": 1, + "metadata": {}, "output_type": "execute_result" } ], diff --git a/examples/job/ml-train-model-predict-properties.py b/examples/job/ml-train-model-predict-properties.py index 79aedb47..4946a334 100644 --- a/examples/job/ml-train-model-predict-properties.py +++ b/examples/job/ml-train-model-predict-properties.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# This example demonstrates how to use Exabyte RESTful API to build a machine learning (ML) model for a set of materials called "train materials" and use the model to predict properties of another set called "target materials". The general approach can work for multiple properties, we use the Electronic Band Gap in this example. +# This example demonstrates how to use Mat3ra RESTful API to build a machine learning (ML) model for a set of materials called "train materials" and use the model to predict properties of another set called "target materials". The general approach can work for multiple properties, we use the Electronic Band Gap in this example. # # # @@ -24,12 +24,12 @@ # # ## Pre-requisites # -# The explanation below assumes that the reader is familiar with the concepts used in Exabyte platform and RESTful API. We outline these below and direct the reader to the original sources of information: +# The explanation below assumes that the reader is familiar with the concepts used in Mat3ra platform and RESTful API. We outline these below and direct the reader to the original sources of information: # # - [Generating RESTful API authentication parameters](../system/get_authentication_params.ipynb) # - [Importing materials from materials project](../material/import_materials_from_materialsproject.ipynb) # - [Creating and submitting jobs](./create_and_submit_job.ipynb) -# - [Running DFT calculations](./dft-band-gaps-calculation.ipynb) +# - [Running DFT calculations](./run-simulations-and-extract-properties.ipynb) # # Complete Authorization Form and Initialize Settings # @@ -37,15 +37,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -53,24 +53,32 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # # Imports -# In[]: +# In[ ]: import time from IPython.display import IFrame # Import settings file and utils file -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY -from utils.generic import dataframe_to_html, copy_bank_workflow_by_system_name, wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, display_JSON +from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY +from examples.utils.generic import dataframe_to_html, copy_bank_workflow_by_system_name, wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, display_JSON import pandas as pd @@ -91,7 +99,7 @@ # - **TRAIN_MATERIALS_PROJECT_IDS**: a list of material IDs to train ML model based on # - **TARGET_MATERIALS_PROJECT_IDS**: a list of material IDs to predict the property for -# In[]: +# In[ ]: TRAIN_MATERIALS_PROJECT_IDS = ["mp-149", "mp-978534"] # Si, SiGe @@ -104,7 +112,7 @@ # # - **JOB_NAME_PREFIX**: prefix to be used for the job name with "{JOB_NAME_PREFIX} {FORMULA}" convention (e.g. "Job Name Prefix - SiGe") -# In[]: +# In[ ]: JOB_NAME_PREFIX = "Job Name Prefix" @@ -112,7 +120,7 @@ # #### Compute # -# Setup compute parameters. See [this](https://docs.exabyte.io/infrastructure/compute-settings/ui) for more information about compute parameters. +# Setup compute parameters. See [this](https://docs.mat3ra.com/infrastructure/compute-settings/ui) for more information about compute parameters. # # - **NODES**: Number of nodes. Defaults to 1. # - **PPN**: Number of MPI processes per each node, Defaults to 1. @@ -120,7 +128,7 @@ # - **TIME_LIMIT**: Job walltime. Defaults to "01:00:00" (one hour). # - **CLUSTER**: The full qualified domain name (FQDN) or alias of the cluster to submit the jobs into. -# In[]: +# In[ ]: PPN = "1" @@ -132,7 +140,7 @@ # ### Initialize the endpoints -# In[]: +# In[ ]: job_endpoints = JobEndpoints(*ENDPOINT_ARGS) @@ -143,9 +151,9 @@ raw_property_endpoints = RawPropertiesEndpoints(*ENDPOINT_ARGS) -# Retrieve the owner and project IDs as they are needed by the endpoints. The default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.exabyte.io/entities-general/overview/). +# Retrieve the owner and project IDs as they are needed by the endpoints. The default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.mat3ra.com/entities-general/overview/). -# In[]: +# In[ ]: owner_id = material_endpoints.list({"isDefault": True, "owner._id": ACCOUNT_ID})[0]["owner"]["_id"] @@ -156,7 +164,7 @@ # # Copy "ML: Train Model" and "Band Gap" bank workflows to the account's workflows. We use exabyte bank workflows which are identified by "systemName" field. The below can be adjusted to get the bank workflows by ID. -# In[]: +# In[ ]: band_gap_workflow_id = copy_bank_workflow_by_system_name(bank_workflow_endpoints, "espresso-band-gap", owner_id) @@ -167,7 +175,7 @@ # # Import materials from materials project. -# In[]: +# In[ ]: train_materials = material_endpoints.import_from_materialsproject(MATERIALS_PROJECT_API_KEY, TRAIN_MATERIALS_PROJECT_IDS, owner_id) @@ -178,7 +186,7 @@ # # Create jobs for the "train materials". -# In[]: +# In[ ]: compute = job_endpoints.get_compute(CLUSTER, PPN, NODES, QUEUE, TIME_LIMIT) @@ -187,7 +195,7 @@ # Submit the jobs for execution. -# In[]: +# In[ ]: for job in jobs: job_endpoints.submit(job["_id"]) @@ -195,7 +203,7 @@ # Monitor the jobs and print the status until they are all finished. -# In[]: +# In[ ]: job_ids = [job["_id"] for job in jobs] @@ -206,7 +214,7 @@ # # Create ML Train job for the train materials. -# In[]: +# In[ ]: name = "-".join((JOB_NAME_PREFIX, "train")) @@ -217,7 +225,7 @@ # Submit the train job for execution. -# In[]: +# In[ ]: job_endpoints.submit(job["_id"]) @@ -225,7 +233,7 @@ # Monitor the job and print the status until it is done. -# In[]: +# In[ ]: wait_for_jobs_to_finish(job_endpoints, [job["_id"]]) @@ -235,7 +243,7 @@ # # The resulting trained model is extracted from the last unit (train with index 4) of the first job's subworkflow (ML: Train Model with index 0) and is further referred to as "ML predict workflow". -# In[]: +# In[ ]: ml_predict_workflow = get_property_by_subworkow_and_unit_indicies(raw_property_endpoints, "workflow:ml_predict", job, 0, 4)["data"] @@ -244,7 +252,7 @@ # Print ML predict workflow -# In[]: +# In[ ]: display_JSON(ml_predict_workflow) @@ -254,7 +262,7 @@ # # Create ML Predict job for the predict materials. -# In[]: +# In[ ]: name = "-".join((JOB_NAME_PREFIX, "predict")) @@ -265,7 +273,7 @@ # Submit the predict job for execution. -# In[]: +# In[ ]: job_endpoints.submit(job["_id"]) @@ -273,7 +281,7 @@ # Monitor the job and print the status until its done. -# In[]: +# In[ ]: wait_for_jobs_to_finish(job_endpoints, [job["_id"]]) @@ -283,7 +291,7 @@ # # Predicted properties are extracted from the last unit (score with index 3) of the first job's subworkflow (ml_predict_subworkflow with index 0). -# In[]: +# In[ ]: @@ -294,7 +302,7 @@ # # The below for-loop iterates over the results and flatten them to form the final Pandas dataFrame. -# In[]: +# In[ ]: table = [] @@ -310,10 +318,11 @@ # # Create and print the final table as Pandas dataFrame. -# In[]: +# In[ ]: headers = ["ID", "NAME", "FORMULA", "EXABYTE-ID", "DIRECT-GAP", "INDIRECT-GAP"] df = pd.DataFrame(data=table, columns=headers) html = dataframe_to_html(df) html + diff --git a/examples/job/run-simulations-and-extract-properties.ipynb b/examples/job/run-simulations-and-extract-properties.ipynb index 63ca34c7..f19b8177 100644 --- a/examples/job/run-simulations-and-extract-properties.ipynb +++ b/examples/job/run-simulations-and-extract-properties.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "pe8t1uEoGuQL" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "XZhBV89lGuQN" @@ -19,11 +21,11 @@ "source": [ "# Run Simulations and Extract Properties\n", "\n", - "This example demonstrates how to use Exabyte RESTful API to create simulation [Jobs](https://docs.exabyte.io/jobs/overview/) programmatically for multiple [Materials](https://docs.exabyte.io/materials/overview/) at once and extract the resulting [Properties](https://docs.exabyte.io/properties/overview/) forming a [Pandas](https://pandas.pydata.org/) dataframe.\n", + "This example demonstrates how to use Mat3ra RESTful API to create simulation [Jobs](https://docs.mat3ra.com/jobs/overview/) programmatically for multiple [Materials](https://docs.mat3ra.com/materials/overview/) at once and extract the resulting [Properties](https://docs.mat3ra.com/properties/overview/) forming a [Pandas](https://pandas.pydata.org/) dataframe.\n", "\n", - "This approach can work with any [Workflows](https://docs.exabyte.io/workflows/overview/). For the demonstration purpose we use the Density Functional Theory and extract Electronic Band Gap as the property of interest.\n", + "This approach can work with any [Workflows](https://docs.mat3ra.com/workflows/overview/). For the demonstration purpose we use the Density Functional Theory and extract Electronic Band Gap as the property of interest.\n", "\n", - "> **IMPORTANT NOTE**: In order to run this example in full, an active Exabyte.io account with access to VASP (Vienna ab-initio simulations package) is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for Quantum ESPRESSO, for example) and adjust extraction of the results (\"Extract results\" section). RESTful API credentials shall be updated in [settings](../settings.py).\n", + "> **IMPORTANT NOTE**: In order to run this example in full, an active Mat3ra.com account with access to VASP (Vienna ab-initio simulations package) is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for Quantum ESPRESSO, for example) and adjust extraction of the results (\"Extract results\" section). RESTful API credentials shall be updated in [settings](../settings.json).\n", "\n", "\n", "## Steps\n", @@ -32,19 +34,19 @@ "\n", "- Import materials from [materials project](https://materialsproject.org/)\n", "\n", - "- Group imported materials inside a [materials set](https://docs.exabyte.io/entities-general/sets/)\n", + "- Group imported materials inside a [materials set](https://docs.mat3ra.com/entities-general/sets/)\n", "\n", - "- Create jobs for the materials and grouping them inside a [jobs set](https://docs.exabyte.io/entities-general/sets/)\n", + "- Create jobs for the materials and grouping them inside a [jobs set](https://docs.mat3ra.com/entities-general/sets/)\n", "\n", "- Submit jobs and monitoring the progress\n", "\n", - "- Extract the [final structure](https://docs.exabyte.io/properties/structural/final-structure) (relaxed structure) and its properties\n", + "- Extract the [final structure](https://docs.mat3ra.com/properties/structural/final-structure) (relaxed structure) and its properties\n", "\n", "- Output the results as Pandas dataFrame\n", "\n", "## Pre-requisites\n", "\n", - "The explanation below assumes that the reader is familiar with the concepts used in Exabyte platform and RESTful API. We outline these below and direct the reader to the original sources of information:\n", + "The explanation below assumes that the reader is familiar with the concepts used in Mat3ra platform and RESTful API. We outline these below and direct the reader to the original sources of information:\n", "\n", "- [Generating RESTful API authentication parameters](../system/get_authentication_params.ipynb)\n", "- [Importing materials from materials project](../material/import_materials_from_materialsproject.ipynb)\n", @@ -52,6 +54,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "ML9cpWslGuQO" @@ -63,18 +66,18 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "cellView": "form", "colab": { @@ -83,34 +86,30 @@ "id": "tZDgVj8zGuQO", "outputId": "fd8048ca-7813-46fb-f340-49a306eaff0c" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'exabyte-api-examples'...\n", - "remote: Enumerating objects: 2469, done.\u001b[K\n", - "remote: Counting objects: 100% (435/435), done.\u001b[K\n", - "remote: Compressing objects: 100% (212/212), done.\u001b[K\n", - "remote: Total 2469 (delta 337), reused 310 (delta 223), pack-reused 2034\u001b[K\n", - "Receiving objects: 100% (2469/2469), 34.87 MiB | 32.38 MiB/s, done.\n", - "Resolving deltas: 100% (1399/1399), done.\n" - ] - } - ], + "outputs": [], "source": [ "#@title Authorization Form\n", "ACCOUNT_ID = \"ACCOUNT_ID\" #@param {type:\"string\"}\n", "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "jS3-0-VzGuQP" @@ -121,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "jC7WQVLkGuQP" }, @@ -131,9 +130,8 @@ "from IPython.display import IFrame\n", "\n", "# Import settings file and utils file\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY\n", - "from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html\n", + "from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY\n", + "from examples.utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html\n", "\n", "import pandas as pd\n", "\n", @@ -147,6 +145,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "8qFzDd1EGuQQ" @@ -155,13 +154,13 @@ "#### Materials\n", "\n", "- **MATERIALS_PROJECT_IDS**: a list of material IDs to be imported from materials project\n", - "- **TAGS**: a list of [tags](https://docs.exabyte.io/entities-general/data/#tags) to assign to imported materials\n", + "- **TAGS**: a list of [tags](https://docs.mat3ra.com/entities-general/data/#tags) to assign to imported materials\n", "- **MATERIALS_SET_NAME**: the name of the materials set\n" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "id": "GrESpSt6GuQQ" }, @@ -173,6 +172,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "tN2FjWMTGuQR" @@ -188,7 +188,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "id": "7PK1884mGuQR" }, @@ -199,6 +199,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "2SL1nNOBGuQS" @@ -206,23 +207,29 @@ "source": [ "#### Workflow\n", "\n", - "This example is based on [this](https://platform.exabyte.io/analytics/workflows/56xDyXsPMNJ7cF9nv) bank workflow which is later copied to the account workflows collection. The workflow is named \"D3-GGA-BS-BG-DOS-ALL\" and utilizes the logic explained in https://arxiv.org/pdf/1808.05325.pdf, for example (see section \"Methodology\", Table I). \"D3\" indicates the difficulty level 3 per the table convention. BS, BG, DOS indicate the properties extracted - Band Structure, Band Gap, Density of States. The workflow is utilizing VASP simulation engine at version 5.4.4." + "This example is based on [this](https://platform.mat3ra.com/bank/workflows/tPiF5dBQrY8pnik8r) bank workflow which is later copied to the account workflows collection. The workflow is named \"D3-GGA-BS-BG-DOS-ALL\" and utilizes the logic explained in https://arxiv.org/pdf/1808.05325.pdf, for example (see section \"Methodology\", Table I). \"D3\" indicates the difficulty level 3 per the table convention. BS, BG, DOS indicate the properties extracted - Band Structure, Band Gap, Density of States. The workflow is utilizing VASP simulation engine at version 5.4.4." ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "63K2z5V_GuQS" }, "outputs": [], "source": [ - "BANK_WORKFLOW_ID = \"56xDyXsPMNJ7cF9nv\"" + "BANK_WORKFLOW_ID = \"tPiF5dBQrY8pnik8r\"" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -231,38 +238,15 @@ "id": "K6IVdeN0GuQS", "outputId": "0f805c5b-0608-4af7-f8d8-914026559dab" }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": { - "tags": [] - }, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Visualize the bank workflow below\n", "# NOTE: might not be rendered on Github\n", - "IFrame(\"https://platform.exabyte.io/analytics/workflows/{}\".format(BANK_WORKFLOW_ID), width=900, height=650)" + "IFrame(\"https://platform.mat3ra.com/analytics/workflows/{}\".format(BANK_WORKFLOW_ID), width=900, height=650)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "_bRgarl3GuQT" @@ -270,7 +254,7 @@ "source": [ "#### Compute\n", "\n", - "Setup compute parameters. See [this](https://docs.exabyte.io/infrastructure/compute-settings/ui) for more information about compute parameters.\n", + "Setup compute parameters. See [this](https://docs.mat3ra.com/infrastructure/compute-settings/ui) for more information about compute parameters.\n", "\n", "- **NODES**: Number of nodes. Defaults to 1.\n", "- **PPN**: Number of MPI processes per each node, Defaults to 1.\n", @@ -285,7 +269,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "id": "_81ZxEGSGuQT" }, @@ -299,6 +283,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "VeUh62vmGuQU" @@ -309,7 +294,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "id": "PDHqVPGsGuQU" }, @@ -323,17 +308,18 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "3-OhxFHxGuQU" }, "source": [ - "Next, we retrieve the owner and project IDs as they are needed by the endpoints. Account's default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.exabyte.io/entities-general/overview/)." + "Next, we retrieve the owner and project IDs as they are needed by the endpoints. Account's default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.mat3ra.com/entities-general/overview/)." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "id": "thRoaKNlGuQU" }, @@ -344,6 +330,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "BR22VXZQGuQU" @@ -356,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "id": "RA7-aPNmGuQU" }, @@ -366,6 +353,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "FNVGdNhaGuQU" @@ -378,7 +366,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "id": "4b2k3-9BGuQV" }, @@ -388,6 +376,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "sb1JK5NNGuQV" @@ -398,7 +387,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "id": "sj5Hsk-8GuQV" }, @@ -409,6 +398,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "PSVqliqZGuQV" @@ -421,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "id": "hqlJVk6-GuQV" }, @@ -432,6 +422,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "xJZsmyetGuQV" @@ -442,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "id": "bem3lHjPGuQV" }, @@ -453,6 +444,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "dWzkeaCmGuQW" @@ -463,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "id": "ah5gvnQdGuQW" }, @@ -473,6 +465,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "UYvSw8PCGuQW" @@ -483,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -491,761 +484,14 @@ "id": "DBbJH6rhGuQW", "outputId": "8a4c5707-aa42-4daf-8ee5-d201ae9d00ac" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wait for jobs to finish, poll interval: 10 sec\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:07:24 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:07:34 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:07:45 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:07:55 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:08:06 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:08:16 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:08:26 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:08:37 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:08:47 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:08:58 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:09:08 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:09:19 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:09:29 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:09:39 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:09:50 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:10:00 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:10:11 | 2 | 0 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:10:21 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:10:32 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:10:42 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:10:52 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:11:03 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:11:13 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:11:24 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:11:34 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:11:45 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:11:55 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:12:05 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:12:16 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:12:26 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:12:37 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:12:47 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:12:57 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:13:08 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:13:18 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:13:29 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:13:39 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:13:50 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:14:00 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:14:10 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:14:21 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:14:31 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:14:42 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:14:52 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:15:03 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:15:13 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:15:23 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:15:34 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:15:44 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:15:55 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:16:05 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:16:15 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:16:26 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:16:36 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:16:47 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:16:57 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:17:07 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:17:18 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:17:28 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:17:39 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:17:49 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:18:00 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:18:10 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:18:20 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:18:31 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:18:41 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:18:52 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:19:02 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:19:13 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:19:23 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:19:34 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:19:44 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:19:54 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:20:05 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:20:15 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:20:26 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:20:36 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:20:46 | 1 | 1 | 0 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:20:57 | 1 | 0 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:21:07 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:21:18 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:21:28 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:21:39 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:21:49 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:21:59 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:22:10 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:22:20 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:22:31 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:22:41 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:22:51 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:23:02 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:23:12 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:23:23 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:23:33 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:23:44 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:23:54 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:24:04 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:24:15 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:24:25 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:24:36 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:24:46 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:24:56 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:25:07 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:25:17 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:25:28 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:25:38 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:25:49 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:25:59 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:26:09 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:26:20 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:26:30 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:26:41 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:26:51 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:27:02 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:27:12 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:27:22 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:27:33 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:27:43 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:27:54 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:28:04 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:28:15 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:28:25 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:28:35 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:28:46 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:28:56 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:29:07 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:29:17 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:29:27 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:29:38 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:29:48 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:29:59 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:30:09 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:30:19 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:30:30 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:30:40 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:30:51 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:31:01 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:31:12 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:31:22 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:31:32 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:31:43 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:31:53 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:32:04 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:32:14 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:32:25 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:32:35 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:32:45 | 0 | 1 | 1 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n", - "| TIME | SUBMITTED-JOBS | ACTIVE-JOBS | FINISHED-JOBS | ERRORED-JOBS |\n", - "+=====================+==================+===============+=================+================+\n", - "| 2021-07-12-17:32:56 | 0 | 0 | 2 | 0 |\n", - "+---------------------+------------------+---------------+-----------------+----------------+\n" - ] - } - ], + "outputs": [], "source": [ "job_ids = [job[\"_id\"] for job in jobs]\n", "wait_for_jobs_to_finish(job_endpoints, job_ids)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "EVs2s18ZGuQW" @@ -1262,7 +508,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "id": "d3f4eoHBGuQW" }, @@ -1286,6 +532,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "LHstXQ31GuQW" @@ -1298,7 +545,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "id": "1k1GV4T4GuQX" }, @@ -1313,6 +560,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "uMo__G6uGuQX" @@ -1330,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "id": "NWYQp88JGuQX" }, @@ -1344,6 +592,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "7X7ktN5bGuQX" @@ -1354,7 +603,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -1363,81 +612,7 @@ "id": "RUnmEZOKGuQX", "outputId": "3ab8a262-070e-407f-ced5-f1baf68fc2cf" }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
INI-ID INI-NAME INI-TAGS INI-NS INI-LAT-A INI-LAT-B INI-LAT-C INI-LAT-ALPHA INI-LAT-BETA INI-LAT-GAMMA FIN-ID FIN-NAME FIN-TAGS FIN-NS FIN-LAT-A FIN-LAT-B FIN-LAT-C FIN-LAT-ALPHA FIN-LAT-BETA FIN-LAT-GAMMA PRESSURE DIRECT-GAP INDIRECT-GAP
0eBjSG5CdjLDiLKg3Hmp-149tag1, tag2, Silicon (O-doped), Silicon hydride (1/0.5), Silicon - diamond phase, Silicon - type I-clathrate, Silicon, High pressure experimental phase, Silicon - cubic diamond form23.8669753.8669753.866975606060eBjSG5CdjLDiLKg3Hmp-149tag1, tag2, Silicon (O-doped), Silicon hydride (1/0.5), Silicon - diamond phase, Silicon - type I-clathrate, Silicon, High pressure experimental phase, Silicon - cubic diamond form23.8669753.8669753.866975606060-0.7400002.5302000.548500
1TEstgbia2WLantJEGmp-32tag1, tag2, Silicon (O-doped), Silicon hydride (1/0.5), Silicon - diamond phase, Silicon - type I-clathrate, Silicon, High pressure experimental phase, Silicon - cubic diamond form, Germanium - A4, Germanium24.0749594.0749594.074959606060TEstgbia2WLantJEGmp-32tag1, tag2, Silicon (O-doped), Silicon hydride (1/0.5), Silicon - diamond phase, Silicon - type I-clathrate, Silicon, High pressure experimental phase, Silicon - cubic diamond form, Germanium - A4, Germanium24.0749594.0749594.074959606060-0.5900000.0000000.000000
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": { - "tags": [] - }, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = pd.DataFrame(data=table, columns=headers)\n", "html = dataframe_to_html(df)\n", diff --git a/examples/job/run-simulations-and-extract-properties.py b/examples/job/run-simulations-and-extract-properties.py index d5f75e50..c1569c32 100644 --- a/examples/job/run-simulations-and-extract-properties.py +++ b/examples/job/run-simulations-and-extract-properties.py @@ -1,17 +1,17 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Run Simulations and Extract Properties # -# This example demonstrates how to use Exabyte RESTful API to create simulation [Jobs](https://docs.exabyte.io/jobs/overview/) programmatically for multiple [Materials](https://docs.exabyte.io/materials/overview/) at once and extract the resulting [Properties](https://docs.exabyte.io/properties/overview/) forming a [Pandas](https://pandas.pydata.org/) dataframe. +# This example demonstrates how to use Mat3ra RESTful API to create simulation [Jobs](https://docs.mat3ra.com/jobs/overview/) programmatically for multiple [Materials](https://docs.mat3ra.com/materials/overview/) at once and extract the resulting [Properties](https://docs.mat3ra.com/properties/overview/) forming a [Pandas](https://pandas.pydata.org/) dataframe. # -# This approach can work with any [Workflows](https://docs.exabyte.io/workflows/overview/). For the demonstration purpose we use the Density Functional Theory and extract Electronic Band Gap as the property of interest. +# This approach can work with any [Workflows](https://docs.mat3ra.com/workflows/overview/). For the demonstration purpose we use the Density Functional Theory and extract Electronic Band Gap as the property of interest. # -# > **IMPORTANT NOTE**: In order to run this example in full, an active Exabyte.io account with access to VASP (Vienna ab-initio simulations package) is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for Quantum ESPRESSO, for example) and adjust extraction of the results ("Extract results" section). RESTful API credentials shall be updated in [settings](../settings.py). +# > **IMPORTANT NOTE**: In order to run this example in full, an active Mat3ra.com account with access to VASP (Vienna ab-initio simulations package) is required. Alternatively, Readers may substitute the workflow ID below with another one (an equivalent one for Quantum ESPRESSO, for example) and adjust extraction of the results ("Extract results" section). RESTful API credentials shall be updated in [settings](../settings.json). # # # ## Steps @@ -20,19 +20,19 @@ # # - Import materials from [materials project](https://materialsproject.org/) # -# - Group imported materials inside a [materials set](https://docs.exabyte.io/entities-general/sets/) +# - Group imported materials inside a [materials set](https://docs.mat3ra.com/entities-general/sets/) # -# - Create jobs for the materials and grouping them inside a [jobs set](https://docs.exabyte.io/entities-general/sets/) +# - Create jobs for the materials and grouping them inside a [jobs set](https://docs.mat3ra.com/entities-general/sets/) # # - Submit jobs and monitoring the progress # -# - Extract the [final structure](https://docs.exabyte.io/properties/structural/final-structure) (relaxed structure) and its properties +# - Extract the [final structure](https://docs.mat3ra.com/properties/structural/final-structure) (relaxed structure) and its properties # # - Output the results as Pandas dataFrame # # ## Pre-requisites # -# The explanation below assumes that the reader is familiar with the concepts used in Exabyte platform and RESTful API. We outline these below and direct the reader to the original sources of information: +# The explanation below assumes that the reader is familiar with the concepts used in Mat3ra platform and RESTful API. We outline these below and direct the reader to the original sources of information: # # - [Generating RESTful API authentication parameters](../system/get_authentication_params.ipynb) # - [Importing materials from materials project](../material/import_materials_from_materialsproject.ipynb) @@ -44,15 +44,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -60,24 +60,32 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # ### Import packages -# In[]: +# In[ ]: import time from IPython.display import IFrame # Import settings file and utils file -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY -from utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html +from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID, MATERIALS_PROJECT_API_KEY +from examples.utils.generic import wait_for_jobs_to_finish, get_property_by_subworkow_and_unit_indicies, dataframe_to_html import pandas as pd @@ -93,11 +101,11 @@ # #### Materials # # - **MATERIALS_PROJECT_IDS**: a list of material IDs to be imported from materials project -# - **TAGS**: a list of [tags](https://docs.exabyte.io/entities-general/data/#tags) to assign to imported materials +# - **TAGS**: a list of [tags](https://docs.mat3ra.com/entities-general/data/#tags) to assign to imported materials # - **MATERIALS_SET_NAME**: the name of the materials set # -# In[]: +# In[ ]: MATERIALS_PROJECT_IDS = ["mp-149", "mp-32"] # Si and Ge @@ -112,7 +120,7 @@ # - **JOB_NAME_PREFIX**: prefix to be used for the job name with "{JOB_NAME_PREFIX} {FORMULA}" convention (e.g. "Job Name Prefix - SiGe") # - **JOBS_SET_NAME**: the name of the jobs set -# In[]: +# In[ ]: JOB_NAME_PREFIX = "Job Name Prefix" @@ -121,25 +129,27 @@ # #### Workflow # -# This example is based on [this](https://platform.exabyte.io/analytics/workflows/56xDyXsPMNJ7cF9nv) bank workflow which is later copied to the account workflows collection. The workflow is named "D3-GGA-BS-BG-DOS-ALL" and utilizes the logic explained in https://arxiv.org/pdf/1808.05325.pdf, for example (see section "Methodology", Table I). "D3" indicates the difficulty level 3 per the table convention. BS, BG, DOS indicate the properties extracted - Band Structure, Band Gap, Density of States. The workflow is utilizing VASP simulation engine at version 5.4.4. +# This example is based on [this](https://platform.mat3ra.com/bank/workflows/tPiF5dBQrY8pnik8r) bank workflow which is later copied to the account workflows collection. The workflow is named "D3-GGA-BS-BG-DOS-ALL" and utilizes the logic explained in https://arxiv.org/pdf/1808.05325.pdf, for example (see section "Methodology", Table I). "D3" indicates the difficulty level 3 per the table convention. BS, BG, DOS indicate the properties extracted - Band Structure, Band Gap, Density of States. The workflow is utilizing VASP simulation engine at version 5.4.4. + +# -# In[]: +# In[ ]: -BANK_WORKFLOW_ID = "56xDyXsPMNJ7cF9nv" +BANK_WORKFLOW_ID = "tPiF5dBQrY8pnik8r" -# In[]: +# In[ ]: # Visualize the bank workflow below # NOTE: might not be rendered on Github -IFrame("https://platform.exabyte.io/analytics/workflows/{}".format(BANK_WORKFLOW_ID), width=900, height=650) +IFrame("https://platform.mat3ra.com/analytics/workflows/{}".format(BANK_WORKFLOW_ID), width=900, height=650) # #### Compute # -# Setup compute parameters. See [this](https://docs.exabyte.io/infrastructure/compute-settings/ui) for more information about compute parameters. +# Setup compute parameters. See [this](https://docs.mat3ra.com/infrastructure/compute-settings/ui) for more information about compute parameters. # # - **NODES**: Number of nodes. Defaults to 1. # - **PPN**: Number of MPI processes per each node, Defaults to 1. @@ -151,7 +161,7 @@ # # > **NOTE**: Although here we set the QUEUE to be debug, it is possible the job might run out of memory, and result in an Errored-Jobs status. If this happens, we suggest you switch from `QUEUE = D` to `QUEUE = OR` to avoid memory limitations. -# In[]: +# In[ ]: PPN = "1" @@ -163,7 +173,7 @@ # ### Initialize endpoints -# In[]: +# In[ ]: job_endpoints = JobEndpoints(*ENDPOINT_ARGS) @@ -173,9 +183,9 @@ bank_workflow_endpoints = BankWorkflowEndpoints(*ENDPOINT_ARGS) -# Next, we retrieve the owner and project IDs as they are needed by the endpoints. Account's default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.exabyte.io/entities-general/overview/). +# Next, we retrieve the owner and project IDs as they are needed by the endpoints. Account's default material is used to extract the owner ID. One can extract the owner ID from any other account's [entities](https://docs.mat3ra.com/entities-general/overview/). -# In[]: +# In[ ]: owner_id = material_endpoints.list({"isDefault": True, "owner._id": ACCOUNT_ID})[0]["owner"]["_id"] @@ -186,7 +196,7 @@ # # Copy bank workflow (template) to the account's workflows collection. -# In[]: +# In[ ]: workflow_id = bank_workflow_endpoints.copy(BANK_WORKFLOW_ID, owner_id)["_id"] @@ -196,7 +206,7 @@ # # Import materials from materials project with the above tags. -# In[]: +# In[ ]: materials = material_endpoints.import_from_materialsproject(MATERIALS_PROJECT_API_KEY, MATERIALS_PROJECT_IDS, owner_id, TAGS) @@ -204,7 +214,7 @@ # Create a materials set and move the materials into it. -# In[]: +# In[ ]: materials_set = material_endpoints.create_set({"name": MATERIALS_SET_NAME, "owner": {"_id": owner_id}}) @@ -215,7 +225,7 @@ # # Create jobs for the materials above. -# In[]: +# In[ ]: compute = job_endpoints.get_compute(CLUSTER, PPN, NODES, QUEUE, TIME_LIMIT) @@ -224,7 +234,7 @@ # Create a jobs set and move the jobs into it. -# In[]: +# In[ ]: jobs_set = job_endpoints.create_set({"name": JOBS_SET_NAME, "projectId": project_id, "owner": {"_id": owner_id}}) @@ -233,7 +243,7 @@ # Submit the jobs for execution. -# In[]: +# In[ ]: for job in jobs: job_endpoints.submit(job["_id"]) @@ -241,7 +251,7 @@ # Monitor the jobs and print the status until they are all finished. -# In[]: +# In[ ]: job_ids = [job["_id"] for job in jobs] @@ -256,7 +266,7 @@ # # - Band gaps are extracted from the second unit (vasp-bands with index 1) of the second job's subworkflow (SCF-BS-BG-DOS with index 1). -# In[]: +# In[ ]: results = [] @@ -280,7 +290,7 @@ # # The below for-loop iterates over the results and flatten them to form the final Pandas dataFrame. -# In[]: +# In[ ]: table = [] @@ -300,7 +310,7 @@ # - **"N-SITES"**: Number of Sites # - **"LAT"**: LATTICE -# In[]: +# In[ ]: headers = [] @@ -312,9 +322,10 @@ # Create and print the final table as Pandas dataFrame. -# In[]: +# In[ ]: df = pd.DataFrame(data=table, columns=headers) html = dataframe_to_html(df) html + diff --git a/examples/material/api_interoperability_showcase.ipynb b/examples/material/api_interoperability_showcase.ipynb index 1f5c60bf..d539aed4 100644 --- a/examples/material/api_interoperability_showcase.ipynb +++ b/examples/material/api_interoperability_showcase.ipynb @@ -1,16 +1,18 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "id": "matched-portal", "metadata": {}, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "id": "civilian-stuart", "metadata": { @@ -21,10 +23,11 @@ "\n", "This example was created as part of our [Advanced Topics Webinar](https://www.youtube.com/watch?v=psSFC409jSg) on February 19, 2021. This webinar focused on explaining our API in detail, and provided examples of many areas of its functionality.\n", "\n", - "In this notebook, we showcase a major advantage of APIs: interoperability. We begin by performing a query using the [Materials Project](https://materialsproject.org) API for all systems containing Iron and Oxygen. We then filter our results (for demonstraiton purposes, we keep only the first 10 materials found). Finally, we upload our results to the Exabyte platform, where further calculations could be performed to characterize these materials." + "In this notebook, we showcase a major advantage of APIs: interoperability. We begin by performing a query using the [Materials Project](https://materialsproject.org) API for all systems containing Iron and Oxygen. We then filter our results (for demonstraiton purposes, we keep only the first 10 materials found). Finally, we upload our results to the Mat3ra platform, where further calculations could be performed to characterize these materials." ] }, { + "attachments": {}, "cell_type": "markdown", "id": "numerical-geneva", "metadata": { @@ -37,13 +40,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -52,6 +55,12 @@ "id": "infectious-cabin", "metadata": { "cellView": "form", + "execution": { + "iopub.execute_input": "2023-06-21T01:33:13.363927Z", + "iopub.status.busy": "2023-06-21T01:33:13.362884Z", + "iopub.status.idle": "2023-06-21T01:33:13.366000Z", + "shell.execute_reply": "2023-06-21T01:33:13.366928Z" + }, "id": "infectious-cabin" }, "outputs": [], @@ -61,13 +70,23 @@ "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "id": "welcome-supplement", "metadata": { @@ -82,21 +101,36 @@ "execution_count": 2, "id": "owned-fitness", "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:13.372034Z", + "iopub.status.busy": "2023-06-21T01:33:13.371196Z", + "iopub.status.idle": "2023-06-21T01:33:14.008503Z", + "shell.execute_reply": "2023-06-21T01:33:14.007744Z" + }, "id": "owned-fitness" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "from utils.generic import display_JSON\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY\n", + "from examples.utils.generic import display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY\n", "\n", "import ase.io\n", - "import pymatgen\n", + "from pymatgen.ext.matproj import MPRester\n", "\n", "from exabyte_api_client.endpoints.materials import MaterialEndpoints" ] }, { + "attachments": {}, "cell_type": "markdown", "id": "consecutive-limit", "metadata": { @@ -109,6 +143,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "id": "mediterranean-consciousness", "metadata": { @@ -123,6 +158,12 @@ "execution_count": 3, "id": "fourth-juvenile", "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:14.016390Z", + "iopub.status.busy": "2023-06-21T01:33:14.015118Z", + "iopub.status.idle": "2023-06-21T01:33:18.567092Z", + "shell.execute_reply": "2023-06-21T01:33:18.566286Z" + }, "id": "fourth-juvenile" }, "outputs": [ @@ -130,18 +171,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "['mp-1271295', 'mp-1271693', 'mp-1096950', 'mp-136', 'mp-13', 'mp-1194030', 'mp-150', 'mp-568345', 'mp-1245108', 'mp-1271562', 'mvc-12039', 'mp-19306', 'mp-650112', 'mp-849689', 'mp-754765', 'mp-1178239', 'mvc-12063', 'mp-1244869', 'mp-1456', 'mp-715276', 'mp-530048', 'mp-18731', 'mp-1245154', 'mp-505595', 'mp-1181334', 'mp-1279742', 'mp-1078361', 'mp-705753', 'mp-1184320', 'mp-540003', 'mvc-12204', 'mp-611817', 'mp-1245078', 'mp-759504', 'mp-716814', 'mp-715572', 'mp-1283030', 'mp-706875', 'mp-1224936', 'mp-1104628', 'mp-530050', 'mp-1147691', 'mp-1068212', 'mp-1277436', 'mp-1178232', 'mp-753682', 'mvc-14925', 'mp-715333', 'mp-1182503', 'mp-705588', 'mp-850222', 'mp-1181546', 'mp-510080', 'mp-1188678', 'mp-1182229', 'mp-1244983', 'mp-776606', 'mvc-5967', 'mp-1181340', 'mp-716052', 'mp-759037', 'mp-1245001', 'mp-705551', 'mvc-11993', 'mp-1245277', 'mp-705424', 'mp-1181437', 'mp-705414', 'mvc-12125', 'mp-764326', 'mp-25236', 'mp-1245084', 'mp-1097003', 'mp-715262', 'mp-1178392', 'mp-714904', 'mp-1225001', 'mp-757565', 'mvc-13234', 'mp-863316', 'mp-1181570', 'mp-705417', 'mp-1062652', 'mp-1225007', 'mp-1178247', 'mp-1291630', 'mp-756436', 'mp-1194978', 'mvc-11999', 'mp-715811', 'mp-32939', 'mp-715558', 'mvc-12005', 'mp-685153', 'mp-764417', 'mp-774295', 'mp-510746', 'mp-715275', 'mp-1181824', 'mp-1181813', 'mp-715614', 'mvc-10966', 'mp-715438', 'mp-705416', 'mvc-11541', 'mp-763787', 'mp-31770', 'mp-565814', 'mp-18905', 'mp-755189', 'mp-1185276', 'mp-542896', 'mp-1205415', 'mp-25332', 'mp-705555', 'mp-1181411', 'mp-1244911', 'mp-1245168', 'mp-776135', 'mvc-12205', 'mp-1205429', 'mp-1181766', 'mp-705553', 'mp-756693', 'mp-1245019', 'mp-705558', 'mp-863766', 'mp-1195927', 'mp-1284941', 'mvc-15135', 'mp-694910', 'mp-1103327', 'mp-1182249', 'mp-557546', 'mp-612405', 'mvc-13181', 'mp-1224855', 'mp-510252', 'mp-705547', 'mp-1095382', 'mp-1192788', 'mp-19770', 'mvc-12905', 'mp-1181657', 'mp-1058623', 'mp-1009490', 'mp-1023923', 'mp-1056831', 'mp-1102442', 'mp-1065697', 'mp-1180008', 'mp-1180050', 'mp-1066100', 'mp-1057818', 'mp-12957', 'mp-1091399', 'mp-611836', 'mp-607540', 'mp-1056059', 'mp-560602', 'mp-1180036', 'mp-1180064', 'mp-610917', 'mp-1087546']\n" + "['mp-1271693', 'mp-136', 'mp-1271562', 'mp-1245108', 'mp-1096950', 'mp-1194030', 'mp-568345', 'mp-1271295', 'mp-13', 'mp-150', 'mp-540003', 'mp-1244911', 'mp-1181437', 'mp-705416', 'mp-764417', 'mp-1456', 'mp-32939', 'mp-1245078', 'mp-1103327', 'mp-763787', 'mp-1205415', 'mp-705555', 'mp-705588', 'mp-1062652', 'mp-705558', 'mp-715811', 'mvc-15135', 'mp-1068212', 'mp-1283030', 'mp-510252', 'mp-25332', 'mp-1224936', 'mp-849689', 'mp-1225007', 'mp-1244983', 'mp-1181411', 'mp-1195927', 'mp-530050', 'mvc-13234', 'mp-776135', 'mp-1279742', 'mp-715572', 'mp-1181334', 'mp-776606', 'mp-759037', 'mp-1245084', 'mp-1284941', 'mp-1188678', 'mp-1181657', 'mp-715614', 'mp-715558', 'mp-757565', 'mp-510080', 'mp-705424', 'mp-19770', 'mp-530048', 'mp-705414', 'mp-1095382', 'mp-1178247', 'mp-1194978', 'mp-650112', 'mp-505595', 'mp-756436', 'mp-557546', 'mvc-12205', 'mp-612405', 'mp-715276', 'mp-1178232', 'mvc-11541', 'mp-705753', 'mp-19306', 'mp-716814', 'mp-1291630', 'mp-715333', 'mp-542896', 'mp-1178239', 'mp-754765', 'mvc-12905', 'mp-1078361', 'mp-715262', 'mp-716052', 'mp-1178392', 'mp-1277436', 'mp-694910', 'mp-705553', 'mp-1224855', 'mvc-5967', 'mp-714904', 'mp-1182503', 'mp-1181766', 'mvc-10966', 'mp-1182229', 'mp-706875', 'mp-1181340', 'mp-25236', 'mp-1185276', 'mp-759504', 'mp-1245001', 'mp-510746', 'mvc-11999', 'mp-685153', 'mp-1205429', 'mp-1097003', 'mvc-13181', 'mp-1181570', 'mp-1245277', 'mp-715438', 'mvc-11993', 'mp-863766', 'mp-756693', 'mp-755189', 'mp-1245019', 'mp-565814', 'mvc-12204', 'mvc-12063', 'mvc-12125', 'mp-1181546', 'mp-863316', 'mp-705417', 'mp-1192788', 'mp-1245168', 'mp-705551', 'mp-18731', 'mvc-14925', 'mp-1184320', 'mvc-12039', 'mp-850222', 'mp-715275', 'mp-705547', 'mp-31770', 'mp-1244869', 'mp-611817', 'mp-1181813', 'mp-18905', 'mp-753682', 'mp-1225001', 'mp-764326', 'mp-1245154', 'mp-1182249', 'mvc-12005', 'mp-610917', 'mp-1091399', 'mp-1058623', 'mp-1180064', 'mp-1023923', 'mp-1102442', 'mp-560602', 'mp-1180036', 'mp-12957', 'mp-1087546', 'mp-1009490', 'mp-607540', 'mp-1056059', 'mp-1066100', 'mp-1056831', 'mp-1180008', 'mp-1180050', 'mp-611836', 'mp-1057818', 'mp-1065697']\n" ] } ], "source": [ - "materials_project_api = pymatgen.ext.matproj.MPRester(MATERIALS_PROJECT_API_KEY)\n", + "materials_project_api = MPRester(MATERIALS_PROJECT_API_KEY)\n", "iron_oxides_ids = materials_project_api.get_materials_ids(\"Fe-O\")\n", "\n", "print(iron_oxides_ids)" ] }, { + "attachments": {}, "cell_type": "markdown", "id": "subsequent-backing", "metadata": { @@ -160,6 +202,12 @@ "execution_count": 4, "id": "silver-luxembourg", "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:18.572159Z", + "iopub.status.busy": "2023-06-21T01:33:18.571336Z", + "iopub.status.idle": "2023-06-21T01:33:18.574063Z", + "shell.execute_reply": "2023-06-21T01:33:18.574568Z" + }, "id": "silver-luxembourg" }, "outputs": [ @@ -167,7 +215,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "['mp-1271295', 'mp-1271693', 'mp-1096950', 'mp-136', 'mp-13', 'mp-1194030', 'mp-150', 'mp-568345', 'mp-1245108', 'mp-1271562']\n" + "['mp-1271693', 'mp-136', 'mp-1271562', 'mp-1245108', 'mp-1096950', 'mp-1194030', 'mp-568345', 'mp-1271295', 'mp-13', 'mp-150']\n" ] } ], @@ -178,6 +226,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "id": "cathedral-vulnerability", "metadata": { @@ -186,7 +235,7 @@ "source": [ "# Bringing Materials Into the User Account\n", "\n", - "Now that we have filtered the results from Materials Project down to just 10 structures, we may want to study them further with the computational models provided by Exabyte. For example, we may be interested in leveraging a DFT code to find the structure with the largest band-gap, or perhaps we want to conduct a high-throughput screening of each material's surface energies." + "Now that we have filtered the results from Materials Project down to just 10 structures, we may want to study them further with the computational models provided by Mat3ra. For example, we may be interested in leveraging a DFT code to find the structure with the largest band-gap, or perhaps we want to conduct a high-throughput screening of each material's surface energies." ] }, { @@ -194,6 +243,12 @@ "execution_count": 5, "id": "broke-writing", "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:18.578968Z", + "iopub.status.busy": "2023-06-21T01:33:18.578176Z", + "iopub.status.idle": "2023-06-21T01:34:15.717822Z", + "shell.execute_reply": "2023-06-21T01:34:15.718318Z" + }, "id": "broke-writing" }, "outputs": [], @@ -204,6 +259,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "id": "alike-vegetable", "metadata": { @@ -218,6 +274,12 @@ "execution_count": 6, "id": "academic-samba", "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:34:15.723228Z", + "iopub.status.busy": "2023-06-21T01:34:15.722436Z", + "iopub.status.idle": "2023-06-21T01:34:24.356982Z", + "shell.execute_reply": "2023-06-21T01:34:24.356367Z" + }, "id": "academic-samba" }, "outputs": [], diff --git a/examples/material/api_interoperability_showcase.py b/examples/material/api_interoperability_showcase.py index f293edcb..3c817de1 100644 --- a/examples/material/api_interoperability_showcase.py +++ b/examples/material/api_interoperability_showcase.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # @@ -9,7 +9,7 @@ # # This example was created as part of our [Advanced Topics Webinar](https://www.youtube.com/watch?v=psSFC409jSg) on February 19, 2021. This webinar focused on explaining our API in detail, and provided examples of many areas of its functionality. # -# In this notebook, we showcase a major advantage of APIs: interoperability. We begin by performing a query using the [Materials Project](https://materialsproject.org) API for all systems containing Iron and Oxygen. We then filter our results (for demonstraiton purposes, we keep only the first 10 materials found). Finally, we upload our results to the Exabyte platform, where further calculations could be performed to characterize these materials. +# In this notebook, we showcase a major advantage of APIs: interoperability. We begin by performing a query using the [Materials Project](https://materialsproject.org) API for all systems containing Iron and Oxygen. We then filter our results (for demonstraiton purposes, we keep only the first 10 materials found). Finally, we upload our results to the Mat3ra platform, where further calculations could be performed to characterize these materials. # # Complete Authorization Form and Initialize Settings # @@ -17,15 +17,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -33,23 +33,31 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # # Imports -# In[]: +# In[ ]: -from utils.generic import display_JSON -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY +from examples.utils.generic import display_JSON +from examples.settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY import ase.io -import pymatgen +from pymatgen.ext.matproj import MPRester from exabyte_api_client.endpoints.materials import MaterialEndpoints @@ -60,10 +68,10 @@ # # Query Materials Project for all systems containing Iron and Oxygen -# In[]: +# In[ ]: -materials_project_api = pymatgen.ext.matproj.MPRester(MATERIALS_PROJECT_API_KEY) +materials_project_api = MPRester(MATERIALS_PROJECT_API_KEY) iron_oxides_ids = materials_project_api.get_materials_ids("Fe-O") print(iron_oxides_ids) @@ -75,7 +83,7 @@ # # As a basic example, here we only keep the first 10 iron oxides that the Materials Project API returned to us, and discard the other 150. -# In[]: +# In[ ]: #As a demonstration, take the first 10 iron oxides @@ -85,9 +93,9 @@ # # Bringing Materials Into the User Account # -# Now that we have filtered the results from Materials Project down to just 10 structures, we may want to study them further with the computational models provided by Exabyte. For example, we may be interested in leveraging a DFT code to find the structure with the largest band-gap, or perhaps we want to conduct a high-throughput screening of each material's surface energies. +# Now that we have filtered the results from Materials Project down to just 10 structures, we may want to study them further with the computational models provided by Mat3ra. For example, we may be interested in leveraging a DFT code to find the structure with the largest band-gap, or perhaps we want to conduct a high-throughput screening of each material's surface energies. -# In[]: +# In[ ]: # Upload the first 10 iron oxides found to our account @@ -97,10 +105,11 @@ # Finally, it is always useful to stay organized. Materials sets make this convenient, acting as a folder to keep a group of related materials in. This would be especially helpful if, in the future, we wanted run a calculation over all the oxides we found in this example. -# In[]: +# In[ ]: # Move the iron oxides to a materials set, just for this example materials_set = exabyte_materials_api.create_set({"name" : "Some Iron Oxides"}) for material in materials: exabyte_materials_api.move_to_set(material["_id"], "", materials_set["_id"]) + diff --git a/examples/material/create_material.ipynb b/examples/material/create_material.ipynb index 15e9e6ba..723a4241 100644 --- a/examples/material/create_material.ipynb +++ b/examples/material/create_material.ipynb @@ -1,15 +1,17 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "4icy6yP1nrTF" @@ -17,10 +19,11 @@ "source": [ "# Overview\n", "\n", - "In this example we create a material from a JSON config with [tags](https://docs.exabyte.io/entities-general/data/#tags) to identify the material." + "In this example we create a material from a JSON config with [tags](https://docs.mat3ra.com/entities-general/data/#tags) to identify the material." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "UC33AKk8stwN" @@ -32,13 +35,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -46,6 +49,12 @@ "execution_count": 1, "metadata": { "cellView": "form", + "execution": { + "iopub.execute_input": "2023-06-21T01:32:45.683299Z", + "iopub.status.busy": "2023-06-21T01:32:45.682182Z", + "iopub.status.idle": "2023-06-21T01:32:45.685829Z", + "shell.execute_reply": "2023-06-21T01:32:45.684991Z" + }, "id": "63oC9xGZsuyy", "outputId": "1419f649-9ac2-4e50-a197-ff90c3769987" }, @@ -56,13 +65,23 @@ "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "n3qID8yysRA9" @@ -75,16 +94,33 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:45.690733Z", + "iopub.status.busy": "2023-06-21T01:32:45.689916Z", + "iopub.status.idle": "2023-06-21T01:32:45.753807Z", + "shell.execute_reply": "2023-06-21T01:32:45.754354Z" + }, "id": "eohqW-ICsRA-" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "from utils.generic import display_JSON\n", - "import settings; importlib.reload(settings); from settings import ENDPOINT_ARGS\n", + "from examples.utils.generic import display_JSON\n", + "from examples.settings import ENDPOINT_ARGS\n", + "\n", "from exabyte_api_client.endpoints.materials import MaterialEndpoints" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "-afD9DmxsRA_" @@ -92,13 +128,19 @@ "source": [ "## Create material config\n", "\n", - "Create material config in JSON format. See [Material](https://docs.exabyte.io/api/Material/put_materials_create) endpoint for more information about material config format." + "Create material config in JSON format. See [Material](https://docs.mat3ra.com/api/Material/put_materials_create) endpoint for more information about material config format." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:45.761956Z", + "iopub.status.busy": "2023-06-21T01:32:45.761157Z", + "iopub.status.idle": "2023-06-21T01:32:45.763384Z", + "shell.execute_reply": "2023-06-21T01:32:45.763960Z" + }, "id": "YrcuQGZSsRA_" }, "outputs": [], @@ -177,6 +219,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "1S914EcCsRBA" @@ -191,6 +234,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:45.768690Z", + "iopub.status.busy": "2023-06-21T01:32:45.767757Z", + "iopub.status.idle": "2023-06-21T01:32:49.283475Z", + "shell.execute_reply": "2023-06-21T01:32:49.284198Z" + }, "id": "sEr2jm5wsRBA" }, "outputs": [], @@ -200,6 +249,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "Lr8AYzECsRBA" @@ -212,6 +262,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:49.290112Z", + "iopub.status.busy": "2023-06-21T01:32:49.289183Z", + "iopub.status.idle": "2023-06-21T01:32:49.292262Z", + "shell.execute_reply": "2023-06-21T01:32:49.292881Z" + }, "id": "NGMxmSLUsRBB", "outputId": "0f8e0efa-e94b-4292-968c-a6252658c14a" }, @@ -221,7 +277,7 @@ "output_type": "stream", "text": [ "{\n", - " \"_id\": \"9RgYmGHkyMRRKpP6x\",\n", + " \"_id\": \"aB3k6hwQw4jxPuz8w\",\n", " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", @@ -255,19 +311,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -307,13 +363,13 @@ " \"REST API\"\n", " ],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", @@ -375,7 +431,12 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-21T01:32:49.323Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -383,41 +444,38 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-30T17:32:57.658Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-30T17:32:57.967Z\"\n", + " \"updatedAt\": \"2023-06-21T01:32:49.398Z\",\n", + " \"updatedBy\": \"0\"\n", "}\n" ] } diff --git a/examples/material/create_material.py b/examples/material/create_material.py index a1395350..0239c30b 100644 --- a/examples/material/create_material.py +++ b/examples/material/create_material.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# In this example we create a material from a JSON config with [tags](https://docs.exabyte.io/entities-general/data/#tags) to identify the material. +# In this example we create a material from a JSON config with [tags](https://docs.mat3ra.com/entities-general/data/#tags) to identify the material. # # Complete Authorization Form and Initialize Settings # @@ -15,15 +15,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -31,27 +31,37 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # # Imports -# In[]: +# In[ ]: + +from examples.utils.generic import display_JSON +from examples.settings import ENDPOINT_ARGS -from utils.generic import display_JSON -import settings; importlib.reload(settings); from settings import ENDPOINT_ARGS from exabyte_api_client.endpoints.materials import MaterialEndpoints # ## Create material config # -# Create material config in JSON format. See [Material](https://docs.exabyte.io/api/Material/put_materials_create) endpoint for more information about material config format. +# Create material config in JSON format. See [Material](https://docs.mat3ra.com/api/Material/put_materials_create) endpoint for more information about material config format. -# In[]: +# In[ ]: CONFIG = { @@ -131,7 +141,7 @@ # # Initialize `MaterialEndpoints` class and call `create` function to create material. -# In[]: +# In[ ]: endpoint = MaterialEndpoints(*ENDPOINT_ARGS) @@ -140,7 +150,8 @@ # ## Print new material -# In[]: +# In[ ]: display_JSON(material) + diff --git a/examples/material/get_materials_by_formula.ipynb b/examples/material/get_materials_by_formula.ipynb index c890e030..c4a597f3 100644 --- a/examples/material/get_materials_by_formula.ipynb +++ b/examples/material/get_materials_by_formula.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "M9pqcsQ_CzO_" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "wK3ZoE8wCzPB" @@ -19,10 +21,11 @@ "source": [ "# Overview\n", "\n", - "Inside this example we contact [Material](https://docs.exabyte.io/api/Material/get_materials) endpoint to obtain a list materials that an account has access to. We use chemical formula to filter the list." + "Inside this example we contact [Material](https://docs.mat3ra.com/api/Material/get_materials) endpoint to obtain a list materials that an account has access to. We use chemical formula to filter the list." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "eTDhujSFCzPC" @@ -34,13 +37,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -48,6 +51,12 @@ "execution_count": 1, "metadata": { "cellView": "form", + "execution": { + "iopub.execute_input": "2023-06-21T01:32:40.945817Z", + "iopub.status.busy": "2023-06-21T01:32:40.944972Z", + "iopub.status.idle": "2023-06-21T01:32:40.947352Z", + "shell.execute_reply": "2023-06-21T01:32:40.948455Z" + }, "id": "LbQQf3GpCzPD" }, "outputs": [], @@ -57,13 +66,23 @@ "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "ClaSpX4BCzPD" @@ -76,18 +95,33 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:40.954048Z", + "iopub.status.busy": "2023-06-21T01:32:40.953173Z", + "iopub.status.idle": "2023-06-21T01:32:41.021375Z", + "shell.execute_reply": "2023-06-21T01:32:41.021886Z" + }, "id": "kMwJxlkQCzPE" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "from utils.generic import display_JSON\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, ACCOUNT_ID\n", + "from examples.utils.generic import display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID\n", "\n", "from exabyte_api_client.endpoints.materials import MaterialEndpoints" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "mbtRgwoBCzPE" @@ -102,6 +136,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:41.026569Z", + "iopub.status.busy": "2023-06-21T01:32:41.025808Z", + "iopub.status.idle": "2023-06-21T01:32:41.027607Z", + "shell.execute_reply": "2023-06-21T01:32:41.028127Z" + }, "id": "KZWqlxVcCzPF" }, "outputs": [], @@ -113,6 +153,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "wtOfD1UuCzPF" @@ -125,6 +166,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:41.032831Z", + "iopub.status.busy": "2023-06-21T01:32:41.031940Z", + "iopub.status.idle": "2023-06-21T01:32:41.034320Z", + "shell.execute_reply": "2023-06-21T01:32:41.034907Z" + }, "id": "dolF1C6-CzPG" }, "outputs": [], @@ -133,6 +180,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "kziWNLGnCzPG" @@ -147,6 +195,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:41.039076Z", + "iopub.status.busy": "2023-06-21T01:32:41.038352Z", + "iopub.status.idle": "2023-06-21T01:32:41.728934Z", + "shell.execute_reply": "2023-06-21T01:32:41.729460Z" + }, "id": "IE-K3TexCzPH" }, "outputs": [], @@ -155,6 +209,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "fP8c01zaCzPH" @@ -169,6 +224,12 @@ "cell_type": "code", "execution_count": 6, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:41.740853Z", + "iopub.status.busy": "2023-06-21T01:32:41.740033Z", + "iopub.status.idle": "2023-06-21T01:32:41.747283Z", + "shell.execute_reply": "2023-06-21T01:32:41.747975Z" + }, "id": "LRVpf37eCzPH", "pycharm": { "name": "#%%\n" @@ -181,7 +242,7 @@ "text": [ "[\n", " {\n", - " \"_id\": \"5Kag8gkz74ibqCBu5\",\n", + " \"_id\": \"nz7586D2ZobsQajza\",\n", " \"name\": \"Silicon FCC\",\n", " \"basis\": {\n", " \"elements\": [\n", @@ -215,19 +276,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -264,13 +325,13 @@ " }\n", " },\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"isDefault\": true,\n", @@ -333,7 +394,11 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-03T03:29:24.239Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -341,81 +406,42 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"tags\": [],\n", - " \"createdAt\": \"2021-04-27T16:48:53.932Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-04-27T16:49:02.973Z\"\n", + " \"updatedAt\": \"2023-06-03T03:29:24.318Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"PtL4Rt2QBjXq37D4T\",\n", - " \"name\": \"initial structure\",\n", - " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", - " \"lattice\": {\n", - " \"a\": 3.867014,\n", - " \"b\": 3.867017,\n", - " \"c\": 3.867016,\n", - " \"alpha\": 60.00001,\n", - " \"beta\": 59.99998,\n", - " \"gamma\": 60.00001,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.348932,\n", - " 0,\n", - " 1.933508\n", - " ],\n", - " \"b\": [\n", - " 1.116311,\n", - " 3.157407,\n", - " 1.933508\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867016\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", + " \"_id\": \"ArmcREWEpoxtCigJ2\",\n", + " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -439,184 +465,31 @@ " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.2500003,\n", - " 0.2499998,\n", - " 0.2499999\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", - " \"derivedProperties\": [\n", - " {\n", - " \"name\": \"volume\",\n", - " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88960034222733\n", - " },\n", - " {\n", - " \"name\": \"density\",\n", - " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281121339639579\n", - " },\n", - " {\n", - " \"spaceGroupSymbol\": \"Fd-3m\",\n", - " \"tolerance\": {\n", - " \"value\": 0.3,\n", - " \"units\": \"angstrom\"\n", - " },\n", - " \"name\": \"symmetry\"\n", - " },\n", - " {\n", - " \"name\": \"elemental_ratio\",\n", - " \"value\": 1,\n", - " \"element\": \"Si\"\n", - " },\n", - " {\n", - " \"name\": \"p-norm\",\n", - " \"value\": 1,\n", - " \"degree\": 0\n", - " },\n", - " {\n", - " \"name\": \"p-norm\",\n", - " \"value\": 1,\n", - " \"degree\": 2\n", - " },\n", - " {\n", - " \"name\": \"p-norm\",\n", - " \"value\": 1,\n", - " \"degree\": 3\n", - " },\n", - " {\n", - " \"name\": \"p-norm\",\n", - " \"value\": 1,\n", - " \"degree\": 5\n", - " },\n", - " {\n", - " \"name\": \"p-norm\",\n", - " \"value\": 1,\n", - " \"degree\": 7\n", - " },\n", - " {\n", - " \"name\": \"p-norm\",\n", - " \"value\": 1,\n", - " \"degree\": 10\n", - " }\n", - " ],\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"schemaVersion\": \"0.2.0\",\n", - " \"tags\": [\n", - " \"jobId-LpYSYGd8ZsBivrmuv\",\n", - " \"jobId-3f6Qiij486ZyBCEug\",\n", - " \"jobId-TN2RcwqDxbW5vS3zQ\",\n", - " \"jobId-jDC3nocMHXvrXKhip\",\n", - " \"jobId-FHKz629zKzZTT2Mwj\",\n", - " \"jobId-B8wM4azmRjdQvMdTe\",\n", - " \"jobId-7bJsqc5fiHsu9P4MG\",\n", - " \"jobId-pky5ntLgg6aZdhapA\",\n", - " \"jobId-Y2MxeR3tbGPCQywvS\",\n", - " \"jobId-uhTQAj5ZuiB6PpXf3\",\n", - " \"jobId-tXegg67DzLWJFS8mp\",\n", - " \"jobId-h58zL8cXx65aenR5m\",\n", - " \"jobId-dpBJrpHCfhNdTp2Jv\",\n", - " \"jobId-BRGy7Nzuist9NK9jq\",\n", - " \"jobId-JF5f3c2Z2BWE9ziNP\",\n", - " \"jobId-D6a825jMpKQjKtdhR\",\n", - " \"jobId-kzKfvA6gm76idWqoo\",\n", - " \"jobId-iN4a2jzkzX68mBM64\",\n", - " \"jobId-AkZbhxjsKWZZBDhX8\",\n", - " \"jobId-P7Am4RK3yQWqJPbhT\",\n", - " \"jobId-otec6yng4QTzoudji\",\n", - " \"jobId-93TZ4APKc9XKhiDgS\",\n", - " \"jobId-QupyrwSY8siwmbTJF\",\n", - " \"jobId-e4L4BiFZFjBdua3wq\",\n", - " \"jobId-PfZ2ho25ZppgcT3KR\",\n", - " \"jobId-8iCyDtAq2BBoLkWyY\",\n", - " \"jobId-fhHci5SCdGccwKiCn\",\n", - " \"jobId-xjsadihRWtAMEFHFm\",\n", - " \"jobId-eKPz9thx6nHMapn2y\",\n", - " \"jobId-6zP7nscCSArCXbWMC\",\n", - " \"jobId-BhCKqvAebAyaRHfid\"\n", - " ],\n", - " \"inSet\": [\n", - " {\n", - " \"type\": \"unordered\",\n", - " \"_id\": \"b2o2Lys8W6bfZXH8n\"\n", - " },\n", - " {\n", - " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", - " \"slug\": \"read\",\n", - " \"cls\": \"Team\"\n", - " },\n", - " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", - " \"slug\": \"admin\",\n", - " \"cls\": \"Team\"\n", - " },\n", - " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", - " \"slug\": \"owner\",\n", - " \"cls\": \"Team\"\n", - " },\n", - " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", - " \"slug\": \"read\",\n", - " \"cls\": \"Team\"\n", - " },\n", - " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", - " \"slug\": \"comment\",\n", - " \"cls\": \"Team\"\n", - " },\n", - " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", - " \"slug\": \"execute\",\n", - " \"cls\": \"Team\"\n", - " },\n", - " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", - " \"slug\": \"edit\",\n", - " \"cls\": \"Team\"\n", - " }\n", - " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-04-27T19:25:24.404Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-07-12T13:59:38.157Z\"\n", - " },\n", - " {\n", - " \"_id\": \"r4X7zdJj2w5P6gpFD\",\n", - " \"name\": \"final structure\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"lattice\": {\n", " \"a\": 3.867,\n", " \"b\": 3.867,\n", @@ -649,54 +522,22 @@ " \"units\": \"angstrom\"\n", " }\n", " },\n", - " \"basis\": {\n", - " \"elements\": [\n", - " {\n", - " \"id\": 0,\n", - " \"value\": \"Si\"\n", - " },\n", - " {\n", - " \"id\": 1,\n", - " \"value\": \"Si\"\n", - " }\n", - " ],\n", - " \"coordinates\": [\n", - " {\n", - " \"id\": 0,\n", - " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", - " ]\n", - " },\n", - " {\n", - " \"id\": 1,\n", - " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", - " ]\n", - " }\n", - " ],\n", - " \"units\": \"crystal\",\n", - " \"cell\": [\n", - " [\n", - " 1,\n", - " 0,\n", - " 6.123233995736766e-17\n", - " ],\n", - " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", - " ],\n", - " [\n", - " 0,\n", - " 0,\n", - " 1\n", - " ]\n", - " ]\n", + " \"tags\": [\n", + " \"REST API\"\n", + " ],\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", @@ -752,97 +593,55 @@ " \"degree\": 10\n", " }\n", " ],\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"tags\": [\n", - " \"jobId-LpYSYGd8ZsBivrmuv\",\n", - " \"jobId-3f6Qiij486ZyBCEug\",\n", - " \"jobId-TN2RcwqDxbW5vS3zQ\",\n", - " \"jobId-jDC3nocMHXvrXKhip\",\n", - " \"jobId-FHKz629zKzZTT2Mwj\",\n", - " \"jobId-B8wM4azmRjdQvMdTe\",\n", - " \"jobId-7bJsqc5fiHsu9P4MG\",\n", - " \"jobId-pky5ntLgg6aZdhapA\",\n", - " \"jobId-Y2MxeR3tbGPCQywvS\",\n", - " \"jobId-uhTQAj5ZuiB6PpXf3\",\n", - " \"jobId-tXegg67DzLWJFS8mp\",\n", - " \"jobId-h58zL8cXx65aenR5m\",\n", - " \"jobId-dpBJrpHCfhNdTp2Jv\",\n", - " \"jobId-BRGy7Nzuist9NK9jq\",\n", - " \"jobId-JF5f3c2Z2BWE9ziNP\",\n", - " \"jobId-D6a825jMpKQjKtdhR\",\n", - " \"jobId-kzKfvA6gm76idWqoo\",\n", - " \"jobId-iN4a2jzkzX68mBM64\",\n", - " \"jobId-AkZbhxjsKWZZBDhX8\",\n", - " \"jobId-P7Am4RK3yQWqJPbhT\",\n", - " \"jobId-otec6yng4QTzoudji\",\n", - " \"jobId-93TZ4APKc9XKhiDgS\",\n", - " \"jobId-QupyrwSY8siwmbTJF\",\n", - " \"jobId-e4L4BiFZFjBdua3wq\",\n", - " \"jobId-PfZ2ho25ZppgcT3KR\",\n", - " \"jobId-8iCyDtAq2BBoLkWyY\",\n", - " \"jobId-fhHci5SCdGccwKiCn\",\n", - " \"jobId-eKPz9thx6nHMapn2y\",\n", - " \"jobId-6zP7nscCSArCXbWMC\"\n", - " ],\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-06T04:44:00.420Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", - " \"type\": \"unordered\",\n", - " \"_id\": \"b2o2Lys8W6bfZXH8n\"\n", - " },\n", - " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-04-27T19:25:26.981Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-07-12T13:56:31.514Z\"\n", + " \"updatedAt\": \"2023-06-06T04:44:00.768Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"mYSt54icQrC7eRw8Q\",\n", + " \"_id\": \"iFkthWYvdCbYXxCF2\",\n", " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", @@ -876,19 +675,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -928,13 +727,13 @@ " \"REST API\"\n", " ],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", @@ -996,7 +795,12 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T00:51:37.335Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -1004,47 +808,80 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T15:26:01.394Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T15:26:01.680Z\"\n", + " \"updatedAt\": \"2023-06-15T00:51:37.402Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"E77wqNL6r9sLJEPBf\",\n", - " \"name\": \"TEST2 MATERIAL\",\n", - " \"basis\": {\n", - " \"elements\": [\n", + " \"_id\": \"Bj7ecJrpFffHYMFsi\",\n", + " \"name\": \"initial structure\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.867014,\n", + " \"b\": 3.867017,\n", + " \"c\": 3.867016,\n", + " \"alpha\": 60.00001,\n", + " \"beta\": 59.99998,\n", + " \"gamma\": 60.00001,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348932,\n", + " 0,\n", + " 1.933508\n", + " ],\n", + " \"b\": [\n", + " 1.116311,\n", + " 3.157407,\n", + " 1.933508\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.867016\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", + " \"basis\": {\n", + " \"elements\": [\n", " {\n", " \"id\": 0,\n", " \"value\": \"Si\"\n", @@ -1066,31 +903,183 @@ " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0.2500003,\n", + " 0.2499998,\n", + " 0.2499999\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348932,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.933508\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163109999999985,\n", + " 3.157407,\n", + " 1.9335079999999998\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867016\n", " ]\n", " ]\n", " },\n", + " \"derivedProperties\": [\n", + " {\n", + " \"name\": \"volume\",\n", + " \"units\": \"angstrom^3\",\n", + " \"value\": 40.88960034222733\n", + " },\n", + " {\n", + " \"name\": \"density\",\n", + " \"units\": \"g/cm^3\",\n", + " \"value\": 2.281121339639579\n", + " },\n", + " {\n", + " \"spaceGroupSymbol\": \"Fd-3m\",\n", + " \"tolerance\": {\n", + " \"value\": 0.3,\n", + " \"units\": \"angstrom\"\n", + " },\n", + " \"name\": \"symmetry\"\n", + " },\n", + " {\n", + " \"name\": \"elemental_ratio\",\n", + " \"value\": 1,\n", + " \"element\": \"Si\"\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 1,\n", + " \"degree\": 0\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 1,\n", + " \"degree\": 2\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 1,\n", + " \"degree\": 3\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 1,\n", + " \"degree\": 5\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 1,\n", + " \"degree\": 7\n", + " },\n", + " {\n", + " \"name\": \"p-norm\",\n", + " \"value\": 1,\n", + " \"degree\": 10\n", + " }\n", + " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", + " \"schemaVersion\": \"0.2.0\",\n", + " \"tags\": [\n", + " \"jobId-NQ9rs7AQt76wtNmtA\",\n", + " \"jobId-DdzW5bCwoPhQsB9Ri\",\n", + " \"jobId-SGC44eWZMM4iS9uPN\",\n", + " \"jobId-7CeGe6KmriKQR5TWE\",\n", + " \"jobId-67834bEsNtPsBwZLc\",\n", + " \"jobId-Y8dR8SNSKpHfPJkvf\",\n", + " \"jobId-t6qgoPdJtWLGkDmG8\",\n", + " \"jobId-djgom3g8334JNhQeh\",\n", + " \"jobId-6ibcyvCSwaKkjkhSS\",\n", + " \"jobId-mWm98YGJeLJkhFtXk\",\n", + " \"jobId-W7GGmyRfxxT8ABzyS\",\n", + " \"jobId-HMxvEQJNL6tmC8D3X\",\n", + " \"jobId-tjnMqSifv3y55gPkB\",\n", + " \"jobId-CXS4jzFbQYt2JoxPG\",\n", + " \"jobId-4cCacf44ksimTSCEc\",\n", + " \"jobId-zyEmMg2Zo5Kkjnktx\",\n", + " \"jobId-Zy3qd6QywAfPuZyd9\",\n", + " \"jobId-hnjRQFC4BqkWjP3X8\",\n", + " \"jobId-TNy5p6uTbQ444XY3g\",\n", + " \"jobId-brt3grqBpeYNmbSK7\",\n", + " \"jobId-zAmEyusustd4ssBRh\",\n", + " \"jobId-Ghkzo9a9EjuEBM4eH\",\n", + " \"jobId-KcxKPoHFaZhPaeFmE\",\n", + " \"jobId-gQNhKi6shBgaXBnD6\",\n", + " \"jobId-5TrFY53GHz3kNfn95\",\n", + " \"jobId-WZacSXRj536EkPotx\",\n", + " \"jobId-XvXRuxSNidAcWRNHk\",\n", + " \"jobId-xuJujgFB6jXrA46Ck\"\n", + " ],\n", + " \"inSet\": [\n", + " {\n", + " \"type\": \"unordered\",\n", + " \"_id\": \"tNskXuAQuSjyjxxEg\"\n", + " },\n", + " {\n", + " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", + " \"slug\": \"read\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", + " \"slug\": \"admin\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", + " \"slug\": \"owner\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", + " \"slug\": \"read\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", + " \"slug\": \"comment\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", + " \"slug\": \"execute\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", + " \"slug\": \"edit\",\n", + " \"cls\": \"Team\"\n", + " }\n", + " ],\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T03:27:33.014Z\",\n", + " \"createdBy\": \"0\",\n", + " \"updatedAt\": \"2023-06-20T02:08:16.303Z\",\n", + " \"updatedBy\": \"0\"\n", + " },\n", + " {\n", + " \"_id\": \"WSjn2BX2MYazujJaB\",\n", + " \"name\": \"final structure\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", " \"lattice\": {\n", " \"a\": 3.867,\n", " \"b\": 3.867,\n", @@ -1123,22 +1112,54 @@ " \"units\": \"angstrom\"\n", " }\n", " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", + " \"basis\": {\n", + " \"elements\": [\n", + " {\n", + " \"id\": 0,\n", + " \"value\": \"Si\"\n", + " },\n", + " {\n", + " \"id\": 1,\n", + " \"value\": \"Si\"\n", + " }\n", + " ],\n", + " \"coordinates\": [\n", + " {\n", + " \"id\": 0,\n", + " \"value\": [\n", + " 0,\n", + " 0,\n", + " 0\n", + " ]\n", + " },\n", + " {\n", + " \"id\": 1,\n", + " \"value\": [\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", + " ]\n", + " }\n", + " ],\n", + " \"units\": \"crystal\",\n", + " \"cell\": [\n", + " [\n", + " 3.34892,\n", + " 0,\n", + " 1.9335\n", + " ],\n", + " [\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", + " ],\n", + " [\n", + " 0,\n", + " 0,\n", + " 3.867\n", + " ]\n", + " ]\n", " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", @@ -1194,54 +1215,149 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"tags\": [\n", + " \"jobId-NQ9rs7AQt76wtNmtA\",\n", + " \"jobId-DdzW5bCwoPhQsB9Ri\",\n", + " \"jobId-SGC44eWZMM4iS9uPN\",\n", + " \"jobId-7CeGe6KmriKQR5TWE\",\n", + " \"jobId-67834bEsNtPsBwZLc\",\n", + " \"jobId-Y8dR8SNSKpHfPJkvf\",\n", + " \"jobId-t6qgoPdJtWLGkDmG8\",\n", + " \"jobId-djgom3g8334JNhQeh\",\n", + " \"jobId-6ibcyvCSwaKkjkhSS\",\n", + " \"jobId-mWm98YGJeLJkhFtXk\",\n", + " \"jobId-W7GGmyRfxxT8ABzyS\",\n", + " \"jobId-HMxvEQJNL6tmC8D3X\",\n", + " \"jobId-tjnMqSifv3y55gPkB\",\n", + " \"jobId-CXS4jzFbQYt2JoxPG\",\n", + " \"jobId-4cCacf44ksimTSCEc\",\n", + " \"jobId-zyEmMg2Zo5Kkjnktx\",\n", + " \"jobId-Zy3qd6QywAfPuZyd9\",\n", + " \"jobId-hnjRQFC4BqkWjP3X8\",\n", + " \"jobId-TNy5p6uTbQ444XY3g\",\n", + " \"jobId-brt3grqBpeYNmbSK7\",\n", + " \"jobId-zAmEyusustd4ssBRh\",\n", + " \"jobId-Ghkzo9a9EjuEBM4eH\",\n", + " \"jobId-KcxKPoHFaZhPaeFmE\",\n", + " \"jobId-gQNhKi6shBgaXBnD6\",\n", + " \"jobId-5TrFY53GHz3kNfn95\",\n", + " \"jobId-WZacSXRj536EkPotx\",\n", + " \"jobId-XvXRuxSNidAcWRNHk\",\n", + " \"jobId-xuJujgFB6jXrA46Ck\"\n", + " ],\n", " \"inSet\": [\n", " {\n", + " \"type\": \"unordered\",\n", + " \"_id\": \"tNskXuAQuSjyjxxEg\"\n", + " },\n", + " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T15:40:47.076Z\",\n", - " \"isEntitySet\": false,\n", " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T15:40:47.252Z\"\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T03:27:37.318Z\",\n", + " \"createdBy\": \"0\",\n", + " \"updatedAt\": \"2023-06-20T02:08:16.407Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"gPncY5hy29q8NHdFQ\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"X8jpwfgEoZK9WwZGJ\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -1257,97 +1373,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -1393,8 +1461,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T03:38:22.231Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -1402,45 +1486,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T15:41:01.662Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T15:41:01.853Z\"\n", + " \"updatedAt\": \"2023-06-15T03:38:22.292Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"dm6WwpaTTAeH6qTBR\",\n", - " \"name\": \"TEST2 MATERIAL\",\n", + " \"_id\": \"mgapHAanXvSsKki5E\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -1456,97 +1587,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", - " ]\n", - " },\n", - " {\n", - " \"id\": 1,\n", - " \"value\": [\n", " 0.25,\n", " 0.25,\n", " 0.25\n", " ]\n", + " },\n", + " {\n", + " \"id\": 1,\n", + " \"value\": [\n", + " 0,\n", + " 0,\n", + " 0\n", + " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -1592,8 +1675,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T03:42:56.052Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -1601,45 +1700,99 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T15:52:11.054Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T15:52:11.230Z\"\n", + " \"updatedAt\": \"2023-06-15T03:42:56.268Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"ioridvcqMsjQFKcFR\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"uoCkbqBH8SJrkc6iT\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\",\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -1655,97 +1808,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -1791,8 +1896,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T03:48:42.670Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -1800,45 +1921,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T17:21:16.679Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T17:21:16.929Z\"\n", + " \"updatedAt\": \"2023-06-15T03:48:42.733Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"4wthB6oT8DRCsZYGg\",\n", - " \"name\": \"TEST5 MATERIAL\",\n", + " \"_id\": \"pHvZ6pY5tEBfd95nt\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -1854,97 +2022,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -1990,8 +2110,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-15T04:07:47.372Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -1999,45 +2135,42 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T17:21:41.935Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T17:21:42.203Z\"\n", + " \"updatedAt\": \"2023-06-15T04:07:47.446Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"hjDNAp8BbQ6zLsdrK\",\n", - " \"name\": \"TEST50 MATERIAL\",\n", + " \"_id\": \"EBrCGtCDfJZDTvwaF\",\n", + " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -2070,19 +2203,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -2122,13 +2255,13 @@ " \"REST API\"\n", " ],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", @@ -2190,7 +2323,12 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T00:55:32.810Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -2198,45 +2336,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T18:11:20.607Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T18:11:20.811Z\"\n", + " \"updatedAt\": \"2023-06-17T00:55:32.888Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"2mga2JFcZYBzFjq7K\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"DgGqecfPWg6sCimCB\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -2252,97 +2437,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -2388,8 +2525,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T00:56:17.918Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -2397,45 +2550,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T19:42:52.393Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T19:42:52.588Z\"\n", + " \"updatedAt\": \"2023-06-17T00:56:17.980Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"zQ5jgi8fyML4di8TX\",\n", - " \"name\": \"TEST50 MATERIAL\",\n", + " \"_id\": \"PGn9oWMcQxpnFATJR\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -2451,97 +2651,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -2587,8 +2739,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T00:57:50.051Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -2596,44 +2764,41 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T19:55:59.135Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T19:55:59.307Z\"\n", + " \"updatedAt\": \"2023-06-17T00:57:50.202Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"xAN6TxLDgE2vmYBp7\",\n", + " \"_id\": \"tymv2qRDZaBjq3iEo\",\n", " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", @@ -2667,19 +2832,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -2719,13 +2884,13 @@ " \"REST API\"\n", " ],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", @@ -2787,7 +2952,12 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T01:50:31.793Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -2795,45 +2965,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T19:56:29.418Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T19:56:29.584Z\"\n", + " \"updatedAt\": \"2023-06-17T01:50:31.868Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"D47PcGXzWXQRiQRLp\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"FX4HcmXzXzXazN4w2\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -2849,97 +3066,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -2985,8 +3154,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T01:51:11.718Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -2994,45 +3179,94 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-10T19:59:33.734Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-10T19:59:33.905Z\"\n", + " \"updatedAt\": \"2023-06-17T01:51:11.772Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"JkKKyi5u7b53ErFmk\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"8xCtxXyxwheW6dMJ3\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"tag1\",\n", + " \"tag2\",\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -3048,97 +3282,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -3184,8 +3370,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T01:56:58.581Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -3193,44 +3395,44 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"F5FNdyjYC5kpceuap\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-13T18:42:48.250Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-13T18:42:48.437Z\"\n", + " \"updatedAt\": \"2023-06-17T01:57:05.307Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"fe2485a3NkaxenvCj\",\n", + " \"_id\": \"DD2BW7ybEYLTmzhiA\",\n", " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", @@ -3264,19 +3466,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -3316,13 +3518,13 @@ " \"REST API\"\n", " ],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", @@ -3384,7 +3586,12 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T02:20:49.690Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -3392,45 +3599,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-13T19:00:08.567Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-13T19:00:08.742Z\"\n", + " \"updatedAt\": \"2023-06-17T02:20:49.744Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"5RGn3ApHKCK5TQbrk\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"Nm3hwJBWgtfipJNFM\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -3446,97 +3700,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", - " ],\n", - " \"units\": \"crystal\",\n", - " \"cell\": [\n", - " [\n", - " 1,\n", - " 0,\n", - " 6.123233995736766e-17\n", - " ],\n", - " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", - " ],\n", - " [\n", - " 0,\n", - " 0,\n", - " 1\n", - " ]\n", - " ]\n", - " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", + " ],\n", + " \"units\": \"crystal\",\n", + " \"cell\": [\n", + " [\n", + " 3.348898282690438,\n", " 0,\n", - " 1.9335\n", + " 1.9334873250000004\n", " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", + " [\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", - " \"c\": [\n", + " [\n", " 0,\n", " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", + " 3.86697465\n", + " ]\n", + " ]\n", " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -3582,8 +3788,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T02:21:36.528Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -3591,45 +3813,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-13T19:06:36.774Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-13T19:06:37.058Z\"\n", + " \"updatedAt\": \"2023-06-17T02:21:36.624Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"R5RHGrrhNLTBDuN8H\",\n", - " \"name\": \"TEST MATERIAL\",\n", + " \"_id\": \"WqYGhPxSxhJqHFimf\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -3645,97 +3914,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -3781,8 +4002,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T02:22:20.180Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -3790,44 +4027,41 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-13T19:28:24.529Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-13T19:28:24.725Z\"\n", + " \"updatedAt\": \"2023-06-17T02:22:20.232Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"HYogCeXvgffX9kf26\",\n", + " \"_id\": \"574R2qFeB2u9d3ujK\",\n", " \"name\": \"TEST MATERIAL\",\n", " \"basis\": {\n", " \"elements\": [\n", @@ -3861,19 +4095,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.34892,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9335\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1163069999999993,\n", + " 3.1573920000000006,\n", + " 1.9335\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.867\n", " ]\n", " ]\n", " },\n", @@ -3913,13 +4147,13 @@ " \"REST API\"\n", " ],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", @@ -3981,7 +4215,12 @@ " }\n", " ],\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T03:07:18.787Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -3989,45 +4228,92 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-14T19:29:13.734Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-14T19:29:14.136Z\"\n", + " \"updatedAt\": \"2023-06-17T03:07:18.846Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"3hpN74aZqg24uJanS\",\n", - " \"name\": \"TEST2 MATERIAL\",\n", + " \"_id\": \"4W3wuyx2AwkLrKuiv\",\n", + " \"name\": \"mp-149\",\n", + " \"tags\": [\n", + " \"Silicon hydride (1/0.5)\",\n", + " \"Silicon (O-doped)\",\n", + " \"High pressure experimental phase\",\n", + " \"Silicon\",\n", + " \"Silicon - diamond phase\",\n", + " \"Silicon - cubic diamond form\",\n", + " \"Silicon - type I-clathrate\"\n", + " ],\n", + " \"src\": {\n", + " \"extension\": \"cif\",\n", + " \"filename\": \"mp-149.cif\",\n", + " \"text\": \"# generated using pymatgen\\ndata_Si\\n_symmetry_space_group_name_H-M 'P 1'\\n_cell_length_a 3.86697465\\n_cell_length_b 3.86697465\\n_cell_length_c 3.86697465\\n_cell_angle_alpha 60.00000000\\n_cell_angle_beta 60.00000000\\n_cell_angle_gamma 60.00000000\\n_symmetry_Int_Tables_number 1\\n_chemical_formula_structural Si\\n_chemical_formula_sum Si2\\n_cell_volume 40.88829285\\n_cell_formula_units_Z 2\\nloop_\\n _symmetry_equiv_pos_site_id\\n _symmetry_equiv_pos_as_xyz\\n 1 'x, y, z'\\nloop_\\n _atom_site_type_symbol\\n _atom_site_label\\n _atom_site_symmetry_multiplicity\\n _atom_site_fract_x\\n _atom_site_fract_y\\n _atom_site_fract_z\\n _atom_site_occupancy\\n Si Si0 1 0.25000000 0.25000000 0.25000000 1\\n Si Si1 1 0.00000000 0.00000000 0.00000000 1\",\n", + " \"hash\": \"d074befc422cd8776de16becb8c97c06\"\n", + " },\n", + " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", + " \"formula\": \"Si\",\n", + " \"unitCellFormula\": \"Si2\",\n", + " \"lattice\": {\n", + " \"a\": 3.866975,\n", + " \"b\": 3.866975,\n", + " \"c\": 3.866975,\n", + " \"alpha\": 60,\n", + " \"beta\": 60,\n", + " \"gamma\": 60,\n", + " \"units\": {\n", + " \"length\": \"angstrom\",\n", + " \"angle\": \"degree\"\n", + " },\n", + " \"type\": \"FCC\",\n", + " \"vectors\": {\n", + " \"a\": [\n", + " 3.348898,\n", + " 0,\n", + " 1.933487\n", + " ],\n", + " \"b\": [\n", + " 1.116299,\n", + " 3.157372,\n", + " 1.933487\n", + " ],\n", + " \"c\": [\n", + " 0,\n", + " 0,\n", + " 3.866975\n", + " ],\n", + " \"alat\": 1,\n", + " \"units\": \"angstrom\"\n", + " }\n", + " },\n", " \"basis\": {\n", " \"elements\": [\n", " {\n", @@ -4043,97 +4329,49 @@ " {\n", " \"id\": 0,\n", " \"value\": [\n", - " 0,\n", - " 0,\n", - " 0\n", + " 0.25,\n", + " 0.25,\n", + " 0.25\n", " ]\n", " },\n", " {\n", " \"id\": 1,\n", " \"value\": [\n", - " 0.25,\n", - " 0.25,\n", - " 0.25\n", + " 0,\n", + " 0,\n", + " 0\n", " ]\n", " }\n", " ],\n", " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.348898282690438,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 1.9334873250000004\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.1162994275634794,\n", + " 3.1573715802591895,\n", + " 1.9334873250000004\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 3.86697465\n", " ]\n", " ]\n", " },\n", - " \"lattice\": {\n", - " \"a\": 3.867,\n", - " \"b\": 3.867,\n", - " \"c\": 3.867,\n", - " \"alpha\": 60,\n", - " \"beta\": 60,\n", - " \"gamma\": 59.99999,\n", - " \"units\": {\n", - " \"length\": \"angstrom\",\n", - " \"angle\": \"degree\"\n", - " },\n", - " \"type\": \"FCC\",\n", - " \"vectors\": {\n", - " \"a\": [\n", - " 3.34892,\n", - " 0,\n", - " 1.9335\n", - " ],\n", - " \"b\": [\n", - " 1.116307,\n", - " 3.157392,\n", - " 1.9335\n", - " ],\n", - " \"c\": [\n", - " 0,\n", - " 0,\n", - " 3.867\n", - " ],\n", - " \"alat\": 1,\n", - " \"units\": \"angstrom\"\n", - " }\n", - " },\n", - " \"tags\": [\n", - " \"REST API\"\n", - " ],\n", - " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"Account\"\n", - " },\n", - " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", - " \"cls\": \"User\"\n", - " },\n", - " \"hash\": \"a665723ef7429caef6ca89385fe25bae\",\n", - " \"formula\": \"Si\",\n", - " \"unitCellFormula\": \"Si2\",\n", " \"derivedProperties\": [\n", " {\n", " \"name\": \"volume\",\n", " \"units\": \"angstrom^3\",\n", - " \"value\": 40.88909038874689\n", + " \"value\": 40.88829274510334\n", " },\n", " {\n", " \"name\": \"density\",\n", " \"units\": \"g/cm^3\",\n", - " \"value\": 2.281149788933887\n", + " \"value\": 2.2811942893154624\n", " },\n", " {\n", " \"spaceGroupSymbol\": \"Fd-3m\",\n", @@ -4179,8 +4417,24 @@ " \"degree\": 10\n", " }\n", " ],\n", + " \"creator\": {\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"User\"\n", + " },\n", + " \"owner\": {\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", + " \"cls\": \"Account\"\n", + " },\n", " \"schemaVersion\": \"0.2.0\",\n", - " \"exabyteId\": \"tSohSgyQHg5sakYho\",\n", + " \"isNonPeriodic\": false,\n", + " \"exabyteId\": \"e3nJ9g7tLaARSA25g\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-17T03:08:03.945Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -4188,41 +4442,38 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-06-14T19:49:35.507Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"87e416358789a7c435eaaba0344af51d\",\n", - " \"updatedAt\": \"2021-06-14T19:49:35.717Z\"\n", + " \"updatedAt\": \"2023-06-17T03:08:04.016Z\",\n", + " \"updatedBy\": \"0\"\n", " }\n", "]\n" ] diff --git a/examples/material/get_materials_by_formula.py b/examples/material/get_materials_by_formula.py index 698747a9..d06ef5d4 100644 --- a/examples/material/get_materials_by_formula.py +++ b/examples/material/get_materials_by_formula.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# Inside this example we contact [Material](https://docs.exabyte.io/api/Material/get_materials) endpoint to obtain a list materials that an account has access to. We use chemical formula to filter the list. +# Inside this example we contact [Material](https://docs.mat3ra.com/api/Material/get_materials) endpoint to obtain a list materials that an account has access to. We use chemical formula to filter the list. # # Complete Authorization Form and Initialize Settings # @@ -15,15 +15,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -31,20 +31,28 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # # Imports -# In[]: +# In[ ]: -from utils.generic import display_JSON -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, ACCOUNT_ID +from examples.utils.generic import display_JSON +from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID from exabyte_api_client.endpoints.materials import MaterialEndpoints @@ -53,7 +61,7 @@ # # - **QUERY**: A query describing the documents to find. See [Meteor collection](https://docs.meteor.com/api/collections.html#Mongo-Collection-find) for more information. -# In[]: +# In[ ]: QUERY = { @@ -64,7 +72,7 @@ # ## Initialize the endpoint -# In[]: +# In[ ]: endpoint = MaterialEndpoints(*ENDPOINT_ARGS) @@ -74,7 +82,7 @@ # # Contact the endpoint to list materials according to the query above. -# In[]: +# In[ ]: materials = endpoint.list(QUERY) @@ -84,7 +92,8 @@ # # Print the list of materials saved under the corresponding variable in pretty JSON below. -# In[]: +# In[ ]: display_JSON(materials) + diff --git a/examples/material/import_materials_from_materialsproject.ipynb b/examples/material/import_materials_from_materialsproject.ipynb index e6b1eddd..a860f45e 100644 --- a/examples/material/import_materials_from_materialsproject.ipynb +++ b/examples/material/import_materials_from_materialsproject.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "y_SM_JBc9vrV" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "amffxwKY9vrX" @@ -19,10 +21,11 @@ "source": [ "# Overview\n", "\n", - "This example demonstrates how to import materials from the materials project database via [Material](https://docs.exabyte.io/api/Material/post_materials_import) endpoint." + "This example demonstrates how to import materials from the materials project database via [Material](https://docs.mat3ra.com/api/Material/post_materials_import) endpoint." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "c-nHvPSy9vrY" @@ -34,13 +37,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -48,6 +51,12 @@ "execution_count": 1, "metadata": { "cellView": "form", + "execution": { + "iopub.execute_input": "2023-06-21T01:32:53.140285Z", + "iopub.status.busy": "2023-06-21T01:32:53.139013Z", + "iopub.status.idle": "2023-06-21T01:32:53.142196Z", + "shell.execute_reply": "2023-06-21T01:32:53.141612Z" + }, "id": "6KqWoLdv9vrY" }, "outputs": [], @@ -57,13 +66,23 @@ "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "5wAnsWE-9vrZ" @@ -76,18 +95,33 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:53.146983Z", + "iopub.status.busy": "2023-06-21T01:32:53.146223Z", + "iopub.status.idle": "2023-06-21T01:32:53.209815Z", + "shell.execute_reply": "2023-06-21T01:32:53.210358Z" + }, "id": "e9EGeIkg9vrZ" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "from utils.generic import display_JSON\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY\n", + "from examples.utils.generic import display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY\n", "\n", "from exabyte_api_client.endpoints.materials import MaterialEndpoints" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "C2Dxa1qZ9vra" @@ -97,13 +131,19 @@ "\n", "- **MATERIALS_PROJECT_IDS**: a list of material IDs to be imported\n", "\n", - "- **TAGS**: a list of [tags](https://docs.exabyte.io/entities-general/data/#tags) to assign to imported materials" + "- **TAGS**: a list of [tags](https://docs.mat3ra.com/entities-general/data/#tags) to assign to imported materials" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:53.214760Z", + "iopub.status.busy": "2023-06-21T01:32:53.214030Z", + "iopub.status.idle": "2023-06-21T01:32:53.216178Z", + "shell.execute_reply": "2023-06-21T01:32:53.216688Z" + }, "id": "6xpZA6M_9vra" }, "outputs": [], @@ -113,6 +153,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "11YzfvYk9vrb" @@ -127,6 +168,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:53.221348Z", + "iopub.status.busy": "2023-06-21T01:32:53.220575Z", + "iopub.status.idle": "2023-06-21T01:33:02.188941Z", + "shell.execute_reply": "2023-06-21T01:33:02.189465Z" + }, "id": "Ar05ANgq9vrb" }, "outputs": [], @@ -136,6 +183,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "DPMW1MDy9vrc" @@ -150,6 +198,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:02.195727Z", + "iopub.status.busy": "2023-06-21T01:33:02.194869Z", + "iopub.status.idle": "2023-06-21T01:33:02.198178Z", + "shell.execute_reply": "2023-06-21T01:33:02.198686Z" + }, "id": "n7WgbbkJ9vrc" }, "outputs": [ @@ -159,7 +213,7 @@ "text": [ "[\n", " {\n", - " \"_id\": \"xTMstYH6EN8AJ4GWd\",\n", + " \"_id\": \"K2Zuo5jaYnBsy5QuZ\",\n", " \"name\": \"mp-978534\",\n", " \"tags\": [\n", " \"tag1\",\n", @@ -262,19 +316,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.94061861,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 2.4129329836984963e-16\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " -1.9703099161104942,\n", + " 3.4126754700608424,\n", + " 2.4129329836984963e-16\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 6.508731\n", " ]\n", " ]\n", " },\n", @@ -339,57 +393,65 @@ " }\n", " ],\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"owner\": {\n", - " \"_id\": \"5b143a4ecd313f405b314224\",\n", - " \"slug\": \"exabyte-io\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"schemaVersion\": \"0.2.0\",\n", + " \"isNonPeriodic\": false,\n", " \"exabyteId\": \"gkqRopeiSSSmEwwmB\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"1713aca1d54249f270321378964ea960\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-21T01:32:57.504Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab23\",\n", - " \"slug\": \"owner\",\n", + " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", + " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab24\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab26\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", + " \"slug\": \"owner\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab27\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab28\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab29\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-07-12T14:08:35.585Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"1713aca1d54249f270321378964ea960\",\n", - " \"updatedAt\": \"2021-07-12T14:08:36.123Z\"\n", + " \"updatedAt\": \"2023-06-21T01:32:57.557Z\",\n", + " \"updatedBy\": \"0\"\n", " },\n", " {\n", - " \"_id\": \"RAwEnfqohAPfkGfcv\",\n", + " \"_id\": \"Dux3MQr6ASsnqQT3A\",\n", " \"name\": \"mp-1096549\",\n", " \"tags\": [\n", " \"tag1\",\n", @@ -828,19 +890,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 5.600638,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 3.429401699941517e-16\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " 1.8010003878309175e-15,\n", + " 11.199396937746414,\n", + " 0.0011808493681762986\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 11.20083406\n", " ]\n", " ]\n", " },\n", @@ -905,54 +967,62 @@ " }\n", " ],\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"owner\": {\n", - " \"_id\": \"5b143a4ecd313f405b314224\",\n", - " \"slug\": \"exabyte-io\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"schemaVersion\": \"0.2.0\",\n", + " \"isNonPeriodic\": false,\n", " \"exabyteId\": \"vTf7WM4iz6yZwh2ai\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"2b8cdd2c05e6febd6fd68fd2196f1033\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-21T01:33:02.196Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab23\",\n", - " \"slug\": \"owner\",\n", + " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", + " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab24\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab26\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", + " \"slug\": \"owner\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab27\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab28\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab29\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-07-12T14:08:39.944Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"2b8cdd2c05e6febd6fd68fd2196f1033\",\n", - " \"updatedAt\": \"2021-07-12T14:08:40.238Z\"\n", + " \"updatedAt\": \"2023-06-21T01:33:02.285Z\",\n", + " \"updatedBy\": \"0\"\n", " }\n", "]\n" ] diff --git a/examples/material/import_materials_from_materialsproject.py b/examples/material/import_materials_from_materialsproject.py index 7ce9f45f..909112a7 100644 --- a/examples/material/import_materials_from_materialsproject.py +++ b/examples/material/import_materials_from_materialsproject.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# This example demonstrates how to import materials from the materials project database via [Material](https://docs.exabyte.io/api/Material/post_materials_import) endpoint. +# This example demonstrates how to import materials from the materials project database via [Material](https://docs.mat3ra.com/api/Material/post_materials_import) endpoint. # # Complete Authorization Form and Initialize Settings # @@ -15,15 +15,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -31,20 +31,28 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # # Imports -# In[]: +# In[ ]: -from utils.generic import display_JSON -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY +from examples.utils.generic import display_JSON +from examples.settings import ENDPOINT_ARGS, MATERIALS_PROJECT_API_KEY from exabyte_api_client.endpoints.materials import MaterialEndpoints @@ -53,9 +61,9 @@ # # - **MATERIALS_PROJECT_IDS**: a list of material IDs to be imported # -# - **TAGS**: a list of [tags](https://docs.exabyte.io/entities-general/data/#tags) to assign to imported materials +# - **TAGS**: a list of [tags](https://docs.mat3ra.com/entities-general/data/#tags) to assign to imported materials -# In[]: +# In[ ]: MATERIALS_PROJECT_IDS = ["mp-978534", "mp-1096549"] @@ -66,7 +74,7 @@ # # Initialize `MaterialEndpoints` class and call `import_from_materialsproject` function to import materials. -# In[]: +# In[ ]: endpoint = MaterialEndpoints(*ENDPOINT_ARGS) @@ -77,7 +85,8 @@ # # Print the list of imported materials in pretty JSON below. -# In[]: +# In[ ]: display_JSON(materials) + diff --git a/examples/material/import_materials_from_poscar.ipynb b/examples/material/import_materials_from_poscar.ipynb index e61302be..d5485892 100644 --- a/examples/material/import_materials_from_poscar.ipynb +++ b/examples/material/import_materials_from_poscar.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "MLXQKxebuC-n" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "JHlckWayuC-p" @@ -19,10 +21,11 @@ "source": [ "# Overview\n", "\n", - "This example demonstrates how to import a material from a POSCAR file via [Material](https://docs.exabyte.io/api/Material/post_materials_import) endpoints." + "This example demonstrates how to import a material from a POSCAR file via [Material](https://docs.mat3ra.com/api/Material/post_materials_import) endpoints." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "K_Kn5WW9uC-q" @@ -34,13 +37,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -48,6 +51,12 @@ "execution_count": 1, "metadata": { "cellView": "form", + "execution": { + "iopub.execute_input": "2023-06-21T01:33:06.288522Z", + "iopub.status.busy": "2023-06-21T01:33:06.287577Z", + "iopub.status.idle": "2023-06-21T01:33:06.289890Z", + "shell.execute_reply": "2023-06-21T01:33:06.290421Z" + }, "id": "uHaV3rUuuC-r" }, "outputs": [], @@ -57,18 +66,25 @@ "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())\n", + "import os\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", - "# For this particular notebook example, we need to take an extra step if we are using colab\n", - "if environment_variables_config['notebook_environment'] == 'Colab':\n", - " !sudo apt-get install git-lfs\n", - " !git lfs pull" + " !GIT_BRANCH=\"dev\"; export GIT_BRANCH; export IS_USING_GIT_LFS=true; curl -s \"https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh\" | bash\n", + " from examples.utils.notebook import get_notebook_info\n", + " os.chdir(os.path.join(\"api-examples\", os.path.dirname(get_notebook_info()[\"notebook_path\"])))" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "QuS0AUReuC-s" @@ -81,18 +97,33 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:06.295505Z", + "iopub.status.busy": "2023-06-21T01:33:06.294605Z", + "iopub.status.idle": "2023-06-21T01:33:06.359947Z", + "shell.execute_reply": "2023-06-21T01:33:06.360591Z" + }, "id": "XCRPc4MLuC-s" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "from utils.generic import display_JSON\n", - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS\n", + "from examples.settings import ENDPOINT_ARGS\n", + "from examples.utils.generic import display_JSON\n", "\n", "from exabyte_api_client.endpoints.materials import MaterialEndpoints" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "LvfQMJqsuC-t" @@ -108,6 +139,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:06.365006Z", + "iopub.status.busy": "2023-06-21T01:33:06.364235Z", + "iopub.status.idle": "2023-06-21T01:33:06.366371Z", + "shell.execute_reply": "2023-06-21T01:33:06.366922Z" + }, "id": "cSLWWPheuC-t" }, "outputs": [], @@ -117,6 +154,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "A6XJ_CbNuC-u" @@ -131,19 +169,46 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:06.371410Z", + "iopub.status.busy": "2023-06-21T01:33:06.370607Z", + "iopub.status.idle": "2023-06-21T01:33:09.355218Z", + "shell.execute_reply": "2023-06-21T01:33:09.355866Z" + }, "id": "7Jsik4LMuC-v" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mp-978534\n", + "1.0\n", + " 3.940618000\t 0.000000000\t 0.000000000\n", + " -1.970309000\t 3.412675295\t 0.000000000\n", + " 0.000000000\t 0.000000000\t 6.508731000\n", + "Ge Si\n", + "2 2\n", + "direct\n", + " 0.000000000 0.000000000 0.000000000 Ge\n", + " 0.333334000 0.666666000 0.500439000 Ge\n", + " 0.000000000 0.000000000 0.374560000 Si\n", + " 0.333334000 0.666666000 0.874561000 Si\n" + ] + } + ], "source": [ "content = \"\"\n", "with open(POSCAR_PATH) as f:\n", " content = f.read()\n", + " print(content)\n", "\n", "endpoint = MaterialEndpoints(*ENDPOINT_ARGS)\n", "material = endpoint.import_from_file(NAME, content)" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "QnR-YtwSuC-v" @@ -158,6 +223,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:33:09.360835Z", + "iopub.status.busy": "2023-06-21T01:33:09.360024Z", + "iopub.status.idle": "2023-06-21T01:33:09.363018Z", + "shell.execute_reply": "2023-06-21T01:33:09.363649Z" + }, "id": "5_3peD-MuC-v" }, "outputs": [ @@ -166,7 +237,7 @@ "output_type": "stream", "text": [ "{\n", - " \"_id\": \"HRfdn9WzgCNwZEs86\",\n", + " \"_id\": \"Tm4Bav2eLQrQG3rRn\",\n", " \"name\": \"My Material\",\n", " \"tags\": [],\n", " \"src\": {\n", @@ -266,19 +337,19 @@ " \"units\": \"crystal\",\n", " \"cell\": [\n", " [\n", - " 1,\n", + " 3.940618,\n", " 0,\n", - " 6.123233995736766e-17\n", + " 2.4129326101812225e-16\n", " ],\n", " [\n", - " 1.6081226496766366e-16,\n", - " 1,\n", - " 6.123233995736766e-17\n", + " -1.9703090000000008,\n", + " 3.412675295,\n", + " 2.4129326103879144e-16\n", " ],\n", " [\n", " 0,\n", " 0,\n", - " 1\n", + " 6.508731\n", " ]\n", " ]\n", " },\n", @@ -343,54 +414,62 @@ " }\n", " ],\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"owner\": {\n", - " \"_id\": \"5b143a4ecd313f405b314224\",\n", - " \"slug\": \"exabyte-io\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"schemaVersion\": \"0.2.0\",\n", + " \"isNonPeriodic\": false,\n", " \"exabyteId\": \"gkqRopeiSSSmEwwmB\",\n", + " \"isDefault\": false,\n", + " \"scaledHash\": \"59e2267262840a240a8193a7ab6ce493\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-21T01:33:09.464Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab23\",\n", - " \"slug\": \"owner\",\n", + " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", + " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab24\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab26\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", + " \"slug\": \"owner\",\n", + " \"cls\": \"Team\"\n", + " },\n", + " {\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab27\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab28\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"5b143a7dacd8211c4898ab29\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", - " \"isDefault\": false,\n", - " \"createdAt\": \"2021-07-12T14:08:36.187Z\",\n", - " \"isEntitySet\": false,\n", - " \"scaledHash\": \"59e2267262840a240a8193a7ab6ce493\",\n", - " \"updatedAt\": \"2021-07-12T14:08:36.349Z\"\n", + " \"updatedAt\": \"2023-06-21T01:33:09.516Z\",\n", + " \"updatedBy\": \"0\"\n", "}\n" ] } diff --git a/examples/material/import_materials_from_poscar.py b/examples/material/import_materials_from_poscar.py index d31acbad..cb4a39ba 100644 --- a/examples/material/import_materials_from_poscar.py +++ b/examples/material/import_materials_from_poscar.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# This example demonstrates how to import a material from a POSCAR file via [Material](https://docs.exabyte.io/api/Material/post_materials_import) endpoints. +# This example demonstrates how to import a material from a POSCAR file via [Material](https://docs.mat3ra.com/api/Material/post_materials_import) endpoints. # # Complete Authorization Form and Initialize Settings # @@ -15,15 +15,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -31,25 +31,30 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) -# For this particular notebook example, we need to take an extra step if we are using colab -if environment_variables_config['notebook_environment'] == 'Colab': - get_ipython().system('sudo apt-get install git-lfs') - get_ipython().system('git lfs pull') + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; export IS_USING_GIT_LFS=true; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') + from examples.utils.notebook import get_notebook_info + os.chdir(os.path.join("api-examples", os.path.dirname(get_notebook_info()["notebook_path"]))) # # Imports -# In[]: +# In[ ]: -from utils.generic import display_JSON -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS +from examples.settings import ENDPOINT_ARGS +from examples.utils.generic import display_JSON from exabyte_api_client.endpoints.materials import MaterialEndpoints @@ -59,7 +64,7 @@ # - **NAME**: material name # - **POSCAR_PATH**: absolute path to the POSCAR file -# In[]: +# In[ ]: NAME = "My Material" @@ -70,12 +75,13 @@ # # Initialize `MaterialEndpoints` class and call `import_from_file` function to import the material. -# In[]: +# In[ ]: content = "" with open(POSCAR_PATH) as f: content = f.read() + print(content) endpoint = MaterialEndpoints(*ENDPOINT_ARGS) material = endpoint.import_from_file(NAME, content) @@ -85,7 +91,8 @@ # # Print the list of imported materials in pretty JSON below. -# In[]: +# In[ ]: display_JSON(material) + diff --git a/examples/settings.py b/examples/settings.py index ffd883c3..f617834f 100644 --- a/examples/settings.py +++ b/examples/settings.py @@ -12,7 +12,7 @@ # ACCOUNT_ID: Account ID. See get_authentication_params.ipynb example for more information. # AUTH_TOKEN: Account authentication token. See get_authentication_params.ipynb for more information. - # MATERIALS_PROJECT_API_KEY: Materials project API key. See https://materialsproject.org/open for more information. + # MATERIALS_PROJECT_API_KEY: Materials project API key. See https://legacy.materialsproject.org/open for more information. # Load variables from the settings.json file import json, os @@ -21,14 +21,25 @@ with open(absolute_path_to_settings_json_file) as settings_json_file: settings_json_config = json.load(settings_json_file) -ACCOUNT_ID = settings_json_config.get("ACCOUNT_ID") -AUTH_TOKEN = settings_json_config.get("AUTH_TOKEN") -MATERIALS_PROJECT_API_KEY = settings_json_config.get("MATERIALS_PROJECT_API_KEY") -ORGANIZATION_ID = settings_json_config.get("ORGANIZATION_ID") +# The variables below are defined in the first code cell +# in either the Google Colab or Jupyter notebook. +# +# In Google Colab, these variables must be filled out in the 'Authorization Form' section of the notebook, +# which are added to the environment variables. +# +# If using Jupyter, these variables can be left to their default values in the code cell, but the user +# should change these values in the settings.json file located in the examples folder. +# +# We prioritize the environment variables for Google Colab, and fall back to the settings from JSON for Jupyter. + +ACCOUNT_ID = os.getenv("ACCOUNT_ID", settings_json_config.get("ACCOUNT_ID")) +AUTH_TOKEN = os.getenv("AUTH_TOKEN", settings_json_config.get("AUTH_TOKEN")) +MATERIALS_PROJECT_API_KEY = os.getenv("MATERIALS_PROJECT_API_KEY", settings_json_config.get("MATERIALS_PROJECT_API_KEY")) +ORGANIZATION_ID = os.getenv("ORGANIZATION_ID", settings_json_config.get("ORGANIZATION_ID")) # Advanced settings. Should not need adjustments. - # HOST: Hostname of the RESTful API server. Defaults to platform.exabyte.io. + # HOST: Hostname of the RESTful API server. Defaults to platform.mat3ra.com. # PORT: The port RESTful API server is listening on. Defaults to 443. # VERSION: RESTFul API version. Defaults to 2018-10-01. # SECURE: Whether to use secure connection. Defaults to True. diff --git a/examples/system/get_authentication_params.ipynb b/examples/system/get_authentication_params.ipynb index 0cf6facb..1aebcaff 100644 --- a/examples/system/get_authentication_params.ipynb +++ b/examples/system/get_authentication_params.ipynb @@ -1,88 +1,86 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Overview\n", "\n", - "This example shows how to log in to Exabyte RESTFul API via [Login](https://docs.exabyte.io/api/API/post_login) endpoint and generate API authentication parameters.\n", - "\n", - "Here, we execute a remote URL to set our notebook environment. Do not edit the following cell's contents." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "ACCOUNT_ID = AUTH_TOKEN = MATERIALS_PROJECT_API_KEY = ORGANIZATION_ID = ''\n", - "import os, glob, sys, importlib, urllib.request\n", - "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "This example shows how to log in to Mat3ra RESTFul API via [Login](https://docs.mat3ra.com/api/API/post_login) endpoint and generate API authentication parameters." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Execution\n", "\n", - "> **NOTE**: In order to run this example, an active Exabyte.io account is required." + "> **NOTE**: In order to run this example, an active Mat3ra.com account is required." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## Import packages" + "## Set Parameters\n", + "\n", + "- **USERNAME**: Your Mat3ra account username.\n", + "\n", + "- **PASSWORD**: Your Mat3ra account password." ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, + "execution_count": null, + "metadata": { + "cellView": "form" + }, "outputs": [], "source": [ - "from settings import HOST, PORT, VERSION, SECURE\n", - "from utils.generic import display_JSON\n", + "#@title Authorization Form\n", + "USERNAME = \"YOUR_USERNAME\" #@param {type:\"string\"}\n", + "PASSWORD = \"YOUR_PASSWORD\" #@param {type:\"string\"}\n", "\n", - "from exabyte_api_client.endpoints.login import LoginEndpoint" + "import os\n", + "if \"COLAB_JUPYTER_IP\" in os.environ:\n", + " !GIT_BRANCH=\"dev\"; export GIT_BRANCH; curl -s \"https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh\" | bash" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## Set Parameters\n", - "\n", - "- **USERNAME**: Your Exabyte account username.\n", - "\n", - "- **PASSWORD**: Your Exabyte account password." + "## Import packages" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "USERNAME = \"YOUR_USERNANE\"\n", - "PASSWORD = \"YOUR_PASSWORD\"" + "from examples.settings import HOST, PORT, VERSION, SECURE\n", + "from examples.utils.generic import display_JSON\n", + "\n", + "from exabyte_api_client.endpoints.login import LoginEndpoint" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -91,7 +89,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -100,12 +98,13 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Print authentication parameters\n", "\n", - "Print the authentication parameters in pretty JSON below. Update [settings](../settings.py) with this parameters to be able to run other examples." + "Print the authentication parameters in pretty JSON below. Update [settings](../settings.json) with this parameters to be able to run other examples." ] }, { @@ -114,8 +113,7 @@ "metadata": { "pycharm": { "name": "#%%\n" - }, - "scrolled": true + } }, "outputs": [], "source": [ diff --git a/examples/system/get_authentication_params.py b/examples/system/get_authentication_params.py index fe084d52..a28010b3 100644 --- a/examples/system/get_authentication_params.py +++ b/examples/system/get_authentication_params.py @@ -1,52 +1,45 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# This example shows how to log in to Exabyte RESTFul API via [Login](https://docs.exabyte.io/api/API/post_login) endpoint and generate API authentication parameters. -# -# Here, we execute a remote URL to set our notebook environment. Do not edit the following cell's contents. - -# In[ ]: - - -ACCOUNT_ID = AUTH_TOKEN = MATERIALS_PROJECT_API_KEY = ORGANIZATION_ID = '' -import os, glob, sys, importlib, urllib.request - -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) - +# This example shows how to log in to Mat3ra RESTFul API via [Login](https://docs.mat3ra.com/api/API/post_login) endpoint and generate API authentication parameters. # # Execution # -# > **NOTE**: In order to run this example, an active Exabyte.io account is required. +# > **NOTE**: In order to run this example, an active Mat3ra.com account is required. -# ## Import packages +# ## Set Parameters +# +# - **USERNAME**: Your Mat3ra account username. +# +# - **PASSWORD**: Your Mat3ra account password. # In[ ]: -from settings import HOST, PORT, VERSION, SECURE -from utils.generic import display_JSON +#@title Authorization Form +USERNAME = "YOUR_USERNAME" #@param {type:"string"} +PASSWORD = "YOUR_PASSWORD" #@param {type:"string"} -from exabyte_api_client.endpoints.login import LoginEndpoint +import os +if "COLAB_JUPYTER_IP" in os.environ: + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') -# ## Set Parameters -# -# - **USERNAME**: Your Exabyte account username. -# -# - **PASSWORD**: Your Exabyte account password. +# ## Import packages # In[ ]: -USERNAME = "YOUR_USERNANE" -PASSWORD = "YOUR_PASSWORD" +from examples.settings import HOST, PORT, VERSION, SECURE +from examples.utils.generic import display_JSON + +from exabyte_api_client.endpoints.login import LoginEndpoint # ## Initialize the endpoint @@ -60,9 +53,10 @@ # ## Print authentication parameters # -# Print the authentication parameters in pretty JSON below. Update [settings](../settings.py) with this parameters to be able to run other examples. +# Print the authentication parameters in pretty JSON below. Update [settings](../settings.json) with this parameters to be able to run other examples. # In[ ]: display_JSON(auth_params) + diff --git a/examples/utils/colab.py b/examples/utils/colab.py index 8878a899..014e5007 100644 --- a/examples/utils/colab.py +++ b/examples/utils/colab.py @@ -3,7 +3,7 @@ def setup_colab_runtime_environment(environment_variables_config): """ - This function setups up the runtime environment for running the exabyte-api-examples + This function setups up the runtime environment for running the Exabyte-io/api-examples notebooks within Google Colaboratory Args: diff --git a/examples/utils/generic.py b/examples/utils/generic.py index 1418aaba..cd1d7a87 100644 --- a/examples/utils/generic.py +++ b/examples/utils/generic.py @@ -3,7 +3,7 @@ import datetime import os import importlib.util -import settings +from examples import settings import urllib from IPython.display import display, JSON import json diff --git a/examples/utils/initialize_settings.py b/examples/utils/initialize_settings.py deleted file mode 100644 index 1b1e9fae..00000000 --- a/examples/utils/initialize_settings.py +++ /dev/null @@ -1,93 +0,0 @@ -# The variables defined below in environment_variables_config are defined in the first code cell -# in either the Google Colab or Jupyter notebook. -# -# In Google Colab, these variables must be filled out in the 'Authorization Form' section of the notebook. -# -# If using Jupyter, these variables can be left to their default values in the code cell, but the user -# should change these values in the settings.json file located in the examples folder. - -import glob -import os -import socket -import sys - -import requests -from IPython import get_ipython - -environment_variables_config = { - "ACCOUNT_ID": ACCOUNT_ID, # noqa F821 - "AUTH_TOKEN": AUTH_TOKEN, # noqa F821 - "MATERIALS_PROJECT_API_KEY": MATERIALS_PROJECT_API_KEY, # noqa F821 - "ORGANIZATION_ID": ORGANIZATION_ID, # noqa F821 -} - - -def set_notebook_environment(environment_variables_config): - """ - This function sets the notebook environment by calling to install the needed packages - and setting the variables in settings.json (if needed) - Args: - environment_variables_config (dict): contains key value pairs needed to set up a - certain notebook (or frontend) runtime. - Ex) environment_variables_config['ACCOUNT_ID'] = ACCOUNT_ID - environment_variables_config[notebook_environment] = "Jupyter" - - Return: - None - """ - notebook_environment = environment_variables_config["notebook_environment"] - if notebook_environment == "Colab": - from utils.colab import setup_colab_runtime_environment - - setup_colab_runtime_environment(environment_variables_config) - else: - from utils.generic import ensure_packages_are_installed - - ensure_packages_are_installed(notebook_environment) - - -def get_notebook_name(): - """ - Get the name of a currently running notebook in Google Colab. - Args: - None - Return: - filename - """ - ip = socket.gethostbyname(socket.gethostname()) # 172.28.0.12 - filename = requests.get(f"http://{ip}:9000/api/sessions").json()[0]["name"] - return filename - - -def execute(): - """ - Main execution function. This function determines and sets the runtime environment - for a given notebook frontend, such as Jupyter Notebooks or Google Colab. - Args: - None - Return: - None - """ - - if "is_setup_executed" not in os.environ: - ip = get_ipython() - if "google.colab" in str(ip): - branch = os.getenv("GIT_BRANCH", "dev") # a way to inject a branch of interest from Colab if run via a PR. - environment_variables_config.update({"notebook_environment": "Colab"}) - ip.system(f"git clone --depth=1 --single-branch -b {branch} https://github.com/Exabyte-io/api-examples.git") - notebook_name = get_notebook_name() - notebook_path = glob.glob(f"**/{notebook_name}", recursive=True)[0][0 : -len(notebook_name)] - os.chdir(notebook_path) # go to the folder in the repo where one would be if this was in local Jupyter - elif "ZMQInteractiveShell" in str(ip): - environment_variables_config.update({"notebook_environment": "Jupyter"}) - else: - environment_variables_config.update({"notebook_environment": ""}) - - module_path = os.path.abspath(os.path.join("..")) - if module_path not in sys.path: - sys.path.append(module_path) - set_notebook_environment(environment_variables_config) - - -execute() -os.environ.update({"is_setup_executed": "True"}) diff --git a/examples/utils/notebook.py b/examples/utils/notebook.py new file mode 100644 index 00000000..9efd955e --- /dev/null +++ b/examples/utils/notebook.py @@ -0,0 +1,47 @@ +import os +import re +import sys +from urllib.parse import unquote, urlparse + +import requests + + +def get_notebook_info() -> dict: + """ + Get the information about a currently running notebook in Google Colab. + Args: + None + Return: + a dict with notebook info. + """ + # ip = socket.gethostbyname(socket.gethostname()) # 172.28.0.12 + ip = os.getenv("COLAB_JUPYTER_IP") + response = requests.get(f"http://{ip}:9000/api/sessions").json()[0] + + notebook_name = response["name"] + path = urlparse(unquote(response["path"]).split("=")[1]).path + parsed = re.findall("(.*)/blob/(.*)/examples/(.*)", path)[0] + github_org_repo = parsed[0][1:] # remove leading / + branch_name = parsed[1] + notebook_path = f"examples/{parsed[2]}" + + return dict( + notebook_name=notebook_name, + notebook_path=notebook_path, + branch_name=branch_name, + github_org_repo=github_org_repo, + ) + + +def print_notebook_path(): + """ + A proxy function used for a single string return when + the corresponding entry-point script in 'setup.py' is called. + + Args: + None + Return: + None + """ + # 'return get_notebook_info()["notebook_path"]' returns a non-zero exit code; using 'print' instead. + print(get_notebook_info()["notebook_path"]) diff --git a/examples/workflow/get_workflows.ipynb b/examples/workflow/get_workflows.ipynb index c0c179be..b5b8e329 100644 --- a/examples/workflow/get_workflows.ipynb +++ b/examples/workflow/get_workflows.ipynb @@ -1,17 +1,19 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "rqmhDMSkIQAT" }, "source": [ - "\n", + "\n", "\"Open\n", "" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "OtfhrLhwIQAV" @@ -19,10 +21,11 @@ "source": [ "# Overview\n", "\n", - "Inside this example we contact [Workflow](https://docs.exabyte.io/api/Workflows/get_workflows) endpoint to obtain a list of workflows that an account has access to." + "Inside this example we contact [Workflow](https://docs.mat3ra.com/api/Workflows/get_workflows) endpoint to obtain a list of workflows that an account has access to." ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "stJCOZz0IQAW" @@ -34,13 +37,13 @@ "\n", "If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell.\n", "\n", - "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/).\n", + "ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/).\n", "\n", "MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open)\n", "\n", - "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/\n", + "ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/\n", "\n", - "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/" + "> **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/" ] }, { @@ -51,6 +54,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:32:36.155321Z", + "iopub.status.busy": "2023-06-21T01:32:36.154187Z", + "iopub.status.idle": "2023-06-21T01:32:36.156731Z", + "shell.execute_reply": "2023-06-21T01:32:36.157576Z" + }, "id": "KenNuzjjIQAW", "outputId": "1622a36b-7d5c-4798-a684-ca9f1e069ff2" }, @@ -61,13 +70,23 @@ "AUTH_TOKEN = \"AUTH_TOKEN\" #@param {type:\"string\"}\n", "MATERIALS_PROJECT_API_KEY = \"MATERIALS_PROJECT_API_KEY\" #@param {type:\"string\"}\n", "ORGANIZATION_ID = \"ORGANIZATION_ID\" #@param {type:\"string\"}\n", - "import os, glob, sys, importlib, urllib.request\n", "\n", - "# The below execution sets up runtime using code stored remotely in a url\n", - "exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read())" + "import os\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" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "t0TQd18kIQAX" @@ -80,18 +99,33 @@ "cell_type": "code", "execution_count": 2, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:36.162789Z", + "iopub.status.busy": "2023-06-21T01:32:36.161750Z", + "iopub.status.idle": "2023-06-21T01:32:36.247864Z", + "shell.execute_reply": "2023-06-21T01:32:36.248379Z" + }, "id": "dX3VXdWJIQAX" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/exabyte/.pyenv/versions/3.8.6/lib/python3.8/site-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!\n", + " warnings.warn(\"urllib3 ({}) or chardet ({}) doesn't match a supported \"\n" + ] + } + ], "source": [ - "import settings; importlib.reload(settings)\n", - "from settings import ENDPOINT_ARGS, ACCOUNT_ID\n", - "from utils.generic import display_JSON\n", + "from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID\n", + "from examples.utils.generic import display_JSON\n", "\n", "from exabyte_api_client.endpoints.workflows import WorkflowEndpoints" ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "h8JubXPxIQAY" @@ -108,6 +142,12 @@ "cell_type": "code", "execution_count": 3, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:36.252804Z", + "iopub.status.busy": "2023-06-21T01:32:36.251997Z", + "iopub.status.idle": "2023-06-21T01:32:36.254468Z", + "shell.execute_reply": "2023-06-21T01:32:36.255016Z" + }, "id": "xCEktmwiIQAZ" }, "outputs": [], @@ -123,6 +163,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "1fgv7cWSIQAZ" @@ -137,6 +178,12 @@ "cell_type": "code", "execution_count": 4, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:36.259446Z", + "iopub.status.busy": "2023-06-21T01:32:36.258647Z", + "iopub.status.idle": "2023-06-21T01:32:36.260716Z", + "shell.execute_reply": "2023-06-21T01:32:36.261216Z" + }, "id": "pwEMspn7IQAa" }, "outputs": [], @@ -145,6 +192,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "iKpJYJYjIQAa" @@ -159,6 +207,12 @@ "cell_type": "code", "execution_count": 5, "metadata": { + "execution": { + "iopub.execute_input": "2023-06-21T01:32:36.266051Z", + "iopub.status.busy": "2023-06-21T01:32:36.265342Z", + "iopub.status.idle": "2023-06-21T01:32:37.027545Z", + "shell.execute_reply": "2023-06-21T01:32:37.028078Z" + }, "id": "wzFp8DcCIQAa" }, "outputs": [], @@ -167,6 +221,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "mrZ2nEmJIQAb" @@ -184,6 +239,12 @@ "colab": { "base_uri": "https://localhost:8080/" }, + "execution": { + "iopub.execute_input": "2023-06-21T01:32:37.033193Z", + "iopub.status.busy": "2023-06-21T01:32:37.032405Z", + "iopub.status.idle": "2023-06-21T01:32:37.035472Z", + "shell.execute_reply": "2023-06-21T01:32:37.035991Z" + }, "id": "KSJgpWRzIQAb", "outputId": "7ee3b7f6-208f-427e-ee32-07486078072c" }, @@ -194,11 +255,11 @@ "text": [ "[\n", " {\n", - " \"_id\": \"759db973ac0d17d1d619d33f\",\n", + " \"_id\": \"gnt78LeBHH4QCgxiw\",\n", " \"name\": \"Total Energy\",\n", " \"subworkflows\": [\n", " {\n", - " \"_id\": \"88720c95261b067a17488b79\",\n", + " \"_id\": \"0c20976ea2206f598b78d761\",\n", " \"name\": \"Total Energy\",\n", " \"application\": {\n", " \"_id\": \"XXNZ9pqkerTJtfkwk\",\n", @@ -207,11 +268,19 @@ " \"build\": \"Default\",\n", " \"isDefault\": true,\n", " \"summary\": \"Quantum Espresso\",\n", - " \"updatedAt\": \"2021-04-16T22:26:57.811Z\",\n", - " \"shortName\": \"qe\"\n", + " \"updatedAt\": \"2023-05-26T16:56:57.071Z\",\n", + " \"shortName\": \"qe\",\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"updatedBy\": \"0\"\n", " },\n", " \"properties\": [\n", - " null\n", + " \"total_energy\",\n", + " \"total_energy_contributions\",\n", + " \"pressure\",\n", + " \"fermi_energy\",\n", + " \"atomic_forces\",\n", + " \"total_force\",\n", + " \"stress_tensor\"\n", " ],\n", " \"model\": {\n", " \"type\": \"dft\",\n", @@ -263,7 +332,7 @@ " \"name\": \"convergence_electronic\"\n", " }\n", " ],\n", - " \"flowchartId\": \"3cdb01d7e21b28f25d6749bd\",\n", + " \"flowchartId\": \"c1a43599-6d18-4653-b1b0-91fbe224b782\",\n", " \"preProcessors\": [],\n", " \"postProcessors\": [],\n", " \"application\": {\n", @@ -273,17 +342,22 @@ " \"build\": \"Default\",\n", " \"isDefault\": true,\n", " \"summary\": \"Quantum Espresso\",\n", - " \"updatedAt\": \"2021-04-16T22:26:57.811Z\",\n", - " \"shortName\": \"qe\"\n", + " \"updatedAt\": \"2023-05-26T16:56:57.071Z\",\n", + " \"shortName\": \"qe\",\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"updatedBy\": \"0\"\n", " },\n", " \"executable\": {\n", - " \"_id\": \"YoysB5wYKWWBhbF8s\",\n", + " \"isDefault\": true,\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"postProcessors\": [\n", + " \"remove_non_zero_weight_kpoints\"\n", + " ],\n", " \"monitors\": [\n", " \"standard_output\",\n", " \"convergence_ionic\",\n", " \"convergence_electronic\"\n", " ],\n", - " \"name\": \"pw.x\",\n", " \"results\": [\n", " \"atomic_forces\",\n", " \"band_gaps\",\n", @@ -301,31 +375,13 @@ " \"potential_profile\",\n", " \"charge_density_profile\"\n", " ],\n", - " \"isDefault\": true,\n", - " \"postProcessors\": [\n", - " \"remove_non_zero_weight_kpoints\"\n", - " ],\n", - " \"applicationId\": [\n", - " \"meE8WJ9Xci649i76e\",\n", - " \"XXNZ9pqkerTJtfkwk\",\n", - " \"xqepjmWk7MfsNwPp5\",\n", - " \"a2skXBfaexWa5r2Fd\"\n", - " ],\n", - " \"createdAt\": \"2018-03-14T18:39:55.805Z\",\n", - " \"updatedAt\": \"2021-04-16T22:26:58.869Z\",\n", - " \"schemaVersion\": \"0.2.0\",\n", - " \"tags\": [],\n", - " \"inSet\": []\n", + " \"name\": \"pw.x\"\n", " },\n", " \"flavor\": {\n", - " \"_id\": \"Q8zRDZ2MNPzQbuxAL\",\n", - " \"name\": \"pw_scf\",\n", - " \"executableId\": \"YoysB5wYKWWBhbF8s\",\n", " \"isDefault\": true,\n", " \"input\": [\n", " {\n", - " \"name\": \"pw_scf.in\",\n", - " \"templateId\": \"rXQNWpqq2eYZZDbNc\"\n", + " \"name\": \"pw_scf.in\"\n", " }\n", " ],\n", " \"results\": [\n", @@ -341,20 +397,46 @@ " \"standard_output\",\n", " \"convergence_electronic\"\n", " ],\n", - " \"schemaVersion\": \"0.2.0\",\n", - " \"tags\": [],\n", - " \"updatedAt\": \"2021-04-16T22:26:58.881Z\",\n", - " \"inSet\": []\n", + " \"applicationName\": \"espresso\",\n", + " \"executableName\": \"pw.x\",\n", + " \"name\": \"pw_scf\",\n", + " \"executable\": {\n", + " \"isDefault\": true,\n", + " \"hasAdvancedComputeOptions\": true,\n", + " \"postProcessors\": [\n", + " \"remove_non_zero_weight_kpoints\"\n", + " ],\n", + " \"monitors\": [\n", + " \"standard_output\",\n", + " \"convergence_ionic\",\n", + " \"convergence_electronic\"\n", + " ],\n", + " \"results\": [\n", + " \"atomic_forces\",\n", + " \"band_gaps\",\n", + " \"density_of_states\",\n", + " \"fermi_energy\",\n", + " \"pressure\",\n", + " \"stress_tensor\",\n", + " \"total_energy\",\n", + " \"total_energy_contributions\",\n", + " \"total_force\",\n", + " \"final_structure\",\n", + " \"magnetic_moments\",\n", + " \"reaction_energy_barrier\",\n", + " \"reaction_energy_profile\",\n", + " \"potential_profile\",\n", + " \"charge_density_profile\"\n", + " ],\n", + " \"name\": \"pw.x\"\n", + " }\n", " },\n", " \"status\": \"idle\",\n", " \"statusTrack\": [],\n", " \"input\": [\n", " {\n", - " \"_id\": \"rXQNWpqq2eYZZDbNc\",\n", - " \"applicationName\": \"espresso\",\n", - " \"executableName\": \"pw.x\",\n", + " \"content\": \"{% if subworkflowContext.MATERIAL_INDEX %}\\n{%- set input = input.perMaterial[subworkflowContext.MATERIAL_INDEX] -%}\\n{% endif -%}\\n&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = '{{ input.RESTART_MODE }}'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n wfcdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n prefix = '__prefix__'\\n pseudo_dir = {% raw %}'{{ JOB_WORK_DIR }}/pseudo'{% endraw %}\\n/\\n&SYSTEM\\n ibrav = {{ input.IBRAV }}\\n nat = {{ input.NAT }}\\n ntyp = {{ input.NTYP }}\\n ecutwfc = {{ cutoffs.wavefunction }}\\n ecutrho = {{ cutoffs.density }}\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\n{{ input.ATOMIC_SPECIES }}\\nATOMIC_POSITIONS crystal\\n{{ input.ATOMIC_POSITIONS }}\\nCELL_PARAMETERS angstrom\\n{{ input.CELL_PARAMETERS }}\\nK_POINTS automatic\\n{% for d in kgrid.dimensions %}{{d}} {% endfor %}{% for s in kgrid.shifts %}{{s}} {% endfor %}\",\n", " \"name\": \"pw_scf.in\",\n", - " \"content\": \"&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = '{{ input.RESTART_MODE }}'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n wfcdir = {% raw %}'{{ JOB_WORK_DIR }}/outdir'{% endraw %}\\n prefix = '__prefix__'\\n pseudo_dir = {% raw %}'{{ JOB_WORK_DIR }}/pseudo'{% endraw %}\\n/\\n&SYSTEM\\n ibrav = {{ input.IBRAV }}\\n nat = {{ input.NAT }}\\n ntyp = {{ input.NTYP }}\\n ecutwfc = {{ cutoffs.wavefunction }}\\n ecutrho = {{ cutoffs.density }}\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\n{{ input.ATOMIC_SPECIES }}\\nATOMIC_POSITIONS crystal\\n{{ input.ATOMIC_POSITIONS }}\\nCELL_PARAMETERS angstrom\\n{{ input.CELL_PARAMETERS }}\\nK_POINTS automatic\\n{% for d in kgrid.dimensions %}{{d}} {% endfor %}{% for s in kgrid.shifts %}{{s}} {% endfor %}\",\n", " \"contextProviders\": [\n", " {\n", " \"name\": \"KGridFormDataManager\"\n", @@ -366,28 +448,34 @@ " \"name\": \"PlanewaveCutoffDataManager\"\n", " }\n", " ],\n", - " \"updatedAt\": \"2021-04-16T22:26:56.645Z\",\n", - " \"rendered\": \"&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = 'from_scratch'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = '{{ JOB_WORK_DIR }}/outdir'\\n wfcdir = '{{ JOB_WORK_DIR }}/outdir'\\n prefix = '__prefix__'\\n pseudo_dir = '{{ JOB_WORK_DIR }}/pseudo'\\n/\\n&SYSTEM\\n ibrav = 0\\n nat = 2\\n ntyp = 1\\n ecutwfc = 40\\n ecutrho = 200\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\nSi 28.0855 \\nATOMIC_POSITIONS crystal\\nSi 0.000000000 0.000000000 0.000000000 \\nSi 0.250000000 0.250000000 0.250000000 \\nCELL_PARAMETERS angstrom\\n3.348920236 0.000000000 1.933500000\\n1.116306745 3.157392278 1.933500000\\n0.000000000 0.000000000 3.867000000\\nK_POINTS automatic\\n10 10 10 0 0 0 \"\n", + " \"applicationName\": \"espresso\",\n", + " \"executableName\": \"pw.x\",\n", + " \"updatedAt\": \"2023-05-26T16:56:54.663Z\",\n", + " \"updatedBy\": \"0\",\n", + " \"rendered\": \"&CONTROL\\n calculation = 'scf'\\n title = ''\\n verbosity = 'low'\\n restart_mode = 'from_scratch'\\n wf_collect = .true.\\n tstress = .true.\\n tprnfor = .true.\\n outdir = '{{ JOB_WORK_DIR }}/outdir'\\n wfcdir = '{{ JOB_WORK_DIR }}/outdir'\\n prefix = '__prefix__'\\n pseudo_dir = '{{ JOB_WORK_DIR }}/pseudo'\\n/\\n&SYSTEM\\n ibrav = 0\\n nat = 2\\n ntyp = 1\\n ecutwfc = 40\\n ecutrho = 200\\n occupations = 'smearing'\\n degauss = 0.005\\n/\\n&ELECTRONS\\n diagonalization = 'david'\\n diago_david_ndim = 4\\n diago_full_acc = .true.\\n mixing_beta = 0.3\\n startingwfc = 'atomic+random'\\n/\\n&IONS\\n/\\n&CELL\\n/\\nATOMIC_SPECIES\\nSi 28.0855 \\nATOMIC_POSITIONS crystal\\nSi 0.000000000 0.000000000 0.000000000 \\nSi 0.250000000 0.250000000 0.250000000 \\nCELL_PARAMETERS angstrom\\n3.348920236 0.000000000 1.933500000\\n1.116306745 3.157392278 1.933500000\\n0.000000000 0.000000000 3.867000000\\nK_POINTS automatic\\n2 2 2 0 0 0 \"\n", " }\n", " ]\n", " }\n", " ],\n", - " \"compute\": null\n", + " \"compute\": null,\n", + " \"isDraft\": false\n", " }\n", " ],\n", " \"units\": [\n", " {\n", - " \"type\": \"subworkflow\",\n", - " \"_id\": \"88720c95261b067a17488b79\",\n", " \"name\": \"Total Energy\",\n", + " \"type\": \"subworkflow\",\n", + " \"_id\": \"0c20976ea2206f598b78d761\",\n", + " \"flowchartId\": \"eb4e069ed1314c1981331aff\",\n", " \"status\": \"idle\",\n", " \"statusTrack\": [],\n", - " \"flowchartId\": \"af0883f9f46268241aed2937\",\n", " \"results\": [],\n", " \"monitors\": [],\n", " \"preProcessors\": [],\n", " \"postProcessors\": [],\n", - " \"head\": true\n", + " \"head\": true,\n", + " \"schemaVersion\": \"2022.8.16\",\n", + " \"isDefault\": false\n", " }\n", " ],\n", " \"properties\": [\n", @@ -400,25 +488,26 @@ " \"stress_tensor\"\n", " ],\n", " \"isDefault\": true,\n", - " \"hash\": \"50b01eb183ba4f861da835af14102b55\",\n", + " \"hash\": \"87148c7947ede06e787ec9d0197190f8\",\n", " \"isOutdated\": false,\n", - " \"createdAt\": \"2021-04-27T17:01:23.637Z\",\n", - " \"updatedAt\": \"2021-04-27T17:01:32.762Z\",\n", " \"workflows\": [],\n", - " \"schemaVersion\": \"0.2.0\",\n", + " \"schemaVersion\": \"2022.8.16\",\n", " \"tags\": [],\n", " \"owner\": {\n", - " \"_id\": \"HnTMM74xxPnTMFcm3\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"8TX5q8Eenb5a5fqCK\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"Account\"\n", " },\n", " \"creator\": {\n", - " \"_id\": \"acky7GjD9aownD6iJ\",\n", - " \"slug\": \"bsmith\",\n", + " \"_id\": \"3Eh4qWRk6CE5Y7dds\",\n", + " \"slug\": \"mrakitin1\",\n", " \"cls\": \"User\"\n", " },\n", " \"compute\": null,\n", " \"exabyteId\": \"84DAjE9YyTFndx6z3\",\n", + " \"isEntitySet\": false,\n", + " \"createdAt\": \"2023-06-03T03:29:27.386Z\",\n", + " \"createdBy\": \"0\",\n", " \"inSet\": [\n", " {\n", " \"_id\": \"nQtFH6EKKxYJFY98d\",\n", @@ -426,72 +515,50 @@ " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3u3HBozhqNSF7x7dD\",\n", + " \"_id\": \"HcJjfDM8jLeZJw3PK\",\n", " \"slug\": \"admin\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"Q2KgxfbBTPqpSY4fw\",\n", + " \"_id\": \"Fk7wfNLfo3b3ZC3ZZ\",\n", " \"slug\": \"owner\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"QBnghAhrZstXct3eZ\",\n", + " \"_id\": \"xX8tM7piQwP6AgvKR\",\n", " \"slug\": \"read\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"vTz2KjNZWRShYYXJR\",\n", + " \"_id\": \"EfhfJ6CxywTtZbHX7\",\n", " \"slug\": \"comment\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"3fSoLrHgwEbjuR7NL\",\n", + " \"_id\": \"37mnhnnAQTtLBDGKB\",\n", " \"slug\": \"execute\",\n", " \"cls\": \"Team\"\n", " },\n", " {\n", - " \"_id\": \"MdDcBrcPRAG62hAmk\",\n", + " \"_id\": \"H42E5NursPBda5bg4\",\n", " \"slug\": \"edit\",\n", " \"cls\": \"Team\"\n", " }\n", " ],\n", + " \"updatedAt\": \"2023-06-03T03:29:27.891Z\",\n", + " \"updatedBy\": \"0\",\n", " \"history\": [\n", " {\n", - " \"id\": \"y6FZHw9yPA2rnqZzs\",\n", + " \"id\": \"ioBHNtM6Zs5CGmsSZ\",\n", " \"revision\": 0\n", " },\n", " {\n", - " \"id\": \"4k2PWq47jzW6csacC\",\n", + " \"id\": \"k9LGu6QaCbyoxHDFh\",\n", " \"revision\": 1\n", " },\n", " {\n", - " \"id\": \"gAhQ326kaxdqDAihz\",\n", + " \"id\": \"pnMFXEBQhHEWZHvyi\",\n", " \"revision\": 2\n", - " },\n", - " {\n", - " \"id\": \"ShxKWNYJoQ6ajv32r\",\n", - " \"revision\": 3\n", - " },\n", - " {\n", - " \"id\": \"sQdJbX2EAznhxSg3L\",\n", - " \"revision\": 4\n", - " },\n", - " {\n", - " \"id\": \"xhfsgmotgJwqMj32Y\",\n", - " \"revision\": 5\n", - " },\n", - " {\n", - " \"id\": \"Kf5raq49JnBGT3K8r\",\n", - " \"revision\": 6\n", - " },\n", - " {\n", - " \"id\": \"9r6YQ492QZ98k9ijt\",\n", - " \"revision\": 7\n", - " },\n", - " {\n", - " \"id\": \"XxbSAN9chq67rnKfb\",\n", - " \"revision\": 8\n", " }\n", " ]\n", " }\n", diff --git a/examples/workflow/get_workflows.py b/examples/workflow/get_workflows.py index 172f25e8..86ac26dc 100644 --- a/examples/workflow/get_workflows.py +++ b/examples/workflow/get_workflows.py @@ -1,13 +1,13 @@ #!/usr/bin/env python # coding: utf-8 -# +# # Open in Google Colab # # # Overview # -# Inside this example we contact [Workflow](https://docs.exabyte.io/api/Workflows/get_workflows) endpoint to obtain a list of workflows that an account has access to. +# Inside this example we contact [Workflow](https://docs.mat3ra.com/api/Workflows/get_workflows) endpoint to obtain a list of workflows that an account has access to. # # Complete Authorization Form and Initialize Settings # @@ -15,15 +15,15 @@ # # If you are running this notebook from Google Colab, Colab takes ~1 min to execute the following cell. # -# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Exabyte.io's API Endpoints](https://docs.exabyte.io/rest-api/endpoints/). +# ACCOUNT_ID and AUTH_TOKEN - Authentication parameters needed for when making requests to [Mat3ra.com's API Endpoints](https://docs.mat3ra.com/rest-api/endpoints/). # # MATERIALS_PROJECT_API_KEY - Authentication parameter needed for when making requests to [Material Project's API](https://materialsproject.org/open) # -# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.exabyte.io/collaboration/organizations/overview/ +# ORGANIZATION_ID - Authentication parameter needed for when working with collaborative accounts https://docs.mat3ra.com/collaboration/organizations/overview/ # -# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.exabyte.io/accounts/ui/preferences/api/ +# > **NOTE**: If you are running this notebook from Jupyter, the variables ACCOUNT_ID, AUTH_TOKEN, MATERIALS_PROJECT_API_KEY, and ORGANIZATION_ID should be set in the file [settings.json](../settings.json) if you need to use these variables. To obtain API token parameters, please see the following link to the documentation explaining how to get them: https://docs.mat3ra.com/accounts/ui/preferences/api/ -# In[]: +# In[ ]: #@title Authorization Form @@ -31,20 +31,28 @@ AUTH_TOKEN = "AUTH_TOKEN" #@param {type:"string"} MATERIALS_PROJECT_API_KEY = "MATERIALS_PROJECT_API_KEY" #@param {type:"string"} ORGANIZATION_ID = "ORGANIZATION_ID" #@param {type:"string"} -import os, glob, sys, importlib, urllib.request -# The below execution sets up runtime using code stored remotely in a url -exec(urllib.request.urlopen('https://raw.githubusercontent.com/Exabyte-io/exabyte-api-examples/dev/examples/utils/initialize_settings.py').read()) +import os +if "COLAB_JUPYTER_IP" in os.environ: + os.environ.update( + dict( + ACCOUNT_ID=ACCOUNT_ID, + AUTH_TOKEN=AUTH_TOKEN, + MATERIALS_PROJECT_API_KEY=MATERIALS_PROJECT_API_KEY, + ORGANIZATION_ID=ORGANIZATION_ID, + ) + ) + + get_ipython().system('GIT_BRANCH="bugfix/SOF-5578-WIP"; export GIT_BRANCH; curl -s "https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh" | bash') # ## Imports -# In[]: +# In[ ]: -import settings; importlib.reload(settings) -from settings import ENDPOINT_ARGS, ACCOUNT_ID -from utils.generic import display_JSON +from examples.settings import ENDPOINT_ARGS, ACCOUNT_ID +from examples.utils.generic import display_JSON from exabyte_api_client.endpoints.workflows import WorkflowEndpoints @@ -55,7 +63,7 @@ # # - **limit**: Maximum number of results to return. See [Meteor collection](https://docs.meteor.com/api/collections.html#Mongo-Collection-find) for more information. -# In[]: +# In[ ]: QUERY = { @@ -72,7 +80,7 @@ # # Initialize a helper class to interact with `WorkflowEndpoints`. This only has to be done once. -# In[]: +# In[ ]: endpoint = WorkflowEndpoints(*ENDPOINT_ARGS) @@ -82,7 +90,7 @@ # # Contact the endpoint to list workflows according to the query above. -# In[]: +# In[ ]: workflows = endpoint.list(QUERY, OPTIONS) @@ -92,7 +100,8 @@ # # Print the list of workflows saved under the corresponding variable in pretty JSON below. -# In[]: +# In[ ]: display_JSON(workflows) + diff --git a/requirements-colab.txt b/requirements-colab.txt index df7804d3..8778885b 100644 --- a/requirements-colab.txt +++ b/requirements-colab.txt @@ -1,21 +1,7 @@ # Requirements for use inside Google Colab, where Jupyter environment is already present -appnope==0.1.2 ase==3.21.1 -async-generator==1.10 -backcall==0.2.0 -cycler==0.10.0 -exabyte-api-client==2021.1.18 -jedi==0.18.0 -kiwisolver==1.3.1 -monty==2021.3.3 -mpmath==1.2.1 -nest-asyncio==1.5.1 -networkx==2.5.1 -palettable==3.3.0 -pymatgen==2021.2.16 -retrying==1.3.3 -ruamel.yaml==0.17.4 -ruamel.yaml.clib==0.2.2 -spglib==1.16.1 -uncertainties==3.1.5 +exabyte-api-client==2023.6.13.post0 +matplotlib +pymatgen==2023.5.31 +pandas==1.5.3 diff --git a/scripts/change-branch-in-urls.sh b/scripts/change-branch-in-urls.sh new file mode 100755 index 00000000..ed83b4fd --- /dev/null +++ b/scripts/change-branch-in-urls.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Change branch name in the Colab URLs in .ipynb files + +if [ -z "$1" -o -z "$2" ]; then + echo "Usage: change-branch-in-urls.sh " + exit 1 +fi + +old_branch_name="$1" +new_branch_name="$2" + +_RED=$(tput setaf 1; tput setab 7) +_GREEN=$(tput setaf 2; tput setab 7) +_BLUE=$(tput setaf 4; tput setab 7) +_RESET=$(tput sgr0) +_BOLD=$(tput bold) + +# Branch in Colab URLs: +old_url_pattern="api-examples/blob/${old_branch_name}/examples" +new_url_pattern="api-examples/blob/${new_branch_name}/examples" + +styled_old_url="api-examples/blob/${_RED}${old_branch_name}${_RESET}/examples" +styled_new_url="api-examples/blob/${_GREEN}${new_branch_name}${_RESET}/examples" + +# Git branches: +old_git_branch_pattern='GIT_BRANCH=\\"'"${old_branch_name}"'\\"' +new_git_branch_pattern='GIT_BRANCH=\\"'"${new_branch_name}"'\\"' + +styled_old_git_branch='GIT_BRANCH=\\"'"${_RED}${old_branch_name}${_RESET}"'\\"' +styled_new_git_branch='GIT_BRANCH=\\"'"${_GREEN}${new_branch_name}${_RESET}"'\\"' + +echo -e "\nFix branch in Colab URLs..." + +files=$(find . -name "*.ipynb" -exec grep -H "$old_url_pattern" {} \; | cut -d: -f1) +for file in $files; do + echo -e "File $file:" + echo -e " Updating URLs: ${styled_old_url} -> ${styled_new_url}" + sed -i "s;$old_url_pattern;$new_url_pattern;g" $file +done + +echo -e "\nFix git branches..." + +files=$(find . -name "*.ipynb" -exec grep -H $old_git_branch_pattern {} \; | cut -d: -f1) +for file in $files; do + echo -e "File $file:" + echo -e " Updating Git branch: ${styled_old_git_branch} -> ${styled_new_git_branch}" + sed -i "s;$old_git_branch_pattern;$new_git_branch_pattern;g" $file +done + + +exit 0 diff --git a/scripts/env.sh b/scripts/env.sh new file mode 100644 index 00000000..f941cf9d --- /dev/null +++ b/scripts/env.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# To run as: +# curl https://raw.githubusercontent.com/Exabyte-io/api-examples/${GIT_BRANCH}/scripts/env.sh | bash + +set -euo pipefail + +GIT_BRANCH="${GIT_BRANCH:-dev}" +REPO_NAME="api-examples" +VERBOSE="${EXABYTE_API_EXAMPLES_VERBOSE:-}" +IS_RUNNING_ON_COLAB="${COLAB_JUPYTER_IP:-}" +IS_USING_GIT_LFS="${IS_USING_GIT_LFS:-}" + +if [ ! -z "${VERBOSE}" ]; then + set -vxeuo pipefail + stdout="/dev/stdout" +else + stdout="/dev/null" +fi + +if [ ! -z "${IS_RUNNING_ON_COLAB}" ]; then + git clone https://github.com/Exabyte-io/${REPO_NAME}.git --single-branch --branch ${GIT_BRANCH} > ${stdout} 2>&1 || \ + echo -e "Directory ${REPO_NAME} already exists. Nothing to do." > ${stdout} 2>&1 + + cd ${REPO_NAME} + + # Install the examples repo, requirements are installed automatically. + python -m pip install -v . > ${stdout} 2>&1 + + if [ ! -z "${IS_USING_GIT_LFS}" ]; then + sudo apt-get install -y git-lfs > ${stdout} 2>&1 + git lfs pull > ${stdout} 2>&1 + fi + + # 'notebook-path' command is defined in setup.py via 'console_scripts' + notebook_path="$(notebook-path)" + + echo "Installation of the prerequisites is complete, the environment is ready to use!" + echo -e "Notebook : ${notebook_path}" +fi diff --git a/scripts/render-notebooks.sh b/scripts/render-notebooks.sh new file mode 100755 index 00000000..c5768122 --- /dev/null +++ b/scripts/render-notebooks.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# This is a helper script to render Jupyter notebook files (.ipynb) +# +# The workflow is as follows: +# - parse the README.md file and extract all the notebooks listed in the table +# or use a list of notebooks passed as a blank-separated inputs in command line; +# - for each notebook: +# - execute `nbstripout` to strip output cells; +# - execute `nbconvert` to populate the .ipynb file in place; +# - execute `nbconvert` to .py. + +set -euo pipefail + +if [ ! -z "$*" ]; then + notebooks="$@" + # E.g.: + # notebooks="examples/material/api_interoperability_showcase.ipynb" +else + notebooks="$(cat README.md | grep -E "\| (.*)[(.*)](examples/(.*).ipynb)" | cut -d'|' -f3 | grep -oE "\((.*)\)" | cut -d'(' -f2 | cut -d')' -f1)" +fi + +idir="$PWD" + +function now() { + echo $(date '+%F %T') +} + +for notebook in ${notebooks}; do + echo -e "$(now) Processing ${notebook}..." + + if [ ! -f "${notebook}" ]; then + echo "File ${notebook} does not exist. Exiting." + exit 1 + fi + + notebook_dir=$(dirname $notebook) + notebook_name=$(basename $notebook) + + cd $notebook_dir + + echo -e "$(now) Stripout output cells (if any)" + nbstripout ${notebook_name} + + echo -e "$(now) Exporting a python script for ${notebook_name}..." + jupyter-nbconvert --to python $notebook_name + echo -e "$(now) Exporting of a python script for ${notebook_name} is complete." + + if [[ ("${notebook_name}" == *"get_authentication_params.ipynb") || \ + ("${notebook_name}" == *"run-simulations-and-extract-properties.ipynb") || \ + ("${notebook_name}" == *"this-notebook-does-not-exist--placeholder-for-future-updates.ipynb") \ + ]]; then + echo -e "$(now) Skipping execution of ${notebook_name}." + else + echo -e "$(now) Executing ${notebook_name} in place..." + jupyter-nbconvert --execute --inplace ${notebook_name} + echo -e "$(now) Execution of ${notebook_name} in complete." + fi + + cd $idir + echo "" +done + +exit 0 diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..145a1e62 --- /dev/null +++ b/setup.py @@ -0,0 +1,32 @@ +import os +from setuptools import setup, find_packages + +here = os.path.abspath(os.path.dirname(__file__)) + +with open(os.path.join(here, "README.md"), encoding="utf-8") as f: + readme = f.read() + +if "COLAB_JUPYTER_IP" in os.environ: # running in Colab + requirements_file = "requirements-colab.txt" +else: + requirements_file = "requirements.txt" + +with open(requirements_file, "r") as f: + requirements = [line for line in f.read().splitlines() if not line.startswith("#")] + + +setup( + name="mat3ra-api-examples", + version="0.1.0", + description="Mat3ra API Examples", + long_description=readme, + long_description_content_type="text/markdown", + packages=find_packages(), + package_data={"examples": ["settings.json"]}, + entry_points={ + "console_scripts": [ + "notebook-path = examples.utils.notebook:print_notebook_path", + ], + }, + install_requires=requirements, +)