nomad-material-processing 0.0.6__tar.gz → 0.0.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. nomad_material_processing-0.0.8/.vscode/settings.json +19 -0
  2. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/PKG-INFO +1 -1
  3. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/pyproject.toml +42 -0
  4. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing/__init__.py +222 -66
  5. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/__init__.py +544 -0
  6. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/cvd/__init__.py +315 -0
  7. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/cvd/nomad_plugin.yaml +3 -0
  8. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/nomad_plugin.yaml +3 -0
  9. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/pvd/__init__.py +245 -0
  10. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/pvd/nomad_plugin.yaml +3 -0
  11. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/pvd/pld.py +181 -0
  12. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py +74 -0
  13. nomad_material_processing-0.0.8/src/nomad_material_processing/vapor_deposition/pvd/thermal.py +218 -0
  14. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing.egg-info/PKG-INFO +1 -1
  15. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing.egg-info/SOURCES.txt +9 -1
  16. nomad-material-processing-0.0.6/.vscode/settings.json +0 -8
  17. nomad-material-processing-0.0.6/src/nomad_material_processing/physical_vapor_deposition.py +0 -700
  18. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/.github/workflows/python-publish.yml +0 -0
  19. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/.gitignore +0 -0
  20. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/LICENSE +0 -0
  21. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/README.md +0 -0
  22. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/nomad.yaml +0 -0
  23. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/setup.cfg +0 -0
  24. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/setup.py +0 -0
  25. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing/combinatorial.py +0 -0
  26. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing/crystal_growth.py +0 -0
  27. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing/epitaxy.py +0 -0
  28. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing/nomad_plugin.yaml +0 -0
  29. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing/utils.py +0 -0
  30. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing.egg-info/dependency_links.txt +0 -0
  31. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing.egg-info/requires.txt +0 -0
  32. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/src/nomad_material_processing.egg-info/top_level.txt +0 -0
  33. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_activity_step.archive.yaml +0 -0
  34. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_crystal_growth.archive.yaml +0 -0
  35. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_czochralski_process.archive.yaml +0 -0
  36. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_epitaxy.archive.yaml +0 -0
  37. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_metal_organic_vapor_phase_epitaxy.archive.yaml +0 -0
  38. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_molecular_beam_epitaxy.archive.yaml +0 -0
  39. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_physical_vapor_deposition.archive.yaml +0 -0
  40. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_pulsed_laser_deposition.archive.yaml +0 -0
  41. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_sample_deposition.archive.yaml +0 -0
  42. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_sputter_deposition.archive.yaml +0 -0
  43. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_substrate.archive.yaml +0 -0
  44. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_thermal_evaporation.archive.yaml +0 -0
  45. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_thin_film.archive.yaml +0 -0
  46. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_thin_film_stack.archive.yaml +0 -0
  47. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/data/test_vapor_phase_epitaxy.archive.yaml +0 -0
  48. {nomad-material-processing-0.0.6 → nomad_material_processing-0.0.8}/tests/test_schema.py +0 -0
@@ -0,0 +1,19 @@
1
+ {
2
+ "python.defaultInterpreterPath": ".pyenv/bin/python",
3
+ "python.terminal.activateEnvInCurrentTerminal": true,
4
+ "editor.rulers": [
5
+ 90
6
+ ],
7
+ "editor.renderWhitespace": "all",
8
+ "editor.tabSize": 4,
9
+ "files.trimTrailingWhitespace": true,
10
+ "files.watcherExclude": {
11
+ "${workspaceFolder}/.pyenv/**": true,
12
+ },
13
+ "python.testing.unittestEnabled": false,
14
+ "editor.defaultFormatter": "charliermarsh.ruff",
15
+ "editor.formatOnSave": true,
16
+ "[python]": {
17
+ "editor.defaultFormatter": "charliermarsh.ruff"
18
+ },
19
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nomad-material-processing
3
- Version: 0.0.6
3
+ Version: 0.0.8
4
4
  Summary: A plugin for NOMAD containing base sections for material processing.
5
5
  Author-email: Hampus Näsström <hampus.naesstroem@physik.hu-berlin.de>, Andrea Albino <andrea.albino@physik.hu-berlin.de>, Sebastian Brückner <sebastian.brueckner@ikz-berlin.de>
6
6
  License: Apache License
@@ -38,6 +38,48 @@ file = "LICENSE"
38
38
  "Homepage" = "https://github.com/FAIRmat-NFDI/nomad-material-processing"
39
39
  "Bug Tracker" = "https://github.com/FAIRmat-NFDI/nomad-material-processing/issues"
40
40
 
41
+ [tool.ruff]
42
+ include = ["src/*.py", "tests/*.py"]
43
+ select = [
44
+ "E", # pycodestyle
45
+ "W", # pycodestyle
46
+ "PL", # pylint
47
+ ]
48
+ ignore = [
49
+ "E501", # Line too long ({width} > {limit} characters)
50
+ "E701", # Multiple statements on one line (colon)
51
+ "E731", # Do not assign a lambda expression, use a def
52
+ "E402", # Module level import not at top of file
53
+ "PLR0911", # Too many return statements
54
+ "PLR0912", # Too many branches
55
+ "PLR0913", # Too many arguments in function definition
56
+ "PLR0915", # Too many statements
57
+ "PLR2004", # Magic value used instead of constant
58
+ "PLW0603", # Using the global statement
59
+ "PLW2901", # redefined-loop-name
60
+ "PLR1714", # consider-using-in
61
+ "PLR5501", # else-if-used
62
+ ]
63
+ fixable = ["ALL"]
64
+ exclude = ["dependencies"]
65
+
66
+ # Same as Black.
67
+ line-length = 88
68
+ indent-width = 4
69
+
70
+ [tool.ruff.format]
71
+ # use single quotes for strings.
72
+ quote-style = "single"
73
+
74
+ # indent with spaces, rather than tabs.
75
+ indent-style = "space"
76
+
77
+ # Like Black, respect magic trailing commas.
78
+ skip-magic-trailing-comma = false
79
+
80
+ # Like Black, automatically detect the appropriate line ending.
81
+ line-ending = "auto"
82
+
41
83
  [tool.setuptools.packages.find]
42
84
  where = [
43
85
  "src",
@@ -29,6 +29,8 @@ from nomad.datamodel.metainfo.basesections import (
29
29
  ElementalComposition,
30
30
  SynthesisMethod,
31
31
  CompositeSystem,
32
+ CompositeSystemReference,
33
+ SystemComponent,
32
34
  )
33
35
  from nomad.datamodel.data import (
34
36
  ArchiveSection,
@@ -53,12 +55,12 @@ m_package = Package(name='Material Processing')
53
55
 
54
56
 
55
57
  class Geometry(ArchiveSection):
56
- '''
58
+ """
57
59
  Geometrical shape attributes of a system.
58
60
  Sections derived from `Geometry` represent concrete geometrical shapes.
59
- '''
60
- m_def = Section(
61
- )
61
+ """
62
+
63
+ m_def = Section()
62
64
  volume = Quantity(
63
65
  type=float,
64
66
  description='The measure of the amount of space occupied in 3D space.',
@@ -70,12 +72,12 @@ class Geometry(ArchiveSection):
70
72
 
71
73
 
72
74
  class Parallelepiped(Geometry):
73
- '''
74
- Six-faced polyhedron with each pair of opposite faces parallel and equal in size,
75
+ """
76
+ Six-faced polyhedron with each pair of opposite faces parallel and equal in size,
75
77
  characterized by rectangular sides and parallelogram faces.
76
- '''
77
- m_def = Section(
78
- )
78
+ """
79
+
80
+ m_def = Section()
79
81
  height = Quantity(
80
82
  type=float,
81
83
  description='The z dimension of the parallelepiped.',
@@ -104,14 +106,14 @@ class Parallelepiped(Geometry):
104
106
  defaultDisplayUnit='millimeter',
105
107
  label='Length (y)',
106
108
  ),
107
- unit='meter'
109
+ unit='meter',
108
110
  )
109
111
  surface_area = Quantity(
110
112
  type=float,
111
- description='''
113
+ description="""
112
114
  The product of length and width, representing the total exposed area of the
113
115
  primary surface.
114
- ''',
116
+ """,
115
117
  a_eln=ELNAnnotation(
116
118
  component=ELNComponentEnum.NumberEditQuantity,
117
119
  defaultDisplayUnit='millimeter ** 2',
@@ -122,16 +124,17 @@ class Parallelepiped(Geometry):
122
124
 
123
125
 
124
126
  class Miscut(ArchiveSection):
125
- '''
126
- The miscut in a crystalline substrate refers to
127
- the intentional deviation from a specific crystallographic orientation,
127
+ """
128
+ The miscut in a crystalline substrate refers to
129
+ the intentional deviation from a specific crystallographic orientation,
128
130
  commonly expressed as the angular displacement of a crystal plane.
129
- '''
131
+ """
132
+
130
133
  angle = Quantity(
131
134
  type=float,
132
- description='''
135
+ description="""
133
136
  The angular displacement from the crystallographic orientation of the substrate.
134
- ''',
137
+ """,
135
138
  a_eln=ELNAnnotation(
136
139
  component=ELNComponentEnum.NumberEditQuantity,
137
140
  defaultDisplayUnit='deg',
@@ -155,15 +158,16 @@ class Miscut(ArchiveSection):
155
158
  a_eln=ELNAnnotation(
156
159
  component=ELNComponentEnum.StringEditQuantity,
157
160
  label='Miscut Orientation [hkl]',
158
- )
161
+ ),
159
162
  )
160
163
 
161
164
 
162
165
  class Dopant(ElementalComposition):
163
- '''
164
- A dopant element in a crystalline structure
166
+ """
167
+ A dopant element in a crystalline structure
165
168
  is a foreign atom intentionally introduced into the crystal lattice.
166
- '''
169
+ """
170
+
167
171
  doping_level = Quantity(
168
172
  type=float,
169
173
  description='The chemical doping level.',
@@ -176,23 +180,24 @@ class Dopant(ElementalComposition):
176
180
 
177
181
 
178
182
  class CrystalProperties(ArchiveSection):
179
- '''
183
+ """
180
184
  Characteristics arising from the ordered arrangement of atoms in a crystalline structure.
181
- These properties are defined by factors such as crystal symmetry, lattice parameters,
185
+ These properties are defined by factors such as crystal symmetry, lattice parameters,
182
186
  and the specific arrangement of atoms within the crystal lattice.
183
- '''
187
+ """
184
188
 
185
189
 
186
190
  class SubstrateCrystalProperties(CrystalProperties):
187
- '''
191
+ """
188
192
  Crystallographic parameters such as orientation, miscut, and surface structure.
189
- '''
193
+ """
194
+
190
195
  orientation = Quantity(
191
196
  type=str,
192
- description='''
193
- Alignment of crystal lattice with respect to a vector normal to the surface
197
+ description="""
198
+ Alignment of crystal lattice with respect to a vector normal to the surface
194
199
  specified using Miller indices.
195
- ''',
200
+ """,
196
201
  a_eln=ELNAnnotation(
197
202
  component=ELNComponentEnum.StringEditQuantity,
198
203
  label='Substrate Orientation (hkl)',
@@ -200,18 +205,19 @@ class SubstrateCrystalProperties(CrystalProperties):
200
205
  )
201
206
  miscut = SubSection(
202
207
  section_def=Miscut,
203
- description='''
208
+ description="""
204
209
  Section describing any miscut of the substrate with respect to the substrate
205
210
  orientation.
206
- ''',
211
+ """,
207
212
  )
208
213
 
209
214
 
210
215
  class Substrate(CompositeSystem):
211
- '''
216
+ """
212
217
  A thin free standing sheet of material. Not to be confused with the substrate role
213
218
  during a deposition, which can be a `Substrate` with `ThinFilm`(s) on it.
214
- '''
219
+ """
220
+
215
221
  m_def = Section()
216
222
  supplier = Quantity(
217
223
  type=str,
@@ -219,7 +225,7 @@ class Substrate(CompositeSystem):
219
225
  a_eln=ELNAnnotation(
220
226
  component=ELNComponentEnum.StringEditQuantity,
221
227
  label='Name of Supplier',
222
- )
228
+ ),
223
229
  )
224
230
  supplier_id = Quantity(
225
231
  type=str,
@@ -239,10 +245,11 @@ class Substrate(CompositeSystem):
239
245
 
240
246
 
241
247
  class CrystallineSubstrate(Substrate):
242
- '''
248
+ """
243
249
  The substrate defined in this class is composed of periodic arrangement of atoms
244
250
  and shows typical features of a crystal structure.
245
- '''
251
+ """
252
+
246
253
  m_def = Section()
247
254
  geometry = SubSection(
248
255
  section_def=Geometry,
@@ -255,16 +262,17 @@ class CrystallineSubstrate(Substrate):
255
262
  dopants = SubSection(
256
263
  section_def=Dopant,
257
264
  repeats=True,
258
- description='''
265
+ description="""
259
266
  Repeating section containing information on any dopants in the substrate.
260
- ''',
267
+ """,
261
268
  )
262
269
 
263
270
 
264
271
  class ThinFilm(CompositeSystem):
265
- '''
272
+ """
266
273
  A thin film of material which exists as part of a stack.
267
- '''
274
+ """
275
+
268
276
  m_def = Section()
269
277
 
270
278
  geometry = SubSection(
@@ -273,56 +281,139 @@ class ThinFilm(CompositeSystem):
273
281
  )
274
282
 
275
283
 
276
- class ThinFilmStack(CompositeSystem):
277
- '''
278
- A stack of `ThinFilm`(s). Typically deposited on a `Substrate`.
279
- '''
280
- m_def = Section()
281
- substrate = Quantity(
284
+ class ThinFilmReference(CompositeSystemReference):
285
+ """
286
+ Class autogenerated from yaml schema.
287
+ """
288
+
289
+ lab_id = Quantity(
290
+ type=str,
291
+ a_eln=ELNAnnotation(
292
+ component=ELNComponentEnum.StringEditQuantity,
293
+ label='Thin Film ID',
294
+ ),
295
+ )
296
+ reference = Quantity(
297
+ type=ThinFilm,
298
+ a_eln=ELNAnnotation(
299
+ component=ELNComponentEnum.ReferenceEditQuantity,
300
+ label='Thin Film',
301
+ ),
302
+ )
303
+
304
+
305
+ class SubstrateReference(CompositeSystemReference):
306
+ """
307
+ A section for describing a system component and its role in a composite system.
308
+ """
309
+
310
+ lab_id = Quantity(
311
+ type=str,
312
+ a_eln=ELNAnnotation(
313
+ component=ELNComponentEnum.StringEditQuantity,
314
+ label='Substrate ID',
315
+ ),
316
+ )
317
+ reference = Quantity(
282
318
  type=Substrate,
283
- description='''
284
- The substrate which the thin film layers of the thin film stack are deposited
285
- on.
286
- ''',
287
319
  a_eln=ELNAnnotation(
288
320
  component=ELNComponentEnum.ReferenceEditQuantity,
321
+ label='Substrate',
289
322
  ),
290
323
  )
291
- layers = Quantity(
292
- type=ThinFilm,
293
- description='''
324
+
325
+
326
+ class ThinFilmStack(CompositeSystem):
327
+ """
328
+ A stack of `ThinFilm`(s). Typically deposited on a `Substrate`.
329
+ """
330
+
331
+ m_def = Section(
332
+ a_eln=ELNAnnotation(
333
+ hide=[
334
+ 'components',
335
+ ],
336
+ ),
337
+ )
338
+ layers = SubSection(
339
+ description="""
294
340
  An ordered list (starting at the substrate) of the thin films making up the
295
341
  thin film stacks.
296
- ''',
342
+ """,
343
+ section_def=ThinFilmReference,
344
+ repeats=True,
345
+ )
346
+ substrate = SubSection(
347
+ description="""
348
+ The substrate which the thin film layers of the thin film stack are deposited
349
+ on.
350
+ """,
351
+ section_def=SubstrateReference,
352
+ )
353
+
354
+ def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None:
355
+ """
356
+ The normalizer for the `ThinFilmStack` class.
357
+
358
+ Args:
359
+ archive (EntryArchive): The archive containing the section that is being
360
+ normalized.
361
+ logger (BoundLogger): A structlog logger.
362
+ """
363
+ self.components = []
364
+ if self.layers:
365
+ self.components = [
366
+ SystemComponent(system=layer.reference)
367
+ for layer in self.layers
368
+ if layer.reference
369
+ ]
370
+ if self.substrate.reference:
371
+ self.components.append(SystemComponent(system=self.substrate.reference))
372
+ super().normalize(archive, logger)
373
+
374
+
375
+ class ThinFilmStackReference(CompositeSystemReference):
376
+ """
377
+ Class autogenerated from yaml schema.
378
+ """
379
+
380
+ m_def = Section()
381
+ lab_id = Quantity(
382
+ type=str,
383
+ a_eln=ELNAnnotation(
384
+ component=ELNComponentEnum.StringEditQuantity,
385
+ ),
386
+ )
387
+ reference = Quantity(
388
+ type=ThinFilmStack,
297
389
  a_eln=ELNAnnotation(
298
390
  component=ELNComponentEnum.ReferenceEditQuantity,
299
391
  ),
300
- shape=["*"],
301
392
  )
302
393
 
303
394
 
304
395
  class SampleDeposition(SynthesisMethod):
305
- '''
396
+ """
306
397
  The process of the settling of particles (atoms or molecules) from a solution,
307
398
  suspension or vapour onto a pre-existing surface, resulting in the growth of a
308
399
  new phase. [database_cross_reference: https://orcid.org/0000-0002-0640-0422]
309
400
 
310
401
  Synonyms:
311
402
  - deposition
312
- '''
403
+ """
404
+
313
405
  m_def = Section(
314
- links=[
315
- "http://purl.obolibrary.org/obo/CHMO_0001310"
316
- ],)
406
+ links=['http://purl.obolibrary.org/obo/CHMO_0001310'],
407
+ )
317
408
 
318
409
  def is_serial(self) -> bool:
319
- '''
410
+ """
320
411
  Method for determining if the steps are serial. Can be overwritten by sub class.
321
412
  Default behavior is to return True if all steps start after the previous one.
322
413
 
323
414
  Returns:
324
415
  bool: Whether or not the steps are serial.
325
- '''
416
+ """
326
417
  start_times = []
327
418
  durations = []
328
419
  for step in self.steps:
@@ -339,14 +430,14 @@ class SampleDeposition(SynthesisMethod):
339
430
  return True
340
431
 
341
432
  def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None:
342
- '''
433
+ """
343
434
  The normalizer for the `SampleDeposition` class.
344
435
 
345
436
  Args:
346
437
  archive (EntryArchive): The archive containing the section that is being
347
438
  normalized.
348
439
  logger (BoundLogger): A structlog logger.
349
- '''
440
+ """
350
441
  super().normalize(archive, logger)
351
442
  if self.is_serial():
352
443
  tasks = []
@@ -357,8 +448,73 @@ class SampleDeposition(SynthesisMethod):
357
448
  if previous is not None:
358
449
  task.inputs.append(Link(name=previous.name, section=previous))
359
450
  tasks.append(task)
360
- previous=step
451
+ previous = step
361
452
  archive.workflow2.tasks = tasks
362
453
 
363
454
 
455
+ class TimeSeries(ArchiveSection):
456
+ """
457
+ A time series of data during a process step.
458
+ This is an abstract class and should not be used directly.
459
+ Instead, it should be derived and the the units of the `value` and `set_value` should
460
+ be specified.
461
+
462
+ For example, a derived class could be `Temperature` with `value` in Kelvin:
463
+ ```python
464
+ class Temperature(TimeSeries):
465
+ value = TimeSeries.value.m_copy()
466
+ value.unit = "kelvin"
467
+ set_value = TimeSeries.set_value.m_copy()
468
+ set_value.unit = "kelvin"
469
+ set_value.a_eln.defaultDisplayUnit = "celsius"
470
+ ```
471
+ """
472
+
473
+ m_def = Section(
474
+ a_plot=dict(
475
+ # x=['time', 'set_time'],
476
+ # y=['value', 'set_value'],
477
+ x='time',
478
+ y='value',
479
+ ),
480
+ )
481
+ set_value = Quantity(
482
+ type=float,
483
+ description='The set value(s) (i.e. the intended values) set.',
484
+ shape=['*'],
485
+ a_eln=ELNAnnotation(
486
+ component=ELNComponentEnum.NumberEditQuantity,
487
+ label='Set value',
488
+ ),
489
+ )
490
+ set_time = Quantity(
491
+ type=float,
492
+ unit='s',
493
+ description="""
494
+ The process time when each of the set values were set.
495
+ If this is empty and only one set value is present, it is assumed that the value
496
+ was set at the start of the process step.
497
+ If two set values are present, it is assumed that a linear ramp between the two
498
+ values was set.
499
+ """,
500
+ shape=['*'],
501
+ a_eln=ELNAnnotation(
502
+ component=ELNComponentEnum.NumberEditQuantity,
503
+ defaultDisplayUnit='s',
504
+ label='Set time',
505
+ ),
506
+ )
507
+ value = Quantity(
508
+ type=float,
509
+ description='The observed value as a function of time.',
510
+ shape=['*'],
511
+ )
512
+ time = Quantity(
513
+ type=float,
514
+ unit='s',
515
+ description='The process time when each of the values were recorded.',
516
+ shape=['*'],
517
+ )
518
+
519
+
364
520
  m_package.__init_metainfo__()