Skip to content

Library Cleaving

Library cleaving is the process of physically splitting a combinatorial library into smaller pieces for parallel processing and characterization. Each cleaved piece (child library) can contain multiple sample positions representing different composition points.

Understanding Physical Pieces vs. Sample Positions

For a detailed explanation of how cleaving creates physical pieces while sample positions remain coordinate-based, see the Combinatorial Libraries explanation.

Overview

This schema package defines:

  • DTULibraryCleaving - A sample preparation process that physically divides a DTUCombinatorialLibrary into multiple smaller pieces (child libraries), each potentially containing several sample positions for measurement

The cleaving process extends NOMAD's Process and Activity base classes, providing:

  • Link to input entity (the combinatorial library)
  • Links to output entities (individual samples created)
  • Cleaving method and pattern documentation
  • Position/composition mapping for each sample
  • Automated workflow integration

Cleaving and Annealing Workflow Integration

This section demonstrates how cleaving integrates into a combined cleaving and annealing workflow.

Hierarchical Sample Structure

To make the hierarchical sample structure operational, the annealing workflow was designed to capture and organize process data in line with the parent-child relationships created by virtual cleaving. This requirement guided the implementation of the RTP schema, which ensures that each annealing event is linked to the correct sample fragment while storing all relevant details from prior processing.

Complete Processing History

The database keeps a complete record of thermal treatments, enabling experimentalists to:

  • Link annealing conditions: Directly connect temperature profiles and pressure to the resulting properties of each individual piece
  • Trace origins: Track where each piece originated within the parent library
  • Review prior processing: Access deposition details and other prior process steps
  • Track property evolution: Follow how properties evolved from the initial state to the annealed condition

This comprehensive tracking enables deeper insights into material behavior and facilitates understanding of structure-property relationships.

Workflow Benefits

The cleaving/annealing workflow extends the database's capabilities by:

  • Linking thermal treatment data to the hierarchical structure of combinatorial libraries
  • Preserving processing history: Each child fragment retains its full processing history through parent library references
  • Enabling comparison: Easy tracking, comparison, and analysis of property evolution across multiple processes
  • Handling complexity: Flexible design handles the wide range of situations that come up in real lab work
  • Knowledge transfer: Solutions established for one technique (sputtering) benefit implementation of new synthesis methods to track even more complex workflows

Typical Usage

  1. Select library: Reference the DTUCombinatorialLibrary to be divided
  2. Document pattern: Describe cleaving pattern (grid, linear array, custom)
  3. Create samples: Generate DTUCombinatorialSample entries for each piece
  4. Map positions: Document where each sample came from on the original library
  5. Link compositions: If composition varies across library, assign compositions to samples

Schema Documentation

SampleProperty

inherits from: nomad.datamodel.data.ArchiveSection

properties:

name type
source nomad.datamodel.metainfo.basesections.v1.Activity The source of the sample property.
interpolation ['Cubic', 'Linear', 'Nearest', 'None'] The interpolation method used to obtain the sample property.
default=None

Composition

inherits from: SampleProperty

properties:

name type
X float64 Atomic fraction of X in the sample.
H float64 Atomic fraction of H in the sample.
He float64 Atomic fraction of He in the sample.
Li float64 Atomic fraction of Li in the sample.
Be float64 Atomic fraction of Be in the sample.
B float64 Atomic fraction of B in the sample.
C float64 Atomic fraction of C in the sample.
N float64 Atomic fraction of N in the sample.
O float64 Atomic fraction of O in the sample.
F float64 Atomic fraction of F in the sample.
Ne float64 Atomic fraction of Ne in the sample.
Na float64 Atomic fraction of Na in the sample.
Mg float64 Atomic fraction of Mg in the sample.
Al float64 Atomic fraction of Al in the sample.
Si float64 Atomic fraction of Si in the sample.
P float64 Atomic fraction of P in the sample.
S float64 Atomic fraction of S in the sample.
Cl float64 Atomic fraction of Cl in the sample.
Ar float64 Atomic fraction of Ar in the sample.
K float64 Atomic fraction of K in the sample.
Ca float64 Atomic fraction of Ca in the sample.
Sc float64 Atomic fraction of Sc in the sample.
Ti float64 Atomic fraction of Ti in the sample.
V float64 Atomic fraction of V in the sample.
Cr float64 Atomic fraction of Cr in the sample.
Mn float64 Atomic fraction of Mn in the sample.
Fe float64 Atomic fraction of Fe in the sample.
Co float64 Atomic fraction of Co in the sample.
Ni float64 Atomic fraction of Ni in the sample.
Cu float64 Atomic fraction of Cu in the sample.
Zn float64 Atomic fraction of Zn in the sample.
Ga float64 Atomic fraction of Ga in the sample.
Ge float64 Atomic fraction of Ge in the sample.
As float64 Atomic fraction of As in the sample.
Se float64 Atomic fraction of Se in the sample.
Br float64 Atomic fraction of Br in the sample.
Kr float64 Atomic fraction of Kr in the sample.
Rb float64 Atomic fraction of Rb in the sample.
Sr float64 Atomic fraction of Sr in the sample.
Y float64 Atomic fraction of Y in the sample.
Zr float64 Atomic fraction of Zr in the sample.
Nb float64 Atomic fraction of Nb in the sample.
Mo float64 Atomic fraction of Mo in the sample.
Tc float64 Atomic fraction of Tc in the sample.
Ru float64 Atomic fraction of Ru in the sample.
Rh float64 Atomic fraction of Rh in the sample.
Pd float64 Atomic fraction of Pd in the sample.
Ag float64 Atomic fraction of Ag in the sample.
Cd float64 Atomic fraction of Cd in the sample.
In float64 Atomic fraction of In in the sample.
Sn float64 Atomic fraction of Sn in the sample.
Sb float64 Atomic fraction of Sb in the sample.
Te float64 Atomic fraction of Te in the sample.
I float64 Atomic fraction of I in the sample.
Xe float64 Atomic fraction of Xe in the sample.
Cs float64 Atomic fraction of Cs in the sample.
Ba float64 Atomic fraction of Ba in the sample.
La float64 Atomic fraction of La in the sample.
Ce float64 Atomic fraction of Ce in the sample.
Pr float64 Atomic fraction of Pr in the sample.
Nd float64 Atomic fraction of Nd in the sample.
Pm float64 Atomic fraction of Pm in the sample.
Sm float64 Atomic fraction of Sm in the sample.
Eu float64 Atomic fraction of Eu in the sample.
Gd float64 Atomic fraction of Gd in the sample.
Tb float64 Atomic fraction of Tb in the sample.
Dy float64 Atomic fraction of Dy in the sample.
Ho float64 Atomic fraction of Ho in the sample.
Er float64 Atomic fraction of Er in the sample.
Tm float64 Atomic fraction of Tm in the sample.
Yb float64 Atomic fraction of Yb in the sample.
Lu float64 Atomic fraction of Lu in the sample.
Hf float64 Atomic fraction of Hf in the sample.
Ta float64 Atomic fraction of Ta in the sample.
W float64 Atomic fraction of W in the sample.
Re float64 Atomic fraction of Re in the sample.
Os float64 Atomic fraction of Os in the sample.
Ir float64 Atomic fraction of Ir in the sample.
Pt float64 Atomic fraction of Pt in the sample.
Au float64 Atomic fraction of Au in the sample.
Hg float64 Atomic fraction of Hg in the sample.
Tl float64 Atomic fraction of Tl in the sample.
Pb float64 Atomic fraction of Pb in the sample.
Bi float64 Atomic fraction of Bi in the sample.
Po float64 Atomic fraction of Po in the sample.
At float64 Atomic fraction of At in the sample.
Rn float64 Atomic fraction of Rn in the sample.
Fr float64 Atomic fraction of Fr in the sample.
Ra float64 Atomic fraction of Ra in the sample.
Ac float64 Atomic fraction of Ac in the sample.
Th float64 Atomic fraction of Th in the sample.
Pa float64 Atomic fraction of Pa in the sample.
U float64 Atomic fraction of U in the sample.
Np float64 Atomic fraction of Np in the sample.
Pu float64 Atomic fraction of Pu in the sample.
Am float64 Atomic fraction of Am in the sample.
Cm float64 Atomic fraction of Cm in the sample.
Bk float64 Atomic fraction of Bk in the sample.
Cf float64 Atomic fraction of Cf in the sample.
Es float64 Atomic fraction of Es in the sample.
Fm float64 Atomic fraction of Fm in the sample.
Md float64 Atomic fraction of Md in the sample.
No float64 Atomic fraction of No in the sample.
Lr float64 Atomic fraction of Lr in the sample.
Rf float64 Atomic fraction of Rf in the sample.
Db float64 Atomic fraction of Db in the sample.
Sg float64 Atomic fraction of Sg in the sample.
Bh float64 Atomic fraction of Bh in the sample.
Hs float64 Atomic fraction of Hs in the sample.
Mt float64 Atomic fraction of Mt in the sample.
Ds float64 Atomic fraction of Ds in the sample.
Rg float64 Atomic fraction of Rg in the sample.
Cn float64 Atomic fraction of Cn in the sample.
Nh float64 Atomic fraction of Nh in the sample.
Fl float64 Atomic fraction of Fl in the sample.
Mc float64 Atomic fraction of Mc in the sample.
Lv float64 Atomic fraction of Lv in the sample.
Ts float64 Atomic fraction of Ts in the sample.
Og float64 Atomic fraction of Og in the sample.

Deposition

inherits from: SampleProperty

properties:

name type
temperature float64 The (mean) temperature of the substrate during deposition.
unit=kelvin
pressure float64 The (mean) pressure of the deposition chamber during deposition.
unit=pascal
time float64 The duration of the deposition.
unit=second
material_space str The material space of the sample.
operator str The name of the operator who created the sample.
method ['Other', 'Rapid Thermal Processing', 'Sputtering'] The deposition method used to create the sample.

XrdPeak

inherits from: nomad.datamodel.data.ArchiveSection

properties:

name type
position float64 The position of the peak.
unit=1 / nanometer
intensity float64 The intensity of the peak.
fwhm float64 The full width at half maximum of the peak.
unit=1 / nanometer

XpsPeak

inherits from: nomad.datamodel.data.ArchiveSection

properties:

name type
position float64 The position of the peak.
unit=electron_volt
intensity float64 The intensity of the peak.
fwhm float64 The full width at half maximum of the peak.
unit=electron_volt

BandGap

inherits from: SampleProperty

properties:

name type
value float64 The band gap of the sample.
unit=electron_volt

AbsorptionCoefficient

inherits from: SampleProperty

properties:

name type
value float64 The absorption coefficient of the sample.
shape=['*'], unit=1 / centimeter
energy float64 The corresponding energies for the absorption coefficient values.
shape=['*'], unit=nanometer
absorption_edge float64 The inflection point of the absorption spectrum.
unit=electron_volt
mean_absorption_above_edge float64 The mean absorption coefficient above the absorption edge.
unit=1 / centimeter

Thickness

inherits from: SampleProperty

properties:

name type
value float64 The thickness of the sample.
unit=nanometer

CrystalStructure

inherits from: SampleProperty

properties:

name type
space_group_nbr int The space group number (1-230)
space_group ['A e a 2', 'A e m 2', 'A m a 2', 'A m m 2', 'C 2', 'C 2 2 2', 'C 2 2 21', 'C 2/c', 'C 2/m', 'C c', 'C c c 2', 'C c c e', 'C c c m', 'C m', 'C m c 21', 'C m c e', 'C m c m', 'C m m 2', 'C m m e', 'C m m m', 'F -4 3 c', 'F -4 3 m', 'F 2 2 2', 'F 2 3', 'F 4 3 2', 'F 41 3 2', 'F d -3', 'F d -3 c', 'F d -3 m', 'F d d 2', 'F d d d', 'F m -3', 'F m -3 c', 'F m -3 m', 'F m m 2', 'F m m m', 'I -4', 'I -4 2 d', 'I -4 2 m', 'I -4 3 d', 'I -4 3 m', 'I -4 c 2', 'I -4 m 2', 'I 2 2 2', 'I 2 3', 'I 21 21 21', 'I 21 3', 'I 4', 'I 4 2 2', 'I 4 3 2', 'I 4 c m', 'I 4 m m', 'I 4/m', 'I 4/m c m', 'I 4/m m m', 'I 41', 'I 41 2 2', 'I 41 3 2', 'I 41 c d', 'I 41 m d', 'I 41/a', 'I 41/a c d', 'I 41/a m d', 'I a -3', 'I a -3 d', 'I b a 2', 'I b a m', 'I b c a', 'I m -3', 'I m -3 m', 'I m a 2', 'I m m 2', 'I m m a', 'I m m m', 'P -1', 'P -3', 'P -3 1 c', 'P -3 1 m', 'P -3 c 1', 'P -3 m 1', 'P -4', 'P -4 2 c', 'P -4 2 m', 'P -4 21 c', 'P -4 21 m', 'P -4 3 m', 'P -4 3 n', 'P -4 b 2', 'P -4 c 2', 'P -4 m 2', 'P -4 n 2', 'P -6', 'P -6 2 c', 'P -6 2 m', 'P -6 c 2', 'P -6 m 2', 'P 1', 'P 2', 'P 2 2 2', 'P 2 2 21', 'P 2 3', 'P 2/c', 'P 2/m', 'P 21', 'P 21 21 2', 'P 21 21 21', 'P 21 3', 'P 21/c', 'P 21/m', 'P 3', 'P 3 1 2', 'P 3 1 c', 'P 3 1 m', 'P 3 2 1', 'P 3 c 1', 'P 3 m 1', 'P 31', 'P 31 1 2', 'P 31 2 1', 'P 32', 'P 32 1 2', 'P 32 2 1', 'P 4', 'P 4 2 2', 'P 4 21 2', 'P 4 3 2', 'P 4 b m', 'P 4 c c', 'P 4 m m', 'P 4 n c', 'P 4/m', 'P 4/m b m', 'P 4/m c c', 'P 4/m m m', 'P 4/m n c', 'P 4/n', 'P 4/n b m', 'P 4/n c c', 'P 4/n m m', 'P 4/n n c', 'P 41', 'P 41 2 2', 'P 41 21 2', 'P 41 3 2', 'P 42', 'P 42 2 2', 'P 42 21 2', 'P 42 3 2', 'P 42 b c', 'P 42 c m', 'P 42 m c', 'P 42 n m', 'P 42/m', 'P 42/m b c', 'P 42/m c m', 'P 42/m m c', 'P 42/m n m', 'P 42/n', 'P 42/n b c', 'P 42/n c m', 'P 42/n m c', 'P 42/n n m', 'P 43', 'P 43 2 2', 'P 43 21 2', 'P 43 3 2', 'P 6', 'P 6 2 2', 'P 6 c c', 'P 6 m m', 'P 6/m', 'P 6/m c c', 'P 6/m m m', 'P 61', 'P 61 2 2', 'P 62', 'P 62 2 2', 'P 63', 'P 63 2 2', 'P 63 c m', 'P 63 m c', 'P 63/m', 'P 63/m c m', 'P 63/m m c', 'P 64', 'P 64 2 2', 'P 65', 'P 65 2 2', 'P a -3', 'P b a 2', 'P b a m', 'P b a n', 'P b c a', 'P b c m', 'P b c n', 'P c', 'P c a 21', 'P c c 2', 'P c c a', 'P c c m', 'P c c n', 'P m', 'P m -3', 'P m -3 m', 'P m -3 n', 'P m a 2', 'P m c 21', 'P m m 2', 'P m m a', 'P m m m', 'P m m n', 'P m n 21', 'P m n a', 'P n -3', 'P n -3 m', 'P n -3 n', 'P n a 21', 'P n c 2', 'P n m a', 'P n n 2', 'P n n a', 'P n n m', 'P n n n', 'R -3', 'R -3 c', 'R -3 m', 'R 3', 'R 3 2', 'R 3 c', 'R 3 m'] The space group symbol
a float64 The lattice parameter a of the crystal structure.
unit=nanometer
b float64 The lattice parameter b of the crystal structure.
unit=nanometer
c float64 The lattice parameter c of the crystal structure.
unit=nanometer
alpha float64 The angle alpha of the crystal structure.
unit=degree
beta float64 The angle beta of the crystal structure.
unit=degree
gamma float64 The angle gamma of the crystal structure.
unit=degree

normalization:

Normalizes the crystal structure by ensuring that both space group number and symbol are set.

If only one of the space group number or symbol is provided, the other is derived using the ASE Spacegroup class.

Parameters

archive : Archive The archive object being normalized. logger : Logger Logger for recording normalization events or warnings.

XrdData

inherits from: SampleProperty

properties:

name type
diffraction_intensity float64 The intensity of the x-ray diffraction peaks.
shape=['*'], unit=dimensionless
scattering_vector float64 The scattering vector of the x-ray diffraction peaks.
shape=['*'], unit=1 / nanometer
xrd_peaks XrdPeak The x-ray diffraction peaks of the sample.
sub-section, repeats
unique_peak_sets UniqueXrdPeaksReference The sets of unique x-ray diffraction peaks of the sample.
sub-section, repeats

XpsData

inherits from: SampleProperty

properties:

name type
intensity float64 The intensity of the x-ray photoelectron spectroscopy peaks.
shape=['*'], unit=dimensionless
binding_energy float64 The binding energy of the x-ray photoelectron spectroscopy peaks.
shape=['*'], unit=electron_volt
xps_peaks XpsPeak The x-ray photoelectron spectroscopy peaks of the sample.
sub-section, repeats

EllipsometryData

inherits from: SampleProperty

properties:

name type
refractive_index float64 The refractive index of the sample.
shape=['*'], unit=dimensionless
extinction_coefficient float64 The extinction coefficient of the sample.
shape=['*'], unit=dimensionless
wavelength float64 The wavelength of the light used for ellipsometry.
shape=['*'], unit=nanometer

UvVisData

inherits from: SampleProperty

properties:

name type
reflectance float64 The reflectance of the sample.
shape=['*'], unit=dimensionless
transmittance float64 The transmittance of the sample.
shape=['*'], unit=dimensionless
wavelength float64 The wavelength of the light used for UV-Vis spectroscopy.
shape=['*'], unit=nanometer

DTUCombinatorialSample

inherits from: nomad_material_processing.combinatorial.CombinatorialSample, nomad.datamodel.data.EntryData

properties:

name type
band_gap BandGap sub-section
absorption_coefficient AbsorptionCoefficient sub-section
thickness Thickness sub-section
composition Composition sub-section
surface_composition Composition sub-section
deposition Deposition sub-section
main_phase CrystalStructure sub-section
secondary_phases CrystalStructure sub-section, repeats
xrd_data XrdData sub-section
xps_data XpsData sub-section
ellipsometry_data EllipsometryData sub-section
uv_vis_data UvVisData sub-section

normalization without further documentation

UniqueXrdPeaks

inherits from: nomad.datamodel.metainfo.basesections.v1.Entity

properties:

name type
peak_positions float64 The positions of the unique x-ray diffraction peaks.
shape=['*']
max_q float64 The maximum scattering vector of the pattern.
unit=1 / nanometer
min_q float64 The minimum scattering vector of the pattern.
unit=1 / nanometer
crystal_structure CrystalStructure sub-section
sub_sets UniqueXrdPeaksReference sub-section, repeats

normalization:

  • If the instance is of type EntryData, it sets the archive's entry name based on the instance's name.
  • Sets the datetime field to the current time if it is not already set.
  • Manages the lab_id field and updates the archive's results.eln.lab_ids list.
  • Adds the instance's name and description to the archive's results.eln.names and results.eln.descriptions lists, respectively.
  • Handles the tags attribute, if present, and updates the archive's results.eln.tags list.
  • Appends the section's name to the archive's results.eln.sections list.

UniqueXrdPeaksReference

inherits from: nomad.datamodel.metainfo.basesections.v1.EntityReference

properties:

name type
reference UniqueXrdPeaks A reference to a unique set of x-ray diffraction peaks.

normalization:

Will attempt to fill the reference from the lab_id or vice versa.

ProcessParameterOverview

inherits from: nomad.datamodel.data.ArchiveSection

properties:

name type
position_x float64 The x-coordinate of the substrate on the platen.
unit=meter
position_y float64 The y-coordinate of the substrate on the platen.
unit=meter
rotation float64 The rotation of the substrate on the platen.
unit=radian
width float64 The width of the substrate.
unit=meter
length float64 The length of the substrate.
unit=meter

DTUCombinatorialLibrary

inherits from: nomad_material_processing.combinatorial.CombinatorialLibrary, nomad_material_processing.general.ThinFilmStack, nomad.datamodel.data.EntryData

properties:

name type
process_parameter_overview ProcessParameterOverview sub-section
geometry nomad_material_processing.general.Geometry The geometries of the samples in the library.
sub-section
parent_library DtuLibraryReference The parent library of the combinatorial library. Only applicable if this library is a child of another library.
sub-section

normalization:

Normalizes the combinatorial library entry by ensuring required fields are set.

This method first calls the superclass's normalize method. It then checks if the geometry attribute is not set and, if so, attempts to set it from the substrate's reference geometry if available.

Parameters

archive : Archive The archive object being normalized. logger : Logger Logger for recording normalization events or warnings.

DtuLibraryReference

inherits from: nomad.datamodel.metainfo.basesections.v1.CompositeSystemReference

properties:

name type
reference DTUCombinatorialLibrary A reference to a NOMAD CompositeSystem entry.

normalization:

Will attempt to fill the reference from the lab_id or vice versa.

DTULibraryParts

description: Schema for parts of a DTU combinatorial library.

inherits from: nomad.datamodel.data.ArchiveSection

properties:

name type
name str The name of the library part.
library_name str The name of the library.
lab_id str The ID of the new library part.
upper_left_x float64 The x-coordinate of the upper left corner of the library.
unit=meter
upper_left_y float64 The y-coordinate of the upper left corner of the library.
unit=meter
lower_right_x float64 The x-coordinate of the lower right corner of the library.
unit=meter
lower_right_y float64 The y-coordinate of the lower right corner of the library.
unit=meter
part_size float64 The size of the library in the x and y direction.
shape=[2], unit=meter
geometry nomad_material_processing.general.Geometry The geometries of the samples in the library.
sub-section

normalization:

The normalizer for the DTULibraryParts class. Placeholder for normalization logic.

DTULibraryCleaving

description: Schema for substrate cleaving at the DTU Nanolab.

inherits from: nomad.datamodel.metainfo.basesections.v1.Process, nomad.datamodel.data.EntryData, nomad.datamodel.metainfo.plot.PlotSection

properties:

name type
combinatorial_library DTUCombinatorialLibrary The combinatorial sample that is broken into pieces .
fetch_library_size bool Fetch the size of the library.
library_x_length float64 The length of the library in the x direction.
unit=meter
library_y_length float64 The length of the library in the y direction.
unit=meter
pattern ['custom', 'horizontal stripes', 'squares', 'vertical stripes'] The pattern according to which the original library is broken.
default=custom
number_of_pieces int The number of pieces the original library is broken into for horizontal, vertical and custom. For squares it is the number of squares in one direction.
generate_pattern bool Create the new pieces from the pattern.
default=False
create_child_libraries bool Create child libraries from the new pieces.
default=False
new_pieces DTULibraryParts sub-section, repeats
child_libraries DtuLibraryReference The child libraries created from the combinatorial library.
sub-section, repeats

normalization:

The normalizer for the DTUSubstrateCleaning class.

Args: archive (EntryArchive): The archive containing the section that is being normalized. logger (BoundLogger): A structlog logger.