From e0698f55d7c32829f2a60b7b22f224cef8ee7552 Mon Sep 17 00:00:00 2001 From: Sarthak Kapoor Date: Tue, 17 Sep 2024 12:51:38 +0200 Subject: [PATCH] Add setup dev env, links, fix typos, revise contact --- docs/contact.md | 2 +- docs/explanation/data_model.md | 10 ++++----- docs/explanation/levelsofschema.md | 2 +- docs/explanation/schemas.md | 12 +++++------ docs/how_to/develop.md | 34 +++++++++++++++++++++++++----- 5 files changed, 42 insertions(+), 18 deletions(-) diff --git a/docs/contact.md b/docs/contact.md index 76d1e2d..76e0cef 100644 --- a/docs/contact.md +++ b/docs/contact.md @@ -11,7 +11,7 @@ You can also send as directly an email to the main contributors list: |------|------------|--------|-----------------| | Dr. Andrea Albino | [andrea.albino@physik.hu-berlin.de](mailto:andrea.albino@physik.hu-berlin.de) | CVD | [@aalbino2](https://github.com/aalbino2) | | Dr. Hampus Näsström | [hampus.naesstroem@physik.hu-berlin.de](mailto:hampus.naesstroem@physik.hu-berlin.de) | PVD | [@hampusnasstrom](https://github.com/hampusnasstrom) | -| Sarthak Kapoor | [sarthak.kapoor@physik.hu-berlin.de](mailto:sarthak.kapoor@physik.hu-berlin.de) | Solutions | [@ka-sarthak](https://github.com/ka-sarthak) | +| Sarthak Kapoor, MSc. | [sarthak.kapoor@physik.hu-berlin.de](mailto:sarthak.kapoor@physik.hu-berlin.de) | Solutions | [@ka-sarthak](https://github.com/ka-sarthak) | | Dr. José Marquez | [josemarquez@physik.hu-berlin.de](mailto:josemarquez@physik.hu-berlin.de) | General | [@Pepe-Marquez](https://github.com/Pepe-Marquez) | | Dr. Sebastian Brückner (**Coordinator**) | [sebastian.brueckner@physik.hu-berlin.de](mailto:sebastian.brueckner@physik.hu-berlin.de) | General | [@budschi](https://github.com/budschi) | diff --git a/docs/explanation/data_model.md b/docs/explanation/data_model.md index 3fb6cbe..6418bfd 100644 --- a/docs/explanation/data_model.md +++ b/docs/explanation/data_model.md @@ -57,7 +57,7 @@ A very general module containing several categories of classes: - `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`. - `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. - `CrystalProperties` and `ElectronicProperties`, found as [subsection](../reference/references.md#subsection) of sample entities that need these parameters. -- simple activities performed on samples: `Etching`, `Annealing`, `Cleaning`. They also include a `Recipe` that can be referenced inside to avoid repetition for routinary tasks. +- simple activities performed on samples: `Etching`, `Annealing`, `Cleaning`. They also include a `Recipe` that can be referenced inside to avoid repetition for routine tasks. - `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. #### nomad_material_processing.vapor_deposition.general @@ -67,9 +67,9 @@ The classes and now specified toward a specified group of techniques. The master The other classes found here are specifying the [subsections](../reference/references.md#subsection) found in the steps of the `VaporDeposition` process. `VaporDepositionStep` contains three [subsections](../reference/references.md#subsection) allowing to describe the parameters usually recorded during an experiment: -- `VaporDepositionSource` the metadata on which kind of source will bring the raw material in the recation chamber. -This class is in turn composed by three dinstinct 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. -- `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 tempearture, or growth rate. This is a list because many samples can be grown at the same time. +- `VaporDepositionSource` the metadata on which kind of source will bring the raw material in the reaction chamber. +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. +- `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. - `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). 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. @@ -82,7 +82,7 @@ Sources for CVD are inheriting from `CVDSource`, that is in turn a `VaporDeposit - `BubblerSource` defines a bubbler commonly used in CVD for liquid precursors. - `FlashSource` the vapor is generated by a `FlashEvaporator`. -- `MistSource` another kind of source adopetd in CVD. +- `MistSource` another kind of source adopted in CVD. - `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. - `GasLineSource` used for gaseous precursors that are provided through a stable installation sourcing gas from facilities external to the lab. diff --git a/docs/explanation/levelsofschema.md b/docs/explanation/levelsofschema.md index aa005c4..738cb78 100644 --- a/docs/explanation/levelsofschema.md +++ b/docs/explanation/levelsofschema.md @@ -29,7 +29,7 @@ The relationships between these schema levels can be visualized as a layered mod - **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. -- **User Schemas**: Inherit and specialize community plugins sections, if availbale, or the base sections according to given requirements. +- **User Schemas**: Inherit and specialize community plugins sections, if available, or the base sections according to given requirements. ## Encouraged Usage diff --git a/docs/explanation/schemas.md b/docs/explanation/schemas.md index b5922fa..cd77617 100644 --- a/docs/explanation/schemas.md +++ b/docs/explanation/schemas.md @@ -58,7 +58,7 @@ The `nomad_material_processing.general` module contains several general categori - `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`. - `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. - `CrystalProperties` and `ElectronicProperties`, found as [subsection](../reference/references.md#subsection) of sample entities that need these parameters. -- simple activities performed on samples: `Etching`, `Annealing`, `Cleaning`. They also include a `Recipe` that can be referenced inside to avoid repetition for routinary tasks. +- simple activities performed on samples: `Etching`, `Annealing`, `Cleaning`. They also include a `Recipe` that can be referenced inside to avoid repetition for routine tasks. - `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. ### Vapor Deposition @@ -69,9 +69,9 @@ a general vapor deposition process. The master class in this module is `VaporDep The other classes found here are specifying the [subsections](../reference/references.md#subsection) found in the steps of the `VaporDeposition` process. `VaporDepositionStep` contains three [subsections](../reference/references.md#subsection) allowing to describe the parameters usually recorded during an experiment: -- `VaporDepositionSource` the metadata on which kind of source will bring the raw material in the recation chamber. -This class is in turn composed by three dinstinct 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. -- `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 tempearture, or growth rate. This is a list because many samples can be grown at the same time. +- `VaporDepositionSource` the metadata on which kind of source will bring the raw material in the reaction chamber. +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. +- `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. - `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). 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. @@ -84,7 +84,7 @@ Sources for CVD are inheriting from `CVDSource`, that is in turn a `VaporDeposit - `BubblerSource` defines a bubbler commonly used in CVD for liquid precursors. - `FlashSource` the vapor is generated by a `FlashEvaporator`. -- `MistSource` another kind of source adopetd in CVD. +- `MistSource` another kind of source adopted in CVD. - `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. - `GasLineSource` used for gaseous precursors that are provided through a stable installation sourcing gas from facilities external to the lab. @@ -133,7 +133,7 @@ be used to create NOMAD There's a long list of other auxiliary sections supporting these entry section which can be accessed in the [metainfo browser](https://nomad-lab.eu/prod/v1/oasis/gui/analyze/metainfo/nomad_material_processing) -by seaching for: `"nomad_material_processing.solution.general"` +by searching for: `"nomad_material_processing.solution.general"` #### `nomad_material_processing.solution.general.Solution` diff --git a/docs/how_to/develop.md b/docs/how_to/develop.md index eb30cb8..50d6007 100644 --- a/docs/how_to/develop.md +++ b/docs/how_to/develop.md @@ -4,21 +4,45 @@ The **NOMAD-material-processing plugin** is a community-driven effort aimed at p Here’s how you can contribute: -## 1. Extract General Components from Your Custom Schema +## 1. Setting up a development environment + +To make code contributions to this package, you need to setup a local development environment. It starts with +[cloning](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) +this repo in a local folder. +Create a fresh Python environment and install the package in +[editable](https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs) + mode (with `-e` flag) with its +`dev` dependencies. `pytest` package is installed as a part of the `dev` dependencies. +To run the tests locally, you can simply run `pytest` in the topmost folder of the repo. + +```sh +git clone git@github.com:FAIRmat-NFDI/nomad-material-processing.git +cd nomad-material-processing + +python3.11 -m venv .pyenv +source .pyenv/bin/activate +pip install -e .[dev] --index-url https://gitlab.mpcdf.mpg.de/api/v4/projects/2187/packages/pypi/simple +pytest +``` + +## 2. Extract General Components from Your Custom Schema If you have developed custom schemas for your own lab or project, consider extracting the generalizable aspects and contributing them to the community plugin. Look for data structures, methods, or components that are not specific to your setup but could benefit the wider community. By sharing these, you help build a richer, more comprehensive plugin that everyone can use. -## 2. Test in Your Own Plugin +## 3. Test in Your Own Plugin Before submitting contributions, it’s important to test your changes in your own NOMAD plugin environment. This ensures that your extracted schema or code functions as expected and aligns with the overall plugin structure. Testing locally also helps identify potential conflicts or improvements before making a broader contribution. -## 3. Open an Issue +## 4. Open an Issue If you have suggestions, questions, or encounter any issues while using or developing the plugin, feel free to open an issue on the plugin’s GitHub repository. This helps maintainers and other contributors track potential improvements or areas of concern. Be as detailed as possible, providing relevant context and, if applicable, examples of the issue you're encountering. -## 4. Create a Pull Request +## 5. Create a Pull Request -Once you’ve tested your contribution and are confident it benefits the community, create a pull request (PR). In your PR, clearly describe what changes you are proposing and why they are necessary. If you’re contributing general components extracted from your custom schema, explain how they can be applied broadly across different use cases. Be sure to follow the repository's contribution guidelines and reference any related issues if applicable. +Once you’ve tested your contribution and are confident it benefits the community, create a +[pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) +(PR). +In your PR, clearly describe what changes you are proposing and why they are necessary. If you’re contributing general components extracted from your custom schema, explain how they can be applied broadly across different use cases. Be sure to follow the repository's contribution guidelines and reference any related issues if applicable. By contributing to this plugin, you are helping build a more cohesive and interoperable materials science data ecosystem. We appreciate your input and collaboration!