Compare commits

..

5 Commits

Author SHA256 Message Date
597eac5a4a changes README to reference repo of the actual parser 2026-01-27 16:00:14 +01:00
1e1728048e changes requirements to just jupyter 2026-01-27 15:55:12 +01:00
756a359bf1 updates notebook, changes reference to deleted remote resources 2026-01-27 15:43:01 +01:00
8e8c7a4f2b adds notebook on chained requests, layers of nesting etc 2026-01-26 16:31:37 +01:00
1b8f121ac9 adds experiments 48-49 for testing
to-do: move from starting from the layers to starting from the samples
2026-01-26 16:30:44 +01:00
5 changed files with 1203 additions and 6 deletions

View File

@@ -1,3 +1,5 @@
# parser-eLabFTW-2-NeXus # parser-eLabFTW-jupyter
Parser for eLabFTW to convert JSON data from the experiments to NeXus-compliant HDF5 files. Jupyter notebook collection to develop a parser for eLabFTW which is supposed to convert JSON data from the experiments to NeXus files for PLD depositions.
Previously this repo was dedicated to the entire project. That is now: [emanuele/parser-eLabFTW-NFFA-DI](https://gitea.damico.ing/emanuele/parser-eLabFTW-NFFA-DI).

View File

@@ -0,0 +1,268 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "a55330c2-1e65-42f4-bb3e-5a4298978771",
"metadata": {},
"source": [
"# Chained requests: fetching a resource referenced by another resource referenced by another resource...\n",
"An issue with our eLabFTW schema is that important data is scattered across many interconnected entries. For this reason the data requires **chained API requests** to resolve fully. This happens because resources on eLabFTW are linked to each other through their internal ID's (*elabid*) - which as previously stated is not relevant info to the project - and for instance to recover the value of key X from item A referenced on experiment B we need to:\n",
"\n",
"1. Fetch JSON data on experiment B through HTTP request;\n",
"2. Parse the JSON to get the value of item A's elabid;\n",
"3. Send another HTTP request to the server to fetch item A's data (also in JSON);\n",
"4. Parse the JSON to get the value of key X;\n",
"5. In the event that key X is the elabid of yet another resource, repeat steps 3 to 5 as necessary.\n"
]
},
{
"cell_type": "markdown",
"id": "a1ff1232-174e-4e0e-901b-92750340d1bc",
"metadata": {},
"source": [
"## Levels of nesting\n",
"Assuming we want to fetch the chemical formula of the compound of the substrate of a certain sample following the steps listed above, we may find the string containing that information into the eLab entry for the *compound* the substrate is made of, which is linked to the entry for the *batch* from which the substrate is taken, which in turn is linked to the entry for the *sample* associated to the experiment. Therefore we'll need to make N × chained HTTP requests to the eLabFTW server in order to get just that one specific information.\n",
"\n",
"```\n",
"──> : \"points to ... but doesn't include its data\"\n",
"Experiment (= deposition layer) ──> Sample ──> Substrate batch ──> Compound (Chemical formula)\n",
"```\n",
"\n",
"1. Make an HTTP request to fetch an **experiment's data** (equivalent to a single PLD deposition layer).\n",
"2. Parse the JSON to get the value of the *sample's elabid*.\n",
"3. Make an HTTP request to fetch the **sample's data**.\n",
"4. Parse the JSON to get the value of the *substrate batch's elabid*.\n",
"5. Make an HTTP request to fetch the **substrate batch's data**.\n",
"6. Parse the JSON to get the value of the *substrate's compound's elabid*.\n",
"7. Make an HTTP request to fetch the **compound's data**.\n",
"8. Parse the JSON to FINALLY get the value of the <u>compound's chemical formula</u>.\n",
"\n",
"> The chemical formula of the substrate is required by the NeXus standard for PLD depositions.\n",
"\n",
"The information we want to get is nested behind three additional HTTP requests. Every additional request required, other than the initial one made to fetch the experiment's data, shall be referred to as a **level of nesting** (or depth). If a piece of information is immediately available in the experiment's data, it means the information is not nested and is at zero levels of depth.\n",
"\n",
"Here are some examples of nested values required by the NeXus standard for PLD depositions.\n",
"\n",
"```\n",
"(0) Experiment (= deposition layer) ───> Deposition time, Repetition rate, etc. (depth 0)\n",
"1 ├──> Sample\n",
" 2 │ └──> Substrate batch\n",
" 3 │ └──> Compound ───> Chemical formula (depth 3)\n",
"1 ├──> Target\n",
" 2 │ └──> Compound ───> Chemical formula (depth 2)\n",
"1 ├──> RHEED System ───> Title (name of, depth 1)\n",
"1 └──> Laser System ───> Title (name of, depth 1)\n",
"```\n",
"\n",
"### Nested data when starting from a sample\n",
"If we want to fully resolve all data on a deposition by starting from the entry for the sample (as opposed to starting from the experiments selected manually - which is more logical), the schema proposed above should be rearranged as follows:\n",
"\n",
"```\n",
"(0) Sample (eLabFTW Resource) ───> Title, STD-ID (depth 0)\n",
"1 ├──> Deposition layers (eLabFTW Experiments)\n",
" 2 │ ├──> Target\n",
" 3 │ │ └──> Compound ───> Chemical formula (depth 3)\n",
" 2 │ ├──> RHEED System ───> Title (name of, depth 2)\n",
" 2 │ └──> Laser System ───> Title (name of, depth 2)\n",
"1 └──> Substrate batch\n",
" 2 └──> Compound ───> Chemical formula (depth 2)\n",
"```\n",
"\n",
"### Computable data\n",
"Some values can be obtained as a result of basic arithmetic operations. For instance the number of pulses to produce a certain layer is not specified on eLabFTW but it can be easily obtained as the product of the *deposition time* (in seconds) and the *repetition rate* (in Hertz, assumed constant).\n",
"\n",
"Computable data shall not be considered equal to nested data; as a matter of fact - if the analysis starts from the experiment data - both *deposition time* and *repetition rate* of an experiment are level-zero information, as they can be taken directly from the experiment's JSON."
]
},
{
"cell_type": "markdown",
"id": "8d7caa68-6e64-4715-a3cc-41971a539eb3",
"metadata": {},
"source": [
"## Getting level 1 data\n",
"### Name of the RHEED system used from the experiment\n",
"Starting easy, let's write a function to fetch the name of the RHEED system used in Experiment 48 and 49 (`../tests/objects/experiment_48_elab.json`,`experiment_49_elab.json`). The information is nested at level-1 depth, which means we need an additional HTTP request to recover the JSON file for the \"RHEED System\" entry."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "3aa6992e-e613-413b-aa3d-801735741437",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
"Paste API key here: ········\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"For exp. 48: STAIB RHEED 30\n",
"For exp. 49: STAIB RHEED 30\n",
"SAME RHEED SYSTEM!\n"
]
}
],
"source": [
"import os, json, requests\n",
"from getpass import getpass\n",
"\n",
"def get_rheed(filename):\n",
" with open(os.path.join(\"../tests/objects\", filename)) as f:\n",
" layer = json.load(f)\n",
" extra = layer[\"metadata_decoded\"][\"extra_fields\"]\n",
" rheed_id = extra.get(\"RHEED System\").get(\"value\")\n",
" header = {\n",
" \"Authorization\": apikey,\n",
" \"Content-Type\": \"application/json\"\n",
" }\n",
" rheed_data = requests.get(\n",
" headers = header,\n",
" url = f\"https://elabftw.fisica.unina.it/api/v2/items/{rheed_id}\",\n",
" verify=True\n",
" )\n",
" rheed_name = rheed_data.json().get(\"title\")\n",
" return rheed_name\n",
"\n",
"apikey = getpass(\"Paste API key here: \")\n",
"rheed_48 = get_rheed(\"experiment_48_elab.json\")\n",
"rheed_49 = get_rheed(\"experiment_49_elab.json\")\n",
"print(f\"For exp. 48: {rheed_48}\")\n",
"print(f\"For exp. 49: {rheed_49}\")\n",
"# If equal print \"SAME RHEED SYSTEM!\"\n",
"if rheed_48 == rheed_49:\n",
" print(\"SAME RHEED SYSTEM!\")"
]
},
{
"cell_type": "markdown",
"id": "67e2ce73-482f-4b74-a5ce-bf254fc1e12d",
"metadata": {},
"source": [
"### Fetch any experiment related to a certain sample\n",
"Another easy task is fetching every experiment entry related to a given sample. \\\n",
"Let's start with the sample of elabid equal to *1108* - which at the time I'm writing this is named \"Na-26-005\". The related experiments are Experiment 48 (layer 1) and Experiment 49 (layer 2). From these experiments we will only fetch *deposition time* and *repetition rate* to keep the present notebook clean.\n",
"\n",
"#### How linked experiments are managed by eLabFTW\n",
"Linked experiments are similar to linked items: you can reference an eLabFTW experiment into a resource, but when you download the data of the latter from the API endpoint you only get the elabid and **very few additional data** - like the experiment's category - of the former. In this situation the experiments linked to a sample contain information about its layers, which is at least level-1 nested since it requires at least an additional HTTP request."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "504c6eec-967b-4886-8770-67b5df3ed5ef",
"metadata": {},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
"Paste API key here: ········\n"
]
},
{
"data": {
"text/plain": [
"[{'title': 'Na-26-005',\n",
" 'layer_number': '1',\n",
" 'category': 'PLD Deposition',\n",
" 'deposition_time': '100',\n",
" 'repetition_rate': '1'},\n",
" {'title': 'Na-26-005 I',\n",
" 'layer_number': '2',\n",
" 'category': 'PLD Deposition',\n",
" 'deposition_time': '30',\n",
" 'repetition_rate': '1'}]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import os, json, requests\n",
"from getpass import getpass\n",
"\n",
"def get_sample_layers_data(elabid):\n",
" header = {\n",
" \"Authorization\": apikey,\n",
" \"Content-Type\": \"application/json\"\n",
" }\n",
" sample_data = requests.get(\n",
" headers = header,\n",
" url = f\"https://elabftw.fisica.unina.it/api/v2/items/{elabid}\",\n",
" verify=True\n",
" ).json()\n",
" related_experiments = sample_data[\"related_experiments_links\"]\n",
" result = []\n",
" for exp in related_experiments:\n",
" experiment_data = requests.get(\n",
" headers = header,\n",
" url = f\"https://elabftw.fisica.unina.it/api/v2/experiments/{exp.get(\"entityid\")}\",\n",
" verify=True\n",
" ).json()\n",
" extra = experiment_data[\"metadata_decoded\"][\"extra_fields\"]\n",
" result.append(\n",
" {\"title\": exp.get(\"title\"),\n",
" \"layer_number\": extra.get(\"Layer Progressive Number\").get(\"value\"),\n",
" \"category\": exp.get(\"category_title\"),\n",
" \"deposition_time\": extra.get(\"Duration\").get(\"value\"),\n",
" \"repetition_rate\": extra.get(\"Repetition rate\").get(\"value\")}\n",
" )\n",
" return result\n",
"\n",
"apikey = getpass(\"Paste API key here: \")\n",
"get_sample_layers_data(1108)"
]
},
{
"cell_type": "markdown",
"id": "046f7383-5830-462b-9ac0-2026e46c5697",
"metadata": {},
"source": [
"The variables in the previous code can be best summarized as follows.\n",
"\n",
"* `related_experiments` (dict) only contains all of the linked experiments' elabid's, categories and titles.\n",
"* `experiment_data` (dict) contains ALL data related to one experiment at a time.\n",
"* `extra` (dict) is a sub-dictionary of `experiment_data` only containing the extra fields' values.\n",
"* The N-th item of `result` (list) contains cherrypicked data on the N-th layer.\n",
"\n",
"> ⚠️ The index of a layer in the `result` list does not necessarily equate the layer's progressive number."
]
},
{
"cell_type": "markdown",
"id": "2ca38bf4-ac33-481f-9ee2-99ec4db1686c",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@@ -1,4 +1 @@
numpy notebook
h5py>=3.15.1
h5json>=1.1.3
six

View File

@@ -0,0 +1,481 @@
{
"access_key": null,
"body": "",
"body_html": "",
"canread": "{\"base\": 40, \"teams\": [], \"users\": [], \"teamgroups\": []}",
"canread_is_immutable": 0,
"canwrite": "{\"base\": 20, \"teams\": [], \"users\": [], \"teamgroups\": []}",
"canwrite_is_immutable": 0,
"category": 2,
"category_color": "8b8d43",
"category_title": "PLD Deposition",
"comments": [],
"compounds": [],
"containers": [],
"content_type": 1,
"created_at": "2026-01-26 12:03:52",
"custom_id": null,
"date": "2026-01-26",
"elabid": "20260126-ddf040c31ee9ae5be91a6dfab4c78570a6349e20",
"events_start": null,
"events_start_itemid": null,
"exclusive_edit_mode": null,
"experiments_links": [],
"firstname": "Emiliano",
"fullname": "Emiliano Di Gennaro",
"id": 48,
"is_pinned": 0,
"items_links": [
{
"entityid": 943,
"title": "Lanthanum Manganite",
"custom_id": null,
"elabid": "20260126-c598d7f2c7d61f293a7b0de8adb1c761261ebf21",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Compound",
"category_color": "1cb7e4",
"status_title": null,
"status_color": null
},
{
"entityid": 1083,
"title": "STAIB RHEED 30",
"custom_id": null,
"elabid": "20260126-ef9585ed3edde58662e62043741255f92a0606ef",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Process Instrument",
"category_color": "a51d2d",
"status_title": null,
"status_color": null
},
{
"entityid": 1077,
"title": "Na-26-001",
"custom_id": null,
"elabid": "20260126-33a28bf76b0682bbc0253706afdbf15a0ff99c9a",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Sample",
"category_color": "ffbe6f",
"status_title": null,
"status_color": null
}
],
"lastchangeby": 2,
"lastname": "Di Gennaro",
"locked": 0,
"locked_at": null,
"lockedby": null,
"metadata": "{\"elabftw\": {\"extra_fields_groups\": [{\"id\": 4, \"name\": \"Process\"}, {\"id\": 7, \"name\": \"Laser\"}, {\"id\": 8, \"name\": \"Pre Annealing\"}, {\"id\": 6, \"name\": \"Post Annealing\"}, {\"id\": 3, \"name\": \"Instruments\"}]}, \"extra_fields\": {\"Sample\": {\"type\": \"items\", \"value\": 1077, \"group_id\": 4, \"position\": 0, \"required\": true}, \"Target\": {\"type\": \"items\", \"value\": 943, \"group_id\": 4, \"position\": 2, \"required\": true}, \"Chamber\": {\"type\": \"items\", \"value\": 72, \"group_id\": 3, \"required\": true}, \"Duration\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"65\", \"group_id\": 4, \"position\": 3, \"required\": true}, \"Spot Area\": {\"type\": \"number\", \"unit\": \"mm^2\", \"units\": [\"mm^2\"], \"value\": \"\", \"group_id\": 7, \"position\": 2}, \"Thickness\": {\"type\": \"number\", \"unit\": \"u.c.\", \"units\": [\"u.c.\", \"s\"], \"value\": \"5\", \"group_id\": 4, \"position\": 4}, \"Buffer gas\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 4, \"position\": 5}, \"Duration PA\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 6}, \"Duration Pre\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\"], \"value\": \"\", \"group_id\": 8}, \"Laser System\": {\"type\": \"items\", \"value\": \"\", \"group_id\": 3}, \"RHEED System\": {\"type\": \"items\", \"value\": 1083, \"group_id\": 3}, \"Buffer gas PA\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 6, \"position\": 3}, \"Buffer gas Pre\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 8, \"position\": 3}, \"Heating Method\": {\"type\": \"select\", \"value\": \"Radiative Heater\", \"options\": [\"Radiative Heater\", \"Laser Heater\"], \"group_id\": 4, \"position\": 10}, \"Laser Intensity\": {\"type\": \"number\", \"unit\": \"J/(s cm^2)\", \"units\": [\"J/(s cm^2)\"], \"value\": \"1.5\", \"group_id\": 7, \"position\": 0}, \"Repetition rate\": {\"type\": \"number\", \"unit\": \"Hz\", \"units\": [\"Hz\"], \"value\": \"1\", \"group_id\": 7, \"position\": 1}, \"Process pressure \": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"1e-2\", \"group_id\": 4, \"position\": 7}, \"Heater temperature \": {\"type\": \"number\", \"unit\": \"°C\", \"units\": [\"°C\"], \"value\": \"650\", \"group_id\": 4, \"position\": 8}, \"Process pressure PA\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 6, \"position\": 4}, \"Process pressure Pre\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 8, \"position\": 4}, \"Heater temperature PA\": {\"type\": \"number\", \"unit\": \"°C\", \"units\": [\"°C\"], \"value\": \"\", \"group_id\": 6}, \"Laser Rastering Speed\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 7, \"position\": 4}, \"Heater temperature Pre\": {\"type\": \"number\", \"unit\": \"°C\", \"units\": [\"°C\"], \"value\": \"\", \"group_id\": 8}, \"Heater-target distance\": {\"type\": \"number\", \"unit\": \"mm\", \"units\": [\"mm\"], \"value\": \"45\", \"group_id\": 4, \"position\": 9}, \"Laser Rastering Geometry\": {\"type\": \"select\", \"value\": \"none\", \"options\": [\"none\", \"on a square\", \"on a rectangle\", \"on a line\", \"other\"], \"group_id\": 7, \"position\": 3}, \"Laser Rastering Position\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 7, \"position\": 5}, \"Layer Progressive Number\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"1\", \"group_id\": 4, \"position\": 1, \"required\": true}}}",
"metadata_decoded": {
"elabftw": {
"extra_fields_groups": [
{
"id": 4,
"name": "Process"
},
{
"id": 7,
"name": "Laser"
},
{
"id": 8,
"name": "Pre Annealing"
},
{
"id": 6,
"name": "Post Annealing"
},
{
"id": 3,
"name": "Instruments"
}
]
},
"extra_fields": {
"Sample": {
"type": "items",
"value": 1077,
"group_id": 4,
"position": 0,
"required": true
},
"Target": {
"type": "items",
"value": 943,
"group_id": 4,
"position": 2,
"required": true
},
"Chamber": {
"type": "items",
"value": 72,
"group_id": 3,
"required": true
},
"Duration": {
"type": "number",
"unit": "s",
"units": [
"s",
"min"
],
"value": "65",
"group_id": 4,
"position": 3,
"required": true
},
"Spot Area": {
"type": "number",
"unit": "mm^2",
"units": [
"mm^2"
],
"value": "",
"group_id": 7,
"position": 2
},
"Thickness": {
"type": "number",
"unit": "u.c.",
"units": [
"u.c.",
"s"
],
"value": "5",
"group_id": 4,
"position": 4
},
"Buffer gas": {
"type": "select",
"value": "O2",
"options": [
"O2",
"N2",
"Ar",
""
],
"group_id": 4,
"position": 5
},
"Duration PA": {
"type": "number",
"unit": "s",
"units": [
"s",
"min"
],
"value": "",
"group_id": 6
},
"Duration Pre": {
"type": "number",
"unit": "s",
"units": [
"s"
],
"value": "",
"group_id": 8
},
"Laser System": {
"type": "items",
"value": "",
"group_id": 3
},
"RHEED System": {
"type": "items",
"value": 1083,
"group_id": 3
},
"Buffer gas PA": {
"type": "select",
"value": "O2",
"options": [
"O2",
"N2",
"Ar",
""
],
"group_id": 6,
"position": 3
},
"Buffer gas Pre": {
"type": "select",
"value": "O2",
"options": [
"O2",
"N2",
"Ar",
""
],
"group_id": 8,
"position": 3
},
"Heating Method": {
"type": "select",
"value": "Radiative Heater",
"options": [
"Radiative Heater",
"Laser Heater"
],
"group_id": 4,
"position": 10
},
"Laser Intensity": {
"type": "number",
"unit": "J/(s cm^2)",
"units": [
"J/(s cm^2)"
],
"value": "1.5",
"group_id": 7,
"position": 0
},
"Repetition rate": {
"type": "number",
"unit": "Hz",
"units": [
"Hz"
],
"value": "1",
"group_id": 7,
"position": 1
},
"Process pressure ": {
"type": "number",
"unit": "mbar",
"units": [
"mbar"
],
"value": "1e-2",
"group_id": 4,
"position": 7
},
"Heater temperature ": {
"type": "number",
"unit": "°C",
"units": [
"°C"
],
"value": "650",
"group_id": 4,
"position": 8
},
"Process pressure PA": {
"type": "number",
"unit": "mbar",
"units": [
"mbar"
],
"value": "",
"group_id": 6,
"position": 4
},
"Process pressure Pre": {
"type": "number",
"unit": "mbar",
"units": [
"mbar"
],
"value": "",
"group_id": 8,
"position": 4
},
"Heater temperature PA": {
"type": "number",
"unit": "°C",
"units": [
"°C"
],
"value": "",
"group_id": 6
},
"Laser Rastering Speed": {
"type": "number",
"unit": "",
"units": [],
"value": "",
"group_id": 7,
"position": 4
},
"Heater temperature Pre": {
"type": "number",
"unit": "°C",
"units": [
"°C"
],
"value": "",
"group_id": 8
},
"Heater-target distance": {
"type": "number",
"unit": "mm",
"units": [
"mm"
],
"value": "45",
"group_id": 4,
"position": 9
},
"Laser Rastering Geometry": {
"type": "select",
"value": "none",
"options": [
"none",
"on a square",
"on a rectangle",
"on a line",
"other"
],
"group_id": 7,
"position": 3
},
"Laser Rastering Position": {
"type": "number",
"unit": "",
"units": [],
"value": "",
"group_id": 7,
"position": 5
},
"Layer Progressive Number": {
"type": "number",
"unit": "",
"units": [],
"value": "1",
"group_id": 4,
"position": 1,
"required": true
}
}
},
"modified_at": "2026-01-26 12:07:17",
"next_step": "add process data",
"orcid": "0000-0003-4231-9776",
"page": "experiments",
"rating": 0,
"recent_comment": null,
"related_experiments_links": [
{
"entityid": 49,
"title": "Na-26-001 LMNO LAO I",
"custom_id": null,
"link_state": 1,
"page": "experiments.php",
"type": "experiments",
"category_title": "PLD Deposition",
"category_color": "8b8d43",
"status_title": null,
"status_color": null
}
],
"related_items_links": [],
"sharelink": "https://elabftw.fisica.unina.it:8080/experiments.php?mode=view&id=48",
"state": 1,
"status": null,
"status_color": null,
"status_title": null,
"steps": [
{
"id": 44,
"item_id": 48,
"body": "add process data",
"ordering": 1,
"finished": 0,
"finished_time": null,
"deadline": null,
"deadline_notif": 0
},
{
"id": 45,
"item_id": 48,
"body": "add RHEED data",
"ordering": 2,
"finished": 1,
"finished_time": "2026-01-26 12:07:00",
"deadline": null,
"deadline_notif": 0
},
{
"id": 46,
"item_id": 48,
"body": "add RHEED images",
"ordering": 3,
"finished": 1,
"finished_time": "2026-01-26 12:07:01",
"deadline": null,
"deadline_notif": 0
}
],
"tags": null,
"tags_id": null,
"team": 1,
"team_name": "Default team",
"timestamped": 0,
"timestamped_at": null,
"timestampedby": null,
"title": "Na-26-001 LMNO LAO",
"type": "experiments",
"uploads": [
{
"id": 62,
"real_name": "Image5.bmp",
"long_name": "98/9888dbb749e479c4874280e82970ab90ab464825d59a7bb0755dec36d8686306350b759a3f29a76949d8b5ae3e5e4e46a44505a214a5493f8413e4fa18f3cb74.bmp",
"comment": null,
"item_id": 48,
"userid": 2,
"type": "experiments",
"created_at": "2026-01-26 12:06:54",
"hash": "9d15a855ab0daed110affa9973419b4ea59916bd2853fe59ef83b272d09c5bb9",
"hash_algorithm": "sha256",
"storage": 1,
"filesize": 308278,
"state": 1,
"immutable": 0,
"fullname": "Emiliano Di Gennaro"
},
{
"id": 61,
"real_name": "Image8.bmp",
"long_name": "47/47f8ab3d4c664b53883fd69c6e114e677d8cdb1d928a2fd668060839b47d0fe0fa680cb757c4d1357e145a259777e3fb52ed78cbda8b452002467568095c3ee4.bmp",
"comment": null,
"item_id": 48,
"userid": 2,
"type": "experiments",
"created_at": "2026-01-26 12:06:44",
"hash": "cf96a117c0106607e7ea02e8bc5f052b80441108c3c0514397a95c4d90742222",
"hash_algorithm": "sha256",
"storage": 1,
"filesize": 308278,
"state": 1,
"immutable": 0,
"fullname": "Emiliano Di Gennaro"
},
{
"id": 60,
"real_name": "Real-time Window Analysis ( Peak Int. )_b.txt",
"long_name": "99/996991fde2691655038ef39da82610ad7982b8fd685e8d08fd318bef13ff325589da8f77d2e573b0fbbed77555e42a2c523ede2af07db86c90c4540557bd6c6b.txt",
"comment": null,
"item_id": 48,
"userid": 2,
"type": "experiments",
"created_at": "2026-01-26 12:06:38",
"hash": "5da2bb2479b1690ae4741db00da84ea7146691c0f7b29b6ea48b7e2dbcbbff1c",
"hash_algorithm": "sha256",
"storage": 1,
"filesize": 168891,
"state": 1,
"immutable": 0,
"fullname": "Emiliano Di Gennaro"
}
],
"userid": 2
}

View File

@@ -0,0 +1,449 @@
{
"access_key": null,
"body": "",
"body_html": "",
"canread": "{\"base\": 40, \"teams\": [], \"users\": [], \"teamgroups\": []}",
"canread_is_immutable": 0,
"canwrite": "{\"base\": 20, \"teams\": [], \"users\": [], \"teamgroups\": []}",
"canwrite_is_immutable": 0,
"category": 2,
"category_color": "8b8d43",
"category_title": "PLD Deposition",
"comments": [],
"compounds": [],
"containers": [],
"content_type": 1,
"created_at": "2026-01-26 12:07:27",
"custom_id": null,
"date": "2026-01-26",
"elabid": "20260126-e453a616ba07c6c531258c58f801afd03701c261",
"events_start": null,
"events_start_itemid": null,
"exclusive_edit_mode": {
"locked_by": 2,
"locked_by_human": "Emiliano Di Gennaro",
"locked_at": "2026-01-26 12:08:15",
"is_stale": 1
},
"experiments_links": [
{
"entityid": 48,
"title": "Na-26-001 LMNO LAO",
"custom_id": null,
"elabid": "20260126-ddf040c31ee9ae5be91a6dfab4c78570a6349e20",
"link_state": 1,
"page": "experiments.php",
"type": "experiments",
"category_title": "PLD Deposition",
"category_color": "8b8d43",
"status_title": null,
"status_color": null
}
],
"firstname": "Emiliano",
"fullname": "Emiliano Di Gennaro",
"id": 49,
"is_pinned": 0,
"items_links": [
{
"entityid": 940,
"title": "Lanthanum Aluminate",
"custom_id": null,
"elabid": "20260126-4bd6d11b1cfdf23fcc55f4419a7284d60a95af33",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Compound",
"category_color": "1cb7e4",
"status_title": null,
"status_color": null
},
{
"entityid": 943,
"title": "Lanthanum Manganite",
"custom_id": null,
"elabid": "20260126-c598d7f2c7d61f293a7b0de8adb1c761261ebf21",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Compound",
"category_color": "1cb7e4",
"status_title": null,
"status_color": null
},
{
"entityid": 1083,
"title": "STAIB RHEED 30",
"custom_id": null,
"elabid": "20260126-ef9585ed3edde58662e62043741255f92a0606ef",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Process Instrument",
"category_color": "a51d2d",
"status_title": null,
"status_color": null
},
{
"entityid": 1077,
"title": "Na-26-001",
"custom_id": null,
"elabid": "20260126-33a28bf76b0682bbc0253706afdbf15a0ff99c9a",
"link_state": 1,
"is_bookable": 0,
"page": "database.php",
"type": "items",
"category_title": "Sample",
"category_color": "ffbe6f",
"status_title": null,
"status_color": null
}
],
"lastchangeby": 2,
"lastname": "Di Gennaro",
"locked": 0,
"locked_at": null,
"lockedby": null,
"metadata": "{\"elabftw\": {\"extra_fields_groups\": [{\"id\": 4, \"name\": \"Process\"}, {\"id\": 7, \"name\": \"Laser\"}, {\"id\": 8, \"name\": \"Pre Annealing\"}, {\"id\": 6, \"name\": \"Post Annealing\"}, {\"id\": 3, \"name\": \"Instruments\"}]}, \"extra_fields\": {\"Sample\": {\"type\": \"items\", \"value\": 1077, \"group_id\": 4, \"position\": 0, \"required\": true}, \"Target\": {\"type\": \"items\", \"value\": 940, \"group_id\": 4, \"position\": 2, \"required\": true}, \"Chamber\": {\"type\": \"items\", \"value\": 72, \"group_id\": 3, \"required\": true}, \"Duration\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"56\", \"group_id\": 4, \"position\": 3, \"required\": true}, \"Spot Area\": {\"type\": \"number\", \"unit\": \"mm^2\", \"units\": [\"mm^2\"], \"value\": \"\", \"group_id\": 7, \"position\": 2}, \"Thickness\": {\"type\": \"number\", \"unit\": \"u.c.\", \"units\": [\"u.c.\", \"s\"], \"value\": \"4\", \"group_id\": 4, \"position\": 4}, \"Buffer gas\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 4, \"position\": 5}, \"Duration PA\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 6}, \"Duration Pre\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\"], \"value\": \"\", \"group_id\": 8}, \"Laser System\": {\"type\": \"items\", \"value\": \"\", \"group_id\": 3}, \"RHEED System\": {\"type\": \"items\", \"value\": 1083, \"group_id\": 3}, \"Buffer gas PA\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 6, \"position\": 3}, \"Buffer gas Pre\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 8, \"position\": 3}, \"Heating Method\": {\"type\": \"select\", \"value\": \"Radiative Heater\", \"options\": [\"Radiative Heater\", \"Laser Heater\"], \"group_id\": 4, \"position\": 10}, \"Laser Intensity\": {\"type\": \"number\", \"unit\": \"J/(s cm^2)\", \"units\": [\"J/(s cm^2)\"], \"value\": \"1.5\", \"group_id\": 7, \"position\": 0}, \"Repetition rate\": {\"type\": \"number\", \"unit\": \"Hz\", \"units\": [\"Hz\"], \"value\": \"1\", \"group_id\": 7, \"position\": 1}, \"Process pressure \": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"1e-3\", \"group_id\": 4, \"position\": 7}, \"Heater temperature \": {\"type\": \"number\", \"unit\": \"°C\", \"units\": [\"°C\"], \"value\": \"750\", \"group_id\": 4, \"position\": 8}, \"Process pressure PA\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 6, \"position\": 4}, \"Process pressure Pre\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 8, \"position\": 4}, \"Heater temperature PA\": {\"type\": \"number\", \"unit\": \"°C\", \"units\": [\"°C\"], \"value\": \"\", \"group_id\": 6}, \"Laser Rastering Speed\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 7, \"position\": 4}, \"Heater temperature Pre\": {\"type\": \"number\", \"unit\": \"°C\", \"units\": [\"°C\"], \"value\": \"\", \"group_id\": 8}, \"Heater-target distance\": {\"type\": \"number\", \"unit\": \"mm\", \"units\": [\"mm\"], \"value\": \"45\", \"group_id\": 4, \"position\": 9}, \"Laser Rastering Geometry\": {\"type\": \"select\", \"value\": \"none\", \"options\": [\"none\", \"on a square\", \"on a rectangle\", \"on a line\", \"other\"], \"group_id\": 7, \"position\": 3}, \"Laser Rastering Position\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 7, \"position\": 5}, \"Layer Progressive Number\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"2\", \"group_id\": 4, \"position\": 1, \"required\": true}}}",
"metadata_decoded": {
"elabftw": {
"extra_fields_groups": [
{
"id": 4,
"name": "Process"
},
{
"id": 7,
"name": "Laser"
},
{
"id": 8,
"name": "Pre Annealing"
},
{
"id": 6,
"name": "Post Annealing"
},
{
"id": 3,
"name": "Instruments"
}
]
},
"extra_fields": {
"Sample": {
"type": "items",
"value": 1077,
"group_id": 4,
"position": 0,
"required": true
},
"Target": {
"type": "items",
"value": 940,
"group_id": 4,
"position": 2,
"required": true
},
"Chamber": {
"type": "items",
"value": 72,
"group_id": 3,
"required": true
},
"Duration": {
"type": "number",
"unit": "s",
"units": [
"s",
"min"
],
"value": "56",
"group_id": 4,
"position": 3,
"required": true
},
"Spot Area": {
"type": "number",
"unit": "mm^2",
"units": [
"mm^2"
],
"value": "",
"group_id": 7,
"position": 2
},
"Thickness": {
"type": "number",
"unit": "u.c.",
"units": [
"u.c.",
"s"
],
"value": "4",
"group_id": 4,
"position": 4
},
"Buffer gas": {
"type": "select",
"value": "O2",
"options": [
"O2",
"N2",
"Ar",
""
],
"group_id": 4,
"position": 5
},
"Duration PA": {
"type": "number",
"unit": "s",
"units": [
"s",
"min"
],
"value": "",
"group_id": 6
},
"Duration Pre": {
"type": "number",
"unit": "s",
"units": [
"s"
],
"value": "",
"group_id": 8
},
"Laser System": {
"type": "items",
"value": "",
"group_id": 3
},
"RHEED System": {
"type": "items",
"value": 1083,
"group_id": 3
},
"Buffer gas PA": {
"type": "select",
"value": "O2",
"options": [
"O2",
"N2",
"Ar",
""
],
"group_id": 6,
"position": 3
},
"Buffer gas Pre": {
"type": "select",
"value": "O2",
"options": [
"O2",
"N2",
"Ar",
""
],
"group_id": 8,
"position": 3
},
"Heating Method": {
"type": "select",
"value": "Radiative Heater",
"options": [
"Radiative Heater",
"Laser Heater"
],
"group_id": 4,
"position": 10
},
"Laser Intensity": {
"type": "number",
"unit": "J/(s cm^2)",
"units": [
"J/(s cm^2)"
],
"value": "1.5",
"group_id": 7,
"position": 0
},
"Repetition rate": {
"type": "number",
"unit": "Hz",
"units": [
"Hz"
],
"value": "1",
"group_id": 7,
"position": 1
},
"Process pressure ": {
"type": "number",
"unit": "mbar",
"units": [
"mbar"
],
"value": "1e-3",
"group_id": 4,
"position": 7
},
"Heater temperature ": {
"type": "number",
"unit": "°C",
"units": [
"°C"
],
"value": "750",
"group_id": 4,
"position": 8
},
"Process pressure PA": {
"type": "number",
"unit": "mbar",
"units": [
"mbar"
],
"value": "",
"group_id": 6,
"position": 4
},
"Process pressure Pre": {
"type": "number",
"unit": "mbar",
"units": [
"mbar"
],
"value": "",
"group_id": 8,
"position": 4
},
"Heater temperature PA": {
"type": "number",
"unit": "°C",
"units": [
"°C"
],
"value": "",
"group_id": 6
},
"Laser Rastering Speed": {
"type": "number",
"unit": "",
"units": [],
"value": "",
"group_id": 7,
"position": 4
},
"Heater temperature Pre": {
"type": "number",
"unit": "°C",
"units": [
"°C"
],
"value": "",
"group_id": 8
},
"Heater-target distance": {
"type": "number",
"unit": "mm",
"units": [
"mm"
],
"value": "45",
"group_id": 4,
"position": 9
},
"Laser Rastering Geometry": {
"type": "select",
"value": "none",
"options": [
"none",
"on a square",
"on a rectangle",
"on a line",
"other"
],
"group_id": 7,
"position": 3
},
"Laser Rastering Position": {
"type": "number",
"unit": "",
"units": [],
"value": "",
"group_id": 7,
"position": 5
},
"Layer Progressive Number": {
"type": "number",
"unit": "",
"units": [],
"value": "2",
"group_id": 4,
"position": 1,
"required": true
}
}
},
"modified_at": "2026-01-26 12:08:15",
"next_step": "add process data",
"orcid": "0000-0003-4231-9776",
"page": "experiments",
"rating": 0,
"recent_comment": null,
"related_experiments_links": [],
"related_items_links": [],
"sharelink": "https://elabftw.fisica.unina.it:8080/experiments.php?mode=view&id=49",
"state": 1,
"status": null,
"status_color": null,
"status_title": null,
"steps": [
{
"id": 47,
"item_id": 49,
"body": "add process data",
"ordering": 1,
"finished": 0,
"finished_time": null,
"deadline": null,
"deadline_notif": 0
},
{
"id": 48,
"item_id": 49,
"body": "add RHEED data",
"ordering": 2,
"finished": 0,
"finished_time": null,
"deadline": null,
"deadline_notif": 0
},
{
"id": 49,
"item_id": 49,
"body": "add RHEED images",
"ordering": 3,
"finished": 0,
"finished_time": null,
"deadline": null,
"deadline_notif": 0
}
],
"tags": null,
"tags_id": null,
"team": 1,
"team_name": "Default team",
"timestamped": 0,
"timestamped_at": null,
"timestampedby": null,
"title": "Na-26-001 LMNO LAO I",
"type": "experiments",
"uploads": [],
"userid": 2
}