Compare commits
10 Commits
43a898e4e6
...
d86b35a5fe
| Author | SHA256 | Date | |
|---|---|---|---|
| d86b35a5fe | |||
| c4903a536b | |||
| 3e85940eb6 | |||
| 820337c06e | |||
| 5a605038df | |||
| fd4c3b718a | |||
| 7b3bff854d | |||
| 4df8048e55 | |||
| 97d534c5d1 | |||
| 88aacf23c1 |
@@ -108,8 +108,10 @@ class Material:
|
|||||||
'''
|
'''
|
||||||
def __init__(self, material_data):
|
def __init__(self, material_data):
|
||||||
try:
|
try:
|
||||||
|
self.name = material_data["title"] # required
|
||||||
self.extra = material_data["metadata_decoded"]["extra_fields"]
|
self.extra = material_data["metadata_decoded"]["extra_fields"]
|
||||||
self.compound_elabid = self.extra["Compound"]["value"]
|
self.compound_elabid = self.extra["Compound"]["value"]
|
||||||
|
self.dimensions = self.extra["Size"]["value"]
|
||||||
except KeyError as k:
|
except KeyError as k:
|
||||||
# Some keys are not required and can be called through the .get() method - which is permissive and allows null values;
|
# Some keys are not required and can be called through the .get() method - which is permissive and allows null values;
|
||||||
# Other keys are required so if they can't be called (invalid or null) raise error and stop execution of the program:
|
# Other keys are required so if they can't be called (invalid or null) raise error and stop execution of the program:
|
||||||
@@ -130,6 +132,32 @@ class Material:
|
|||||||
formula = self.get_compound_data(apikey).get("chemical_formula")
|
formula = self.get_compound_data(apikey).get("chemical_formula")
|
||||||
return formula
|
return formula
|
||||||
|
|
||||||
|
class Substrate(Material):
|
||||||
|
def __init__(self, material_data):
|
||||||
|
super().__init__(material_data)
|
||||||
|
try:
|
||||||
|
self.orientation = self.extra["Orientation"]["value"]
|
||||||
|
self.miscut_angle = self.extra["Miscut Angle"]["value"]
|
||||||
|
self.miscut_direction = self.extra["Miscut Direction"]["value"]
|
||||||
|
# Not present (yet) on eLabFTW for Substrates:
|
||||||
|
self.thickness = None #self.extra["Thickness"]["value"]
|
||||||
|
self.surface_treatment = self.extra["Surface treatment"]["value"]
|
||||||
|
self.manufacturer = self.extra["Supplier"]["value"]
|
||||||
|
self.batch_id = self.extra["Batch ID"]["value"]
|
||||||
|
except KeyError as k:
|
||||||
|
raise KeyError(f"The provided dictionary lacks a \"{k}\" key - which is specific for substrates. Check the {self.name} substrate entry on eLabFTW and make sure you used the correct Resource template.")
|
||||||
|
|
||||||
|
class Target(Material):
|
||||||
|
def __init__(self, material_data):
|
||||||
|
super().__init__(material_data)
|
||||||
|
try:
|
||||||
|
self.thickness = self.extra["Thickness"]["value"]
|
||||||
|
self.shape = self.extra["shape"]["value"]
|
||||||
|
self.solid_form = self.extra["Solid form"]["value"]
|
||||||
|
self.manufacturer = self.extra["Supplier"]["value"]
|
||||||
|
except KeyError as k:
|
||||||
|
raise KeyError(f"The provided dictionary lacks a \"{k}\" key - which is specific for PLD targets. Check the {self.name} target entry on eLabFTW and make sure you used the correct Resource template.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
|
|||||||
164
src/main.py
164
src/main.py
@@ -5,6 +5,11 @@ from classes import *
|
|||||||
|
|
||||||
|
|
||||||
def call_entrypoint_from_elabid(elabid):
|
def call_entrypoint_from_elabid(elabid):
|
||||||
|
'''
|
||||||
|
Calls an entrypoint sample from eLabFTW using its elabid, then returns an object of the Entrypoint class.
|
||||||
|
|
||||||
|
If the entry is not a sample (category_title not matching exactly "Sample") returns ValueError.
|
||||||
|
'''
|
||||||
try:
|
try:
|
||||||
sample_data = APIHandler(apikey).get_entry_from_elabid(elabid, entryType="items")
|
sample_data = APIHandler(apikey).get_entry_from_elabid(elabid, entryType="items")
|
||||||
if not sample_data.get("category_title") == "Sample":
|
if not sample_data.get("category_title") == "Sample":
|
||||||
@@ -15,17 +20,33 @@ def call_entrypoint_from_elabid(elabid):
|
|||||||
return sample_object # Entrypoint-class object
|
return sample_object # Entrypoint-class object
|
||||||
|
|
||||||
def call_material_from_elabid(elabid):
|
def call_material_from_elabid(elabid):
|
||||||
|
'''
|
||||||
|
Calls a material from eLabFTW using its elabid, then returns an object of the Material class.
|
||||||
|
|
||||||
|
If the entry is neither a PLD Target or a Substrate batch returns ValueError. Such entries always have a category_title key with its value matching exactly "PLD Target" or "Substrate".
|
||||||
|
Because of an old typo, the value "Subtrate" (second 's' is missing) is also accepted.
|
||||||
|
'''
|
||||||
try:
|
try:
|
||||||
material_data = APIHandler(apikey).get_entry_from_elabid(elabid, entryType="items")
|
material_data = APIHandler(apikey).get_entry_from_elabid(elabid, entryType="items")
|
||||||
|
material_category = material_data.get("category_title")
|
||||||
# TO-DO: correct this typo on elabftw: Subtrate → Substrate.
|
# TO-DO: correct this typo on elabftw: Subtrate → Substrate.
|
||||||
if not sample_data.get("category_title") in ["PLD Target", "Substrate batch", "Subtrate batch"]:
|
if not material_category in ["PLD Target", "Substrate", "Subtrate"]:
|
||||||
|
print(f"Category of the resource: {material_category}.")
|
||||||
raise ValueError(f"The referenced resource (elabid = {elabid}) is not a material.")
|
raise ValueError(f"The referenced resource (elabid = {elabid}) is not a material.")
|
||||||
material_object = Material(material_data)
|
elif material_category == "PLD Target":
|
||||||
|
material_object = Target(material_data)
|
||||||
|
else:
|
||||||
|
material_object = Substrate(material_data)
|
||||||
except ConnectionError as e:
|
except ConnectionError as e:
|
||||||
raise ConnectionError(e)
|
raise ConnectionError(e)
|
||||||
return material_object # Material-class object
|
return material_object # Material-class object
|
||||||
|
|
||||||
def call_layers_from_list(elabid_list):
|
def call_layers_from_list(elabid_list):
|
||||||
|
'''
|
||||||
|
Calls a list of (PLD deposition) experiments from eLabFTW using their elabid - which means the input must be a list of integers instead of a single one - then returns a list of Layer-class objects.
|
||||||
|
|
||||||
|
If one of the entries is not related to a deposition layer (category_title not matching exactly "PLD Deposition") that entry is skipped, with no error raised.
|
||||||
|
'''
|
||||||
list_of_layers = []
|
list_of_layers = []
|
||||||
for elabid in elabid_list:
|
for elabid in elabid_list:
|
||||||
try:
|
try:
|
||||||
@@ -37,64 +58,111 @@ def call_layers_from_list(elabid_list):
|
|||||||
except ConnectionError as e:
|
except ConnectionError as e:
|
||||||
nums = [ layer.layer_number for layer in list_of_layers ]
|
nums = [ layer.layer_number for layer in list_of_layers ]
|
||||||
nums.sort()
|
nums.sort()
|
||||||
print(f"LISTA DEI LAYER PROCESSATI FINORA (in ordine sparso):\n" + str(nums))
|
print(f"LIST OF THE LAYERS PROCESSED (unordered):\n" + str(nums))
|
||||||
raise ConnectionError(f"An error occurred while fetching the experiment with elabid = {elabid}:\n" +
|
raise ConnectionError(f"An error occurred while fetching the experiment with elabid = {elabid}:\n" +
|
||||||
str(e) + f"\nPlease solve the problem before retrying." + "\n\n" +
|
str(e) + f"\nPlease solve the problem before retrying." + "\n\n" +
|
||||||
f"Last resource attempted to call: {ELABFTW_API_URL}/experiments/{elabid}"
|
f"Last resource attempted to call: {ELABFTW_API_URL}/experiments/{elabid}"
|
||||||
)
|
)
|
||||||
return list_of_layers # list of Layer-class objects
|
return list_of_layers # list of Layer-class objects
|
||||||
|
|
||||||
def from_entrypoint_to_material(sample_object):
|
def chain_entrypoint_to_batch(sample_object):
|
||||||
|
'''
|
||||||
|
Takes an Entrypoint-class object, looks at its .batch_elabid attribute and returns a Material-class object containing data on the substrate batch associated to the starting sample.
|
||||||
|
|
||||||
|
Dependency: call_material_from_elabid.
|
||||||
|
'''
|
||||||
material_elabid = sample_object.batch_elabid
|
material_elabid = sample_object.batch_elabid
|
||||||
material_object = call_material_from_elabid(material_elabid)
|
material_object = call_material_from_elabid(material_elabid)
|
||||||
return sample_object, material_object
|
return material_object
|
||||||
|
|
||||||
sample_object = call_entrypoint_from_elabid(elabid)
|
def chain_entrypoint_to_layers(sample_object):
|
||||||
from_entrypoint_to_material(sample_object)
|
'''
|
||||||
|
Takes an Entrypoint-class object, looks at its .linked_experiments_elabid attribute (list) and returns a list of Layer-class objects containing data on the deposition layers associated to the starting sample - using the function call_layers_from_list.
|
||||||
|
|
||||||
|
The list is sorted by progressive layer number (layer_number attribute).
|
||||||
|
|
||||||
|
Dependency: call_layers_from_list.
|
||||||
|
'''
|
||||||
|
linked_experiments_elabid = sample_object.linked_experiments_elabid # list of elabid
|
||||||
|
layer_object_list = call_layers_from_list(linked_experiments_elabid)
|
||||||
|
layer_object_list.sort(key=lambda x: x.layer_number)
|
||||||
|
return layer_object_list
|
||||||
|
|
||||||
|
def chain_layer_to_target(layer_object):
|
||||||
|
'''
|
||||||
|
Takes a Layer-class object, looks at its .target_elabid attribute and returns a Material-class object containing data on the PLD target used in the deposition of said layer.
|
||||||
|
|
||||||
|
Dependency: call_material_from_elabid.
|
||||||
|
'''
|
||||||
|
target_elabid = layer_object.target_elabid
|
||||||
|
material_object = call_material_from_elabid(target_elabid)
|
||||||
|
return material_object
|
||||||
|
|
||||||
|
#sample_object = call_entrypoint_from_elabid(elabid)
|
||||||
|
#from_entrypoint_to_material(sample_object)
|
||||||
|
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
print(f"=======================\n===== DEBUG MODE! =====\n=======================\n")
|
print(f"=======================\n===== DEBUG MODE! =====\n=======================\n")
|
||||||
ELABFTW_API_URL = "https://elabftw.fisica.unina.it/api/v2"
|
ELABFTW_API_URL = "https://elabftw.fisica.unina.it/api/v2"
|
||||||
apikey = getpass("Paste API key here: ")
|
apikey = getpass("Paste API key here: ")
|
||||||
# TEST. In production the entryType will probably just be "items" since the entrypoint is an item (sample).
|
elabid = input("Enter elabid of your starting sample [default= 1111]: ") or 1111
|
||||||
entryType = None
|
data = APIHandler(apikey).get_entry_from_elabid(elabid)
|
||||||
while entryType not in ["items", "experiments"]:
|
sample = Entrypoint(data)
|
||||||
eT = input("Enter a valid entry type [items, experiments]: ")
|
batch = chain_entrypoint_to_batch(sample) # Material-class object
|
||||||
# This allows for a shortcut: instead of prompting the type before and the elabid after I can just prompt both at the same time - e.g. e51 is exp. 51, i1108 is item 1108...
|
bd = batch.__dict__
|
||||||
if eT[0] in ["e", "i"] and eT[-1].isnumeric():
|
bd.pop("extra")
|
||||||
try:
|
layers = chain_entrypoint_to_layers(sample) # list of Layer-class objects
|
||||||
elabid = int(eT[1:])
|
print(f"Sample name:\n{sample.name}\n")
|
||||||
eT = eT[0]
|
print(f"Substrate data:\n{bd}\n")
|
||||||
except Exception:
|
print(f"Layers data:")
|
||||||
print("Usage: i|item|items|i[ELABID] for items, e|experiment|experiments|e[ELABID] for experiments.")
|
for layer in layers:
|
||||||
continue
|
ld = layer.__dict__
|
||||||
match eT:
|
ld.pop("extra")
|
||||||
case "items" | "i" | "item":
|
tgt = chain_layer_to_target(layer)
|
||||||
entryType = "items"
|
td = tgt.__dict__
|
||||||
case "experiments" | "e" | "exp" | "experiment":
|
td.pop("extra")
|
||||||
entryType = "experiments"
|
print(ld)
|
||||||
case _:
|
print(td)
|
||||||
continue
|
print()
|
||||||
# This will probably be reworked in production
|
|
||||||
try:
|
# entryType = None
|
||||||
elabid = elabid
|
# while entryType not in ["items", "experiments"]:
|
||||||
except NameError:
|
# eT = input("Enter a valid entry type [items, experiments]: ")
|
||||||
elabid = input("Input elabid here [default = 1111]: ") or 1111
|
# # This allows for a shortcut: instead of prompting the type before and the elabid after I can just prompt both at the same time - e.g. e51 is exp. 51, i1108 is item 1108...
|
||||||
data = APIHandler(apikey).get_entry_from_elabid(elabid, entryType)
|
# if eT[0] in ["e", "i"] and eT[-1].isnumeric():
|
||||||
if entryType == "experiments":
|
# try:
|
||||||
layer = Layer(data)
|
# elabid = int(eT[1:])
|
||||||
result = layer.__dict__
|
# eT = eT[0]
|
||||||
result.pop("extra")
|
# except Exception:
|
||||||
print(result)
|
# print("Usage: i|item|items|i[ELABID] for items, e|experiment|experiments|e[ELABID] for experiments.")
|
||||||
elif entryType == "items":
|
# continue
|
||||||
if data.get("category_title") == "Sample":
|
# match eT:
|
||||||
item = Entrypoint(data)
|
# case "items" | "i" | "item":
|
||||||
elif data.get("category_title") in ["PLD Target", "Substrate"]:
|
# entryType = "items"
|
||||||
item = Material(data)
|
# case "experiments" | "e" | "exp" | "experiment":
|
||||||
print(item.get_compound_formula(apikey))
|
# entryType = "experiments"
|
||||||
else:
|
# case _:
|
||||||
raise Exception("The selected item or experiment is not in one of the following categories: [Sample, PLD Target, Substrate, PLD Deposition].")
|
# continue
|
||||||
result = item.__dict__
|
# # This will probably be reworked in production
|
||||||
result.pop("extra")
|
# try:
|
||||||
print(result)
|
# elabid = elabid
|
||||||
|
# except NameError:
|
||||||
|
# elabid = input("Input elabid here [default = 1111]: ") or 1111
|
||||||
|
# data = APIHandler(apikey).get_entry_from_elabid(elabid, entryType)
|
||||||
|
# if entryType == "experiments":
|
||||||
|
# layer = Layer(data)
|
||||||
|
# result = layer.__dict__
|
||||||
|
# result.pop("extra")
|
||||||
|
# print(result)
|
||||||
|
# elif entryType == "items":
|
||||||
|
# if data.get("category_title") == "Sample":
|
||||||
|
# item = Entrypoint(data)
|
||||||
|
# elif data.get("category_title") in ["PLD Target", "Substrate"]:
|
||||||
|
# item = Material(data)
|
||||||
|
# print(item.get_compound_formula(apikey))
|
||||||
|
# else:
|
||||||
|
# raise Exception("The selected item or experiment is not in one of the following categories: [Sample, PLD Target, Substrate, PLD Deposition].")
|
||||||
|
# result = item.__dict__
|
||||||
|
# result.pop("extra")
|
||||||
|
# print(result)
|
||||||
@@ -42,6 +42,7 @@ class Layer:
|
|||||||
def __init__(self, layer_data):
|
def __init__(self, layer_data):
|
||||||
try:
|
try:
|
||||||
self.extra = layer_data["metadata_decoded"]["extra_fields"]
|
self.extra = layer_data["metadata_decoded"]["extra_fields"]
|
||||||
|
self.layer_number = self.extra["Layer Progressive Number"]["value"] # integer
|
||||||
self.target_elabid = self.extra["Target"]["value"] # elabid
|
self.target_elabid = self.extra["Target"]["value"] # elabid
|
||||||
self.rheed_system_elabid = self.extra["RHEED System"]["value"] # elabid
|
self.rheed_system_elabid = self.extra["RHEED System"]["value"] # elabid
|
||||||
self.laser_system_elabid = self.extra["Laser System"]["value"] # elabid
|
self.laser_system_elabid = self.extra["Laser System"]["value"] # elabid
|
||||||
@@ -174,14 +175,14 @@ if __name__=="__main__":
|
|||||||
eT = eT[0]
|
eT = eT[0]
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Usage: i|item|items|i[ELABID] for items, e|experiment|experiments|e[ELABID] for experiments.")
|
print("Usage: i|item|items|i[ELABID] for items, e|experiment|experiments|e[ELABID] for experiments.")
|
||||||
pass
|
continue
|
||||||
match eT:
|
match eT:
|
||||||
case "items" | "i" | "item":
|
case "items" | "i" | "item":
|
||||||
entryType = "items"
|
entryType = "items"
|
||||||
case "experiments" | "e" | "exp" | "experiment":
|
case "experiments" | "e" | "exp" | "experiment":
|
||||||
entryType = "experiments"
|
entryType = "experiments"
|
||||||
case _:
|
case _:
|
||||||
pass
|
continue
|
||||||
# This will probably be reworked in production
|
# This will probably be reworked in production
|
||||||
try:
|
try:
|
||||||
elabid = elabid
|
elabid = elabid
|
||||||
@@ -198,10 +199,9 @@ if __name__=="__main__":
|
|||||||
item = Entrypoint(data)
|
item = Entrypoint(data)
|
||||||
elif data.get("category_title") in ["PLD Target", "Substrate"]:
|
elif data.get("category_title") in ["PLD Target", "Substrate"]:
|
||||||
item = Material(data)
|
item = Material(data)
|
||||||
print(item.get_compound_formula())
|
print(item.get_compound_formula(apikey))
|
||||||
|
else:
|
||||||
|
raise Exception("The selected item or experiment is not in one of the following categories: [Sample, PLD Target, Substrate, PLD Deposition].")
|
||||||
result = item.__dict__
|
result = item.__dict__
|
||||||
result.pop("extra")
|
result.pop("extra")
|
||||||
print(result)
|
print(result)
|
||||||
# print(json.dumps(chain.sample_data))
|
|
||||||
# print(json.dumps(chain.linked_experiments))
|
|
||||||
# print(chain.batch_elabid)
|
|
||||||
480
tests/layer_A.json
Normal file
480
tests/layer_A.json
Normal file
@@ -0,0 +1,480 @@
|
|||||||
|
{
|
||||||
|
"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-02-09 09:53:50",
|
||||||
|
"custom_id": null,
|
||||||
|
"date": "2026-02-09",
|
||||||
|
"elabid": "20260209-8ba774f27896bbec37a7cc5eab18747dbac3a4fb",
|
||||||
|
"events_start": null,
|
||||||
|
"events_start_itemid": null,
|
||||||
|
"exclusive_edit_mode": null,
|
||||||
|
"experiments_links": [
|
||||||
|
{
|
||||||
|
"entityid": 59,
|
||||||
|
"title": "Na-26-015 lao on stocazzo",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260209-554888c7b8a17efd963fece04426f6ec5722fa8a",
|
||||||
|
"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": 58,
|
||||||
|
"is_pinned": 0,
|
||||||
|
"items_links": [
|
||||||
|
{
|
||||||
|
"entityid": 1075,
|
||||||
|
"title": "ETO single crystal",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-6f77512fa5a3c5803fcfc64797ffa003429094dc",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "PLD Target",
|
||||||
|
"category_color": "1a5fb4",
|
||||||
|
"status_title": null,
|
||||||
|
"status_color": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1074,
|
||||||
|
"title": "LAO single crystal",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-2cef9e71c0ff4aa15062cb6562f64f6ac3a366fb",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "PLD Target",
|
||||||
|
"category_color": "1a5fb4",
|
||||||
|
"status_title": null,
|
||||||
|
"status_color": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1099,
|
||||||
|
"title": "Coherent Excimer Laser (KrF 248 nm)",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-9175c1674aef9947736fbc12447f912c8ea9bc81",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1096,
|
||||||
|
"title": "PLD Chamber I (small area)",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-19cf5d06fd119f841383f21db1c29eebfad550c5",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 1,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1098,
|
||||||
|
"title": "STAIB RHEED 30",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-5df7738907b198451c19296ab07e5093d12a3ead",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1111,
|
||||||
|
"title": "Na-26-015",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260209-6e19f19795b7ea79594a35d9a11da1896b13453e",
|
||||||
|
"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\": 1, \"name\": \"Process\"}, {\"id\": 2, \"name\": \"Laser\"}, {\"id\": 3, \"name\": \"Pre Annealing\"}, {\"id\": 4, \"name\": \"Post Annealing\"}, {\"id\": 5, \"name\": \"Instruments\"}]}, \"extra_fields\": {\"Sample\": {\"type\": \"items\", \"value\": 1111, \"group_id\": 1, \"position\": 0, \"required\": true}, \"Target\": {\"type\": \"items\", \"value\": 1075, \"group_id\": 1, \"position\": 2, \"required\": true}, \"Chamber\": {\"type\": \"items\", \"value\": 1096, \"group_id\": 5, \"position\": 0, \"required\": true}, \"Duration\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"45\", \"group_id\": 1, \"position\": 3, \"required\": true}, \"Spot Area\": {\"type\": \"number\", \"unit\": \"mm^2\", \"units\": [\"mm^2\"], \"value\": \"0.8\", \"group_id\": 2, \"position\": 2}, \"Thickness\": {\"type\": \"number\", \"unit\": \"u.c.\", \"units\": [\"u.c.\", \"nm\"], \"value\": \"3\", \"group_id\": 1, \"position\": 4}, \"Buffer gas\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 1, \"position\": 5}, \"Duration PA\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 4, \"position\": 0}, \"Duration Pre\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 3, \"position\": 0}, \"Laser System\": {\"type\": \"items\", \"value\": 1099, \"group_id\": 5, \"position\": 1}, \"RHEED System\": {\"type\": \"items\", \"value\": 1098, \"group_id\": 5, \"position\": 2}, \"Buffer gas PA\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 4, \"position\": 1}, \"Buffer gas Pre\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 3, \"position\": 1}, \"Heating Method\": {\"type\": \"select\", \"value\": \"Radiative Heater\", \"options\": [\"Radiative Heater\", \"Laser Heater\"], \"group_id\": 1, \"position\": 9}, \"Laser Intensity\": {\"type\": \"number\", \"unit\": \"J/(s cm^2)\", \"units\": [\"J/(s cm^2)\"], \"value\": \"1.5\", \"group_id\": 2, \"position\": 0}, \"Repetition rate\": {\"type\": \"number\", \"unit\": \"Hz\", \"units\": [\"Hz\"], \"value\": \"1\", \"group_id\": 2, \"position\": 1}, \"Process pressure\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"1e-3\", \"group_id\": 1, \"position\": 6}, \"Heater temperature\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"650\", \"group_id\": 1, \"position\": 7}, \"Process pressure PA\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 4, \"position\": 2}, \"Process pressure Pre\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 3, \"position\": 2}, \"Heater temperature PA\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"\", \"group_id\": 4, \"position\": 3}, \"Laser Rastering Speed\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 2, \"position\": 4}, \"Heater temperature Pre\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"\", \"group_id\": 3, \"position\": 3}, \"Heater-target distance\": {\"type\": \"number\", \"unit\": \"mm\", \"units\": [\"mm\"], \"value\": \"45\", \"group_id\": 1, \"position\": 8}, \"Laser Rastering Geometry\": {\"type\": \"select\", \"value\": \"none\", \"options\": [\"none\", \"on a square\", \"on a rectangle\", \"on a line\", \"other\"], \"group_id\": 2, \"position\": 3}, \"Laser Rastering Position\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 2, \"position\": 5}, \"Layer Progressive Number\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"2\", \"group_id\": 1, \"position\": 1, \"required\": true}}}",
|
||||||
|
"metadata_decoded": {
|
||||||
|
"elabftw": {
|
||||||
|
"extra_fields_groups": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Process"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "Laser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"name": "Pre Annealing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"name": "Post Annealing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"name": "Instruments"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extra_fields": {
|
||||||
|
"Sample": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1111,
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 0,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Target": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1075,
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 2,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Chamber": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1096,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 0,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Duration": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "69",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 3,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Spot Area": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mm^2",
|
||||||
|
"units": [
|
||||||
|
"mm^2"
|
||||||
|
],
|
||||||
|
"value": "0.8",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Thickness": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "u.c.",
|
||||||
|
"units": [
|
||||||
|
"u.c.",
|
||||||
|
"nm"
|
||||||
|
],
|
||||||
|
"value": "3",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 4
|
||||||
|
},
|
||||||
|
"Buffer gas": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 5
|
||||||
|
},
|
||||||
|
"Duration PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Duration Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Laser System": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1099,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"RHEED System": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1098,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Buffer gas PA": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Buffer gas Pre": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Heating Method": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "Radiative Heater",
|
||||||
|
"options": [
|
||||||
|
"Radiative Heater",
|
||||||
|
"Laser Heater"
|
||||||
|
],
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 9
|
||||||
|
},
|
||||||
|
"Laser Intensity": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "J/(s cm^2)",
|
||||||
|
"units": [
|
||||||
|
"J/(s cm^2)"
|
||||||
|
],
|
||||||
|
"value": "1.5",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Repetition rate": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "Hz",
|
||||||
|
"units": [
|
||||||
|
"Hz"
|
||||||
|
],
|
||||||
|
"value": "1",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Process pressure": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "1e-3",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 6
|
||||||
|
},
|
||||||
|
"Heater temperature": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "650",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 7
|
||||||
|
},
|
||||||
|
"Process pressure PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Process pressure Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Heater temperature PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Laser Rastering Speed": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 4
|
||||||
|
},
|
||||||
|
"Heater temperature Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Heater-target distance": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mm",
|
||||||
|
"units": [
|
||||||
|
"mm"
|
||||||
|
],
|
||||||
|
"value": "45",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 8
|
||||||
|
},
|
||||||
|
"Laser Rastering Geometry": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "none",
|
||||||
|
"options": [
|
||||||
|
"none",
|
||||||
|
"on a square",
|
||||||
|
"on a rectangle",
|
||||||
|
"on a line",
|
||||||
|
"other"
|
||||||
|
],
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Laser Rastering Position": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 5
|
||||||
|
},
|
||||||
|
"Layer Progressive Number": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "3",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 1,
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modified_at": "2026-02-09 15:16:33",
|
||||||
|
"next_step": null,
|
||||||
|
"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=58",
|
||||||
|
"state": 1,
|
||||||
|
"status": null,
|
||||||
|
"status_color": null,
|
||||||
|
"status_title": null,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": 74,
|
||||||
|
"item_id": 58,
|
||||||
|
"body": "add process data",
|
||||||
|
"ordering": 1,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:54:53",
|
||||||
|
"deadline": null,
|
||||||
|
"deadline_notif": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 75,
|
||||||
|
"item_id": 58,
|
||||||
|
"body": "add RHEED data",
|
||||||
|
"ordering": 2,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:54:54",
|
||||||
|
"deadline": null,
|
||||||
|
"deadline_notif": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 76,
|
||||||
|
"item_id": 58,
|
||||||
|
"body": "add RHEED images",
|
||||||
|
"ordering": 3,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:54:56",
|
||||||
|
"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-015 eto on lao on sto",
|
||||||
|
"type": "experiments",
|
||||||
|
"uploads": [],
|
||||||
|
"userid": 2
|
||||||
|
}
|
||||||
500
tests/layer_B.json
Normal file
500
tests/layer_B.json
Normal file
@@ -0,0 +1,500 @@
|
|||||||
|
{
|
||||||
|
"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-02-09 09:32:10",
|
||||||
|
"custom_id": null,
|
||||||
|
"date": "2026-02-09",
|
||||||
|
"elabid": "20260209-554888c7b8a17efd963fece04426f6ec5722fa8a",
|
||||||
|
"events_start": null,
|
||||||
|
"events_start_itemid": null,
|
||||||
|
"exclusive_edit_mode": null,
|
||||||
|
"experiments_links": [],
|
||||||
|
"firstname": "Emiliano",
|
||||||
|
"fullname": "Emiliano Di Gennaro",
|
||||||
|
"id": 56,
|
||||||
|
"is_pinned": 0,
|
||||||
|
"items_links": [
|
||||||
|
{
|
||||||
|
"entityid": 1074,
|
||||||
|
"title": "LAO single crystal",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-2cef9e71c0ff4aa15062cb6562f64f6ac3a366fb",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "PLD Target",
|
||||||
|
"category_color": "1a5fb4",
|
||||||
|
"status_title": null,
|
||||||
|
"status_color": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1099,
|
||||||
|
"title": "Coherent Excimer Laser (KrF 248 nm)",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-9175c1674aef9947736fbc12447f912c8ea9bc81",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1096,
|
||||||
|
"title": "PLD Chamber I (small area)",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-19cf5d06fd119f841383f21db1c29eebfad550c5",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 1,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1098,
|
||||||
|
"title": "STAIB RHEED 30",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-5df7738907b198451c19296ab07e5093d12a3ead",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1111,
|
||||||
|
"title": "Na-26-015",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260209-6e19f19795b7ea79594a35d9a11da1896b13453e",
|
||||||
|
"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\": 1, \"name\": \"Process\"}, {\"id\": 2, \"name\": \"Laser\"}, {\"id\": 3, \"name\": \"Pre Annealing\"}, {\"id\": 4, \"name\": \"Post Annealing\"}, {\"id\": 5, \"name\": \"Instruments\"}]}, \"extra_fields\": {\"Sample\": {\"type\": \"items\", \"value\": 1111, \"group_id\": 1, \"position\": 0, \"required\": true}, \"Target\": {\"type\": \"items\", \"value\": 1074, \"group_id\": 1, \"position\": 2, \"required\": true}, \"Chamber\": {\"type\": \"items\", \"value\": 1096, \"group_id\": 5, \"position\": 0, \"required\": true}, \"Duration\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"128\", \"group_id\": 1, \"position\": 3, \"required\": true}, \"Spot Area\": {\"type\": \"number\", \"unit\": \"mm^2\", \"units\": [\"mm^2\"], \"value\": \"0.8\", \"group_id\": 2, \"position\": 2}, \"Thickness\": {\"type\": \"number\", \"unit\": \"u.c.\", \"units\": [\"u.c.\", \"nm\"], \"value\": \"8\", \"group_id\": 1, \"position\": 4}, \"Buffer gas\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 1, \"position\": 5}, \"Duration PA\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 4, \"position\": 0}, \"Duration Pre\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 3, \"position\": 0}, \"Laser System\": {\"type\": \"items\", \"value\": 1099, \"group_id\": 5, \"position\": 1}, \"RHEED System\": {\"type\": \"items\", \"value\": 1098, \"group_id\": 5, \"position\": 2}, \"Buffer gas PA\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 4, \"position\": 1}, \"Buffer gas Pre\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 3, \"position\": 1}, \"Heating Method\": {\"type\": \"select\", \"value\": \"Radiative Heater\", \"options\": [\"Radiative Heater\", \"Laser Heater\"], \"group_id\": 1, \"position\": 9}, \"Laser Intensity\": {\"type\": \"number\", \"unit\": \"J/(s cm^2)\", \"units\": [\"J/(s cm^2)\"], \"value\": \"1.5\", \"group_id\": 2, \"position\": 0}, \"Repetition rate\": {\"type\": \"number\", \"unit\": \"Hz\", \"units\": [\"Hz\"], \"value\": \"1\", \"group_id\": 2, \"position\": 1}, \"Process pressure\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"1e-3\", \"group_id\": 1, \"position\": 6}, \"Heater temperature\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"650\", \"group_id\": 1, \"position\": 7}, \"Process pressure PA\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 4, \"position\": 2}, \"Process pressure Pre\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"1e-1\", \"group_id\": 3, \"position\": 2}, \"Heater temperature PA\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"\", \"group_id\": 4, \"position\": 3}, \"Laser Rastering Speed\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 2, \"position\": 4}, \"Heater temperature Pre\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"500\", \"group_id\": 3, \"position\": 3}, \"Heater-target distance\": {\"type\": \"number\", \"unit\": \"mm\", \"units\": [\"mm\"], \"value\": \"45\", \"group_id\": 1, \"position\": 8}, \"Laser Rastering Geometry\": {\"type\": \"select\", \"value\": \"none\", \"options\": [\"none\", \"on a square\", \"on a rectangle\", \"on a line\", \"other\"], \"group_id\": 2, \"position\": 3}, \"Laser Rastering Position\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 2, \"position\": 5}, \"Layer Progressive Number\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"1\", \"group_id\": 1, \"position\": 1, \"required\": true}}}",
|
||||||
|
"metadata_decoded": {
|
||||||
|
"elabftw": {
|
||||||
|
"extra_fields_groups": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Process"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "Laser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"name": "Pre Annealing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"name": "Post Annealing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"name": "Instruments"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extra_fields": {
|
||||||
|
"Sample": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1111,
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 0,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Target": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1074,
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 2,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Chamber": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1096,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 0,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Duration": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "128",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 3,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Spot Area": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mm^2",
|
||||||
|
"units": [
|
||||||
|
"mm^2"
|
||||||
|
],
|
||||||
|
"value": "0.8",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Thickness": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "u.c.",
|
||||||
|
"units": [
|
||||||
|
"u.c.",
|
||||||
|
"nm"
|
||||||
|
],
|
||||||
|
"value": "8",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 4
|
||||||
|
},
|
||||||
|
"Buffer gas": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 5
|
||||||
|
},
|
||||||
|
"Duration PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Duration Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Laser System": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1099,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"RHEED System": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1098,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Buffer gas PA": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Buffer gas Pre": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Heating Method": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "Radiative Heater",
|
||||||
|
"options": [
|
||||||
|
"Radiative Heater",
|
||||||
|
"Laser Heater"
|
||||||
|
],
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 9
|
||||||
|
},
|
||||||
|
"Laser Intensity": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "J/(s cm^2)",
|
||||||
|
"units": [
|
||||||
|
"J/(s cm^2)"
|
||||||
|
],
|
||||||
|
"value": "1.5",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Repetition rate": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "Hz",
|
||||||
|
"units": [
|
||||||
|
"Hz"
|
||||||
|
],
|
||||||
|
"value": "1",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Process pressure": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "1e-3",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 6
|
||||||
|
},
|
||||||
|
"Heater temperature": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "650",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 7
|
||||||
|
},
|
||||||
|
"Process pressure PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Process pressure Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "1e-1",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Heater temperature PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Laser Rastering Speed": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 4
|
||||||
|
},
|
||||||
|
"Heater temperature Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "500",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Heater-target distance": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mm",
|
||||||
|
"units": [
|
||||||
|
"mm"
|
||||||
|
],
|
||||||
|
"value": "45",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 8
|
||||||
|
},
|
||||||
|
"Laser Rastering Geometry": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "none",
|
||||||
|
"options": [
|
||||||
|
"none",
|
||||||
|
"on a square",
|
||||||
|
"on a rectangle",
|
||||||
|
"on a line",
|
||||||
|
"other"
|
||||||
|
],
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Laser Rastering Position": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 5
|
||||||
|
},
|
||||||
|
"Layer Progressive Number": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "1",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 1,
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modified_at": "2026-02-09 15:17:40",
|
||||||
|
"next_step": "add process data",
|
||||||
|
"orcid": "0000-0003-4231-9776",
|
||||||
|
"page": "experiments",
|
||||||
|
"rating": 0,
|
||||||
|
"recent_comment": null,
|
||||||
|
"related_experiments_links": [
|
||||||
|
{
|
||||||
|
"entityid": 58,
|
||||||
|
"title": "Na-26-015 eto on lao on sto",
|
||||||
|
"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=56",
|
||||||
|
"state": 1,
|
||||||
|
"status": null,
|
||||||
|
"status_color": null,
|
||||||
|
"status_title": null,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": 68,
|
||||||
|
"item_id": 56,
|
||||||
|
"body": "add process data",
|
||||||
|
"ordering": 1,
|
||||||
|
"finished": 0,
|
||||||
|
"finished_time": null,
|
||||||
|
"deadline": null,
|
||||||
|
"deadline_notif": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 69,
|
||||||
|
"item_id": 56,
|
||||||
|
"body": "add RHEED data",
|
||||||
|
"ordering": 2,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:42:59",
|
||||||
|
"deadline": null,
|
||||||
|
"deadline_notif": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 70,
|
||||||
|
"item_id": 56,
|
||||||
|
"body": "add RHEED images",
|
||||||
|
"ordering": 3,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:43: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-015 lao on sto",
|
||||||
|
"type": "experiments",
|
||||||
|
"uploads": [
|
||||||
|
{
|
||||||
|
"id": 75,
|
||||||
|
"real_name": "LAO_16min50s_736C_STO.bmp",
|
||||||
|
"long_name": "ce/ce536c93131cca5b3066a34fea81ae427f21d4ab851e64ff2142c99a9c3c7659805f224c582a8a11bc08d6307a6f4e6415891e506a46d346e64d7defbd2fcb7b.bmp",
|
||||||
|
"comment": null,
|
||||||
|
"item_id": 56,
|
||||||
|
"userid": 2,
|
||||||
|
"type": "experiments",
|
||||||
|
"created_at": "2026-02-09 09:42:52",
|
||||||
|
"hash": "881747c39f70a5c2691fe1fe432f81e60e1b81aa81508b103a6bbc66c4183c6c",
|
||||||
|
"hash_algorithm": "sha256",
|
||||||
|
"storage": 1,
|
||||||
|
"filesize": 308278,
|
||||||
|
"state": 1,
|
||||||
|
"immutable": 0,
|
||||||
|
"fullname": "Emiliano Di Gennaro"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 74,
|
||||||
|
"real_name": "Real-time Window Analysis ( Peak Int. ).txt",
|
||||||
|
"long_name": "18/18932061059d64b7edf332568f21507e15e61f054696fda4d88b1c431e6e04209ac1848328f7d72cb39222cdf2b250be5038e491d62809ca9e62542e54a94452.txt",
|
||||||
|
"comment": null,
|
||||||
|
"item_id": 56,
|
||||||
|
"userid": 2,
|
||||||
|
"type": "experiments",
|
||||||
|
"created_at": "2026-02-09 09:42:43",
|
||||||
|
"hash": "1dab085e81dca7c6b8380c98225bc429506ece28e51e976ae564b3b5289b58fe",
|
||||||
|
"hash_algorithm": "sha256",
|
||||||
|
"storage": 1,
|
||||||
|
"filesize": 3755169,
|
||||||
|
"state": 1,
|
||||||
|
"immutable": 0,
|
||||||
|
"fullname": "Emiliano Di Gennaro"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"userid": 2
|
||||||
|
}
|
||||||
480
tests/layer_C.json
Normal file
480
tests/layer_C.json
Normal file
@@ -0,0 +1,480 @@
|
|||||||
|
{
|
||||||
|
"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-02-09 09:53:50",
|
||||||
|
"custom_id": null,
|
||||||
|
"date": "2026-02-09",
|
||||||
|
"elabid": "20260209-8ba774f27896bbec37a7cc5eab18747dbac3a4fb",
|
||||||
|
"events_start": null,
|
||||||
|
"events_start_itemid": null,
|
||||||
|
"exclusive_edit_mode": null,
|
||||||
|
"experiments_links": [
|
||||||
|
{
|
||||||
|
"entityid": 56,
|
||||||
|
"title": "Na-26-015 lao on sto",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260209-554888c7b8a17efd963fece04426f6ec5722fa8a",
|
||||||
|
"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": 58,
|
||||||
|
"is_pinned": 0,
|
||||||
|
"items_links": [
|
||||||
|
{
|
||||||
|
"entityid": 1075,
|
||||||
|
"title": "ETO single crystal",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-6f77512fa5a3c5803fcfc64797ffa003429094dc",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "PLD Target",
|
||||||
|
"category_color": "1a5fb4",
|
||||||
|
"status_title": null,
|
||||||
|
"status_color": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1074,
|
||||||
|
"title": "LAO single crystal",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-2cef9e71c0ff4aa15062cb6562f64f6ac3a366fb",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "PLD Target",
|
||||||
|
"category_color": "1a5fb4",
|
||||||
|
"status_title": null,
|
||||||
|
"status_color": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1099,
|
||||||
|
"title": "Coherent Excimer Laser (KrF 248 nm)",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-9175c1674aef9947736fbc12447f912c8ea9bc81",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1096,
|
||||||
|
"title": "PLD Chamber I (small area)",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-19cf5d06fd119f841383f21db1c29eebfad550c5",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 1,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1098,
|
||||||
|
"title": "STAIB RHEED 30",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260126-5df7738907b198451c19296ab07e5093d12a3ead",
|
||||||
|
"link_state": 1,
|
||||||
|
"is_bookable": 0,
|
||||||
|
"page": "database.php",
|
||||||
|
"type": "items",
|
||||||
|
"category_title": "Process Instrument",
|
||||||
|
"category_color": "a51d2d",
|
||||||
|
"status_title": "Available",
|
||||||
|
"status_color": "6a7753"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entityid": 1111,
|
||||||
|
"title": "Na-26-015",
|
||||||
|
"custom_id": null,
|
||||||
|
"elabid": "20260209-6e19f19795b7ea79594a35d9a11da1896b13453e",
|
||||||
|
"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\": 1, \"name\": \"Process\"}, {\"id\": 2, \"name\": \"Laser\"}, {\"id\": 3, \"name\": \"Pre Annealing\"}, {\"id\": 4, \"name\": \"Post Annealing\"}, {\"id\": 5, \"name\": \"Instruments\"}]}, \"extra_fields\": {\"Sample\": {\"type\": \"items\", \"value\": 1111, \"group_id\": 1, \"position\": 0, \"required\": true}, \"Target\": {\"type\": \"items\", \"value\": 1075, \"group_id\": 1, \"position\": 2, \"required\": true}, \"Chamber\": {\"type\": \"items\", \"value\": 1096, \"group_id\": 5, \"position\": 0, \"required\": true}, \"Duration\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"45\", \"group_id\": 1, \"position\": 3, \"required\": true}, \"Spot Area\": {\"type\": \"number\", \"unit\": \"mm^2\", \"units\": [\"mm^2\"], \"value\": \"0.8\", \"group_id\": 2, \"position\": 2}, \"Thickness\": {\"type\": \"number\", \"unit\": \"u.c.\", \"units\": [\"u.c.\", \"nm\"], \"value\": \"3\", \"group_id\": 1, \"position\": 4}, \"Buffer gas\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 1, \"position\": 5}, \"Duration PA\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 4, \"position\": 0}, \"Duration Pre\": {\"type\": \"number\", \"unit\": \"s\", \"units\": [\"s\", \"min\"], \"value\": \"\", \"group_id\": 3, \"position\": 0}, \"Laser System\": {\"type\": \"items\", \"value\": 1099, \"group_id\": 5, \"position\": 1}, \"RHEED System\": {\"type\": \"items\", \"value\": 1098, \"group_id\": 5, \"position\": 2}, \"Buffer gas PA\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 4, \"position\": 1}, \"Buffer gas Pre\": {\"type\": \"select\", \"value\": \"O2\", \"options\": [\"O2\", \"N2\", \"Ar\", \"\"], \"group_id\": 3, \"position\": 1}, \"Heating Method\": {\"type\": \"select\", \"value\": \"Radiative Heater\", \"options\": [\"Radiative Heater\", \"Laser Heater\"], \"group_id\": 1, \"position\": 9}, \"Laser Intensity\": {\"type\": \"number\", \"unit\": \"J/(s cm^2)\", \"units\": [\"J/(s cm^2)\"], \"value\": \"1.5\", \"group_id\": 2, \"position\": 0}, \"Repetition rate\": {\"type\": \"number\", \"unit\": \"Hz\", \"units\": [\"Hz\"], \"value\": \"1\", \"group_id\": 2, \"position\": 1}, \"Process pressure\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"1e-3\", \"group_id\": 1, \"position\": 6}, \"Heater temperature\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"650\", \"group_id\": 1, \"position\": 7}, \"Process pressure PA\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 4, \"position\": 2}, \"Process pressure Pre\": {\"type\": \"number\", \"unit\": \"mbar\", \"units\": [\"mbar\"], \"value\": \"\", \"group_id\": 3, \"position\": 2}, \"Heater temperature PA\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"\", \"group_id\": 4, \"position\": 3}, \"Laser Rastering Speed\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 2, \"position\": 4}, \"Heater temperature Pre\": {\"type\": \"number\", \"unit\": \"\u00b0C\", \"units\": [\"\u00b0C\"], \"value\": \"\", \"group_id\": 3, \"position\": 3}, \"Heater-target distance\": {\"type\": \"number\", \"unit\": \"mm\", \"units\": [\"mm\"], \"value\": \"45\", \"group_id\": 1, \"position\": 8}, \"Laser Rastering Geometry\": {\"type\": \"select\", \"value\": \"none\", \"options\": [\"none\", \"on a square\", \"on a rectangle\", \"on a line\", \"other\"], \"group_id\": 2, \"position\": 3}, \"Laser Rastering Position\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"\", \"group_id\": 2, \"position\": 5}, \"Layer Progressive Number\": {\"type\": \"number\", \"unit\": \"\", \"units\": [], \"value\": \"2\", \"group_id\": 1, \"position\": 1, \"required\": true}}}",
|
||||||
|
"metadata_decoded": {
|
||||||
|
"elabftw": {
|
||||||
|
"extra_fields_groups": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Process"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "Laser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"name": "Pre Annealing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"name": "Post Annealing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"name": "Instruments"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extra_fields": {
|
||||||
|
"Sample": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1111,
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 0,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Target": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1075,
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 2,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Chamber": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1096,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 0,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Duration": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "45",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 3,
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"Spot Area": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mm^2",
|
||||||
|
"units": [
|
||||||
|
"mm^2"
|
||||||
|
],
|
||||||
|
"value": "0.8",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Thickness": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "u.c.",
|
||||||
|
"units": [
|
||||||
|
"u.c.",
|
||||||
|
"nm"
|
||||||
|
],
|
||||||
|
"value": "3",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 4
|
||||||
|
},
|
||||||
|
"Buffer gas": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 5
|
||||||
|
},
|
||||||
|
"Duration PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Duration Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "s",
|
||||||
|
"units": [
|
||||||
|
"s",
|
||||||
|
"min"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Laser System": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1099,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"RHEED System": {
|
||||||
|
"type": "items",
|
||||||
|
"value": 1098,
|
||||||
|
"group_id": 5,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Buffer gas PA": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Buffer gas Pre": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "O2",
|
||||||
|
"options": [
|
||||||
|
"O2",
|
||||||
|
"N2",
|
||||||
|
"Ar",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Heating Method": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "Radiative Heater",
|
||||||
|
"options": [
|
||||||
|
"Radiative Heater",
|
||||||
|
"Laser Heater"
|
||||||
|
],
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 9
|
||||||
|
},
|
||||||
|
"Laser Intensity": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "J/(s cm^2)",
|
||||||
|
"units": [
|
||||||
|
"J/(s cm^2)"
|
||||||
|
],
|
||||||
|
"value": "1.5",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 0
|
||||||
|
},
|
||||||
|
"Repetition rate": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "Hz",
|
||||||
|
"units": [
|
||||||
|
"Hz"
|
||||||
|
],
|
||||||
|
"value": "1",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 1
|
||||||
|
},
|
||||||
|
"Process pressure": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "1e-3",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 6
|
||||||
|
},
|
||||||
|
"Heater temperature": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "650",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 7
|
||||||
|
},
|
||||||
|
"Process pressure PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Process pressure Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mbar",
|
||||||
|
"units": [
|
||||||
|
"mbar"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 2
|
||||||
|
},
|
||||||
|
"Heater temperature PA": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 4,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Laser Rastering Speed": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 4
|
||||||
|
},
|
||||||
|
"Heater temperature Pre": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "\u00b0C",
|
||||||
|
"units": [
|
||||||
|
"\u00b0C"
|
||||||
|
],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 3,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Heater-target distance": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "mm",
|
||||||
|
"units": [
|
||||||
|
"mm"
|
||||||
|
],
|
||||||
|
"value": "45",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 8
|
||||||
|
},
|
||||||
|
"Laser Rastering Geometry": {
|
||||||
|
"type": "select",
|
||||||
|
"value": "none",
|
||||||
|
"options": [
|
||||||
|
"none",
|
||||||
|
"on a square",
|
||||||
|
"on a rectangle",
|
||||||
|
"on a line",
|
||||||
|
"other"
|
||||||
|
],
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 3
|
||||||
|
},
|
||||||
|
"Laser Rastering Position": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "",
|
||||||
|
"group_id": 2,
|
||||||
|
"position": 5
|
||||||
|
},
|
||||||
|
"Layer Progressive Number": {
|
||||||
|
"type": "number",
|
||||||
|
"unit": "",
|
||||||
|
"units": [],
|
||||||
|
"value": "2",
|
||||||
|
"group_id": 1,
|
||||||
|
"position": 1,
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modified_at": "2026-02-09 15:16:33",
|
||||||
|
"next_step": null,
|
||||||
|
"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=58",
|
||||||
|
"state": 1,
|
||||||
|
"status": null,
|
||||||
|
"status_color": null,
|
||||||
|
"status_title": null,
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"id": 74,
|
||||||
|
"item_id": 58,
|
||||||
|
"body": "add process data",
|
||||||
|
"ordering": 1,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:54:53",
|
||||||
|
"deadline": null,
|
||||||
|
"deadline_notif": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 75,
|
||||||
|
"item_id": 58,
|
||||||
|
"body": "add RHEED data",
|
||||||
|
"ordering": 2,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:54:54",
|
||||||
|
"deadline": null,
|
||||||
|
"deadline_notif": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 76,
|
||||||
|
"item_id": 58,
|
||||||
|
"body": "add RHEED images",
|
||||||
|
"ordering": 3,
|
||||||
|
"finished": 1,
|
||||||
|
"finished_time": "2026-02-09 09:54:56",
|
||||||
|
"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-015 eto on lao on sto",
|
||||||
|
"type": "experiments",
|
||||||
|
"uploads": [],
|
||||||
|
"userid": 2
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user