Skip to content

Samples and Combinatorial Libraries

Samples represent specific measurement positions on combinatorial libraries. At DTU Nanolab, the materials discovery workflow uses combinatorial libraries with composition gradients to efficiently explore material composition spaces through position-based sampling.

Understanding the Concepts

For a deep dive into the distinction between physical library pieces and logical sample positions, see the Combinatorial Libraries explanation.

Overview

This schema package defines two main classes:

  • DTUCombinatorialLibrary - A physical substrate with multiple material compositions deposited as gradients or patterns (e.g., from multi-target sputtering). The library can optionally be cleaved into smaller physical pieces for parallel processing.

  • DTUCombinatorialSample - A specific measurement position (coordinates) on a combinatorial library or cleaved piece. Each sample position represents a distinct composition point that can be characterized independently. Multiple sample positions can exist on a single library or cleaved piece.

Both classes extend NOMAD's CompositeSystem entity, providing:

  • Unique lab IDs for tracking
  • References to synthesis processes that created them
  • Sample properties (dimensions, mass, composition)
  • Links to measurements performed on them

Typical Usage

  1. Create a library: A DTUSputtering process deposits materials on a substrate, creating a DTUCombinatorialLibrary with composition gradients
  2. Map sample positions: Define specific coordinates on the library as DTUCombinatorialSample entries, each representing a measurement point at a particular composition
  3. Optional cleaving: A DTULibraryCleaving process can physically split the library into smaller pieces for parallel processing. Each cleaved piece can contain multiple sample positions
  4. Characterize sample positions: Measurements like XRD, XPS, PL reference specific sample positions by their coordinates. Multiple measurements across different positions enable composition-property mapping
  5. Aggregate data: When multiple measurements target different positions, data can be aggregated (with interpolation if needed) to create property maps across composition space
  6. Track provenance: The entire chain from substrate → sputtering → library → sample positions → measurements is linked

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.