Skip to content

Commit

Permalink
Add setup dev env, links, fix typos, revise contact
Browse files Browse the repository at this point in the history
  • Loading branch information
ka-sarthak committed Sep 17, 2024
1 parent 3cdea31 commit e0698f5
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 18 deletions.
2 changes: 1 addition & 1 deletion docs/contact.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ You can also send as directly an email to the main contributors list:
|------|------------|--------|-----------------|
| Dr. Andrea Albino | [[email protected]](mailto:[email protected]) | CVD | [@aalbino2](https://github.com/aalbino2) |
| Dr. Hampus Näsström | [[email protected]](mailto:[email protected]) | PVD | [@hampusnasstrom](https://github.com/hampusnasstrom) |
| Sarthak Kapoor | [[email protected]](mailto:[email protected]) | Solutions | [@ka-sarthak](https://github.com/ka-sarthak) |
| Sarthak Kapoor, MSc. | [[email protected]](mailto:[email protected]) | Solutions | [@ka-sarthak](https://github.com/ka-sarthak) |
| Dr. José Marquez | [[email protected]](mailto:[email protected]) | General | [@Pepe-Marquez](https://github.com/Pepe-Marquez) |
| Dr. Sebastian Brückner (**Coordinator**) | [[email protected]](mailto:[email protected]) | General | [@budschi](https://github.com/budschi) |

Expand Down
10 changes: 5 additions & 5 deletions docs/explanation/data_model.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Expand All @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/levelsofschema.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
12 changes: 6 additions & 6 deletions docs/explanation/schemas.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Expand All @@ -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.

Expand Down Expand Up @@ -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`

Expand Down
34 changes: 29 additions & 5 deletions docs/how_to/develop.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 [email protected]: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!

0 comments on commit e0698f5

Please sign in to comment.