Skip to content

Commit

Permalink
Added sintering classes from a yaml schema
Browse files Browse the repository at this point in the history
  • Loading branch information
Guillaume-Gaisne committed May 15, 2024
1 parent f7ca3c0 commit 076324b
Show file tree
Hide file tree
Showing 4 changed files with 174 additions and 2 deletions.
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ select = [
"UP",
# isort
"I",
# pylint
# pylint
"PL",
]

Expand Down Expand Up @@ -110,5 +110,6 @@ where = ["src"]
[project.entry-points.'nomad.plugin']

mypackage = "nomad_sintering.schema_packages:mypackage"
sintering = "nomad_sintering.schema_packages:sintering"


41 changes: 41 additions & 0 deletions sintering.archive.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
definitions:
name: 'Tutorial 13 sintering schema'
sections:
TemperatureRamp:
m_annotations:
eln:
properties:
order:
- "name"
- "start_time"
- "initial_temperature"
- "final_temperature"
- "duration"
- "comment"
base_sections:
- nomad.datamodel.metainfo.basesections.ProcessStep
quantities:
initial_temperature:
type: np.float64
unit: celsius
description: "initial temperature set for ramp"
m_annotations:
eln:
component: NumberEditQuantity
defaultDisplayUnit: celsius
final_temperature:
type: np.float64
unit: celsius
description: "final temperature set for ramp"
m_annotations:
eln:
component: NumberEditQuantity
defaultDisplayUnit: celsius
Sintering:
base_sections:
- nomad.datamodel.metainfo.basesections.Process
- nomad.datamodel.data.EntryData
sub_sections:
steps:
repeats: True
section: '#/TemperatureRamp'
15 changes: 14 additions & 1 deletion src/nomad_sintering/schema_packages/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,24 @@ class MySchemaPackageEntryPoint(SchemaPackageEntryPoint):

def load(self):
from nomad_sintering.schema_packages.mypackage import m_package

return m_package


mypackage = MySchemaPackageEntryPoint(
name='MyPackage',
description='Schema package defined using the new plugin mechanism.',
)

class SinteringEntryPoint(SchemaPackageEntryPoint):

def load(self):
from nomad_sintering.schema_packages.sintering import m_package

return m_package


sintering = SinteringEntryPoint(
name='Sintering',
description='Schema package defined for sintering.',
)
117 changes: 117 additions & 0 deletions src/nomad_sintering/schema_packages/sintering.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#
# Copyright The NOMAD Authors.
#
# This file is part of NOMAD. See https://nomad-lab.eu for further info.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

from typing import (
TYPE_CHECKING,
)

import numpy as np
from nomad.datamodel.data import (
ArchiveSection,
EntryData,
)
from nomad.datamodel.metainfo.basesections import Process, ProcessStep
from nomad.metainfo import (
Package,
Quantity,
Section,
SubSection,
)

if TYPE_CHECKING:
from nomad.datamodel.datamodel import (
EntryArchive,
)
from structlog.stdlib import (
BoundLogger,
)

m_package = Package(name='Tutorial 13 sintering schema')


class TemperatureRamp(ProcessStep, ArchiveSection):
'''
Class autogenerated from yaml schema.
'''
m_def = Section(
a_eln={
"properties": {
"order": [
"name",
"start_time",
"initial_temperature",
"final_temperature",
"duration",
"comment"
]
}
},)
initial_temperature = Quantity(
type=np.float64,
description='initial temperature set for ramp',
a_eln={
"component": "NumberEditQuantity",
"defaultDisplayUnit": "celsius"
},
unit="celsius",
)
final_temperature = Quantity(
type=np.float64,
description='final temperature set for ramp',
a_eln={
"component": "NumberEditQuantity",
"defaultDisplayUnit": "celsius"
},
unit="celsius",
)

def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None:
'''
The normalizer for the `TemperatureRamp` class.
Args:
archive (EntryArchive): The archive containing the section that is being
normalized.
logger (BoundLogger): A structlog logger.
'''
super().normalize(archive, logger)


class Sintering(Process, EntryData, ArchiveSection):
'''
Class autogenerated from yaml schema.
'''
m_def = Section()
steps = SubSection(
section_def=TemperatureRamp,
repeats=True,
)

def normalize(self, archive: 'EntryArchive', logger: 'BoundLogger') -> None:
'''
The normalizer for the `Sintering` class.
Args:
archive (EntryArchive): The archive containing the section that is being
normalized.
logger (BoundLogger): A structlog logger.
'''
super().normalize(archive, logger)


m_package.__init_metainfo__()

0 comments on commit 076324b

Please sign in to comment.