From a8aed6886fafba6250a1728db9193f8a7efeb2d0 Mon Sep 17 00:00:00 2001 From: domna Date: Sun, 31 Jul 2022 09:59:04 +0200 Subject: [PATCH 01/35] Adds paper blueprint --- paper/paper.bib | 0 paper/paper.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 paper/paper.bib create mode 100644 paper/paper.md diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 00000000..e69de29b diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 00000000..770dbfcd --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,81 @@ +--- +title: "pyElli: A reproducibly and comprehensible open source ellipsometry analysis tool" +tags: + - Python + - spectroscopy + - ellipsometry + - solid state physics + - milky way +authors: + - name: Marius Müller + equal-contrib: true + affiliation: 1 + - name: Florian Dobener + orcid: 0000-0003-1987-6224 + equal-contrib: true # (This is how you can denote equal contributions between multiple authors) + affiliation: 1 +affiliations: + - name: Institute of Experimental Physics I and Center for Materials Research (ZfM/LaMa), Justus Liebig University Giessen, Heinrich-Buff-Ring 16, Giessen, D-35392 Germany + index: 1 +date: 31 July 2022 +bibliography: paper.bib +--- + +# Summary + +A short summary of the program +See [this](https://joss.readthedocs.io/en/latest/submitting.html#example-paper-and-bibliography) for more an example. + +# Statement of need + +Why is it necessary? + +# Mathematics + +Single dollars ($) are required for inline mathematics e.g. $f(x) = e^{\pi/x}$ + +Double dollars make self-standing equations: + +$$ +\Theta(x) = \left\{\begin{array}{l} +0\textrm{ if } x < 0\cr +1\textrm{ else} +\end{array}\right. +$$ + +You can also use plain \LaTeX for equations +\begin{equation}\label{eq:fourier} +\hat f(\omega) = \int\_{-\infty}^{\infty} f(x) e^{i\omega x} dx +\end{equation} +and refer to \autoref{eq:fourier} from text. + +# Citations + +Citations to entries in paper.bib should be in +[rMarkdown](http://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html) +format. + +If you want to cite a software repository URL (e.g. something on GitHub without a preferred +citation) then you can do it with the example BibTeX entry below for @fidgit. + +For a quick reference, the following citation commands can be used: + +- `@author:2001` -> "Author et al. (2001)" +- `[@author:2001]` -> "(Author et al., 2001)" +- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)" + +# Figures + +Figures can be included like this: +![Caption for example figure.\label{fig:example}](figure.png) +and referenced from text using \autoref{fig:example}. + +Figure sizes can be customized by adding an optional second parameter: +![Caption for example figure.](figure.png){ width=20% } + +# Acknowledgements + +We acknowledge contributions from Brigitta Sipocz, Syrtis Major, and Semyeong +Oh, and support from Kathryn Johnston during the genesis of this project. + +# References From 14489b877f200d463682cb4ec53bba530ee55a7e Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Oct 2022 12:44:33 +0200 Subject: [PATCH 02/35] Adds first rough summary paragraph and content ideas --- paper/paper.md | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 770dbfcd..6751662c 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -5,14 +5,14 @@ tags: - spectroscopy - ellipsometry - solid state physics - - milky way + - transfer matrix method authors: - name: Marius Müller equal-contrib: true affiliation: 1 - name: Florian Dobener orcid: 0000-0003-1987-6224 - equal-contrib: true # (This is how you can denote equal contributions between multiple authors) + equal-contrib: true affiliation: 1 affiliations: - name: Institute of Experimental Physics I and Center for Materials Research (ZfM/LaMa), Justus Liebig University Giessen, Heinrich-Buff-Ring 16, Giessen, D-35392 Germany @@ -23,12 +23,31 @@ bibliography: paper.bib # Summary -A short summary of the program -See [this](https://joss.readthedocs.io/en/latest/submitting.html#example-paper-and-bibliography) for more an example. +- Offers two different algorithms 2x2, 4x4 +- Power comes from extensibility +- We want to enable collaborative work for an ellipsometry platform +- So far: Different solutions from different companies with their own set of models + - Can lead to non-reproducibility +- Inclusion of open available data (refractiveindex.info) + + + +Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. It is important in alot of different fields since optical constants are often deduced by ellipsometry analysis. +However, the software to analyise data is shipped together with the instruments and hence each vendor implements their own dispersion models and fitting models. The open source ellipsometry software pyElli, written in python tries to solve this issue by supplying an open platform for ellipsometry. A major goal in designing the software was to keep it open to extensions from a broader community. +This applies to the optical models used, which try to stay as close as possible to formulas documented in literature [fujiwara]. It also applies to the solving algorithms. It already comes with a 2x2 algorithm which is often used for simple problems and a 4x4 algorithm based on the berreman transfer matrix formulation [berreman], which is able to solve anisotropic materials as well. + +# Example + +- Show a walkthrough of the SiO2 on Si example. +- Show a Mueller matrix example? +- Show an anisotropy example? # Statement of need -Why is it necessary? +- Analysis tools should be as open as the research data +- Often hard to translate optical models between different programs, we aim to make it easier +- Keep interoperability with other formats +- Extend basic functionality of vendor fitting programs # Mathematics From c8ce087cadf88bfcbeab301d7c8702248f7e3f2d Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Oct 2022 12:59:10 +0200 Subject: [PATCH 03/35] Disable actions for paper branch --- .github/workflows/benchmark.yml | 2 ++ .github/workflows/linting.yml | 4 ++++ .github/workflows/pytest.yml | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 479854b0..193149cc 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -3,6 +3,8 @@ on: push: branches: - master + branches-ignore: + - joss-paper permissions: contents: write diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 32ff86fb..fbf0bea8 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -3,8 +3,12 @@ name: Linting on: push: branches: [master] + branches-ignore: + - joss-paper pull_request: branches: [master] + branches-ignore: + - joss-paper jobs: black-lint: diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 487e61a9..a2e7125b 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,8 +6,12 @@ name: Pytest on: push: branches: [master] + branches-ignore: + - joss-paper pull_request: branches: [master] + branches-ignore: + - joss-paper jobs: test_python: From c583c790adb9ae75f29fdcf3c69163c0dcd60ec3 Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Oct 2022 18:53:30 +0200 Subject: [PATCH 04/35] Refined summary --- paper/paper.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 6751662c..bf425612 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -23,18 +23,16 @@ bibliography: paper.bib # Summary -- Offers two different algorithms 2x2, 4x4 -- Power comes from extensibility -- We want to enable collaborative work for an ellipsometry platform -- So far: Different solutions from different companies with their own set of models - - Can lead to non-reproducibility -- Inclusion of open available data (refractiveindex.info) - - - -Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. It is important in alot of different fields since optical constants are often deduced by ellipsometry analysis. -However, the software to analyise data is shipped together with the instruments and hence each vendor implements their own dispersion models and fitting models. The open source ellipsometry software pyElli, written in python tries to solve this issue by supplying an open platform for ellipsometry. A major goal in designing the software was to keep it open to extensions from a broader community. -This applies to the optical models used, which try to stay as close as possible to formulas documented in literature [fujiwara]. It also applies to the solving algorithms. It already comes with a 2x2 algorithm which is often used for simple problems and a 4x4 algorithm based on the berreman transfer matrix formulation [berreman], which is able to solve anisotropic materials as well. +Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. It is used throughout various scientific fields to determine the optical constants of materials. +However, ellipsometry always needs numerical analysis to deduce material properties from a measurement. +The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. +Typically, software for such calculations is shipped together with ellipsometers, where each hardware vendor supplies their own version. +Therefore, through different implementation details and different optical models the dispersion models for materials in literature cannot readily be adapted in the lab. +Further, if the supplied software does not support a specific kind of analysis (e.g. anisotropy) scientists need to use third party software, anyways. +In this paper we present the open source python software pyElli, which tackles these problems by offering an open source platform, which is by design easily extendable and adaptable with new optical models or analysis algorithms. It supports querying the popular database for optical constants [refractiveindex.info], too. +The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. It is possible to include vendor-specific models or self-designed models, too. PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is often used for simple problems and a 4x4 matrix algorithm based on the berreman transfer matrix formulation [berreman]. While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. Accordingly, it allows to solve more complex problems like anisotropy (... more examples??). +An [example] in the NORTH analysis toolkit within the research data management software NOMAD by the german FAIRmat consortium shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. +We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. # Example From 0cc29bdd7ce752a08297ef383e93204a0fe61d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marius=20M=C3=BCller?= <49639740+MarJMue@users.noreply.github.com> Date: Tue, 29 Nov 2022 17:57:19 +0100 Subject: [PATCH 05/35] small changes and more notes --- paper/paper.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index bf425612..fe6efdb3 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -25,27 +25,34 @@ bibliography: paper.bib Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. It is used throughout various scientific fields to determine the optical constants of materials. However, ellipsometry always needs numerical analysis to deduce material properties from a measurement. -The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. +The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. The matrix describes the whole light matter interaction - reflection, transmission and absorption - of the sample. Typically, software for such calculations is shipped together with ellipsometers, where each hardware vendor supplies their own version. Therefore, through different implementation details and different optical models the dispersion models for materials in literature cannot readily be adapted in the lab. Further, if the supplied software does not support a specific kind of analysis (e.g. anisotropy) scientists need to use third party software, anyways. In this paper we present the open source python software pyElli, which tackles these problems by offering an open source platform, which is by design easily extendable and adaptable with new optical models or analysis algorithms. It supports querying the popular database for optical constants [refractiveindex.info], too. -The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. It is possible to include vendor-specific models or self-designed models, too. PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is often used for simple problems and a 4x4 matrix algorithm based on the berreman transfer matrix formulation [berreman]. While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. Accordingly, it allows to solve more complex problems like anisotropy (... more examples??). +The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. But it is possible to include vendor-specific models or self-designed models, too. PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is faster, but only applicable for simple problems and a 4x4 matrix algorithm based on the berreman transfer matrix formulation [berreman]. While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. Accordingly, it allows to solve more complex problems like anisotropic samples (... more examples?? I don't know any.). An [example] in the NORTH analysis toolkit within the research data management software NOMAD by the german FAIRmat consortium shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. -# Example - -- Show a walkthrough of the SiO2 on Si example. -- Show a Mueller matrix example? -- Show an anisotropy example? - # Statement of need - Analysis tools should be as open as the research data - Often hard to translate optical models between different programs, we aim to make it easier - Keep interoperability with other formats - Extend basic functionality of vendor fitting programs +- Performant calculations to enable interactive data fitting and advanced minimizer algorithms + +Other Packages: +- pyGTM (more extensive calculations, provides electric field etc., not vectorized) +- pyllama (TMM and SM, not vectorized) +- RayFlare (specialized for solar cells, provides [byrnes] and a scattering matrix algorithm) +- mentions: refellips, EMpy, dtmm, py_matrix + +# Example + +- Show a walkthrough of the SiO2 on Si example. +- Show a Mueller matrix example? +- Show an anisotropy example? (Maybe quote my paper about SiPh4 and show the code in a seperate git repo) # Mathematics From 532a00fef659a2ce6a8f16b4a04b9f86f39007a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marius=20M=C3=BCller?= <49639740+MarJMue@users.noreply.github.com> Date: Mon, 27 Feb 2023 10:38:55 +0100 Subject: [PATCH 06/35] Restructure and more text --- paper/paper.md | 68 ++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index fe6efdb3..70f47354 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -26,52 +26,44 @@ bibliography: paper.bib Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. It is used throughout various scientific fields to determine the optical constants of materials. However, ellipsometry always needs numerical analysis to deduce material properties from a measurement. The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. The matrix describes the whole light matter interaction - reflection, transmission and absorption - of the sample. + Typically, software for such calculations is shipped together with ellipsometers, where each hardware vendor supplies their own version. Therefore, through different implementation details and different optical models the dispersion models for materials in literature cannot readily be adapted in the lab. -Further, if the supplied software does not support a specific kind of analysis (e.g. anisotropy) scientists need to use third party software, anyways. -In this paper we present the open source python software pyElli, which tackles these problems by offering an open source platform, which is by design easily extendable and adaptable with new optical models or analysis algorithms. It supports querying the popular database for optical constants [refractiveindex.info], too. -The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. But it is possible to include vendor-specific models or self-designed models, too. PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is faster, but only applicable for simple problems and a 4x4 matrix algorithm based on the berreman transfer matrix formulation [berreman]. While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. Accordingly, it allows to solve more complex problems like anisotropic samples (... more examples?? I don't know any.). -An [example] in the NORTH analysis toolkit within the research data management software NOMAD by the german FAIRmat consortium shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. -We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. -# Statement of need +Further, if the supplied software does not support a specific kind of analysis (e.g. anisotropic materials or simultaneous fitting of multiple measurements) scientists need to use third party software, anyways. -- Analysis tools should be as open as the research data -- Often hard to translate optical models between different programs, we aim to make it easier -- Keep interoperability with other formats -- Extend basic functionality of vendor fitting programs -- Performant calculations to enable interactive data fitting and advanced minimizer algorithms +In this paper we present the open source python software pyElli, which tackles these problems by offering an open source platform, which is by design easily extendable and adaptable with new optical models or analysis algorithms. -Other Packages: -- pyGTM (more extensive calculations, provides electric field etc., not vectorized) -- pyllama (TMM and SM, not vectorized) -- RayFlare (specialized for solar cells, provides [byrnes] and a scattering matrix algorithm) -- mentions: refellips, EMpy, dtmm, py_matrix +The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. But it is possible to include vendor-specific models or self-designed models, too. -# Example +It leverages the popular public domain database for optical constants [refractiveindex.info] to use citeable reference materials. + +PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is faster, but only applicable for simple problems and a 4x4 matrix algorithm based on the Berreman's transfer matrix formulation [berreman]. While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. Accordingly, it allows to solve more complex problems like anisotropic samples. -- Show a walkthrough of the SiO2 on Si example. -- Show a Mueller matrix example? -- Show an anisotropy example? (Maybe quote my paper about SiPh4 and show the code in a seperate git repo) +# Statement of need -# Mathematics +As it is more and more common to publish research data for reuse and review after the FAIR data guidelines [FAIR]. The same benefits apply to research software and were summerized in the FAIR4RS principles [FAIR4RS]. This is especially important for ellisometric data as the results are tightly related and dependant on the algorithms and models used for evaluation. -Single dollars ($) are required for inline mathematics e.g. $f(x) = e^{\pi/x}$ +Opposite to the vendor provided software, an open source toolkit has many inherent benefits. The optical models used can vary between vendors and the translation may be difficult, if the information is not clearly documented. pyElli's open source nature makes the models extendable, auditable and occurring changes comprehensible. It allows the handling of files from many different measurement devices as importer scripts can be developed as plugins. -Double dollars make self-standing equations: +To provide fast processing of measurement data PyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. +This allows the use advanced fitting algorithms like global optimizers in reasonable evaluation times. On the other hand this makes realtime, in-situ monitoring of layered material growth possible. -$$ -\Theta(x) = \left\{\begin{array}{l} -0\textrm{ if } x < 0\cr -1\textrm{ else} -\end{array}\right. -$$ +An [example] in the NORTH analysis toolkit within the research data management software NOMAD by the german FAIRmat consortium shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. +We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. + +Other notable python open source software for solving transfer-matrices are available, but tend to focus on different aspects: + +* [PyGTM]: Slower, but more extensive general transfer matrix approach, calculates additional parameters, like the electric field strengths in the multilayer stack. +* [PyLlama]: Provides transfer and scattering matrix algorithms (RCWA), better suited to simulate liquid crystals. Non vectorized. +* [RayFlare]: Complete toolkit to simulate solar cells. Provides the same 2x2 [byrnes] algorithm and a scattering matrix approach. +* Additional mentions: [refellips][EMpy][dtmm][py_matrix] + +# Example -You can also use plain \LaTeX for equations -\begin{equation}\label{eq:fourier} -\hat f(\omega) = \int\_{-\infty}^{\infty} f(x) e^{i\omega x} dx -\end{equation} -and refer to \autoref{eq:fourier} from text. +* Show a walkthrough of the SiO2 on Si example. +* Show a Mueller matrix example? +* Show an anisotropy example? (Maybe quote my paper about SiPh4 and show the code in a separate git repo) # Citations @@ -84,9 +76,9 @@ citation) then you can do it with the example BibTeX entry below for @fidgit. For a quick reference, the following citation commands can be used: -- `@author:2001` -> "Author et al. (2001)" -- `[@author:2001]` -> "(Author et al., 2001)" -- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)" +* `@author:2001` -> "Author et al. (2001)" +* `[@author:2001]` -> "(Author et al., 2001)" +* `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)" # Figures @@ -102,4 +94,4 @@ Figure sizes can be customized by adding an optional second parameter: We acknowledge contributions from Brigitta Sipocz, Syrtis Major, and Semyeong Oh, and support from Kathryn Johnston during the genesis of this project. -# References +# References \ No newline at end of file From cb7f4748bc95a4aca77440b3932a82381ac3a220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marius=20M=C3=BCller?= <49639740+MarJMue@users.noreply.github.com> Date: Mon, 27 Feb 2023 10:42:46 +0100 Subject: [PATCH 07/35] Disable requirements action --- .github/workflows/requirements.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/requirements.yml b/.github/workflows/requirements.yml index 432363ad..8eb6e2d0 100644 --- a/.github/workflows/requirements.yml +++ b/.github/workflows/requirements.yml @@ -5,6 +5,12 @@ on: branches: [master] pull_request: branches: [master] + branches-ignore: + - joss-paper + pull_request: + branches: [master] + branches-ignore: + - joss-paper jobs: test_python: From bded00ff0da76966d34e755fcf0d61ddbf844682 Mon Sep 17 00:00:00 2001 From: MarJMue <49639740+MarJMue@users.noreply.github.com> Date: Thu, 2 Mar 2023 12:26:39 +0100 Subject: [PATCH 08/35] formatting --- paper/paper.md | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 70f47354..cc965692 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -23,9 +23,11 @@ bibliography: paper.bib # Summary -Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. It is used throughout various scientific fields to determine the optical constants of materials. +Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. +It is used throughout various scientific fields to determine the optical constants of materials. However, ellipsometry always needs numerical analysis to deduce material properties from a measurement. -The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. The matrix describes the whole light matter interaction - reflection, transmission and absorption - of the sample. +The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. +The matrix describes the whole light matter interaction - reflection, transmission and absorption - of the sample. Typically, software for such calculations is shipped together with ellipsometers, where each hardware vendor supplies their own version. Therefore, through different implementation details and different optical models the dispersion models for materials in literature cannot readily be adapted in the lab. @@ -34,20 +36,29 @@ Further, if the supplied software does not support a specific kind of analysis ( In this paper we present the open source python software pyElli, which tackles these problems by offering an open source platform, which is by design easily extendable and adaptable with new optical models or analysis algorithms. -The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. But it is possible to include vendor-specific models or self-designed models, too. +The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. +But it is possible to include vendor-specific models or self-designed models, too. It leverages the popular public domain database for optical constants [refractiveindex.info] to use citeable reference materials. -PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is faster, but only applicable for simple problems and a 4x4 matrix algorithm based on the Berreman's transfer matrix formulation [berreman]. While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. Accordingly, it allows to solve more complex problems like anisotropic samples. +PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is faster, but only applicable for simple problems and a 4x4 matrix algorithm based on the Berreman's transfer matrix formulation [berreman]. +While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. +Accordingly, it allows to solve more complex problems like anisotropic samples. # Statement of need -As it is more and more common to publish research data for reuse and review after the FAIR data guidelines [FAIR]. The same benefits apply to research software and were summerized in the FAIR4RS principles [FAIR4RS]. This is especially important for ellisometric data as the results are tightly related and dependant on the algorithms and models used for evaluation. +As it is more and more common to publish research data for reuse and review after the FAIR data guidelines [FAIR]. +The same benefits apply to research software and were summarized in the FAIR4RS principles [FAIR4RS]. +This is especially important for ellisometric data as the results are tightly related and dependant on the algorithms and models used for evaluation. -Opposite to the vendor provided software, an open source toolkit has many inherent benefits. The optical models used can vary between vendors and the translation may be difficult, if the information is not clearly documented. pyElli's open source nature makes the models extendable, auditable and occurring changes comprehensible. It allows the handling of files from many different measurement devices as importer scripts can be developed as plugins. +Opposite to the vendor provided software, an open source toolkit has many inherent benefits. +The optical models used can vary between vendors and the translation may be difficult, if the information is not clearly documented. +PyElli's open source nature makes the models extendable, auditable and occurring changes comprehensible. +It allows the handling of files from many different measurement devices as importer scripts can be developed as plugins. -To provide fast processing of measurement data PyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. -This allows the use advanced fitting algorithms like global optimizers in reasonable evaluation times. On the other hand this makes realtime, in-situ monitoring of layered material growth possible. +To provide fast processing of measurement data, PyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. +This allows the use advanced fitting algorithms like global optimizers in reasonable evaluation times. +On the other hand this makes realtime, in-situ monitoring of layered material growth possible. An [example] in the NORTH analysis toolkit within the research data management software NOMAD by the german FAIRmat consortium shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. From bdd9a4c2cbf15e649aef954e843260b8111c254d Mon Sep 17 00:00:00 2001 From: domna Date: Sat, 22 Apr 2023 11:41:59 +0200 Subject: [PATCH 09/35] Disable workflows w/o branch ignore --- .github/workflows/benchmark.yml | 2 -- .github/workflows/linting.yml | 6 ------ .github/workflows/pytest.yml | 6 ------ .github/workflows/requirements.yml | 8 -------- 4 files changed, 22 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 193149cc..479854b0 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -3,8 +3,6 @@ on: push: branches: - master - branches-ignore: - - joss-paper permissions: contents: write diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index fbf0bea8..00c706a0 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -3,12 +3,6 @@ name: Linting on: push: branches: [master] - branches-ignore: - - joss-paper - pull_request: - branches: [master] - branches-ignore: - - joss-paper jobs: black-lint: diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index a2e7125b..d57a8f78 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -6,12 +6,6 @@ name: Pytest on: push: branches: [master] - branches-ignore: - - joss-paper - pull_request: - branches: [master] - branches-ignore: - - joss-paper jobs: test_python: diff --git a/.github/workflows/requirements.yml b/.github/workflows/requirements.yml index 8eb6e2d0..d28949b2 100644 --- a/.github/workflows/requirements.yml +++ b/.github/workflows/requirements.yml @@ -3,14 +3,6 @@ name: Check requirements on: push: branches: [master] - pull_request: - branches: [master] - branches-ignore: - - joss-paper - pull_request: - branches: [master] - branches-ignore: - - joss-paper jobs: test_python: From cefcf8f56306fb5b34fdc72424a66698049f2151 Mon Sep 17 00:00:00 2001 From: domna Date: Sat, 22 Apr 2023 13:03:47 +0200 Subject: [PATCH 10/35] Text refinements and adding basic example --- paper/paper.md | 119 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 82 insertions(+), 37 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index cc965692..3d580515 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -23,58 +23,103 @@ bibliography: paper.bib # Summary -Spectroscopic ellipsometry is an easy applicable and useful tool for todays materials research. -It is used throughout various scientific fields to determine the optical constants of materials. -However, ellipsometry always needs numerical analysis to deduce material properties from a measurement. -The algorithm of choice for such analysis is the so-called transfer-matrix approach, using matrices for each layer to construct a full matrix for the complete system. -The matrix describes the whole light matter interaction - reflection, transmission and absorption - of the sample. +PyElli is an open source analysis tool for linear optical interaction of layered materials written in python. +It mainly targets spectroscopic ellipsometry, but is easily adaptable to transmission or reflection experiments. -Typically, software for such calculations is shipped together with ellipsometers, where each hardware vendor supplies their own version. -Therefore, through different implementation details and different optical models the dispersion models for materials in literature cannot readily be adapted in the lab. +Spectroscopic ellipsometry (SE) is used throughout various scientific fields to determine the optical constants of layered material stacks. +To deduce actual material parameters from an SE experiment, numerical analysis needs to be performed. +This is typically done with the transfer-matrix method (tmm), which associates an interaction matrix to the optical response of each material layer. The full optical response of a material system is then determined by matrix multiplication of the layers interaction matrices. -Further, if the supplied software does not support a specific kind of analysis (e.g. anisotropic materials or simultaneous fitting of multiple measurements) scientists need to use third party software, anyways. +Proprietary software for such calculations is mostly shipped with ellipsometers, where each ellipsometer manufacturer supplies their own adapted version. +While this is great for the workflow in the laboratory, it ties scientists to the optical models and experiments available in the software, is hard to reproduce with other systems and makes data interchange cumbersome. +If such software does not support a specific kind of analysis, e.g., calculating anisotropic materials or simultaneous fitting of multiple measurements, scientists need to use third party software, anyways. -In this paper we present the open source python software pyElli, which tackles these problems by offering an open source platform, which is by design easily extendable and adaptable with new optical models or analysis algorithms. +PyElli offers an open source alternative and tries to stay as compatible as possible to existing solutions. +This allows scientist to adapt pyElli to their needs, either for single experiments not covered by other software or as a full FAIR data [FAIRpaper] analysis pipeline for SE measurements. +It is designed with extensibility and adaptability in mind, to quickly allow scientists developing their custom analysis pipelines. +It also serves the need of FAIR data by supporting recent advances in standardization of ellipsometry data and models. -The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. -But it is possible to include vendor-specific models or self-designed models, too. +The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. +It is easily possible to add new dispersions or use a generic formula dispersion, which is able to parse a text-based formula into a fittable dispersion. -It leverages the popular public domain database for optical constants [refractiveindex.info] to use citeable reference materials. +To quickly build models pyElli includes the popular public domain database for optical constants [refractiveindex.info], which allows users to load literature dispersions with a single line of code. -PyElli currently supports two solving algorithms, one based on a 2x2 matrix algorithm [byrnes] which is faster, but only applicable for simple problems and a 4x4 matrix algorithm based on the Berreman's transfer matrix formulation [berreman]. -While the 2x2 algorithm splits the two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field. -Accordingly, it allows to solve more complex problems like anisotropic samples. +PyElli supports using mutliple solving algorithms, which allows for specialized applications. +Currently, two algorithms using different formulations are available. +The first one is a simple algorithm based on a 2x2 matrix formulation [byrnes] and second one a more complex 4x4 formulation [berreman]. +While the 2x2 algorithm splits the light into two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field, which allows solving more complex problems, e.g., anistropic materials or active media. # Statement of need -As it is more and more common to publish research data for reuse and review after the FAIR data guidelines [FAIR]. -The same benefits apply to research software and were summarized in the FAIR4RS principles [FAIR4RS]. +As it is more and more common to publish research data for reuse and review after the FAIR data guidelines [FAIR]. +The same benefits apply to research software and were summarized in the FAIR4RS principles [FAIR4RS]. This is especially important for ellisometric data as the results are tightly related and dependant on the algorithms and models used for evaluation. -Opposite to the vendor provided software, an open source toolkit has many inherent benefits. -The optical models used can vary between vendors and the translation may be difficult, if the information is not clearly documented. -PyElli's open source nature makes the models extendable, auditable and occurring changes comprehensible. +Opposite to the vendor provided software, an open source toolkit has many inherent benefits. +The optical models used can vary between vendors and the translation may be difficult, if the information is not clearly documented. +PyElli's open source nature makes the models extendable, auditable and occurring changes comprehensible. It allows the handling of files from many different measurement devices as importer scripts can be developed as plugins. To provide fast processing of measurement data, PyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. -This allows the use advanced fitting algorithms like global optimizers in reasonable evaluation times. -On the other hand this makes realtime, in-situ monitoring of layered material growth possible. +This allows the use advanced fitting algorithms like global optimizers in reasonable evaluation times. +On the other hand this makes realtime, in-situ monitoring of layered material growth possible. -An [example] in the NORTH analysis toolkit within the research data management software NOMAD by the german FAIRmat consortium shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. +An [example] in the NORTH analysis toolkit within the research data management software NOMAD [NOMADpaper] by the german FAIRmat consortium [link_to_fairmat] shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. -Other notable python open source software for solving transfer-matrices are available, but tend to focus on different aspects: - -* [PyGTM]: Slower, but more extensive general transfer matrix approach, calculates additional parameters, like the electric field strengths in the multilayer stack. -* [PyLlama]: Provides transfer and scattering matrix algorithms (RCWA), better suited to simulate liquid crystals. Non vectorized. -* [RayFlare]: Complete toolkit to simulate solar cells. Provides the same 2x2 [byrnes] algorithm and a scattering matrix approach. -* Additional mentions: [refellips][EMpy][dtmm][py_matrix] +# Software with similar functionalities -# Example +Other notable python open source software for solving transfer-matrices are available, but tend to focus on different aspects: -* Show a walkthrough of the SiO2 on Si example. -* Show a Mueller matrix example? -* Show an anisotropy example? (Maybe quote my paper about SiPh4 and show the code in a separate git repo) +- [PyGTM]: Slower, but more extensive general transfer matrix approach, calculates additional parameters, like the electric field strengths in the multilayer stack. +- [PyLlama]: Provides transfer and scattering matrix algorithms (RCWA), better suited to simulate liquid crystals. Non vectorized. +- [RayFlare]: Complete toolkit to simulate solar cells. Provides the same 2x2 [byrnes] algorithm and a scattering matrix approach. +- Additional mentions: [refellips][EMpy][dtmm][py_matrix] +- Fast TMM -> AI stuff + +# Application + +Here the SiPh example? + +# Example: Building a simple model + +```python +import numpy as np +import elli +from elli.fitting import ParamsHist, fit +``` + +```python +params = ParamsHist() +params.add("n0", value=1.452) +params.add("n1", value=36.0) +params.add("thickness", value=20) +``` + +```python +SiO2 = elli.Cauchy( + params["n0"], + params["n1"], +).get_mat() +``` + +```python +rii_db = elli.db.RII() +Si = rii_db.get_mat("Si", "Aspnes") +``` + +```python +structure = elli.Structure( + elli.AIR, + [elli.Layer(SiO2, params["thickness"])], + Si, +) +``` + +```python +wavelengths = np.linspace(210, 800, 100) +structure.evaluate(wavelengths, 70) +``` # Citations @@ -87,9 +132,9 @@ citation) then you can do it with the example BibTeX entry below for @fidgit. For a quick reference, the following citation commands can be used: -* `@author:2001` -> "Author et al. (2001)" -* `[@author:2001]` -> "(Author et al., 2001)" -* `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)" +- `@author:2001` -> "Author et al. (2001)" +- `[@author:2001]` -> "(Author et al., 2001)" +- `[@author1:2001; @author2:2001]` -> "(Author1 et al., 2001; Author2 et al., 2002)" # Figures @@ -105,4 +150,4 @@ Figure sizes can be customized by adding an optional second parameter: We acknowledge contributions from Brigitta Sipocz, Syrtis Major, and Semyeong Oh, and support from Kathryn Johnston during the genesis of this project. -# References \ No newline at end of file +# References From 6aa7d815078292a5eb830fbbc914792ad346bda3 Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Apr 2023 09:40:38 +0200 Subject: [PATCH 11/35] modified: paper/paper.md --- paper/paper.md | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 3d580515..d82a6da2 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -28,44 +28,48 @@ It mainly targets spectroscopic ellipsometry, but is easily adaptable to transmi Spectroscopic ellipsometry (SE) is used throughout various scientific fields to determine the optical constants of layered material stacks. To deduce actual material parameters from an SE experiment, numerical analysis needs to be performed. -This is typically done with the transfer-matrix method (tmm), which associates an interaction matrix to the optical response of each material layer. The full optical response of a material system is then determined by matrix multiplication of the layers interaction matrices. +This is typically done with the transfer-matrix method (tmm), which associates an interaction matrix to the optical response of each material layer. The full optical response of a material system is then determined by matrix multiplication of the layers matrices. -Proprietary software for such calculations is mostly shipped with ellipsometers, where each ellipsometer manufacturer supplies their own adapted version. -While this is great for the workflow in the laboratory, it ties scientists to the optical models and experiments available in the software, is hard to reproduce with other systems and makes data interchange cumbersome. -If such software does not support a specific kind of analysis, e.g., calculating anisotropic materials or simultaneous fitting of multiple measurements, scientists need to use third party software, anyways. +Proprietary software for such analysis is mostly shipped with ellipsometers, where each ellipsometer manufacturer supplies their own adapted version. +While this is great for a laboratory workflow, it ties scientists to the optical models and experiments available in the software, is hard to reproduce with other systems and makes data interchange cumbersome. +If software does not support a specific kind of analysis, e.g., calculating anisotropic materials or simultaneous fitting of external experimental parameters, scientists need to use third party software. -PyElli offers an open source alternative and tries to stay as compatible as possible to existing solutions. -This allows scientist to adapt pyElli to their needs, either for single experiments not covered by other software or as a full FAIR data [FAIRpaper] analysis pipeline for SE measurements. -It is designed with extensibility and adaptability in mind, to quickly allow scientists developing their custom analysis pipelines. +PyElli offers an open source alternative to existing solutions while staying as compatible as possible. +This allows scientist to adapt pyElli to their needs, either for custom experiments not covered by other software or as a full FAIR data [FAIRpaper] analysis pipeline for SE measurements. +It is designed with extensibility and adaptability in mind, to allow scientists to easily develop their custom analysis pipelines. It also serves the need of FAIR data by supporting recent advances in standardization of ellipsometry data and models. -The optical models used, try to stay as close as possible to formulas documented in literature [fujiwara]. -It is easily possible to add new dispersions or use a generic formula dispersion, which is able to parse a text-based formula into a fittable dispersion. +The optical models used, try to stay as close as possible to literature [fujiwara]. +It is possible to add new dispersions or use a generic formula dispersion, which is able to parse a text-based formula into a fittable dispersion. -To quickly build models pyElli includes the popular public domain database for optical constants [refractiveindex.info], which allows users to load literature dispersions with a single line of code. +To analyse materials it is helpful to have a database of pre-defined models to use. +For this purpose, pyElli includes the popular public domain database for optical constants [refractiveindex.info], which allows users to load literature dispersions with a single line of code. PyElli supports using mutliple solving algorithms, which allows for specialized applications. Currently, two algorithms using different formulations are available. The first one is a simple algorithm based on a 2x2 matrix formulation [byrnes] and second one a more complex 4x4 formulation [berreman]. While the 2x2 algorithm splits the light into two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field, which allows solving more complex problems, e.g., anistropic materials or active media. -# Statement of need +For fast processing pyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. +This allows the usage of advanced fitting algorithms, i.e., global optimizers, in reasonable evaluation times and enables embedded in-situ monitoring of overlayer growth possible. +The usage of python and vectorization libraries allows for easy adoption for artificial intelligence based analysis of SE data. -As it is more and more common to publish research data for reuse and review after the FAIR data guidelines [FAIR]. -The same benefits apply to research software and were summarized in the FAIR4RS principles [FAIR4RS]. -This is especially important for ellisometric data as the results are tightly related and dependant on the algorithms and models used for evaluation. +# Statement of need -Opposite to the vendor provided software, an open source toolkit has many inherent benefits. -The optical models used can vary between vendors and the translation may be difficult, if the information is not clearly documented. -PyElli's open source nature makes the models extendable, auditable and occurring changes comprehensible. -It allows the handling of files from many different measurement devices as importer scripts can be developed as plugins. +The importance of publishing data according to the FAIR principles [FAIRpaper] is growing. +Many research journals already require authors to add supporting data and sponsors are starting to demand data governance from institutes and researchers. +Since not only the data itself is necessary to reproduce data, but also the software the data was created with, the FAIR principles were recently extended to apply to research software, too [FAIR4RS]. +We believe that producing FAIR data and using a FAIR and open analysis pipeline is especially important for SE as the results are tightly related and dependent on the algorithms and models used for evaluation. -To provide fast processing of measurement data, PyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. -This allows the use advanced fitting algorithms like global optimizers in reasonable evaluation times. -On the other hand this makes realtime, in-situ monitoring of layered material growth possible. +An open source toolkit has many inherent benefits over proprietary software. +For SE the optical models vary between manufacturers and the translation may be difficult, if clear documentation is not available. +PyElli's open source nature makes optical models extendable, auditable and occurring changes comprehensible. +Each version of pyElli is associated a doi and a zenodo upload, which allows for reliable referencing and reproducing of analysis results. +It supports NXellipsometry [NXellipsometry], a recent advancement in standardization of SE data. +The standard is developed by the german consortium FAIRmat [link_to_fairmat] within the german National Research Data Infrastracture (NFDI) and is accepted by the NeXus International Advisory Committee (NIAC), which is maintaining beamline-standards in the NeXus format since 20+ years. +PyElli is also available as an example [example] and a cloud-based analysis tool [link_to_north] in the research data management software NOMAD [NOMADpaper]. -An [example] in the NORTH analysis toolkit within the research data management software NOMAD [NOMADpaper] by the german FAIRmat consortium [link_to_fairmat] shows that the software can easily be integrated in emerging cloud-based analysis tools for science and supports a standardization of ellipsometry data formats within this project [NXellispometry]. -We hope that the software contributes to easier analysis and reproducibility, as well as FAIR data management within the ellipsometry community. +In summary, we believe and hope that pyElli will further contribute to easier analysis, reproducibility as well as FAIR data management within the ellipsometry community. # Software with similar functionalities From af750c4a9b0a9f6813e35712bc0a620bd40b8a87 Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Apr 2023 09:47:12 +0200 Subject: [PATCH 12/35] Adds paper generation workflow --- .github/workflows/draft-pdf.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/draft-pdf.yml diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 00000000..e55dc3cb --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,19 @@ +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + paper-path: paper/paper.md + - name: Upload + uses: actions/upload-artifact@v1 + with: + name: paper + path: paper/paper.pdf From 86787b35454b8f2ee2b1d7341119e61aee520e99 Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Apr 2023 10:43:27 +0200 Subject: [PATCH 13/35] Adds example text --- paper/fit_decorator_example.png | Bin 0 -> 128743 bytes paper/paper.md | 50 ++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 paper/fit_decorator_example.png diff --git a/paper/fit_decorator_example.png b/paper/fit_decorator_example.png new file mode 100644 index 0000000000000000000000000000000000000000..3b04ad70ae894bed2e585057a4f993a6c145f304 GIT binary patch literal 128743 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 A5^q*gf#sl7Ly=1->p=wNzu;6lY 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 Date: Mon, 24 Apr 2023 10:51:15 +0200 Subject: [PATCH 14/35] Renaming and refinements --- paper/paper.md | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 626dedfa..d44af330 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -1,5 +1,5 @@ --- -title: "pyElli: A reproducibly and comprehensible open source ellipsometry analysis tool" +title: "pyElli: An open source ellipsometry analysis tool for FAIR data" tags: - Python - spectroscopy @@ -17,7 +17,7 @@ authors: affiliations: - name: Institute of Experimental Physics I and Center for Materials Research (ZfM/LaMa), Justus Liebig University Giessen, Heinrich-Buff-Ring 16, Giessen, D-35392 Germany index: 1 -date: 31 July 2022 +date: 24 April 2023 bibliography: paper.bib --- @@ -157,7 +157,7 @@ structure = elli.Structure( ``` Eventually, everything left to do is triggering a calculation with calling `evaluation(...)` on the structure. -We use a `wavelengths` array from $$210\;nm$$ to $$800\;nm$$ for the calculation range and an angle of incidence of $$70$$ degree (second parameter of evaluate). +We use a `wavelengths` array from $210\;nm$ to $800\;nm$ for the calculation range and an angle of incidence of $70$ degree (second parameter of evaluate). ```python wavelengths = np.linspace(210, 800, 100) @@ -171,9 +171,13 @@ Figure \autoref{fig:fit_dec_example} shows the output when used with this exampl ![The ipywidgets based fitting gui.\label{fig:fit_dec_example}](fit_decorator_example.png) You find additional information on how this is done in our examples [link_to_examples]. -# Citations +# Acknowledgements + +Probably sbyrnes and the original creator of the base we used. + +# References -Citations to entries in paper.bib should be in + From e6c081a8f1792e14baed897ebfe2bb78823a08ab Mon Sep 17 00:00:00 2001 From: domna Date: Mon, 24 Apr 2023 12:56:47 +0200 Subject: [PATCH 15/35] Refinements, check links and refs --- paper/paper.bib | 94 +++++++++++++++++++++++++++++++++++++++++++++++++ paper/paper.md | 28 +++++++++------ 2 files changed, 111 insertions(+), 11 deletions(-) diff --git a/paper/paper.bib b/paper/paper.bib index e69de29b..bae58383 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -0,0 +1,94 @@ +@Article{Wilkinson2016, +author={Wilkinson, Mark D. +and Dumontier, Michel +and Aalbersberg, IJsbrand Jan +and Appleton, Gabrielle +and Axton, Myles +and Baak, Arie +and Blomberg, Niklas +and Boiten, Jan-Willem +and da Silva Santos, Luiz Bonino +and Bourne, Philip E. +and Bouwman, Jildau +and Brookes, Anthony J. +and Clark, Tim +and Crosas, Merc{\`e} +and Dillo, Ingrid +and Dumon, Olivier +and Edmunds, Scott +and Evelo, Chris T. +and Finkers, Richard +and Gonzalez-Beltran, Alejandra +and Gray, Alasdair J.G. +and Groth, Paul +and Goble, Carole +and Grethe, Jeffrey S. +and Heringa, Jaap +and 't Hoen, Peter A.C +and Hooft, Rob +and Kuhn, Tobias +and Kok, Ruben +and Kok, Joost +and Lusher, Scott J. +and Martone, Maryann E. +and Mons, Albert +and Packer, Abel L. +and Persson, Bengt +and Rocca-Serra, Philippe +and Roos, Marco +and van Schaik, Rene +and Sansone, Susanna-Assunta +and Schultes, Erik +and Sengstag, Thierry +and Slater, Ted +and Strawn, George +and Swertz, Morris A. +and Thompson, Mark +and van der Lei, Johan +and van Mulligen, Erik +and Velterop, Jan +and Waagmeester, Andra +and Wittenburg, Peter +and Wolstencroft, Katherine +and Zhao, Jun +and Mons, Barend}, +title={The FAIR Guiding Principles for scientific data management and stewardship}, +journal={Scientific Data}, +year={2016}, +month={Mar}, +day={15}, +volume={3}, +number={1}, +pages={160018}, +abstract={There is an urgent need to improve the infrastructure supporting the reuse of scholarly data. A diverse set of stakeholders---representing academia, industry, funding agencies, and scholarly publishers---have come together to design and jointly endorse a concise and measureable set of principles that we refer to as the FAIR Data Principles. The intent is that these may act as a guideline for those wishing to enhance the reusability of their data holdings. Distinct from peer initiatives that focus on the human scholar, the FAIR Principles put specific emphasis on enhancing the ability of machines to automatically find and use the data, in addition to supporting its reuse by individuals. This Comment is the first formal publication of the FAIR Principles, and includes the rationale behind them, and some exemplar implementations in the community.}, +issn={2052-4463}, +doi={10.1038/sdata.2016.18}, +url={https://doi.org/10.1038/sdata.2016.18} +} + +@Article{Barker2022, +author={Barker, Michelle +and Chue Hong, Neil P. +and Katz, Daniel S. +and Lamprecht, Anna-Lena +and Martinez-Ortiz, Carlos +and Psomopoulos, Fotis +and Harrow, Jennifer +and Castro, Leyla Jael +and Gruenpeter, Morane +and Martinez, Paula Andrea +and Honeyman, Tom}, +title={Introducing the FAIR Principles for research software}, +journal={Scientific Data}, +year={2022}, +month={Oct}, +day={14}, +volume={9}, +number={1}, +pages={622}, +abstract={Research software is a fundamental and vital part of research, yet significant challenges to discoverability, productivity, quality, reproducibility, and sustainability exist. Improving the practice of scholarship is a common goal of the open science, open source, and FAIR (Findable, Accessible, Interoperable and Reusable) communities and research software is now being understood as a type of digital object to which FAIR should be applied. This emergence reflects a maturation of the research community to better understand the crucial role of FAIR research software in maximising research value. The FAIR for Research Software (FAIR4RS) Working Group has adapted the FAIR Guiding Principles to create the FAIR Principles for Research Software (FAIR4RS Principles). The contents and context of the FAIR4RS Principles are summarised here to provide the basis for discussion of their adoption. Examples of implementation by organisations are provided to share information on how to maximise the value of research outputs, and to encourage others to amplify the importance and impact of this work.}, +issn={2052-4463}, +doi={10.1038/s41597-022-01710-x}, +url={https://doi.org/10.1038/s41597-022-01710-x} +} + diff --git a/paper/paper.md b/paper/paper.md index d44af330..53d81594 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -39,7 +39,7 @@ This allows scientist to adapt pyElli to their needs, either for custom experime It is designed with extensibility and adaptability in mind, to allow scientists to easily develop their custom analysis pipelines. It also serves the need of FAIR data by supporting recent advances in standardization of ellipsometry data and models. -The optical models used, try to stay as close as possible to literature [fujiwara]. +The optical models used try to stay as close as possible to literature [fujiwara]. It is possible to add new dispersions or use a generic formula dispersion, which is able to parse a text-based formula into a fittable dispersion. To analyse materials it is helpful to have a database of pre-defined models to use. @@ -51,14 +51,14 @@ The first one is a simple algorithm based on a 2x2 matrix formulation [byrnes] a While the 2x2 algorithm splits the light into two perpendicular polarized beams and solves them separately, the 4x4 matrix approach solves the complete electromagnetic field, which allows solving more complex problems, e.g., anistropic materials or active media. For fast processing pyElli's algorithms are fully vectorized for multiple wavelengths and leverage the numerical algebra libraries [NumPy] and [SciPy]. -This allows the usage of advanced fitting algorithms, i.e., global optimizers, in reasonable evaluation times and enables embedded in-situ monitoring of overlayer growth possible. +This allows the usage of advanced fitting algorithms, i.e., global optimizers, in reasonable evaluation times and enables embedded in-situ monitoring of overlayer growth. The usage of python and vectorization libraries allows for easy adoption for artificial intelligence based analysis of SE data. # Statement of need -The importance of publishing data according to the FAIR principles [FAIRpaper] is growing. +The importance of publishing data according to the FAIR principles `[@Wilkinson2016]` is growing. Many research journals already require authors to add supporting data and sponsors are starting to demand data governance from institutes and researchers. -Since not only the data itself is necessary to reproduce data, but also the software the data was created with, the FAIR principles were recently extended to apply to research software, too [FAIR4RS]. +Since not only the data itself is necessary to reproduce data, but also the software the data was created with, the FAIR principles were recently extended to apply to research software, too `[@Barker2022]`. We believe that producing FAIR data and using a FAIR and open analysis pipeline is especially important for SE as the results are tightly related and dependent on the algorithms and models used for evaluation. An open source toolkit has many inherent benefits over proprietary software. @@ -105,7 +105,7 @@ First, we instantiate the paramters. We only need `n0` and `n1` for SiO2, so we keep all other values to default, which is zero in this case. Additionally, we introduce the thickness of SiO2 in nanometers. Here, you may also add additional settings for lmfit parameters. -For details which parameters to use, you may refer to their documentation or consult our verbose basic example [link_to_basic_example]. +For a list of parameter arguments you may refer to lmfit's documentation or consult our verbose [basic example](https://pyelli.readthedocs.io/en/stable/auto_examples/plot_01_basic_usage.html#sphx-glr-auto-examples-plot-01-basic-usage-py). ```python params = ParamsHist() @@ -117,11 +117,12 @@ params.add("thickness", value=20) Now, the cauchy model is created by using the `Cauchy` class. Each dispersion has it's own class and you'll find a list of different dispersions in our documentation [link_to_dispersions]. It is important to note that there are two types of parameters for dispersions. -**Single parameters**, which only appear once in the formula, e.g., `n0` and `n1` are single parameters and **repeated parameters** which represent one element of a sum and may be used in an arbitrary number. +**Single parameters**, which only appear once in the formula, e.g., `n0` and `n1` are single parameters and **repeated parameters** which represent one element of a sum and may be used in an setwise arbitrary amount. Single parameters are added to the class constructor, like `Cauchy(param1, ...)` and repeated parameters are added via the `.add(...)` method, like `Sellmeier().add(A=param_a, B=param_b)`. -The possible single and repeated parameters for each dispersion are listed in the documentation. -Since we are using a cauchy dispersion here, we only need to specify single parameters. -Subsequently, the `.get_mat()` function is called to automatically convert the dispersion into an isotropic material. +The available single and repeated parameters are listed in the documentation for each dispersion. +We are using a cauchy model here, which only takes single parameters. +Therefore, we pass all parameters to the class constructor. +Subsequently, the `.get_mat()` function is called on the created object to automatically convert the dispersion into an isotropic material. ```python SiO2 = elli.Cauchy( @@ -131,6 +132,8 @@ SiO2 = elli.Cauchy( ``` To request tabulated literature values for silicon, we instantiate the refractiveindex.info database and query it for the material (`Si`) and author (`Aspnes`). +It is possible to search the database first to get a list of matching entries. +See the [documentation](https://pyelli.readthedocs.io/en/stable/database.html) for details. ```python rii_db = elli.db.RII() @@ -164,12 +167,12 @@ wavelengths = np.linspace(210, 800, 100) result = structure.evaluate(wavelengths, 70) ``` -The calculation is stored in the `result` variable, which is an `Result` object [link_to_docs_result]. +The calculation is stored in the `result` variable, which is an [`Result` object](https://pyelli.readthedocs.io/en/stable/result.html). This objects holds the calculation results and you simple can call `psi`, `delta`, 'R', etc. to get your desired output. We may also use the `@fit` decorator in `elli.fitting` to automatically show a widget-based fitting gui for jupyter notebooks. Figure \autoref{fig:fit_dec_example} shows the output when used with this example model and some experimental data. ![The ipywidgets based fitting gui.\label{fig:fit_dec_example}](fit_decorator_example.png) -You find additional information on how this is done in our examples [link_to_examples]. +You find additional information on how this is done in our [examples](https://pyelli.readthedocs.io/en/stable/auto_examples/index.html). # Acknowledgements @@ -177,6 +180,9 @@ Probably sbyrnes and the original creator of the base we used. # References +- `@Wilkinson2016` +- `@Barker2022` + BPZ8Snz&n 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 A5^q*gf#sl7Ly=1->p=wNzu;6lY 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 Date: Thu, 24 Apr 2025 09:06:57 +0200 Subject: [PATCH 34/35] Update bib file --- paper/paper.bib | 487 ++++++++++++++++++++++++------------------------ 1 file changed, 248 insertions(+), 239 deletions(-) diff --git a/paper/paper.bib b/paper/paper.bib index 66798165..af5c5af6 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -1,117 +1,126 @@ @Article{Wilkinson2016, -author={Wilkinson, Mark D. -and Dumontier, Michel -and Aalbersberg, IJsbrand Jan -and Appleton, Gabrielle -and Axton, Myles -and Baak, Arie -and Blomberg, Niklas -and Boiten, Jan-Willem -and da Silva Santos, Luiz Bonino -and Bourne, Philip E. -and Bouwman, Jildau -and Brookes, Anthony J. -and Clark, Tim -and Crosas, Merc{\`e} -and Dillo, Ingrid -and Dumon, Olivier -and Edmunds, Scott -and Evelo, Chris T. -and Finkers, Richard -and Gonzalez-Beltran, Alejandra -and Gray, Alasdair J.G. -and Groth, Paul -and Goble, Carole -and Grethe, Jeffrey S. -and Heringa, Jaap -and 't Hoen, Peter A.C -and Hooft, Rob -and Kuhn, Tobias -and Kok, Ruben -and Kok, Joost -and Lusher, Scott J. -and Martone, Maryann E. -and Mons, Albert -and Packer, Abel L. -and Persson, Bengt -and Rocca-Serra, Philippe -and Roos, Marco -and van Schaik, Rene -and Sansone, Susanna-Assunta -and Schultes, Erik -and Sengstag, Thierry -and Slater, Ted -and Strawn, George -and Swertz, Morris A. -and Thompson, Mark -and van der Lei, Johan -and van Mulligen, Erik -and Velterop, Jan -and Waagmeester, Andra -and Wittenburg, Peter -and Wolstencroft, Katherine -and Zhao, Jun -and Mons, Barend}, -title={The FAIR Guiding Principles for scientific data management and stewardship}, -journal={Scientific Data}, -year={2016}, -month={Mar}, -day={15}, -volume={3}, -number={1}, -pages={160018}, -abstract={There is an urgent need to improve the infrastructure supporting the reuse of scholarly data. A diverse set of stakeholders---representing academia, industry, funding agencies, and scholarly publishers---have come together to design and jointly endorse a concise and measureable set of principles that we refer to as the FAIR Data Principles. The intent is that these may act as a guideline for those wishing to enhance the reusability of their data holdings. Distinct from peer initiatives that focus on the human scholar, the FAIR Principles put specific emphasis on enhancing the ability of machines to automatically find and use the data, in addition to supporting its reuse by individuals. This Comment is the first formal publication of the FAIR Principles, and includes the rationale behind them, and some exemplar implementations in the community.}, -issn={2052-4463}, -doi={10.1038/sdata.2016.18}, -url={https://doi.org/10.1038/sdata.2016.18} + author={Wilkinson, Mark D. + and Dumontier, Michel + and Aalbersberg, IJsbrand Jan + and Appleton, Gabrielle + and Axton, Myles + and Baak, Arie + and Blomberg, Niklas + and Boiten, Jan-Willem + and da Silva Santos, Luiz Bonino + and Bourne, Philip E. + and Bouwman, Jildau + and Brookes, Anthony J. + and Clark, Tim + and Crosas, Merc{\`e} + and Dillo, Ingrid + and Dumon, Olivier + and Edmunds, Scott + and Evelo, Chris T. + and Finkers, Richard + and Gonzalez-Beltran, Alejandra + and Gray, Alasdair J.G. + and Groth, Paul + and Goble, Carole + and Grethe, Jeffrey S. + and Heringa, Jaap + and 't Hoen, Peter A.C + and Hooft, Rob + and Kuhn, Tobias + and Kok, Ruben + and Kok, Joost + and Lusher, Scott J. + and Martone, Maryann E. + and Mons, Albert + and Packer, Abel L. + and Persson, Bengt + and Rocca-Serra, Philippe + and Roos, Marco + and van Schaik, Rene + and Sansone, Susanna-Assunta + and Schultes, Erik + and Sengstag, Thierry + and Slater, Ted + and Strawn, George + and Swertz, Morris A. + and Thompson, Mark + and van der Lei, Johan + and van Mulligen, Erik + and Velterop, Jan + and Waagmeester, Andra + and Wittenburg, Peter + and Wolstencroft, Katherine + and Zhao, Jun + and Mons, Barend}, + title={The FAIR Guiding Principles for scientific data management and stewardship}, + journal={Scientific Data}, + year={2016}, + month={Mar}, + day={15}, + volume={3}, + number={1}, + pages={160018}, + abstract={There is an urgent need to improve the infrastructure supporting the reuse of scholarly data. A diverse set of stakeholders---representing academia, industry, funding agencies, and scholarly publishers---have come together to design and jointly endorse a concise and measureable set of principles that we refer to as the FAIR Data Principles. The intent is that these may act as a guideline for those wishing to enhance the reusability of their data holdings. Distinct from peer initiatives that focus on the human scholar, the FAIR Principles put specific emphasis on enhancing the ability of machines to automatically find and use the data, in addition to supporting its reuse by individuals. This Comment is the first formal publication of the FAIR Principles, and includes the rationale behind them, and some exemplar implementations in the community.}, + issn={2052-4463}, + doi={10.1038/sdata.2016.18}, + url={https://doi.org/10.1038/sdata.2016.18} } @Article{Barker2022, -author={Barker, Michelle -and Chue Hong, Neil P. -and Katz, Daniel S. -and Lamprecht, Anna-Lena -and Martinez-Ortiz, Carlos -and Psomopoulos, Fotis -and Harrow, Jennifer -and Castro, Leyla Jael -and Gruenpeter, Morane -and Martinez, Paula Andrea -and Honeyman, Tom}, -title={Introducing the FAIR Principles for research software}, -journal={Scientific Data}, -year={2022}, -month={Oct}, -day={14}, -volume={9}, -number={1}, -pages={622}, -abstract={Research software is a fundamental and vital part of research, yet significant challenges to discoverability, productivity, quality, reproducibility, and sustainability exist. Improving the practice of scholarship is a common goal of the open science, open source, and FAIR (Findable, Accessible, Interoperable and Reusable) communities and research software is now being understood as a type of digital object to which FAIR should be applied. This emergence reflects a maturation of the research community to better understand the crucial role of FAIR research software in maximising research value. The FAIR for Research Software (FAIR4RS) Working Group has adapted the FAIR Guiding Principles to create the FAIR Principles for Research Software (FAIR4RS Principles). The contents and context of the FAIR4RS Principles are summarised here to provide the basis for discussion of their adoption. Examples of implementation by organisations are provided to share information on how to maximise the value of research outputs, and to encourage others to amplify the importance and impact of this work.}, -issn={2052-4463}, -doi={10.1038/s41597-022-01710-x}, -url={https://doi.org/10.1038/s41597-022-01710-x} + author={Barker, Michelle + and Chue Hong, Neil P. + and Katz, Daniel S. + and Lamprecht, Anna-Lena + and Martinez-Ortiz, Carlos + and Psomopoulos, Fotis + and Harrow, Jennifer + and Castro, Leyla Jael + and Gruenpeter, Morane + and Martinez, Paula Andrea + and Honeyman, Tom}, + title={Introducing the FAIR Principles for research software}, + journal={Scientific Data}, + year={2022}, + month={Oct}, + day={14}, + volume={9}, + number={1}, + pages={622}, + abstract={Research software is a fundamental and vital part of research, yet significant challenges to discoverability, productivity, quality, reproducibility, and sustainability exist. Improving the practice of scholarship is a common goal of the open science, open source, and FAIR (Findable, Accessible, Interoperable and Reusable) communities and research software is now being understood as a type of digital object to which FAIR should be applied. This emergence reflects a maturation of the research community to better understand the crucial role of FAIR research software in maximising research value. The FAIR for Research Software (FAIR4RS) Working Group has adapted the FAIR Guiding Principles to create the FAIR Principles for Research Software (FAIR4RS Principles). The contents and context of the FAIR4RS Principles are summarised here to provide the basis for discussion of their adoption. Examples of implementation by organisations are provided to share information on how to maximise the value of research outputs, and to encourage others to amplify the importance and impact of this work.}, + issn={2052-4463}, + doi={10.1038/s41597-022-01710-x}, + url={https://doi.org/10.1038/s41597-022-01710-x} } @article{Konnecke2015, -author = "K{\"{o}}nnecke, Mark and Akeroyd, Frederick A. and Bernstein, Herbert J. and Brewster, Aaron S. and Campbell, Stuart I. and Clausen, Bj{\"{o}}rn and Cottrell, Stephen and Hoffmann, Jens Uwe and Jemian, Pete R. and M{\"{a}}nnicke, David and Osborn, Raymond and Peterson, Peter F. and Richter, Tobias and Suzuki, Jiro and Watts, Benjamin and Wintersberger, Eugen and Wuttke, Joachim", -title = "{The NeXus data format}", -journal = "Journal of Applied Crystallography", -year = "2015", -volume = "48", -number = "1", -pages = "301--305", -month = "Feb", -doi = {10.1107/S1600576714027575}, -url = {https://doi.org/10.1107/S1600576714027575}, -abstract = {NeXus is an effort by an international group of scientists to define a common data exchange and archival format for neutron, X-ray and muon experiments. NeXus is built on top of the scientific data format HDF5 and adds domain-specific rules for organizing data within HDF5 files, in addition to a dictionary of well defined domain-specific field names. The NeXus data format has two purposes. First, it defines a format that can serve as a container for all relevant data associated with a beamline. This is a very important use case. Second, it defines standards in the form of application definitions for the exchange of data between applications. NeXus provides structures for raw experimental data as well as for processed data.}, -keywords = {NeXus data format, data exchange, data archiving, platform-independent, HDF5}, + author = "K{\"{o}}nnecke, Mark and Akeroyd, Frederick A. and Bernstein, Herbert J. and Brewster, Aaron S. and Campbell, Stuart I. and Clausen, Bj{\"{o}}rn and Cottrell, Stephen and Hoffmann, Jens Uwe and Jemian, Pete R. and M{\"{a}}nnicke, David and Osborn, Raymond and Peterson, Peter F. and Richter, Tobias and Suzuki, Jiro and Watts, Benjamin and Wintersberger, Eugen and Wuttke, Joachim", + title = "{The NeXus data format}", + journal = "Journal of Applied Crystallography", + year = "2015", + volume = "48", + number = "1", + pages = "301--305", + month = "Feb", + doi = {10.1107/S1600576714027575}, + url = {https://doi.org/10.1107/S1600576714027575}, + abstract = {NeXus is an effort by an international group of scientists to define a common data exchange and archival format for neutron, X-ray and muon experiments. NeXus is built on top of the scientific data format HDF5 and adds domain-specific rules for organizing data within HDF5 files, in addition to a dictionary of well defined domain-specific field names. The NeXus data format has two purposes. First, it defines a format that can serve as a container for all relevant data associated with a beamline. This is a very important use case. Second, it defines standards in the form of application definitions for the exchange of data between applications. NeXus provides structures for raw experimental data as well as for processed data.}, + keywords = {NeXus data format, data exchange, data archiving, platform-independent, HDF5}, } -@online{rii, +@article{rii, author = {Mikhail N. Polyanskiy}, - title = {Refractive index database}, - url = {https://refractiveindex.info}, - urldate = {2025-03-11} + title = {Refractiveindex.info database of optical constants}, + journal = "Scientific Data", + year = "2024", + volume = "11", + number = "1", + pages = "94", + month = "Jan", + day = "18", + issn={2052-4463}, + doi = {10.1038/s41597-023-02898-2}, + url = {https://doi.org/10.1038/s41597-023-02898-2}, + abstract = {We introduce the refractiveindex.info database, a comprehensive open-source repository containing optical constants for a wide array of materials, and describe in detail the underlying dataset. This collection, derived from a meticulous compilation of data sourced from peer-reviewed publications, manufacturers’ datasheets, and authoritative texts, aims to advance research in optics and photonics. The data is stored using a YAML-based format, ensuring integrity, consistency, and ease of access. Each record is accompanied by detailed metadata, facilitating a comprehensive understanding and efficient utilization of the data. In this descriptor, we outline the data curation protocols and the file format used for data records, and briefly demonstrate how the data can be organized in a user-friendly fashion akin to the books in a traditional library.}, } @online{castany, @@ -122,44 +131,43 @@ @online{castany } @Article{ harris2020array, - title = {Array programming with {NumPy}}, - author = {Charles R. Harris and K. Jarrod Millman and St{\'{e}}fan J. - van der Walt and Ralf Gommers and Pauli Virtanen and David - Cournapeau and Eric Wieser and Julian Taylor and Sebastian - Berg and Nathaniel J. Smith and Robert Kern and Matti Picus - and Stephan Hoyer and Marten H. van Kerkwijk and Matthew - Brett and Allan Haldane and Jaime Fern{\'{a}}ndez del - R{\'{i}}o and Mark Wiebe and Pearu Peterson and Pierre - G{\'{e}}rard-Marchant and Kevin Sheppard and Tyler Reddy and - Warren Weckesser and Hameer Abbasi and Christoph Gohlke and - Travis E. Oliphant}, - year = {2020}, - month = sep, - journal = {Nature}, - volume = {585}, - number = {7825}, - pages = {357--362}, - doi = {10.1038/s41586-020-2649-2}, - publisher = {Springer Science and Business Media {LLC}}, - url = {https://doi.org/10.1038/s41586-020-2649-2} + title = {Array programming with {NumPy}}, + author = {Charles R. Harris and K. Jarrod Millman and St{\'{e}}fan J. + van der Walt and Ralf Gommers and Pauli Virtanen and David + Cournapeau and Eric Wieser and Julian Taylor and Sebastian + Berg and Nathaniel J. Smith and Robert Kern and Matti Picus + and Stephan Hoyer and Marten H. van Kerkwijk and Matthew + Brett and Allan Haldane and Jaime Fern{\'{a}}ndez del + R{\'{i}}o and Mark Wiebe and Pearu Peterson and Pierre + G{\'{e}}rard-Marchant and Kevin Sheppard and Tyler Reddy and + Warren Weckesser and Hameer Abbasi and Christoph Gohlke and + Travis E. Oliphant}, + year = {2020}, + month = sep, + journal = {Nature}, + volume = {585}, + number = {7825}, + pages = {357--362}, + doi = {10.1038/s41586-020-2649-2}, + publisher = {Springer Science and Business Media {LLC}}, + url = {https://doi.org/10.1038/s41586-020-2649-2} } @ARTICLE{2020SciPy-NMeth, author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and - Haberland, Matt and Reddy, Tyler and Cournapeau, David and - Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and - Bright, Jonathan and {van der Walt}, St{\'e}fan J. and - Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and - Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and - Kern, Robert and Larson, Eric and Carey, C J and - Polat, {\.I}lhan and Feng, Yu and Moore, Eric W. and - {VanderPlas}, Jake and Laxalde, Denis and Perktold, Josef and - Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and - Harris, Charles R. and Archibald, Anne M. and - Ribeiro, Ant{\^o}nio H. and Pedregosa, Fabian and - {van Mulbregt}, Paul and {SciPy 1.0 Contributors}}, - title = {{{SciPy} 1.0: Fundamental Algorithms for Scientific - Computing in Python}}, + Haberland, Matt and Reddy, Tyler and Cournapeau, David and + Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and + Bright, Jonathan and {van der Walt}, St{\'e}fan J. and + Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and + Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and + Kern, Robert and Larson, Eric and Carey, C J and + Polat, {\.I}lhan and Feng, Yu and Moore, Eric W. and + {VanderPlas}, Jake and Laxalde, Denis and Perktold, Josef and + Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and + Harris, Charles R. and Archibald, Anne M. and + Ribeiro, Ant{\^o}nio H. and Pedregosa, Fabian and + {van Mulbregt}, Paul and {SciPy 1.0 Contributors}}, + title = {{{SciPy} 1.0: Fundamental Algorithms for Scientific Computing in Python}}, journal = {Nature Methods}, year = {2020}, volume = {17}, @@ -169,74 +177,74 @@ @ARTICLE{2020SciPy-NMeth } @article{Berreman72, -author = {Dwight W. Berreman}, -journal = {J. Opt. Soc. Am.}, -keywords = {Cholesteric liquid crystals; Faraday effect; Liquid crystals; Magnetic fields; Nonlinear effects; Optical activity}, -number = {4}, -pages = {502--510}, -publisher = {Optica Publishing Group}, -title = {Optics in Stratified and Anisotropic Media: 4{\texttimes}4-Matrix Formulation}, -volume = {62}, -month = {Apr}, -year = {1972}, -url = {https://opg.optica.org/abstract.cfm?URI=josa-62-4-502}, -doi = {10.1364/JOSA.62.000502}, -abstract = {A 4{\texttimes}4-matrix technique was recently introduced by Teitler and Henvis for finding propagation and reflection by stratified anisotropic media. It is more general than the 2{\texttimes}2-matrix technique developed by Jones and by Abel\`{e}s and is applicable to problems involving media of low optical symmetry. A little later, we developed a 4{\texttimes}4 differential-matrix technique in order to solve the problem of reflection and transmission by cholesteric liquid crystals and other liquid crystals with continuously varying but planar ordering. Our technique is mathematically equivalent to that of Teitler and Henvis, but we used a somewhat different approach. We start with a 6{\texttimes}6-matrix representation of Maxwell's equations that can include Faraday rotation and optical activity. From this, we derive expressions for 16 differential-matrix elements so that a wide variety of specific problems can be attacked without repeating a large amount of tedious algebra. The 4{\texttimes}4-matrix technique is particularly well suited for solving complicated reflection and transmission problems on a computer. It also serves as an illuminating alternative way to rederive closed solutions to a number of less-complicated classical problems. Teitler and Henvis described a method of solving some of these problems, briefly in their paper. We give solutions to several such problems and add a solution to the Oseen--DeVries optical model of a cholesteric liquid crystal, to illustrate the power and simplicity of the 4{\texttimes}4-matrix technique.}, + author = {Dwight W. Berreman}, + journal = {J. Opt. Soc. Am.}, + keywords = {Cholesteric liquid crystals; Faraday effect; Liquid crystals; Magnetic fields; Nonlinear effects; Optical activity}, + number = {4}, + pages = {502--510}, + publisher = {Optica Publishing Group}, + title = {Optics in Stratified and Anisotropic Media: 4{\texttimes}4-Matrix Formulation}, + volume = {62}, + month = {Apr}, + year = {1972}, + url = {https://opg.optica.org/abstract.cfm?URI=josa-62-4-502}, + doi = {10.1364/JOSA.62.000502}, + abstract = {A 4{\texttimes}4-matrix technique was recently introduced by Teitler and Henvis for finding propagation and reflection by stratified anisotropic media. It is more general than the 2{\texttimes}2-matrix technique developed by Jones and by Abel\`{e}s and is applicable to problems involving media of low optical symmetry. A little later, we developed a 4{\texttimes}4 differential-matrix technique in order to solve the problem of reflection and transmission by cholesteric liquid crystals and other liquid crystals with continuously varying but planar ordering. Our technique is mathematically equivalent to that of Teitler and Henvis, but we used a somewhat different approach. We start with a 6{\texttimes}6-matrix representation of Maxwell's equations that can include Faraday rotation and optical activity. From this, we derive expressions for 16 differential-matrix elements so that a wide variety of specific problems can be attacked without repeating a large amount of tedious algebra. The 4{\texttimes}4-matrix technique is particularly well suited for solving complicated reflection and transmission problems on a computer. It also serves as an illuminating alternative way to rederive closed solutions to a number of less-complicated classical problems. Teitler and Henvis described a method of solving some of these problems, briefly in their paper. We give solutions to several such problems and add a solution to the Oseen--DeVries optical model of a cholesteric liquid crystal, to illustrate the power and simplicity of the 4{\texttimes}4-matrix technique.}, } @misc{byrnes2020multilayer, - title={Multilayer optical calculations}, - author={Steven J. Byrnes}, - year={2020}, - eprint={1603.02720}, - archivePrefix={arXiv}, - primaryClass={physics.comp-ph} + title={Multilayer optical calculations}, + author={Steven J. Byrnes}, + year={2020}, + eprint={1603.02720}, + archivePrefix={arXiv}, + primaryClass={physics.comp-ph} } @Article{Scheffler2022, -author={Scheffler, Matthias -and Aeschlimann, Martin -and Albrecht, Martin -and Bereau, Tristan -and Bungartz, Hans-Joachim -and Felser, Claudia -and Greiner, Mark -and Gro{\ss}, Axel -and Koch, Christoph T. -and Kremer, Kurt -and Nagel, Wolfgang E. -and Scheidgen, Markus -and W{\"o}ll, Christof -and Draxl, Claudia}, -title={FAIR data enabling new horizons for materials research}, -journal={Nature}, -year={2022}, -month={Apr}, -day={01}, -volume={604}, -number={7907}, -pages={635-642}, -abstract={The prosperity and lifestyle of our society are very much governed by achievements in condensed matter physics, chemistry and materials science, because new products for sectors such as energy, the environment, health, mobility and information technology (IT) rely largely on improved or even new materials. Examples include solid-state lighting, touchscreens, batteries, implants, drug delivery and many more. The enormous amount of research data produced every day in these fields represents a gold mine of the twenty-first century. This gold mine is, however, of little value if these data are not comprehensively characterized and made available. How can we refine this feedstock; that is, turn data into knowledge and value? For this, a FAIR (findable, accessible, interoperable and reusable) data infrastructure is a must. Only then can data be readily shared and explored using data analytics and artificial intelligence (AI) methods. Making data 'findable and AI ready' (a forward-looking interpretation of the acronym) will change the way in which science is carried out today. In this Perspective, we discuss how we can prepare to make this happen for the field of materials science.}, -issn={1476-4687}, -doi={10.1038/s41586-022-04501-x}, -url={https://doi.org/10.1038/s41586-022-04501-x} + author={Scheffler, Matthias + and Aeschlimann, Martin + and Albrecht, Martin + and Bereau, Tristan + and Bungartz, Hans-Joachim + and Felser, Claudia + and Greiner, Mark + and Gro{\ss}, Axel + and Koch, Christoph T. + and Kremer, Kurt + and Nagel, Wolfgang E. + and Scheidgen, Markus + and W{\"o}ll, Christof + and Draxl, Claudia}, + title={FAIR data enabling new horizons for materials research}, + journal={Nature}, + year={2022}, + month={Apr}, + day={01}, + volume={604}, + number={7907}, + pages={635-642}, + abstract={The prosperity and lifestyle of our society are very much governed by achievements in condensed matter physics, chemistry and materials science, because new products for sectors such as energy, the environment, health, mobility and information technology (IT) rely largely on improved or even new materials. Examples include solid-state lighting, touchscreens, batteries, implants, drug delivery and many more. The enormous amount of research data produced every day in these fields represents a gold mine of the twenty-first century. This gold mine is, however, of little value if these data are not comprehensively characterized and made available. How can we refine this feedstock; that is, turn data into knowledge and value? For this, a FAIR (findable, accessible, interoperable and reusable) data infrastructure is a must. Only then can data be readily shared and explored using data analytics and artificial intelligence (AI) methods. Making data 'findable and AI ready' (a forward-looking interpretation of the acronym) will change the way in which science is carried out today. In this Perspective, we discuss how we can prepare to make this happen for the field of materials science.}, + issn={1476-4687}, + doi={10.1038/s41586-022-04501-x}, + url={https://doi.org/10.1038/s41586-022-04501-x} } @Inbook{Hilfiker2018, -author="Hilfiker, James N. -and Tiwald, Tom", -editor="Fujiwara, Hiroyuki -and Collins, Robert W.", -title="Dielectric Function Modeling", -bookTitle="Spectroscopic Ellipsometry for Photovoltaics: Volume 1: Fundamental Principles and Solar Cell Characterization", -year="2018", -publisher="Springer International Publishing", -address="Cham", -pages="115--153", -abstract="Spectroscopic ellipsometry (SE) is commonly used to measure the optical constants of thin films and bulk materials. The optical constants vary with wavelength, which is referred to as dispersion. Rather than independently determine the optical constants at each wavelength, it is convenient to use an equation to describe their dispersion. A dispersion equation simplifies the description of the optical constants and improves the efficiency of data analysis. We begin this chapter by describing the optical constants, optical resonance, and the Kramers-Kronig relations. Different absorption phenomena are also briefly described. Many dispersion equations relate an optical resonance or absorption in terms of the complex dielectric function. Multiple resonance and absorption features can be summed to describe the overall dielectric function for the material. Finally, we review the common dispersion equations used for photovoltaic materials. The Cauchy and Sellmeier equations are used to describe transparent materials. The Lorentz, Harmonic, and Gaussian equations describe a resonant absorption. The Tauc-Lorentz and Cody-Lorentz were developed for amorphous semiconductors with dispersion features necessary to describe the optical functions near the bandgap energy. Additional dispersion equations are designed to describe the critical points in semiconductor band structure. We conclude this review with a description of polynomials, splines, and basis-splines, which are used to empirically match the optical functions of many materials.", -isbn="978-3-319-75377-5", -doi="10.1007/978-3-319-75377-5_5", -url="https://doi.org/10.1007/978-3-319-75377-5_5" + author="Hilfiker, James N. + and Tiwald, Tom", + editor="Fujiwara, Hiroyuki + and Collins, Robert W.", + title="Dielectric Function Modeling", + bookTitle="Spectroscopic Ellipsometry for Photovoltaics: Volume 1: Fundamental Principles and Solar Cell Characterization", + year="2018", + publisher="Springer International Publishing", + address="Cham", + pages="115--153", + abstract="Spectroscopic ellipsometry (SE) is commonly used to measure the optical constants of thin films and bulk materials. The optical constants vary with wavelength, which is referred to as dispersion. Rather than independently determine the optical constants at each wavelength, it is convenient to use an equation to describe their dispersion. A dispersion equation simplifies the description of the optical constants and improves the efficiency of data analysis. We begin this chapter by describing the optical constants, optical resonance, and the Kramers-Kronig relations. Different absorption phenomena are also briefly described. Many dispersion equations relate an optical resonance or absorption in terms of the complex dielectric function. Multiple resonance and absorption features can be summed to describe the overall dielectric function for the material. Finally, we review the common dispersion equations used for photovoltaic materials. The Cauchy and Sellmeier equations are used to describe transparent materials. The Lorentz, Harmonic, and Gaussian equations describe a resonant absorption. The Tauc-Lorentz and Cody-Lorentz were developed for amorphous semiconductors with dispersion features necessary to describe the optical functions near the bandgap energy. Additional dispersion equations are designed to describe the critical points in semiconductor band structure. We conclude this review with a description of polynomials, splines, and basis-splines, which are used to empirically match the optical functions of many materials.", + isbn="978-3-319-75377-5", + doi="10.1007/978-3-319-75377-5_5", + url="https://doi.org/10.1007/978-3-319-75377-5_5" } @software{matt_newville_2024_12785036, @@ -338,37 +346,37 @@ @article{Pearce2021 } @article{Luce22, -author = {Alexander Luce and Ali Mahdavi and Florian Marquardt and Heribert Wankerl}, -journal = {J. Opt. Soc. Am. A}, -keywords = {Matrix methods; Neural networks; Refractive index; Thin film design; Thin film optical properties; Thin films}, -number = {6}, -pages = {1007--1013}, -publisher = {Optica Publishing Group}, -title = {TMM-Fast, a transfer matrix computation package for multilayer thin-film optimization: tutorial}, -volume = {39}, -month = {Jun}, -year = {2022}, -url = {https://opg.optica.org/josaa/abstract.cfm?URI=josaa-39-6-1007}, -doi = {10.1364/JOSAA.450928}, -abstract = {Achieving the desired optical response from a multilayer thin-film structure over a broad range of wavelengths and angles of incidence can be challenging. An advanced thin-film structure can consist of multiple materials with different thicknesses and numerous layers. Design and optimization of complex thin-film structures with multiple variables is a computationally heavy problem that is still under active research. To enable fast and easy experimentation with new optimization techniques, we propose the Python package Transfer Matrix Method - Fast (TMM-Fast), which enables parallelized computation of reflection and transmission of light at different angles of incidence and wavelengths through the multilayer thin film. By decreasing computational time, generating datasets for machine learning becomes feasible, and evolutionary optimization can be used effectively. Additionally, the subpackage TMM-Torch allows us to directly compute analytical gradients for local optimization by using PyTorch Autograd functionality. Finally, an OpenAI Gym environment is presented, which allows the user to train new reinforcement learning agents on the problem of finding multilayer thin-film configurations.}, + author = {Alexander Luce and Ali Mahdavi and Florian Marquardt and Heribert Wankerl}, + journal = {J. Opt. Soc. Am. A}, + keywords = {Matrix methods; Neural networks; Refractive index; Thin film design; Thin film optical properties; Thin films}, + number = {6}, + pages = {1007--1013}, + publisher = {Optica Publishing Group}, + title = {TMM-Fast, a transfer matrix computation package for multilayer thin-film optimization: tutorial}, + volume = {39}, + month = {Jun}, + year = {2022}, + url = {https://opg.optica.org/josaa/abstract.cfm?URI=josaa-39-6-1007}, + doi = {10.1364/JOSAA.450928}, + abstract = {Achieving the desired optical response from a multilayer thin-film structure over a broad range of wavelengths and angles of incidence can be challenging. An advanced thin-film structure can consist of multiple materials with different thicknesses and numerous layers. Design and optimization of complex thin-film structures with multiple variables is a computationally heavy problem that is still under active research. To enable fast and easy experimentation with new optimization techniques, we propose the Python package Transfer Matrix Method - Fast (TMM-Fast), which enables parallelized computation of reflection and transmission of light at different angles of incidence and wavelengths through the multilayer thin film. By decreasing computational time, generating datasets for machine learning becomes feasible, and evolutionary optimization can be used effectively. Additionally, the subpackage TMM-Torch allows us to directly compute analytical gradients for local optimization by using PyTorch Autograd functionality. Finally, an OpenAI Gym environment is presented, which allows the user to train new reinforcement learning agents on the problem of finding multilayer thin-film configurations.}, } @article{Bay2022, -title = {PyLlama: A stable and versatile Python toolkit for the electromagnetic modelling of multilayered anisotropic media}, -journal = {Computer Physics Communications}, -volume = {273}, -pages = {108256}, -year = {2022}, -issn = {0010-4655}, -doi = {https://doi.org/10.1016/j.cpc.2021.108256}, -url = {https://www.sciencedirect.com/science/article/pii/S0010465521003684}, -author = {Mélanie M. Bay and Silvia Vignolini and Kevin Vynck}, -keywords = {Multilayers, Anisotropic optical materials, Optical modelling, Photonic crystals, Cholesterics, Surface phonon polaritons}, -abstract = {PyLlama is a handy Python toolkit to compute the electromagnetic reflection and transmission properties of arbitrary multilayered linear media, including the case of anisotropy. Relying on a 4×4-matrix formalism, PyLlama implements not only the transfer matrix method, that is the most popular choice in existing codes, but also the scattering matrix method, which is numerically stable in all situations (e.g., thick, highly birefringent cholesteric structures at grazing incident angles). PyLlama is also designed to suit the practical needs by allowing the user to create, edit and assemble layers or multilayered domains with great ease. In this article, we present the electromagnetic theory underlying the transfer matrix and scattering matrix methods and outline the architecture and main features of PyLlama. Finally, we validate the code by comparison with available analytical solutions and demonstrate its versatility and numerical stability by modelling cholesteric media of varying complexity. A detailed documentation and tutorial are provided in a separate user manual. Applications of PyLlama range from the design of optical components to the modelling of polaritonic effects in polar crystals, to the study of structurally coloured materials in the living world. -Program summary -Program Title: PyLlama – Python Toolkit for the Electromagnetic Modelling of Multilayered Anisotropic Media CPC Library link to program files: https://doi.org/10.17632/dzw8x5vyrv.1 Developer's repository link: https://github.com/VignoliniLab/PyLlama Licensing provisions: GPLv3 Programming language: Python Supplementary material: User guide and tutorials at https://pyllama.readthedocs.io/ Nature of problem: Computation of the optical reflection and transmission coefficients of arbitrary multilayered linear media, composed of an arbitrary number of layers, possibly mixing isotropic and anisotropic, absorbing and non-absorbing materials, for linearly or circularly polarised light. Solution method: Implementation of both the transfer matrix method (faster) and the scattering matrix method (more robust) relying on a 4×4 matrix formalism. Additional comments including restrictions and unusual features: Integration of a physical model to handle cholesteric structures, blueprint for the integration of user-created custom systems, hassle-free export of spectra for non-programmers even for complex and/or custom systems. External routines include: Numpy [1], Scipy [2], as well as Sympy [3] (optional). -References -[1]Numpy, https://numpy.org/.[2]Scipy, https://www.scipy.org/.[3]Sympy, https://www.sympy.org/.} + title = {PyLlama: A stable and versatile Python toolkit for the electromagnetic modelling of multilayered anisotropic media}, + journal = {Computer Physics Communications}, + volume = {273}, + pages = {108256}, + year = {2022}, + issn = {0010-4655}, + doi = {https://doi.org/10.1016/j.cpc.2021.108256}, + url = {https://www.sciencedirect.com/science/article/pii/S0010465521003684}, + author = {Mélanie M. Bay and Silvia Vignolini and Kevin Vynck}, + keywords = {Multilayers, Anisotropic optical materials, Optical modelling, Photonic crystals, Cholesterics, Surface phonon polaritons}, + abstract = {PyLlama is a handy Python toolkit to compute the electromagnetic reflection and transmission properties of arbitrary multilayered linear media, including the case of anisotropy. Relying on a 4×4-matrix formalism, PyLlama implements not only the transfer matrix method, that is the most popular choice in existing codes, but also the scattering matrix method, which is numerically stable in all situations (e.g., thick, highly birefringent cholesteric structures at grazing incident angles). PyLlama is also designed to suit the practical needs by allowing the user to create, edit and assemble layers or multilayered domains with great ease. In this article, we present the electromagnetic theory underlying the transfer matrix and scattering matrix methods and outline the architecture and main features of PyLlama. Finally, we validate the code by comparison with available analytical solutions and demonstrate its versatility and numerical stability by modelling cholesteric media of varying complexity. A detailed documentation and tutorial are provided in a separate user manual. Applications of PyLlama range from the design of optical components to the modelling of polaritonic effects in polar crystals, to the study of structurally coloured materials in the living world. + Program summary + Program Title: PyLlama – Python Toolkit for the Electromagnetic Modelling of Multilayered Anisotropic Media CPC Library link to program files: https://doi.org/10.17632/dzw8x5vyrv.1 Developer's repository link: https://github.com/VignoliniLab/PyLlama Licensing provisions: GPLv3 Programming language: Python Supplementary material: User guide and tutorials at https://pyllama.readthedocs.io/ Nature of problem: Computation of the optical reflection and transmission coefficients of arbitrary multilayered linear media, composed of an arbitrary number of layers, possibly mixing isotropic and anisotropic, absorbing and non-absorbing materials, for linearly or circularly polarised light. Solution method: Implementation of both the transfer matrix method (faster) and the scattering matrix method (more robust) relying on a 4×4 matrix formalism. Additional comments including restrictions and unusual features: Integration of a physical model to handle cholesteric structures, blueprint for the integration of user-created custom systems, hassle-free export of spectra for non-programmers even for complex and/or custom systems. External routines include: Numpy [1], Scipy [2], as well as Sympy [3] (optional). + References + [1]Numpy, https://numpy.org/.[2]Scipy, https://www.scipy.org/.[3]Sympy, https://www.sympy.org/.} } @book{tompkins2005, @@ -383,7 +391,8 @@ @book{tompkins2005 @manual{WVASEguide, title={Guide to Using WVASE}, organization={J. A. Woollam Co., Inc.}, - address={Lincoln, NE} + address={Lincoln, NE}, + year={2012} } @software{tmmax, @@ -395,17 +404,17 @@ @software{tmmax } @article{Langevin:24, -author = {Denis Langevin and Pauline Bennet and Abdourahman Khaireh-Walieh and Peter Wiecha and Olivier Teytaud and Antoine Moreau}, -journal = {J. Opt. Soc. Am. B}, -keywords = {Deep learning; Optical computing; Optical filters; Optical properties; Resonant modes; Wavelength division multiplexing}, -number = {2}, -pages = {A67--A78}, -publisher = {Optica Publishing Group}, -title = {PyMoosh: a comprehensive numerical toolkit for computing the optical properties of multilayered structures}, -volume = {41}, -month = {Feb}, -year = {2024}, -url = {https://opg.optica.org/josab/abstract.cfm?URI=josab-41-2-A67}, -doi = {10.1364/JOSAB.506175}, -abstract = {We present PyMoosh, a Python-based simulation library designed to provide a comprehensive set of numerical tools allowing the computation of essentially all optical characteristics of multilayered structures, ranging from reflectance and transmittance to guided modes and photovoltaic efficiency. PyMoosh is designed not just for research purposes, but also for use cases in education. To this end, we have invested significant effort in ensuring the user-friendliness and simplicity of the interface. PyMoosh has been developed in line with the principles of open science and considering the fact that multilayered structures are increasingly being used as a testing ground for optimization and deep learning approaches. We provide in this paper the theoretical basis at the core of PyMoosh, an overview of its capabilities, as well as a comparison between the different numerical methods implemented in terms of speed and stability. We are convinced such a versatile tool will be useful for the community in many ways.}, + author = {Denis Langevin and Pauline Bennet and Abdourahman Khaireh-Walieh and Peter Wiecha and Olivier Teytaud and Antoine Moreau}, + journal = {J. Opt. Soc. Am. B}, + keywords = {Deep learning; Optical computing; Optical filters; Optical properties; Resonant modes; Wavelength division multiplexing}, + number = {2}, + pages = {A67--A78}, + publisher = {Optica Publishing Group}, + title = {PyMoosh: a comprehensive numerical toolkit for computing the optical properties of multilayered structures}, + volume = {41}, + month = {Feb}, + year = {2024}, + url = {https://opg.optica.org/josab/abstract.cfm?URI=josab-41-2-A67}, + doi = {10.1364/JOSAB.506175}, + abstract = {We present PyMoosh, a Python-based simulation library designed to provide a comprehensive set of numerical tools allowing the computation of essentially all optical characteristics of multilayered structures, ranging from reflectance and transmittance to guided modes and photovoltaic efficiency. PyMoosh is designed not just for research purposes, but also for use cases in education. To this end, we have invested significant effort in ensuring the user-friendliness and simplicity of the interface. PyMoosh has been developed in line with the principles of open science and considering the fact that multilayered structures are increasingly being used as a testing ground for optimization and deep learning approaches. We provide in this paper the theoretical basis at the core of PyMoosh, an overview of its capabilities, as well as a comparison between the different numerical methods implemented in terms of speed and stability. We are convinced such a versatile tool will be useful for the community in many ways.}, } From 0c6fa54db041022bb4bda16add7269ebe7d68111 Mon Sep 17 00:00:00 2001 From: MarJMue <49639740+MarJMue@users.noreply.github.com> Date: Wed, 30 Apr 2025 10:12:22 +0200 Subject: [PATCH 35/35] Small improvements and bib fixes --- paper/paper.bib | 14 ++++++++++++-- paper/paper.md | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/paper/paper.bib b/paper/paper.bib index af5c5af6..bc01f622 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -123,11 +123,21 @@ @article{rii abstract = {We introduce the refractiveindex.info database, a comprehensive open-source repository containing optical constants for a wide array of materials, and describe in detail the underlying dataset. This collection, derived from a meticulous compilation of data sourced from peer-reviewed publications, manufacturers’ datasheets, and authoritative texts, aims to advance research in optics and photonics. The data is stored using a YAML-based format, ensuring integrity, consistency, and ease of access. Each record is accompanied by detailed metadata, facilitating a comprehensive understanding and efficient utilization of the data. In this descriptor, we outline the data curation protocols and the file format used for data records, and briefly demonstrate how the data can be organized in a user-friendly fashion akin to the books in a traditional library.}, } -@online{castany, +@software{berreman4x4_software, author = {Olivier Castany and Céline Molinaro}, title = {Berreman4x4}, url = {https://github.com/Berreman4x4/Berreman4x4}, - urldate = {2024-07-02} + urldate = {2024-07-02}, + year = {2021} +} + +@manual{berreman4x4_doku, + author = {Olivier Castany}, + title = {Berreman4x4}, + url = {https://sourceforge.net/projects/berreman4x4/files/documentation.pdf}, + year = {2021}, + month = oct, + day = {31}, } @Article{ harris2020array, diff --git a/paper/paper.md b/paper/paper.md index 23cd733d..69b01dc1 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -42,8 +42,8 @@ In addition, limitations of the bundled software may stimulate scientists to use **PyElli** offers an open-source alternative extending the capabilities of existing solutions, while aiming to remain as compatible as possible, by providing data imports from various manufacturers (Woollam VWASE, Woollam CompleteEASE, Sentech, Accurion). The code is designed with extensibility and adaptability in mind enabling the implementation of individually adapted models as well as data evaluation with custom tools. -Typical examples for advanced use-cases are implementations of custom experimental geometries not covered by other software [@eberheim2022], imaging ellipsometry, or as a full FAIR data [@Wilkinson2016] automated analysis pipeline for SE measurements. -**PyElli** also supports recent advances in the standardization of ellipsometry data and models, addressing the need for FAIR data. +Typical examples for advanced use-cases are implementations of custom experimental geometries not covered by other software [@eberheim2022], imaging ellipsometry, or as a full FAIR data automated analysis pipeline for SE measurements. +**PyElli** also supports recent advances in the standardization of ellipsometry data and models, addressing the need for FAIR data [@Wilkinson2016]. **PyElli** aims to provide a straight-forward database of predefined dispersion models for analyzing materials. All optical models adhere closely to the literature [@Hilfiker2018]. @@ -52,7 +52,7 @@ This allows the inclusion of literature dispersions with a single line of code. Additional dispersion relations can be either hard coded, which is more efficient, or parsed from a text-based domain-specific language into a fittable dispersion. **PyElli** supports multiple solving algorithms with different characteristics. -Currently, two algorithms using different formulations are available: a fast algorithm based on a 2x2 matrix formulation [@byrnes2020multilayer] and a more complex 4x4 matrix formulation [@Berreman72; @castany]. +Currently, two algorithms using different formulations are available: a fast algorithm based on a 2x2 matrix formulation [@byrnes2020multilayer] and a more complex 4x4 matrix formulation [@Berreman72; @berreman4x4_doku; @berreman4x4_software]. The 2x2 matrix algorithm divides the light into two perpendicular linearly polarized beams, which are solved separately. One of its limitations is eliminating the possibility to include birefringent materials. The 4x4 matrix approach fully solves Maxwell's equations. @@ -61,8 +61,8 @@ This allows finding solutions to more complex problems such as anisotropic mater **PyElli** ensures fast processing through fully vectorized algorithms for multiple wavelengths and by leveraging numerical algebra libraries like [NumPy](https://numpy.org) [@harris2020array] and [SciPy](https://scipy.org) [@2020SciPy-NMeth]. Together, these runtime advantages enable the practical use of advanced fitting algorithms such as global optimizers while maintaining reasonable evaluation times. -Such advantages enable embedded in-situ monitoring and real-time data analysis of overlayer growth. -Thus, the use of Python and vectorization libraries also facilitates the adoption of artificial intelligence-based analysis of SE data. +As a result, they enable integrated in-situ monitoring and real-time data analysis of overlayer growth. +Furthermore, the use of Python and vectorization libraries also facilitates the development of artificial intelligence-based SE data analysis. # Statement of need @@ -89,8 +89,8 @@ Other notable Python open-source software for solving transfer-matrices is avail - [PyLlama](https://pyllama.readthedocs.io) [@Bay2022] focuses on the simulation of liquid crystals and uses non-vectorized TMM and a scattering matrix algorithm (rigorous coupled-wave analysis, RCWA). - [RayFlare](https://rayflare.readthedocs.io) [@Pearce2021] is a complete toolkit to simulate the physical and electrical properties of solar cells. It provides the same 2x2 algorithm[@byrnes2020multilayer] and a scattering matrix approach (S4). - [tmm_fast](https://github.com/MLResearchAtOSRAM/tmm_fast) [@Luce22] is a vectorized variant of Byrnes' algorithm for artificial intelligence-based analysis of multilayer stacks. -- [tmmax](https://github.com/bahremsd/tmmax) [tmmax] is a JIT-compilable version of the 2x2 matrix method, leveraging the _JAX_ toolkit. -- [PyMoosh](https://github.com/AnMoreau/PyMoosh) [Langevin:24] is a comprehensive toolkit for computing the optical properties of multilayered structures, with a plethora of available scattering and transfer matrix algorithms. +- [tmmax](https://github.com/bahremsd/tmmax) [@tmmax] is a JIT-compilable version of the 2x2 matrix method, leveraging the _JAX_ toolkit. +- [PyMoosh](https://github.com/AnMoreau/PyMoosh) [@Langevin:24] is a comprehensive toolkit for computing the optical properties of multilayered structures, with a plethora of available scattering and transfer matrix algorithms. # Example: Building a model for an oxide layer on silicon @@ -123,10 +123,9 @@ params.add("SiO2_thickness", value=20) ``` Next, the Cauchy model is created using the `Cauchy` class and the defined parameters. -All Cauchy coefficients are kept at their default value of zero in this particular case. -Each dispersion has its own class. -A list of different dispersions is given in the [documentation](https://pyelli.readthedocs.io/en/stable/dispersions.html). +All undefined Cauchy coefficients are kept at their default value of zero in this particular case. Subsequently, the `.get_mat()` method is called on the created object to automatically convert the dispersion into an isotropic material. +A list of different dispersion classes and their usage is given in the [documentation](https://pyelli.readthedocs.io/en/stable/dispersions.html). ```python SiO2 = elli.Cauchy( @@ -164,11 +163,12 @@ structure = elli.Structure( ``` Finally, we trigger a calculation by calling the `evaluate(...)` method of the `structure` object. -We use a `wavelengths` array from $210$ nm to $800$ nm for the calculation range and an angle of incidence of $70°$ degree (second parameter of evaluate). +We use a `wavelengths` array from $210$ nm to $800$ nm for the calculation range and an angle of incidence of $70°$ degree. ```python wavelengths = linspace(210, 800, 100) -result = structure.evaluate(wavelengths, 70) +angle = 70 +result = structure.evaluate(wavelengths, angle) ``` The calculation is stored in the `result` variable, which is a [`Result` object](https://pyelli.readthedocs.io/en/stable/result.html).