Skip to content

Commit f78408e

Browse files
Added test/example data
1 parent 0bc5042 commit f78408e

13 files changed

Lines changed: 196 additions & 267 deletions

docs/schema/catcore.yaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,14 +1043,15 @@ slots:
10431043
mappings:
10441044
- voc4cat:0000187
10451045
slot_uri: voc4cat:0000187
1046-
owner: Characterization
1046+
owner: ProductIdentificationMethod
10471047
domain_of:
10481048
- Solvothermal
10491049
- PlasmaAssisted
10501050
- CombustionSynthesis
10511051
- MicrowaveAssisted
10521052
- MechanochemicalSynthesis
10531053
- Characterization
1054+
- ProductIdentificationMethod
10541055
range: string
10551056
multivalued: true
10561057
stirring_speed:
@@ -6343,6 +6344,7 @@ classes:
63436344
abstract: true
63446345
slots:
63456346
- identifier
6347+
- equipment
63466348
class_uri: catcore:ProductIdentificationMethod
63476349
Simulation:
63486350
name: Simulation
@@ -6667,7 +6669,7 @@ classes:
66676669
class_uri: catcore:BandGap
66686670
metamodel_version: 1.7.0
66696671
source_file: catcore.yaml
6670-
source_file_date: '2025-12-11T12:55:52'
6671-
source_file_size: 83282
6672-
generation_date: '2025-12-11T12:57:46'
6672+
source_file_date: '2025-12-11T14:29:28'
6673+
source_file_size: 83313
6674+
generation_date: '2025-12-11T14:32:11'
66736675

src/catcore/datamodel/catcore.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Auto generated from catcore.yaml by pythongen.py version: 0.0.1
2-
# Generation date: 2025-12-11T12:56:00
2+
# Generation date: 2025-12-11T14:30:24
33
# Schema: catcore-metadata
44
#
55
# id: https://w3id.org/nfdi4cat/catcore
@@ -3007,6 +3007,7 @@ def __post_init__(self, *_: str, **kwargs: Any):
30073007
super().__post_init__(**kwargs)
30083008

30093009

3010+
@dataclass(repr=False)
30103011
class ProductIdentificationMethod(CatCoreEntity):
30113012
"""
30123013
Method used for product identification
@@ -3018,6 +3019,15 @@ class ProductIdentificationMethod(CatCoreEntity):
30183019
class_name: ClassVar[str] = "ProductIdentificationMethod"
30193020
class_model_uri: ClassVar[URIRef] = CATCORE.ProductIdentificationMethod
30203021

3022+
equipment: Optional[Union[str, list[str]]] = empty_list()
3023+
3024+
def __post_init__(self, *_: str, **kwargs: Any):
3025+
if not isinstance(self.equipment, list):
3026+
self.equipment = [self.equipment] if self.equipment is not None else []
3027+
self.equipment = [v if isinstance(v, str) else str(v) for v in self.equipment]
3028+
3029+
super().__post_init__(**kwargs)
3030+
30213031

30223032
@dataclass(repr=False)
30233033
class Simulation(CatCoreEntity):

src/catcore/datamodel/catcore_pydantic.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,8 @@ class Solvothermal(PreparationMethod):
550550
'CombustionSynthesis',
551551
'MicrowaveAssisted',
552552
'MechanochemicalSynthesis',
553-
'Characterization'],
553+
'Characterization',
554+
'ProductIdentificationMethod'],
554555
'slot_uri': 'voc4cat:0000187'} })
555556
stirring_speed: Optional[list[float]] = Field(default=[], description="""Speed of stirring""", json_schema_extra = { "linkml_meta": {'domain_of': ['Solvothermal', 'MolecularSynthesis'],
556557
'slot_uri': 'catcore:stirring_speed',
@@ -575,7 +576,8 @@ class PlasmaAssisted(PreparationMethod):
575576
'CombustionSynthesis',
576577
'MicrowaveAssisted',
577578
'MechanochemicalSynthesis',
578-
'Characterization'],
579+
'Characterization',
580+
'ProductIdentificationMethod'],
579581
'slot_uri': 'voc4cat:0000187'} })
580582
atmosphere: Optional[list[str]] = Field(default=[], description="""Atmospheric conditions""", json_schema_extra = { "linkml_meta": {'domain_of': ['PlasmaAssisted',
581583
'CombustionSynthesis',
@@ -645,7 +647,8 @@ class CombustionSynthesis(PreparationMethod):
645647
'CombustionSynthesis',
646648
'MicrowaveAssisted',
647649
'MechanochemicalSynthesis',
648-
'Characterization'],
650+
'Characterization',
651+
'ProductIdentificationMethod'],
649652
'slot_uri': 'voc4cat:0000187'} })
650653
identifier: Optional[str] = Field(default=None, description="""Unique identifier for the entity""", json_schema_extra = { "linkml_meta": {'domain_of': ['CatCoreEntity'], 'slot_uri': 'catcore:identifier'} })
651654

@@ -811,7 +814,8 @@ class MicrowaveAssisted(PreparationMethod):
811814
'CombustionSynthesis',
812815
'MicrowaveAssisted',
813816
'MechanochemicalSynthesis',
814-
'Characterization'],
817+
'Characterization',
818+
'ProductIdentificationMethod'],
815819
'slot_uri': 'voc4cat:0000187'} })
816820
power: Optional[list[float]] = Field(default=[], description="""Power setting""", json_schema_extra = { "linkml_meta": {'domain_of': ['MicrowaveAssisted'],
817821
'slot_uri': 'catcore:power',
@@ -994,7 +998,8 @@ class MechanochemicalSynthesis(PreparationMethod):
994998
'CombustionSynthesis',
995999
'MicrowaveAssisted',
9961000
'MechanochemicalSynthesis',
997-
'Characterization'],
1001+
'Characterization',
1002+
'ProductIdentificationMethod'],
9981003
'slot_uri': 'voc4cat:0000187'} })
9991004
vessel_volume: Optional[list[float]] = Field(default=[], description="""Volume of vessel""", json_schema_extra = { "linkml_meta": {'domain_of': ['MechanochemicalSynthesis'],
10001005
'slot_uri': 'catcore:vessel_volume',
@@ -1229,7 +1234,8 @@ class Characterization(CatCoreEntity):
12291234
'CombustionSynthesis',
12301235
'MicrowaveAssisted',
12311236
'MechanochemicalSynthesis',
1232-
'Characterization'],
1237+
'Characterization',
1238+
'ProductIdentificationMethod'],
12331239
'slot_uri': 'voc4cat:0000187'} })
12341240
characterization_technique: list[CharacterizationTechnique] = Field(default=..., description="""Technique used for characterization""", json_schema_extra = { "linkml_meta": {'domain_of': ['Characterization'], 'slot_uri': 'voc4cat:0000066'} })
12351241
sample_state: Optional[list[SampleStateEnum]] = Field(default=[], description="""State of the sample""", json_schema_extra = { "linkml_meta": {'domain_of': ['Characterization'], 'slot_uri': 'catcore:sample_state'} })
@@ -2569,6 +2575,14 @@ class ProductIdentificationMethod(CatCoreEntity):
25692575
"""
25702576
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, 'from_schema': 'https://w3id.org/nfdi4cat/catcore'})
25712577

2578+
equipment: Optional[list[str]] = Field(default=[], description="""Equipment used""", json_schema_extra = { "linkml_meta": {'domain_of': ['Solvothermal',
2579+
'PlasmaAssisted',
2580+
'CombustionSynthesis',
2581+
'MicrowaveAssisted',
2582+
'MechanochemicalSynthesis',
2583+
'Characterization',
2584+
'ProductIdentificationMethod'],
2585+
'slot_uri': 'voc4cat:0000187'} })
25722586
identifier: Optional[str] = Field(default=None, description="""Unique identifier for the entity""", json_schema_extra = { "linkml_meta": {'domain_of': ['CatCoreEntity'], 'slot_uri': 'catcore:identifier'} })
25732587

25742588

src/catcore/schema/catcore.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,8 @@ classes:
823823
ProductIdentificationMethod:
824824
is_a: CatCoreEntity
825825
description: Method used for product identification
826+
slots:
827+
- equipment
826828
abstract: true
827829

828830
# ==================== SIMULATION ====================

tests/data/valid/characterization_test.yaml renamed to tests/data/valid/Characterization-001.yaml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55
identifier: "CHAR_001_Pt_Al2O3"
66
equipment: ["Bruker D8 Advance diffractometer", "Thermo Scientific K-Alpha XPS", "Micromeritics ASAP 2020"]
77
sample_state: ["powder"]
8-
sample_description: ["5 wt% Pt/Al2O3 catalyst after calcination at 450°C"]
8+
sample_description: ["5 wt% Pt/Al2O3 catalyst after calcination at 450C"]
99
detector_type: ["Lynxeye detector", "hemispherical analyzer", "thermal conductivity detector"]
1010
sample_preparation: ["pressed into sample holder without binder", "mounted on carbon tape", "degassed under vacuum"]
11-
sample_pretreatment: ["calcined at 450°C for 4 hours", "none", "degassed at 300°C for 6 hours"]
11+
sample_pretreatment: ["calcined at 450C for 4 hours", "none", "degassed at 300C for 6 hours"]
1212

1313
characterization_technique:
1414
# Powder XRD
1515
- identifier: "CHAR_TECH_001"
16-
class_uri: "CHMO:0000158"
17-
xray_source: ["Cu Kα (λ = 1.5406 Å)"]
16+
xray_source: ["Cu Kalpha (lambda = 1.5406 A)"]
1817
atmosphere: ["ambient air"]
1918
operation_mode: ["continuous scan"]
2019
minimum_2theta: [10.0] # degrees
@@ -27,8 +26,7 @@ characterization_technique:
2726

2827
# XPS
2928
- identifier: "CHAR_TECH_002"
30-
class_uri: "CHMO:0000404"
31-
xray_source: ["Al Kα (1486.6 eV)"]
29+
xray_source: ["Al Kalpha (1486.6 eV)"]
3230
total_acquisition_time: [1800.0] # seconds
3331
number_of_scans: [10]
3432
spot_size: [400.0] # micrometers
@@ -38,27 +36,19 @@ characterization_technique:
3836
step_size: [0.1] # eV
3937
pass_energy: [50.0] # eV
4038
charge_compensation: ["flood gun, 1.0 eV electrons"]
41-
atmosphere: ["ultra-high vacuum, 2×10⁻⁹ mbar"]
42-
temperature: [25.0] # Celsius
39+
atmosphere: ["ultra-high vacuum, 2x10-9 mbar"]
4340

4441
# BET Surface Area
4542
- identifier: "CHAR_TECH_003"
46-
class_uri: "catcore:BET"
4743
adsorbate_gas: ["N2"]
4844
degassing_temperature: [300.0] # Celsius
4945
measurement_temperature: [77.0] # Kelvin
5046
pore_size_distribution_method: ["BJH method from desorption branch"]
5147
sample_mass: [150.0] # mg
52-
atmosphere: ["nitrogen"]
53-
temperature: [-196.0] # Celsius (liquid N2)
5448

5549
# Temperature Programmed Reduction
5650
- identifier: "CHAR_TECH_004"
57-
class_uri: "CHMO:0002908"
5851
reducing_gas_composition: ["5% H2/Ar"]
5952
heating_rate: [10.0] # Celsius/min
6053
minimum_temperature: [50.0] # Celsius
6154
maximum_temperature: [800.0] # Celsius
62-
flow_rate: [50.0] # mL/min
63-
sample_mass: [50.0] # mg
64-
detector_type: ["thermal conductivity detector"]
Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ catalyst_type: ["5 wt% Pt/Al2O3, 250-355 μm sieve fraction"]
88

99
reactor_design_type:
1010
- identifier: "REACTOR_001"
11-
class_uri: "catcore:FixedBedReactor"
12-
1311
reactant:
1412
- "CO (1000 ppm)"
1513
- "O2 (5 vol%)"
@@ -22,19 +20,17 @@ operation_parameters:
2220
experiment_pressure: [1.0] # bar (atmospheric)
2321
feed_composition_range: ["CO: 1000 ppm, O2: 5 vol%, N2: balance"]
2422
experiment_duration: [8.0] # hours
25-
flow_rate: [100.0] # mL/min (total flow)
2623

2724
product_identification_method:
2825
- identifier: "PROD_ID_001"
29-
class_uri: "CHMO:0000497"
3026
equipment: ["Agilent 7890B GC with TCD and FID"]
31-
column_type: ["HP-PLOT Q column, 30 m × 0.32 mm × 20 μm"]
32-
carrier_gas: ["helium"]
33-
carrier_gas_purity: ["99.999%"]
34-
inlet_temperature: [200.0] # Celsius
35-
detector_type: ["thermal conductivity detector (TCD)", "flame ionization detector (FID)"]
36-
minimum_oven_temperature: [40.0] # Celsius
37-
maximum_oven_temperature: [250.0] # Celsius
38-
heating_ramp: [10.0] # Celsius/min
39-
external_standard: ["CO calibration gas 1000 ppm"]
40-
internal_standard: ["CH4 100 ppm"]
27+
# column_type: ["HP-PLOT Q column, 30 m × 0.32 mm × 20 μm"]
28+
# carrier_gas: ["helium"]
29+
# carrier_gas_purity: ["99.999%"]
30+
# inlet_temperature: [200.0] # Celsius
31+
# detector_type: ["thermal conductivity detector (TCD)", "flame ionization detector (FID)"]
32+
# minimum_oven_temperature: [40.0] # Celsius
33+
# maximum_oven_temperature: [250.0] # Celsius
34+
# heating_ramp: [10.0] # Celsius/min
35+
# external_standard: ["CO calibration gas 1000 ppm"]
36+
# internal_standard: ["CH4 100 ppm"]
Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,35 @@ software_package: ["VASP 6.3.0", "ASE 3.22.1"]
77

88
simulation_method:
99
- identifier: "SIM_METHOD_001"
10-
class_uri: "catcore:DFT"
1110
exchange_correlation_functional: ["PBE (Perdew-Burke-Ernzerhof)"]
1211
energy_cutoff: [450.0] # eV
13-
convergence_criteria: ["energy: 1×10⁻⁵ eV, forces: 0.02 eV/Å"]
12+
convergence_criteria: ["energy: 1x10-5 eV, forces: 0.02 eV/A"]
1413
dft_u_parameters: ["not applied"]
1514
spin_polarization: [true]
1615
total_energy_per_atom: [-5.234] # eV
17-
k_point_mesh: ["5×5×1 Monkhorst-Pack"]
18-
smearing_method: ["Methfessel-Paxton, sigma=0.2 eV"]
1916

2017
calculated_property:
2118
# Surface properties
2219
- identifier: "CALC_PROP_001"
23-
class_uri: "catcore:Surfaces"
2420
surface_energy: [0.089] # J/m²
2521
miller_indices: ["(111)"]
2622
slab_thickness: [12.75] # Angstrom (5 layers)
2723
vacuum_spacing: [15.0] # Angstrom
2824
surface_termination_method: ["symmetric, both surfaces Pt-terminated"]
29-
material_composition: ["Pt"]
30-
crystal_structure: ["fcc, a = 3.92 Å"]
3125

3226
# Electronic structure
3327
- identifier: "CALC_PROP_002"
34-
class_uri: "catcore:ElectronicStructure"
3528
material_composition: ["Pt(111) surface with adsorbed CO"]
3629
crystal_structure: ["fcc Pt substrate"]
37-
k_point_mesh: ["5×5×1 for surface calculations"]
30+
k_point_mesh: ["5x5x1 for surface calculations"]
3831
energy_cutoff: [450.0] # eV
3932
smearing_method: ["Methfessel-Paxton, sigma=0.2 eV"]
4033
spin_polarized: [true]
41-
band_path: ["Γ-M-K-Γ"]
34+
band_path: ["|-M-K-|"]
4235
fermi_energy: [5.42] # eV
43-
convergence_criteria: ["SCF: 1×10⁻⁶ eV"]
4436

4537
# Adsorption energies (as additional property)
4638
- identifier: "CALC_PROP_003"
47-
class_uri: "catcore:ThermodynamicStability"
4839
formation_energy: [-1.68] # eV (CO adsorption energy)
4940
reference_energies: ["E(Pt_slab) = -261.70 eV, E(CO_gas) = -14.84 eV, E(Pt_slab+CO) = -278.22 eV"]
5041
energy_above_hull: [0.0] # eV (most stable configuration)
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ precursor:
1212

1313
preparation_method:
1414
- identifier: "PREP_001"
15-
class_uri: "catcore:Impregnation"
1615
impregnation_type: ["wet_impregnation"]
1716
impregnation_duration: [4.0] # hours
1817
impregnation_temperature: [25.0] # Celsius

tests/data/valid/characterization_test.json

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)