nomad-material-processing 0.0.10__tar.gz → 1.0.0__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.
- nomad_material_processing-1.0.0/.github/workflows/mkdocs-deploy.yml +28 -0
- nomad_material_processing-1.0.0/.github/workflows/python-test.yml +55 -0
- nomad_material_processing-1.0.0/CITATION.cff +22 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/PKG-INFO +38 -11
- nomad_material_processing-1.0.0/README.md +49 -0
- nomad_material_processing-1.0.0/docs/assets/.gitignore +1 -0
- nomad_material_processing-1.0.0/docs/assets/favicon.png +0 -0
- nomad_material_processing-1.0.0/docs/assets/levelsschema.png +0 -0
- nomad_material_processing-1.0.0/docs/assets/nomad-logo.png +0 -0
- nomad_material_processing-1.0.0/docs/assets/use-built-in-schema-1.png +0 -0
- nomad_material_processing-1.0.0/docs/assets/use-built-in-schema-2.png +0 -0
- nomad_material_processing-1.0.0/docs/contact.md +22 -0
- nomad_material_processing-1.0.0/docs/explanation/data_model.md +193 -0
- nomad_material_processing-1.0.0/docs/explanation/levelsofschema.md +42 -0
- nomad_material_processing-1.0.0/docs/explanation/schemas.md +249 -0
- nomad_material_processing-1.0.0/docs/how_to/develop.md +48 -0
- nomad_material_processing-1.0.0/docs/how_to/install.md +31 -0
- nomad_material_processing-1.0.0/docs/how_to/use_this_plugin.md +140 -0
- nomad_material_processing-1.0.0/docs/how_to/use_this_plugin_old.md +31 -0
- nomad_material_processing-1.0.0/docs/index.md +44 -0
- nomad_material_processing-1.0.0/docs/reference/references.md +20 -0
- nomad_material_processing-1.0.0/docs/stylesheets/extra.css +69 -0
- nomad_material_processing-1.0.0/docs/theme/partials/header.html +86 -0
- nomad_material_processing-1.0.0/docs/tutorial/tutorial.md +9 -0
- nomad_material_processing-1.0.0/mkdocs.yml +60 -0
- nomad_material_processing-1.0.0/pyproject.toml +136 -0
- nomad_material_processing-1.0.0/src/nomad_material_processing/__init__.py +32 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/combinatorial.py +221 -173
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/crystal_growth.py +19 -17
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/epitaxy.py +35 -33
- nomad_material_processing-0.0.10/src/nomad_material_processing/__init__.py → nomad_material_processing-1.0.0/src/nomad_material_processing/general.py +651 -83
- nomad_material_processing-1.0.0/src/nomad_material_processing/solution/__init__.py +14 -0
- nomad_material_processing-1.0.0/src/nomad_material_processing/solution/general.py +942 -0
- nomad_material_processing-1.0.0/src/nomad_material_processing/solution/utils.py +133 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/utils.py +5 -3
- nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/__init__.py +32 -0
- nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/cvd/__init__.py +27 -0
- nomad_material_processing-0.0.10/src/nomad_material_processing/vapor_deposition/cvd/__init__.py → nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/cvd/general.py +157 -68
- nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/cvd/movpe.py +164 -0
- nomad_material_processing-0.0.10/src/nomad_material_processing/vapor_deposition/__init__.py → nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/general.py +223 -14
- nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/pvd/__init__.py +88 -0
- nomad_material_processing-0.0.10/src/nomad_material_processing/vapor_deposition/pvd/__init__.py → nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/pvd/general.py +28 -16
- nomad_material_processing-1.0.0/src/nomad_material_processing/vapor_deposition/pvd/mbe.py +76 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/vapor_deposition/pvd/pld.py +18 -11
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/vapor_deposition/pvd/sputtering.py +15 -8
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing/vapor_deposition/pvd/thermal.py +18 -12
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing.egg-info/PKG-INFO +38 -11
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing.egg-info/SOURCES.txt +38 -7
- nomad_material_processing-1.0.0/src/nomad_material_processing.egg-info/entry_points.txt +11 -0
- nomad_material_processing-1.0.0/src/nomad_material_processing.egg-info/requires.txt +6 -0
- nomad_material_processing-1.0.0/tests/conftest.py +11 -0
- nomad_material_processing-1.0.0/tests/data/test_physical_vapor_deposition.archive.yaml +2 -0
- nomad_material_processing-1.0.0/tests/data/test_pulsed_laser_deposition.archive.yaml +2 -0
- nomad_material_processing-1.0.0/tests/data/test_solution.archive.yaml +2 -0
- nomad_material_processing-1.0.0/tests/data/test_solution_component.archive.yaml +2 -0
- nomad_material_processing-1.0.0/tests/data/test_sputter_deposition.archive.yaml +2 -0
- nomad_material_processing-1.0.0/tests/data/test_thermal_evaporation.archive.yaml +2 -0
- nomad_material_processing-1.0.0/tests/solution/test_solution_schema.py +173 -0
- nomad_material_processing-1.0.0/tests/test_schema.py +15 -0
- nomad_material_processing-0.0.10/README.md +0 -26
- nomad_material_processing-0.0.10/nomad.yaml +0 -9
- nomad_material_processing-0.0.10/pyproject.toml +0 -88
- nomad_material_processing-0.0.10/src/nomad_material_processing/nomad_plugin.yaml +0 -3
- nomad_material_processing-0.0.10/src/nomad_material_processing/vapor_deposition/cvd/nomad_plugin.yaml +0 -3
- nomad_material_processing-0.0.10/src/nomad_material_processing/vapor_deposition/nomad_plugin.yaml +0 -3
- nomad_material_processing-0.0.10/src/nomad_material_processing/vapor_deposition/pvd/nomad_plugin.yaml +0 -3
- nomad_material_processing-0.0.10/src/nomad_material_processing.egg-info/requires.txt +0 -5
- nomad_material_processing-0.0.10/tests/data/test_activity_step.archive.yaml +0 -2
- nomad_material_processing-0.0.10/tests/data/test_physical_vapor_deposition.archive.yaml +0 -2
- nomad_material_processing-0.0.10/tests/data/test_pulsed_laser_deposition.archive.yaml +0 -2
- nomad_material_processing-0.0.10/tests/data/test_sputter_deposition.archive.yaml +0 -2
- nomad_material_processing-0.0.10/tests/data/test_thermal_evaporation.archive.yaml +0 -2
- nomad_material_processing-0.0.10/tests/test_schema.py +0 -10
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/.github/workflows/python-publish.yml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/.gitignore +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/.vscode/settings.json +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/LICENSE +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/setup.cfg +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/setup.py +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing.egg-info/dependency_links.txt +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/src/nomad_material_processing.egg-info/top_level.txt +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_crystal_growth.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_czochralski_process.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_epitaxy.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_metal_organic_vapor_phase_epitaxy.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_molecular_beam_epitaxy.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_sample_deposition.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_substrate.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_thin_film.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_thin_film_stack.archive.yaml +0 -0
- {nomad_material_processing-0.0.10 → nomad_material_processing-1.0.0}/tests/data/test_vapor_phase_epitaxy.archive.yaml +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Deploy MkDocs Site
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main # Triggers deployment on push to the main branch
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
deploy:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout Repository
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Set up Python
|
|
17
|
+
uses: actions/setup-python@v4
|
|
18
|
+
with:
|
|
19
|
+
python-version: '3.x'
|
|
20
|
+
|
|
21
|
+
- name: Install Dependencies
|
|
22
|
+
run: |
|
|
23
|
+
python -m pip install --upgrade pip
|
|
24
|
+
pip install mkdocs mkdocs-material==8.1.1 pymdown-extensions mkdocs-click
|
|
25
|
+
|
|
26
|
+
- name: Build and Deploy
|
|
27
|
+
run: |
|
|
28
|
+
mkdocs gh-deploy --force --remote-branch gh-pages
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# This workflow will install Python dependencies, run tests, and lint with multiple version of Python
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
|
|
3
|
+
|
|
4
|
+
name: Python test
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [ "main" ]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ "main" ]
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
env:
|
|
16
|
+
UV_SYSTEM_PYTHON: true
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
test:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
strategy:
|
|
22
|
+
fail-fast: false
|
|
23
|
+
matrix:
|
|
24
|
+
python_version: ["3.9", "3.10", "3.11"]
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- name: Set up Python ${{matrix.python_version}}
|
|
28
|
+
uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{matrix.python_version}}
|
|
31
|
+
- name: Install uv
|
|
32
|
+
run: |
|
|
33
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: |
|
|
36
|
+
uv pip install -e '.[dev]'
|
|
37
|
+
- name: Test with pytest
|
|
38
|
+
run: |
|
|
39
|
+
pytest
|
|
40
|
+
|
|
41
|
+
ruff-linting:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v4
|
|
45
|
+
- uses: chartboost/ruff-action@v1
|
|
46
|
+
with:
|
|
47
|
+
args: "check ."
|
|
48
|
+
|
|
49
|
+
ruff-formatting:
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
- uses: chartboost/ruff-action@v1
|
|
54
|
+
with:
|
|
55
|
+
args: "format . --check"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
title: nomad-material-processing
|
|
3
|
+
message: >-
|
|
4
|
+
If you use this software, please cite it using the
|
|
5
|
+
metadata from this file.
|
|
6
|
+
type: software
|
|
7
|
+
authors:
|
|
8
|
+
- given-names: Andrea
|
|
9
|
+
family-names: Albino
|
|
10
|
+
orcid: 'https://orcid.org/0000-0001-9280-7431'
|
|
11
|
+
- given-names: Sebastian
|
|
12
|
+
family-names: Brückner
|
|
13
|
+
orcid: 'https://orcid.org/0000-0002-5969-847X'
|
|
14
|
+
- given-names: Sarthak
|
|
15
|
+
family-names: Kapoor
|
|
16
|
+
orcid: 'https://orcid.org/0000-0002-1889-6998'
|
|
17
|
+
- given-names: Hampus
|
|
18
|
+
family-names: Näsström
|
|
19
|
+
orcid: 'https://orcid.org/0000-0002-3264-1692'
|
|
20
|
+
repository-code: 'https://github.com/FAIRmat-NFDI/nomad-material-processing'
|
|
21
|
+
url: 'https://fairmat-nfdi.github.io/nomad-material-processing/'
|
|
22
|
+
license: MIT
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nomad-material-processing
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: A plugin for NOMAD containing base sections for material processing.
|
|
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>
|
|
5
|
+
Author-email: Sarthak Kapoor <sarthak.kapoor@physik.hu-berlin.de>, 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
|
|
7
7
|
Version 2.0, January 2004
|
|
8
8
|
http://www.apache.org/licenses/
|
|
@@ -207,17 +207,21 @@ License: Apache License
|
|
|
207
207
|
|
|
208
208
|
Project-URL: Homepage, https://github.com/FAIRmat-NFDI/nomad-material-processing
|
|
209
209
|
Project-URL: Bug Tracker, https://github.com/FAIRmat-NFDI/nomad-material-processing/issues
|
|
210
|
-
Classifier:
|
|
211
|
-
Classifier:
|
|
210
|
+
Classifier: Intended Audience :: Developers
|
|
211
|
+
Classifier: Operating System :: OS Independent
|
|
212
|
+
Classifier: Programming Language :: Python
|
|
212
213
|
Classifier: Programming Language :: Python :: 3.9
|
|
213
|
-
Classifier:
|
|
214
|
-
|
|
214
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
215
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
216
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
217
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
215
218
|
Description-Content-Type: text/markdown
|
|
216
219
|
License-File: LICENSE
|
|
217
|
-
Requires-Dist: nomad-lab>=1.
|
|
220
|
+
Requires-Dist: nomad-lab>=1.3.6
|
|
218
221
|
Provides-Extra: dev
|
|
219
222
|
Requires-Dist: pytest; extra == "dev"
|
|
220
|
-
Requires-Dist:
|
|
223
|
+
Requires-Dist: ruff; extra == "dev"
|
|
224
|
+
Requires-Dist: structlog; extra == "dev"
|
|
221
225
|
|
|
222
226
|

|
|
223
227
|

|
|
@@ -229,11 +233,34 @@ This is a plugin for [NOMAD](https://nomad-lab.eu) which contains base sections
|
|
|
229
233
|
material processing.
|
|
230
234
|
|
|
231
235
|
## Getting started
|
|
232
|
-
`nomad-material-processing` can be installed from PyPI using `pip
|
|
236
|
+
`nomad-material-processing` can be installed from PyPI using `pip`.
|
|
237
|
+
|
|
238
|
+
> [!WARNING]
|
|
239
|
+
> Unfortunately, the current plugin mechanism is not supported by the latest nomad-lab version on PyPI and therefore an index url pointing to the NOMAD Gitlab registry needs to be added.
|
|
240
|
+
|
|
233
241
|
```sh
|
|
234
|
-
pip install nomad-material-processing
|
|
242
|
+
pip install nomad-material-processing --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
|
|
235
243
|
```
|
|
236
244
|
|
|
245
|
+
### Setting up your OASIS
|
|
246
|
+
Read the [NOMAD plugin documentation](https://nomad-lab.eu/prod/v1/staging/docs/plugins/plugins.html#add-a-plugin-to-your-nomad) for all details on how to deploy the plugin on your NOMAD instance.
|
|
247
|
+
|
|
248
|
+
You don't need to modify the ```nomad.yaml``` configuration file of your NOMAD instance, beacuse the package is pip installed and all the available modules (entry points) are loaded.
|
|
249
|
+
To include, instead, only some of the entry points, you need to specify them in the ```include``` section of the ```nomad.yaml```. In the following lines, a list of all the available entry points:
|
|
250
|
+
|
|
251
|
+
```yaml
|
|
252
|
+
plugins:
|
|
253
|
+
include:
|
|
254
|
+
- "nomad_material_processing:schema"
|
|
255
|
+
- "nomad_material_processing.solution:schema"
|
|
256
|
+
- "nomad_material_processing.vapor_deposition.cvd:schema"
|
|
257
|
+
- "nomad_material_processing.vapor_deposition.pvd:schema"
|
|
258
|
+
- "nomad_material_processing.vapor_deposition.pvd:mbe_schema"
|
|
259
|
+
- "nomad_material_processing.vapor_deposition.pvd:pld_schema"
|
|
260
|
+
- "nomad_material_processing.vapor_deposition.pvd:sputtering_schema"
|
|
261
|
+
- "nomad_material_processing.vapor_deposition.pvd:thermal_schema"
|
|
262
|
+
```
|
|
263
|
+
|
|
237
264
|
### Development
|
|
238
265
|
This code is currently under development and for installing and contributing you should clone the repository:
|
|
239
266
|
```sh
|
|
@@ -243,5 +270,5 @@ cd nomad-material-processing
|
|
|
243
270
|
|
|
244
271
|
And install the package in editable mode:
|
|
245
272
|
```sh
|
|
246
|
-
pip install -e .
|
|
273
|
+
pip install -e .[dev] --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
|
|
247
274
|
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+

|
|
2
|
+

|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
# NOMAD's Material Processing Plugin
|
|
7
|
+
This is a plugin for [NOMAD](https://nomad-lab.eu) which contains base sections for
|
|
8
|
+
material processing.
|
|
9
|
+
|
|
10
|
+
## Getting started
|
|
11
|
+
`nomad-material-processing` can be installed from PyPI using `pip`.
|
|
12
|
+
|
|
13
|
+
> [!WARNING]
|
|
14
|
+
> Unfortunately, the current plugin mechanism is not supported by the latest nomad-lab version on PyPI and therefore an index url pointing to the NOMAD Gitlab registry needs to be added.
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
pip install nomad-material-processing --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Setting up your OASIS
|
|
21
|
+
Read the [NOMAD plugin documentation](https://nomad-lab.eu/prod/v1/staging/docs/plugins/plugins.html#add-a-plugin-to-your-nomad) for all details on how to deploy the plugin on your NOMAD instance.
|
|
22
|
+
|
|
23
|
+
You don't need to modify the ```nomad.yaml``` configuration file of your NOMAD instance, beacuse the package is pip installed and all the available modules (entry points) are loaded.
|
|
24
|
+
To include, instead, only some of the entry points, you need to specify them in the ```include``` section of the ```nomad.yaml```. In the following lines, a list of all the available entry points:
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
plugins:
|
|
28
|
+
include:
|
|
29
|
+
- "nomad_material_processing:schema"
|
|
30
|
+
- "nomad_material_processing.solution:schema"
|
|
31
|
+
- "nomad_material_processing.vapor_deposition.cvd:schema"
|
|
32
|
+
- "nomad_material_processing.vapor_deposition.pvd:schema"
|
|
33
|
+
- "nomad_material_processing.vapor_deposition.pvd:mbe_schema"
|
|
34
|
+
- "nomad_material_processing.vapor_deposition.pvd:pld_schema"
|
|
35
|
+
- "nomad_material_processing.vapor_deposition.pvd:sputtering_schema"
|
|
36
|
+
- "nomad_material_processing.vapor_deposition.pvd:thermal_schema"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Development
|
|
40
|
+
This code is currently under development and for installing and contributing you should clone the repository:
|
|
41
|
+
```sh
|
|
42
|
+
git clone git@github.com:FAIRmat-NFDI/nomad-material-processing.git
|
|
43
|
+
cd nomad-material-processing
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
And install the package in editable mode:
|
|
47
|
+
```sh
|
|
48
|
+
pip install -e .[dev] --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple
|
|
49
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nomad-oasis*.zip
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
NOMAD is an open source project that warmly welcomes community projects, contributions, suggestions, bug fixes, and constructive feedback. The contributors to this documentation page are part of the [FAIRmat Area A - Synthesis team](https://www.fairmat-nfdi.eu/fairmat/about-fairmat/team-fairmat).
|
|
4
|
+
|
|
5
|
+
You can reach us by different channels.
|
|
6
|
+
Best option is to join our [NOMAD Discord channel](https://discord.gg/Gyzx3ukUw8) and ask us there directly.
|
|
7
|
+
|
|
8
|
+
You can also send as directly an email to the main contributors list:
|
|
9
|
+
|
|
10
|
+
| Name | E-mail | Topics | Github profiles |
|
|
11
|
+
|------|------------|--------|-----------------|
|
|
12
|
+
| Dr. Andrea Albino | [andrea.albino@physik.hu-berlin.de](mailto:andrea.albino@physik.hu-berlin.de) | CVD | [@aalbino2](https://github.com/aalbino2) |
|
|
13
|
+
| Dr. Hampus Näsström | [hampus.naesstroem@physik.hu-berlin.de](mailto:hampus.naesstroem@physik.hu-berlin.de) | PVD | [@hampusnasstrom](https://github.com/hampusnasstrom) |
|
|
14
|
+
| Sarthak Kapoor, MSc. | [sarthak.kapoor@physik.hu-berlin.de](mailto:sarthak.kapoor@physik.hu-berlin.de) | Solutions | [@ka-sarthak](https://github.com/ka-sarthak) |
|
|
15
|
+
| Dr. José Marquez | [josemarquez@physik.hu-berlin.de](mailto:josemarquez@physik.hu-berlin.de) | General | [@Pepe-Marquez](https://github.com/Pepe-Marquez) |
|
|
16
|
+
| Dr. Sebastian Brückner (**Coordinator**) | [sebastian.brueckner@physik.hu-berlin.de](mailto:sebastian.brueckner@physik.hu-berlin.de) | General | [@budschi](https://github.com/budschi) |
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Alternatively, you can also:
|
|
20
|
+
|
|
21
|
+
- Open an [**issue**](https://github.com/FAIRmat-NFDI/nomad-material-processing/issues) in the [Github project](https://github.com/FAIRmat-NFDI/nomad-material-processing), and tag any of us.
|
|
22
|
+
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
## NOMAD Material Processing: a Community plugin
|
|
2
|
+
|
|
3
|
+
The NOMAD Material Processing Plugin contains schemas for different synthesis methods.
|
|
4
|
+
An overview of the package structure is shown below.
|
|
5
|
+
|
|
6
|
+
### Technical description
|
|
7
|
+
|
|
8
|
+
There are some technical aspects to understand the Python package built for this plugin, they are not crucial for the data model understanding itself:
|
|
9
|
+
|
|
10
|
+
- It is structured according to the [src layout](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/).
|
|
11
|
+
- It is a [regular Python package](https://docs.python.org/3/reference/import.html#regular-packages), i. e., the structure is defined by the presence of `__init__.py` files. Each of these files contains one or multiple [entry points](https://nomad-lab.eu/prod/v1/staging/docs/howto/plugins/plugins.html#plugin-entry-points). These are used to load a portion of the code within your NOMAD through a specific section in the `nomad.yaml` file.
|
|
12
|
+
- It is pip installable. The `project.toml` file defines what will be installed, the dependencies, further details. The **entry points** included are listed in this file.
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
nomad-material-processing/
|
|
16
|
+
├── docs
|
|
17
|
+
├── pyproject.toml
|
|
18
|
+
├── README.md
|
|
19
|
+
├── src
|
|
20
|
+
│ └── nomad_material_processing
|
|
21
|
+
│ ├── __init__.py
|
|
22
|
+
│ ├── utils.py
|
|
23
|
+
│ ├── general.py
|
|
24
|
+
│ ├── vapor_deposition
|
|
25
|
+
│ │ ├── __init__.py
|
|
26
|
+
│ │ ├── general.py
|
|
27
|
+
│ │ ├── cvd
|
|
28
|
+
│ │ │ ├── __init__.py
|
|
29
|
+
│ │ │ ├── general.py
|
|
30
|
+
│ │ │ └── movpe.py
|
|
31
|
+
│ │ └── pvd
|
|
32
|
+
│ │ ├── __init__.py
|
|
33
|
+
│ │ ├── general.py
|
|
34
|
+
│ │ ├── mbe.py
|
|
35
|
+
│ │ ├── pld.py
|
|
36
|
+
│ │ ├── sputtering.py
|
|
37
|
+
│ │ └── thermal.py
|
|
38
|
+
│ └── solution
|
|
39
|
+
│ ├── __init__.py
|
|
40
|
+
│ ├── general.py
|
|
41
|
+
│ └── utils.py
|
|
42
|
+
└── tests
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Data model description
|
|
46
|
+
|
|
47
|
+
Each method has a dedicated [module](https://docs.python.org/3/tutorial/modules.html), i. e., a python file.
|
|
48
|
+
|
|
49
|
+
#### nomad_material_processing.general
|
|
50
|
+
|
|
51
|
+
A very general module containing several categories of classes:
|
|
52
|
+
|
|
53
|
+
- an abstract process class `SampleDeposition` that is inherited in the specific processes such as MOVPE, MBE, PLD, etc.
|
|
54
|
+
- `Substrate` and `CrystallineSubstrate` entities, the support used in `SampleDeposition` activities.
|
|
55
|
+
- `ThinFilm` entity, usually created during `SampleDeposition` activities.
|
|
56
|
+
- `ThinFilmStack` in case of processes producing multilayer samples. This class also contains a reference to the `Substrate`.
|
|
57
|
+
- `Geometry` and its [subclasses](../reference/references.md#subclass), defining the commonly found macroscopic shapes of a sample. It is a [subsection](../reference/references.md#subsection) composed within the `Substrate`. They include `Parallelepiped`, `SquareCuboid`, `RectangleCuboid`, `TruncatedCone`, `Cylinder`, `CylinderSector`, `IrregularParallelSurfaces`.
|
|
58
|
+
- `Miscut` another [subsection](../reference/references.md#subsection) of `Substrate` to specify the miscut of the orientation of the surface in terms of angular deviation toward crystallographic directions.
|
|
59
|
+
- `CrystalProperties` and `ElectronicProperties`, found as [subsection](../reference/references.md#subsection) of sample entities that need these parameters.
|
|
60
|
+
- simple activities performed on samples: `Etching`, `Annealing`, `Cleaning`. They also include a `Recipe` that can be referenced inside to avoid repetition for routine tasks.
|
|
61
|
+
- `TimeSeries` a general class that shapes every kind of parameters logged along a time window. The quantities referring to the measured parameter are `value` and `time`. `set_value` and `set_time` can also be specified, as they usually differ from the measured ones. Several [subclasses](../reference/references.md#subclass) inheriting from this one can be found nested in the package.
|
|
62
|
+
|
|
63
|
+
#### nomad_material_processing.vapor_deposition.general
|
|
64
|
+
|
|
65
|
+
The classes and now specified toward a specified group of techniques. The master class in this module is `VaporDeposition`, inheriting from `SampleDeposition`.
|
|
66
|
+
|
|
67
|
+
The other classes found here are specifying the [subsections](../reference/references.md#subsection) found in the steps of the `VaporDeposition` process.
|
|
68
|
+
`VaporDepositionStep` contains three [subsections](../reference/references.md#subsection) allowing to describe the parameters usually recorded during an experiment:
|
|
69
|
+
|
|
70
|
+
- `VaporDepositionSource` the metadata on which kind of source will bring the raw material in the reaction chamber.
|
|
71
|
+
This class is in turn composed by three distinct elements, namely the `Component` material to be evaporated, the `EvaporationSource` that is the element that produces the vapor, and `MolarFlowRate` that is a time series recording the molar flux exiting the source. This is used as a list within the `VaporDepositionStep` because many sources can be present at the same time.
|
|
72
|
+
- `SampleParameter` this [subsection](../reference/references.md#subsection) hosts the references to the `ThinFilm` deposited and the `ThinFilmStack` or `Substrate` used as support of the deposition. This [subsection](../reference/references.md#subsection) is also used to record sample-specific parameters in the process, such as temperature, or growth rate. This is a list because many samples can be grown at the same time.
|
|
73
|
+
- `ChamberEnvironment` collects the metadata connected to the whole reaction chamber that cannot be linked to one single sample. It usually contains temperature or `GasFlow` [subsections](../reference/references.md#subsection).
|
|
74
|
+
|
|
75
|
+
These three [subsections](../reference/references.md#subsection) are the backbone of the `VaporDeposition` process and they are usually inherited whenever a specific experiment requires to extend them.
|
|
76
|
+
|
|
77
|
+
#### nomad_material_processing.vapor_deposition.cvd.general
|
|
78
|
+
|
|
79
|
+
This module contains specifications of `VaporDepositionSource` and `TimeSeries` commonly adopted in CVD techniques:
|
|
80
|
+
|
|
81
|
+
Sources for CVD are inheriting from `CVDSource`, that is in turn a `VaporDepositionSource`.
|
|
82
|
+
|
|
83
|
+
- `BubblerSource` defines a bubbler commonly used in CVD for liquid precursors.
|
|
84
|
+
- `FlashSource` the vapor is generated by a `FlashEvaporator`.
|
|
85
|
+
- `MistSource` another kind of source adopted in CVD.
|
|
86
|
+
- `GasCylinderSource` a simple cylinder containing some gas phase precursor. In this case the `EvaporationSource` [subclass](../reference/references.md#subclass), called `GasCylinderEvaporator`, is not really evaporating as the precursor is already at the gas state.
|
|
87
|
+
- `GasLineSource` used for gaseous precursors that are provided through a stable installation sourcing gas from facilities external to the lab.
|
|
88
|
+
|
|
89
|
+
`TimeSeries` used in CVD are:
|
|
90
|
+
- `Rotation` specifies rotation frequency of the substrate holder in the chamber
|
|
91
|
+
- `PartialVaporPressure` as [subclass](../reference/references.md#subclass) of `Pressure`
|
|
92
|
+
- `PushPurgeGasFlow` contains two `VolumetricFlowRate` [subsections](../reference/references.md#subsection) that record the source and drain fluxes of the carries gas in the chamber.
|
|
93
|
+
|
|
94
|
+
#### nomad_material_processing.vapor_deposition.cvd.movpe
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
#### nomad_material_processing.vapor_deposition.pvd
|
|
99
|
+
#### nomad_material_processing.vapor_deposition.pvd.general
|
|
100
|
+
#### nomad_material_processing.vapor_deposition.pvd.mbe
|
|
101
|
+
#### nomad_material_processing.vapor_deposition.pvd.pld
|
|
102
|
+
#### nomad_material_processing.vapor_deposition.pvd.sputtering
|
|
103
|
+
#### nomad_material_processing.vapor_deposition.pvd.thermal
|
|
104
|
+
#### nomad_material_processing.solution.general
|
|
105
|
+
|
|
106
|
+
`solution.general` module contains the following entry sections (used to create
|
|
107
|
+
NOMAD [entries](https://nomad-lab.eu/prod/v1/docs/reference/glossary.html#entry)):
|
|
108
|
+
|
|
109
|
+
##### `Solution`
|
|
110
|
+
Describes liquid solutions by extending the
|
|
111
|
+
[`CompositeSystem`](https://nomad-lab.eu/prod/v1/docs/howto/customization/base_sections.html#system) with quantities: _pH_, _mass_,
|
|
112
|
+
_calculated_volume_, _measured_volume_, _density_, and sub-sections:
|
|
113
|
+
_solvents_, _solutes_, and _solution_storage_.
|
|
114
|
+
|
|
115
|
+
```py
|
|
116
|
+
# pseudocode for `Solution` datamodel
|
|
117
|
+
class Solution(CompositeSystem, EntryData):
|
|
118
|
+
ph_value: float
|
|
119
|
+
mass: float
|
|
120
|
+
calculated_volume: float
|
|
121
|
+
measured_volume: float
|
|
122
|
+
density: float
|
|
123
|
+
components: list[
|
|
124
|
+
Union(
|
|
125
|
+
SolutionComponent,
|
|
126
|
+
SolutionComponentReference,
|
|
127
|
+
)
|
|
128
|
+
]
|
|
129
|
+
solutes: list[SolutionComponent]
|
|
130
|
+
solvents: list[SolutionComponent]
|
|
131
|
+
solution_storage: SolutionStorage
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
!!! hint
|
|
135
|
+
The _measured_volume_ field is user-defined. By default, the automation in
|
|
136
|
+
`Solution` uses _calculated_volume_, but if _measured_volume_ is provided, it will take
|
|
137
|
+
precedence. This is useful when the final solution volume differs from the sum of its
|
|
138
|
+
component volumes, and should be specified by the user.
|
|
139
|
+
The _components_ sub-section, inherited from `CompositeSystem` and re-defined, is used to describe
|
|
140
|
+
a list of components used in the solution. Each of them contributes to the _mass_ and
|
|
141
|
+
_calculated_volume_ of the solution. The component can either nest a
|
|
142
|
+
sub-section describing its composition, or can be another `Solution` entry connected
|
|
143
|
+
via reference.
|
|
144
|
+
These options are are handled by
|
|
145
|
+
`SolutionComponent` and `SolutionComponentReference` sections respectively.
|
|
146
|
+
|
|
147
|
+
Let's take a closer look at each of them.
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
`SolutionComponent` extends `PureSubstanceComponent` with quantities:
|
|
151
|
+
_component_role_, _mass_, _volume_, _density_, and sub-section: _molar_concentration_.
|
|
152
|
+
The _pure_substance_ sub-section inherited from `PureSubstanceComponent` specifies the
|
|
153
|
+
chemical compound. This information along with the mass of the component and
|
|
154
|
+
total volume of the solution is used to automatically determine the molar concentration of
|
|
155
|
+
the component, populating the corresponding sub-section.
|
|
156
|
+
Based on the _component_role_, the components are copied over to either
|
|
157
|
+
`Solution.solvents` or `Solution.solutes`.
|
|
158
|
+
```py
|
|
159
|
+
class SolutionComponent(PureSubstanceComponent):
|
|
160
|
+
component_role: Enum('Solvent', 'Solute')
|
|
161
|
+
mass: float
|
|
162
|
+
volume: float
|
|
163
|
+
density: float
|
|
164
|
+
molar_concentration: MolarConcentration
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
`SolutionComponentReference` makes a reference to another `Solution` entry and specifies
|
|
169
|
+
the amount used. Based on this, _solutes_ and _solvents_ of the referenced solution are
|
|
170
|
+
copied over to the first solution. Their mass and volume are adjusted based on the
|
|
171
|
+
amount of the referenced solution used.
|
|
172
|
+
```py
|
|
173
|
+
class SolutionComponentReference(SystemComponent):
|
|
174
|
+
mass: float
|
|
175
|
+
volume: float
|
|
176
|
+
system: Solution
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Both `Solution.solvents` and `Solution.solutes` are a list of `SolutionComponent`. The
|
|
180
|
+
molar concentration of each of them is automatically determined. Additionally, if the
|
|
181
|
+
list has multiple `SolutionComponent` representing the same chemical entity, there are
|
|
182
|
+
combined into one.
|
|
183
|
+
|
|
184
|
+
The _solution_storage_ uses `SolutionStorage` section to describe storage conditions
|
|
185
|
+
, i.e., temperature and atmosphere, along with preparation and expiry dates.
|
|
186
|
+
|
|
187
|
+
##### `SolutionPreparation`
|
|
188
|
+
Extends [`Process`](https://nomad-lab.eu/prod/v1/docs/howto/customization/base_sections.html#process)
|
|
189
|
+
to describe the recipe for solution preparation. It generates a `Solution` entry based
|
|
190
|
+
on the data added to it.
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
!!! todo: add description of each module
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Levels of schemas in NOMAD
|
|
2
|
+
|
|
3
|
+
It is important to understand the structure and relationship of different types of schemas in NOMAD. Here we break down the levels of schemas and how they interact. For detailed information, please visit the [official NOMAD documentation](https://nomad-lab.eu/prod/v1/staging/docs/explanation/data.html#schema).
|
|
4
|
+
|
|
5
|
+
## Types of Schemas in NOMAD
|
|
6
|
+
|
|
7
|
+
NOMAD categorizes its schemas into multiple levels, each serving distinct purposes while ensuring consistent data organization and interoperability:
|
|
8
|
+
|
|
9
|
+
1. **Basic Architecture Sections**: These define the overall structure of any entry within NOMAD, regardless of the particular data type. They provide a shared, high-level framework applicable across different use cases, ensuring that every entry adheres to a consistent format. `EntryData` and `ArchiveSection` are the two relevant classes to be mentioned here.
|
|
10
|
+
Every entry in NOMAD must inherit from `EntryData`, whenever a class is only used as a [subsection](../reference/references.md#subsection) composed within a more general one, inheriting from `ArchiveSection` is enough.
|
|
11
|
+
|
|
12
|
+
2. **Base Sections**: These are central to NOMAD's data model and are designed to maintain interoperability between different database entries. The base sections follow an entity-activity model tailored for materials science, capturing essential relationships between key entities like samples, instruments, processes, measurements, analyses, experiments, and simulations. The goal is to provide standardized structures for data representation.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
!!! Note
|
|
16
|
+
Base sections in NOMAD are abstract and should not be instantiated directly. Instead, users must implement these sections in their own schemas (referred to as user schemas) by inheriting from a base section and `nomad.datamodel.EntryData`. Users are strongly encouraged to use the most specialized section available for their use case.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
3. **Community/Standard Plugins**: FAIRmat offers standardized schemas for common methods, processes, and instruments that are generalized and not tied to any individual lab or setup. These schemas are derived from recurring patterns identified across user schemas. Users can inherit from these standard plugins in a similar manner as the base sections, further specializing them as needed while still maintaining a consistent structure for broader community use.
|
|
20
|
+
FAIRmat's Area A for synthesis data provides two community plugins, NOMAD Measurements and NOMAD Materials Processing.
|
|
21
|
+
|
|
22
|
+
4. **User Defined Sections**: These schemas are developed by users and are tailored for a method or an instrument, a lab, or a research institute. They build upon the base sections and community plugins, tailoring them to meet specific research needs. In this level, users can define more specialized structures that directly reflect the unique characteristics of their experiments or simulations.
|
|
23
|
+
|
|
24
|
+
## How These Schemas Relate to Each Other
|
|
25
|
+
|
|
26
|
+
The relationships between these schema levels can be visualized as a layered model:
|
|
27
|
+
|
|
28
|
+
- **Basic Architecture and Base Sections**: At the core, ensuring interoperability and defining the primary structures.
|
|
29
|
+
|
|
30
|
+
- **Community/Standard Plugins**: Inherit and specialize the base sections and provide generalized versions of common user schemas, making them clearly shaped on distinct fields of materials science while still allowing broad applicability across the community.
|
|
31
|
+
|
|
32
|
+
- **User Schemas**: Inherit and specialize community plugins sections, if available, or the base sections according to given requirements.
|
|
33
|
+
|
|
34
|
+
## Encouraged Usage
|
|
35
|
+
|
|
36
|
+
NOMAD encourages users to first explore the available community/standard plugins and base sections before developing their own schemas. By doing so, they can maximize interoperability and benefit from established structures, while still retaining the flexibility to adapt the schema to their unique needs.
|
|
37
|
+
|
|
38
|
+
The figure below illustrates these schema levels and the recommended workflow for schema development within NOMAD.
|
|
39
|
+
|
|
40
|
+
In next documentation sections, an overview of the available methods will be provided.
|
|
41
|
+
|
|
42
|
+

|