diff --git a/.github/workflows/documentation-build.yml b/.github/workflows/documentation-build.yml index d628da20..8d58f6f9 100644 --- a/.github/workflows/documentation-build.yml +++ b/.github/workflows/documentation-build.yml @@ -34,15 +34,17 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.11 + python-version: 3.10.12 - name: Install Pandoc, repo and dependencies run: | sudo apt install pandoc + pip install sphinx==8.1.3 pip install . '.[dev,docs]' - name: Build and Commit uses: sphinx-notes/pages@master with: - install_requirements: true + install_requirements: false + sphinx_version: 8.1.3 documentation_path: docs/src - name: Push changes uses: ad-m/github-push-action@master diff --git a/docs/src/api/data.rst b/docs/src/api/data.rst index e23e9db8..60abd70a 100644 --- a/docs/src/api/data.rst +++ b/docs/src/api/data.rst @@ -1,4 +1,4 @@ -.. automodule:: easyreflectometry.data +.. automodule:: easyreflectometry.data.measurement :members: :undoc-members: :show-inheritance: \ No newline at end of file diff --git a/docs/src/api/model.rst b/docs/src/api/model.rst index 676cd0c9..4157e161 100644 --- a/docs/src/api/model.rst +++ b/docs/src/api/model.rst @@ -1,4 +1,4 @@ -.. automodule:: easyreflectometry.model +.. automodule:: easyreflectometry.model.model :members: :undoc-members: :show-inheritance: diff --git a/docs/src/api/sample.rst b/docs/src/api/sample.rst index e3518d9a..d7ed6167 100644 --- a/docs/src/api/sample.rst +++ b/docs/src/api/sample.rst @@ -1,5 +1,4 @@ - -.. automodule:: easyreflectometry.sample +.. automodule:: easyreflectometry.sample.collections.sample :members: :undoc-members: :show-inheritance: \ No newline at end of file diff --git a/docs/src/conf.py b/docs/src/conf.py index 5ddb27ce..36235949 100644 --- a/docs/src/conf.py +++ b/docs/src/conf.py @@ -25,8 +25,7 @@ import easyreflectometry -# sys.path.insert(0, os.path.abspath('../src')) -sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "src")) +sys.path.insert(0, os.path.abspath('../src')) main_root = Path(__file__).parents[2] sys.path.append(str(main_root)) diff --git a/docs/src/index.rst b/docs/src/index.rst index e2c8dc09..5cb980fc 100644 --- a/docs/src/index.rst +++ b/docs/src/index.rst @@ -5,12 +5,12 @@ :hidden: :caption: Contents: - installation - usage - tutorials/tutorials - contributing - authors - api/api + installation.rst + usage.rst + tutorials/tutorials.rst + contributing.rst + authors.rst + api/api.rst Indices and tables diff --git a/docs/src/tutorials/advancedfitting/advancedfitting.rst b/docs/src/tutorials/advancedfitting/advancedfitting.rst new file mode 100644 index 00000000..8c12ba54 --- /dev/null +++ b/docs/src/tutorials/advancedfitting/advancedfitting.rst @@ -0,0 +1,9 @@ +Advanced Fitting +================ + +These are advanced fitting examples using the :py:mod:`easyreflectometry` library, to get an understanding of the possibilities. + +.. toctree:: + :maxdepth: 1 + + multi_contrast.ipynb \ No newline at end of file diff --git a/docs/src/tutorials/advancedfitting/multi_contrast.ipynb b/docs/src/tutorials/advancedfitting/multi_contrast.ipynb index 1dd68e76..39c6fba5 100644 --- a/docs/src/tutorials/advancedfitting/multi_contrast.ipynb +++ b/docs/src/tutorials/advancedfitting/multi_contrast.ipynb @@ -9,7 +9,7 @@ "\n", "In the use of neutron reflectometry, it is common to use multiple isotopic contrasts of experimental data to analyse a system in a constrained fashion. \n", "That is to say, that we have data from multiple different species (where isotopic substitution has been used to produce data with different scattering length density) that share the same structure. \n", - "In this tutorial we will look at how `easyreflectometry` can be used to fit multiple contrasts of data from a [surfactant monolayer](./monolayer.rst) system, if you haven't looked at the tutorial for a single contrast of surfactant monolayer data it is suggested that you as this tutorial will build on it." + "In this tutorial we will look at how `easyreflectometry` can be used to fit multiple contrasts of data from a [surfactant monolayer](../fitting/monolayer.ipynb) system, if you haven't looked at the tutorial for a single contrast of surfactant monolayer data it is suggested that you as this tutorial will build on it." ] }, { @@ -22,19 +22,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "e7055fbd-2a72-40ce-aca5-6e35f723f8ec", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "easyreflectometry: 1.3.0\n", - "refnx: 0.1.51\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "\n", @@ -75,22 +66,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "694b4e5e-2d1a-402e-aa3f-a26cc82f7774", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading data from 'https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/multiple.ort' to file 'C:\\Users\\mads-\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCache\\Local\\pooch\\pooch\\Cache\\14e53c019def90deab6565306d5c3891-multiple.ort'.\n" - ] - } - ], + "outputs": [], "source": [ "file_path = pooch.retrieve(\n", " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/multiple.ort\",\n", + " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/advancedfitting/multiple.ort\",\n", " known_hash=\"241bcb819cdae47fbbb310a99c2456c7332312719496b936a153dc7dee83e62c\",\n", ")\n", "data = load(file_path)" @@ -106,42 +89,20 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "82c89248-9852-4196-859c-6beb8232599b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "()" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.dims" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "095696d6-cb54-4c6c-b0d8-45b1c7ad103f", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plot(data)" ] @@ -164,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "7834b80e-1dc9-47b8-923a-dec58e3494be", "metadata": {}, "outputs": [], @@ -183,7 +144,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "58855c68-c95b-40de-9fee-a662771c247b", "metadata": {}, "outputs": [], @@ -202,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "08112c21-2027-47ba-845b-a3135439d862", "metadata": {}, "outputs": [], @@ -220,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "e7caedc2-8305-4f3b-bad2-c042bacb363b", "metadata": {}, "outputs": [], @@ -240,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "74e19578-03d4-4295-b6e2-a65fb2508c78", "metadata": {}, "outputs": [], @@ -263,7 +224,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "c4aa6c00", "metadata": {}, "outputs": [], @@ -303,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "16a970d8", "metadata": {}, "outputs": [], @@ -343,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "021272e0-7abb-4703-a4cd-92daed10ae50", "metadata": {}, "outputs": [], @@ -386,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "24808923-ba02-4a7d-9be3-8d717b08aa8e", "metadata": {}, "outputs": [], @@ -411,28 +372,17 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "f21a92b7-f2b0-4315-a92b-950aa1e80b63", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(12.0, 12.0, 12.0)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "d13d2o.head_layer.thickness.value, d70d2o.head_layer.thickness.value, d83acmw.head_layer.thickness.value" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "e31a4807-c6f4-4bfd-986e-749955aa7e49", "metadata": {}, "outputs": [], @@ -442,21 +392,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "df2dbb56-6dc1-4388-97b7-1aef9da1769e", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(10.0, 10.0, 10.0)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "d13d2o.head_layer.thickness.value, d70d2o.head_layer.thickness.value, d83acmw.head_layer.thickness.value" ] @@ -473,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "6e92498a-581b-445d-94cd-dda6474f1984", "metadata": {}, "outputs": [], @@ -517,7 +456,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "cf35ee97-2d64-4a0f-9212-7cca8bb2dcfc", "metadata": {}, "outputs": [], @@ -548,7 +487,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "dc8e7f8f-6b4b-45ce-a38c-274dea683df4", "metadata": {}, "outputs": [], @@ -568,7 +507,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "ce890544-f3cf-4a74-b927-d19dc292e12c", "metadata": {}, "outputs": [], @@ -579,7 +518,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "0cb9d7b4-aa04-4c73-a700-4ff5af7e6f47", "metadata": {}, "outputs": [], @@ -597,42 +536,20 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "28f5d3e2-0e2f-4ef0-bc70-0f508b7fbc52", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(44.43261084507265, 44.43261084507265, 44.43261084507265)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "d13d2o.head_layer.area_per_molecule, d70d2o.head_layer.area_per_molecule, d83acmw.head_layer.area_per_molecule" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "faf00d17-55ea-45c3-be9e-772bf5cea70f", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plot(analysed)" ] @@ -640,7 +557,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv2", + "display_name": "easyref", "language": "python", "name": "python3" }, @@ -654,7 +571,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/docs/src/tutorials/basic/assemblies_library.rst b/docs/src/tutorials/basic/assemblies_library.rst index 1f7d8ab5..7e79844f 100644 --- a/docs/src/tutorials/basic/assemblies_library.rst +++ b/docs/src/tutorials/basic/assemblies_library.rst @@ -1,5 +1,5 @@ Creating multilayers and surfactant layers -========== +=========================================== :py:mod:`easyreflectometry` is designed to be used with a broad range of different assemblies. Assemblies are collective layers behaving as a single object, for example, a multilayer or a surfactant layer. diff --git a/docs/src/tutorials/basic/sample.rst b/docs/src/tutorials/basic/basic.rst similarity index 94% rename from docs/src/tutorials/basic/sample.rst rename to docs/src/tutorials/basic/basic.rst index 1ba61061..bcb94f58 100644 --- a/docs/src/tutorials/basic/sample.rst +++ b/docs/src/tutorials/basic/basic.rst @@ -1,12 +1,13 @@ Basic -====== +===== The :py:mod:`easyreflectometry` package is focused on making easy to use functionality for specific modelling approaches. In order to achieve this, we have a sample library with different functionality. .. toctree:: :maxdepth: 1 - + + model material_library layer_library assemblies_library \ No newline at end of file diff --git a/docs/src/tutorials/basic/layer_library.rst b/docs/src/tutorials/basic/layer_library.rst index 28d5e438..76c75ad4 100644 --- a/docs/src/tutorials/basic/layer_library.rst +++ b/docs/src/tutorials/basic/layer_library.rst @@ -1,5 +1,5 @@ Defining Layers -====== +=============== Similar to a range of different `materials`_, there are a few different ways that a layer can be defined in :py:mod:`easyreflectometry`. diff --git a/docs/src/tutorials/basic/material_library.rst b/docs/src/tutorials/basic/material_library.rst index 2224aefc..2aaf0911 100644 --- a/docs/src/tutorials/basic/material_library.rst +++ b/docs/src/tutorials/basic/material_library.rst @@ -1,5 +1,5 @@ Defining materials -========= +================== In order to support a wide range of applications (and to build complex `assemblies`_) there are a few different types of material that can be utilised in :py:mod:`easyreflectometry`. These can include constraints or enable the user to define the material based on chemical or physical properties. diff --git a/docs/src/tutorials/basic/model.rst b/docs/src/tutorials/basic/model.rst index 597ce52f..47134397 100644 --- a/docs/src/tutorials/basic/model.rst +++ b/docs/src/tutorials/basic/model.rst @@ -1,5 +1,5 @@ Creating a model -===== +================ The main component of an experiment in :py:mod:`easyreflectometry` is the :py:class:`Model`. This is a description of the :py:class:`Sample` and the environment in which the experiment is performed. diff --git a/docs/src/tutorials/extra/extra.rst b/docs/src/tutorials/extra/extra.rst new file mode 100644 index 00000000..9d68b33a --- /dev/null +++ b/docs/src/tutorials/extra/extra.rst @@ -0,0 +1,7 @@ +Extra +===== + +These are extra examples using the :py:mod:`easyreflectometry` library, to get an understanding of the possibilities. + +.. toctree:: + :maxdepth: 1 \ No newline at end of file diff --git a/docs/src/tutorials/fitting/d70d2o.ort b/docs/src/tutorials/fitting/d70d2o.ort new file mode 100644 index 00000000..528ff127 --- /dev/null +++ b/docs/src/tutorials/fitting/d70d2o.ort @@ -0,0 +1,91 @@ +# # ORSO reflectivity data file | 0.1 standard | YAML encoding | https://www.reflectometry.org/ +# data_source: +# owner: +# name: Andrew McCluskey +# affiliation: European Spallation Source +# contact: andrew.mccluskey@ess.eu +# experiment: +# facility: ISIS +# start_date: 2015-05-20 +# title: A single contrast of DSPC +# instrument: surf +# probe: neutron +# sample: +# name: DSPC monolayer +# category: air / liquid +# composition: air / d70DSPC / D2O +# measurement: +# instrument_settings: +# wavelength: +# magnitude: 12 +# unit: angstrom +# incident_angle: +# magnitude: 0.2 +# unit: deg +# data_files: +# - Unknown.nxs +# scheme: angle-dispersive +# reduction: +# software: mantid +# timestamp: 2015-08-27T15:33:59+01:00 +# corrections: +# - footprint +# - incident intensity +# - detector efficiency +# columns: +# - {name: Qz, unit: 1/angstrom, dimension: WW transfer} +# - {name: R, dimension: reflectivity} +# - {name: sR, dimension: error-reflectivity} +# - {name: sQz, unit: 1/angstrom, dimension: resolution-WW transfer} +## Qz RQz sR sQz +5.1792999999999999e-02 1.4254000000000000e-04 2.9187999999999999e-06 2.5896500000000002e-03 +5.4383000000000001e-02 1.1424000000000000e-04 2.3277000000000002e-06 2.7191500000000000e-03 +5.7102000000000000e-02 9.5197000000000004e-05 1.9168000000000000e-06 2.8551000000000002e-03 +5.9957000000000003e-02 7.4925000000000005e-05 1.5375000000000001e-06 2.9978500000000003e-03 +6.2954999999999997e-02 6.1081999999999996e-05 1.2839999999999999e-06 3.1477499999999999e-03 +6.6102999999999995e-02 5.2451000000000003e-05 1.0896999999999999e-06 3.3051499999999998e-03 +6.9407999999999997e-02 4.3195000000000002e-05 9.3939000000000000e-07 3.4704000000000002e-03 +7.2877999999999998e-02 3.5877999999999998e-05 8.0683999999999999e-07 3.6439000000000003e-03 +7.6522000000000007e-02 2.8937000000000001e-05 6.8090000000000002e-07 3.8261000000000007e-03 +8.0348000000000003e-02 2.7223999999999999e-05 6.3740000000000003e-07 4.0174000000000000e-03 +8.4364999999999996e-02 2.3142999999999998e-05 5.5753000000000004e-07 4.2182499999999998e-03 +8.8583999999999996e-02 1.9910000000000001e-05 4.8592000000000000e-07 4.4292000000000003e-03 +9.3012999999999998e-02 1.7467000000000001e-05 4.3365000000000002e-07 4.6506500000000001e-03 +9.7664000000000001e-02 1.5252000000000001e-05 3.8785999999999998e-07 4.8832000000000007e-03 +1.0255000000000000e-01 1.4654999999999999e-05 3.6547000000000000e-07 5.1275000000000001e-03 +1.0767000000000000e-01 1.3203000000000000e-05 3.3522000000000001e-07 5.3835000000000003e-03 +1.1305999999999999e-01 1.2407000000000000e-05 3.1808000000000000e-07 5.6530000000000000e-03 +1.1871000000000000e-01 1.1365999999999999e-05 3.0100000000000001e-07 5.9354999999999998e-03 +1.2465000000000000e-01 1.0529000000000000e-05 2.7911000000000002e-07 6.2325000000000002e-03 +1.3088000000000000e-01 9.5791999999999997e-06 2.6436000000000002e-07 6.5440000000000003e-03 +1.3741999999999999e-01 8.5473000000000003e-06 2.5890999999999998e-07 6.8709999999999995e-03 +1.4429000000000000e-01 8.2166000000000002e-06 2.5923000000000003e-07 7.2145000000000004e-03 +1.5151000000000001e-01 7.1802000000000003e-06 2.5376999999999998e-07 7.5755000000000006e-03 +1.5908000000000000e-01 6.9426000000000002e-06 2.6561000000000001e-07 7.9540000000000010e-03 +1.6703999999999999e-01 5.5822999999999999e-06 7.3669999999999997e-07 8.3520000000000000e-03 +1.7538999999999999e-01 5.1837000000000000e-06 4.6409999999999998e-07 8.7694999999999995e-03 +1.8415999999999999e-01 3.9739000000000002e-06 3.0730000000000001e-07 9.2079999999999992e-03 +1.9336999999999999e-01 4.1088999999999997e-06 9.5290000000000002e-07 9.6685000000000000e-03 +2.0304000000000000e-01 3.0409000000000000e-06 2.3160000000000001e-07 1.0152000000000001e-02 +2.1318999999999999e-01 2.7470999999999999e-06 4.2269999999999999e-07 1.0659500000000001e-02 +2.2384999999999999e-01 2.3638000000000001e-06 1.4970000000000000e-07 1.1192500000000001e-02 +2.3504000000000000e-01 2.3843000000000002e-06 8.1460000000000000e-07 1.1752000000000000e-02 +2.4679000000000001e-01 1.5583000000000000e-06 1.0840000000000000e-07 1.2339500000000002e-02 +2.5913000000000003e-01 1.2864000000000001e-06 4.7440000000000001e-07 1.2956500000000003e-02 +2.7209000000000000e-01 1.1920000000000000e-06 1.8839999999999999e-07 1.3604500000000000e-02 +2.8569000000000000e-01 1.2465000000000001e-06 3.9385000000000000e-07 1.4284500000000000e-02 +2.9998000000000002e-01 9.1670000000000005e-07 2.3955000000000000e-07 1.4999000000000002e-02 +3.1497000000000003e-01 8.8736999999999998e-07 3.5324000000000001e-07 1.5748500000000002e-02 +3.3072000000000001e-01 8.5180000000000004e-07 5.0846000000000004e-07 1.6536000000000002e-02 +3.4726000000000001e-01 8.7400000000000002e-07 2.2312000000000000e-07 1.7363000000000000e-02 +3.6462000000000000e-01 1.0644999999999999e-06 4.2865999999999998e-07 1.8231000000000001e-02 +3.8285000000000002e-01 8.5601999999999996e-07 2.9493000000000001e-07 1.9142500000000003e-02 +4.0200000000000002e-01 7.8897999999999996e-07 2.3347000000000001e-07 2.0100000000000003e-02 +4.2209999999999998e-01 7.1536999999999998e-07 3.3494000000000001e-07 2.1104999999999999e-02 +4.4319999999999998e-01 1.0234000000000000e-06 2.3370999999999999e-07 2.2159999999999999e-02 +4.6536000000000000e-01 8.3895000000000003e-07 3.2623999999999999e-07 2.3268000000000000e-02 +4.8863000000000001e-01 8.2964000000000001e-07 6.0419000000000001e-07 2.4431500000000002e-02 +5.1305999999999996e-01 5.2732000000000004e-07 3.4821999999999998e-07 2.5652999999999999e-02 +5.3871000000000002e-01 5.1435999999999996e-07 4.3279000000000000e-07 2.6935500000000001e-02 +5.6564999999999999e-01 4.6185999999999998e-07 1.8862999999999999e-07 2.8282500000000002e-02 +5.8877000000000002e-01 5.6128999999999997e-07 4.3959999999999999e-07 2.9438500000000003e-02 \ No newline at end of file diff --git a/docs/src/tutorials/fitting/eq_monolayer.svg b/docs/src/tutorials/fitting/eq_monolayer.svg new file mode 100644 index 00000000..2d2b5c40 --- /dev/null +++ b/docs/src/tutorials/fitting/eq_monolayer.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/src/tutorials/fitting/eq_solvated.svg b/docs/src/tutorials/fitting/eq_solvated.svg new file mode 100644 index 00000000..7f6def45 --- /dev/null +++ b/docs/src/tutorials/fitting/eq_solvated.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/src/tutorials/fitting/fitting.rst b/docs/src/tutorials/fitting/fitting.rst new file mode 100644 index 00000000..52b6c14f --- /dev/null +++ b/docs/src/tutorials/fitting/fitting.rst @@ -0,0 +1,12 @@ +Fitting +======= + +These are basic fitting examples using the :py:mod:`easyreflectometry` library, to get an understanding of the possibilities. + +.. toctree:: + :maxdepth: 1 + + simple_fitting.ipynb + repeating.ipynb + monolayer.ipynb + material_solvated.ipynb \ No newline at end of file diff --git a/docs/src/tutorials/fitting/material_solvated.ipynb b/docs/src/tutorials/fitting/material_solvated.ipynb index 213c9bab..4665e87b 100644 --- a/docs/src/tutorials/fitting/material_solvated.ipynb +++ b/docs/src/tutorials/fitting/material_solvated.ipynb @@ -7,12 +7,12 @@ "source": [ "# Using the MaterialSolvated\n", "\n", - "In the [first tutorial](../fitting/simple_fitting.rst), we looked at a straight forward example of a polymer film at the solid/liquid interface. \n", + "In the [first tutorial](../fitting/simple_fitting.ipynb), we looked at a straight forward example of a polymer film at the solid/liquid interface. \n", "To analyse this data, we constructed a model with two layers, one SiO2 and one of the polymer film, and when the analysis was performed, the scattering length density of the polymer film was allowed to vary to find an optimum value. \n", "However, it is likely that this scattering length density is in fact a compound value arising from the mixture of the polymer with some D2O intercalated. \n", "Therefore, if, for example, the surface covereage of the polymer was known, it may be possible to determine the scattering length density alone. \n", "Of course, this could be calculated from the optimal scattering length density for the film, but it is more intuitive to include this in our modelling approach. \n", - "Here, we will show how to use the `MaterialSolvated` [type](../../sample/material_library.rst#materialsolvated) to perform this analysis. " + "Here, we will show how to use the `MaterialSolvated` [type](../basic/material_library.rst#materialsolvated) to perform this analysis. " ] }, { @@ -78,7 +78,7 @@ "id": "3ac19f8b-099d-4b19-8d37-7dd651a25949", "metadata": {}, "source": [ - "For information about the data being read in and the details of the model see [the previous tutorial](../fitting/simple_fitting.rst). \n", + "For information about the data being read in and the details of the model see [the previous tutorial](../fitting/simple_fitting.ipynb). \n", "We will gloss over these details here.\n", "We use `pooch` to fetch the file from the repository." ] @@ -152,9 +152,12 @@ "source": [ "So for the `solvated_film` object, the scattering length density is calculated as,\n", "\n", - "$$ \\rho_{\\mathrm{solv film}} = (1-\\phi)\\rho_{\\mathrm{film}} + \\phi\\rho_{\\mathrm{D}_2\\mathrm{O}}, $$\n", + "
\n", + "\n", + "
\n", + "\n", "\n", - "where the scattering length densities are given with $\\rho$ and the coverage with $\\phi$. \n", + "where the scattering length densities are given with ρ and the coverage with ϕ. \n", "This means that when we investigate the `solvated_film` object, the scattering length density will be 3.09e-6 Å-2" ] }, @@ -348,13 +351,13 @@ "id": "0e2fbca8-3717-4fee-8854-f081dd79c4c3", "metadata": {}, "source": [ - "The fit reproducing the measured reflectivity curve yields that the scattering length density (SLD) of the layer is 2.36E-6 Å-2. Remember this layer is composed of 75% of the polymer film layer (SLD of 1.026E-6 Å-2 fitted) and 25% of D2O (SLD of 6.36E-6 Å-2 known) making (0.75 * 1.026 + 0.25 * 6.36)E-6 = 2.36E-6 Å-2. This is the same as the result from the [previous tutorial](../fitting/simple_fitting.rst)." + "The fit reproducing the measured reflectivity curve yields that the scattering length density (SLD) of the layer is 2.36E-6 Å-2. Remember this layer is composed of 75% of the polymer film layer (SLD of 1.026E-6 Å-2 fitted) and 25% of D2O (SLD of 6.36E-6 Å-2 known) making (0.75 * 1.026 + 0.25 * 6.36)E-6 = 2.36E-6 Å-2. This is the same as the result from the [previous tutorial](./simple_fitting.ipynb)." ] } ], "metadata": { "kernelspec": { - "display_name": ".venv2", + "display_name": "easyref", "language": "python", "name": "python3" }, @@ -368,7 +371,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/docs/src/tutorials/fitting/monolayer.ipynb b/docs/src/tutorials/fitting/monolayer.ipynb index 6ec2e726..cc521620 100644 --- a/docs/src/tutorials/fitting/monolayer.ipynb +++ b/docs/src/tutorials/fitting/monolayer.ipynb @@ -8,7 +8,7 @@ "# Investigation of a surfactant monolayer\n", "\n", "A common system that is studied with neutron and X-ray reflectometry are surfactant monolayers. \n", - "In this tutorial, we will look at how the `easyreflectometry` assembly `SurfactantLayer` ([detailed here](../../sample/assemblies_library.rst#surfactantlayer)) can be used to model a phospholipid bilayer. \n", + "In this tutorial, we will look at how the `easyreflectometry` assembly `SurfactantLayer` ([detailed here](../basic/assemblies_library.rst#surfactantlayer)) can be used to model a phospholipid bilayer. \n", "First, we will import the relevant packages and functions." ] }, @@ -76,9 +76,9 @@ "source": [ "## Reading in experimental data\n", "\n", - "As has been [shown previously](../fitting/simple_fitting.rst), we use the `load` function to read in our experimental data. \n", + "As has been [shown previously](../fitting/simple_fitting.ipynb), we use the `load` function to read in our experimental data. \n", "For this tutorial we will be looking at [DSPC](https://en.wikipedia.org/wiki/Distearoylphosphatidylcholine), a phospholipid molecule that will self-assemble into a monolayer at the air-water interface. \n", - "The data being used has kindly been shared by the authors of [previous work on the system](#hollinshead2009). We use `pooch` to fetch the file from our repository." + "The data being used has kindly been shared by the authors of [previous work on the system](https://doi.org/10.1021/la8028319)(Hollinshead et al. 2009). We use `pooch` to fetch the file from our repository." ] }, { @@ -90,8 +90,8 @@ "source": [ "file_path = pooch.retrieve(\n", " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/d70d2o.ort\",\n", - " known_hash=\"d877793b3c415834791b2c114dceb12f4564c083b2e7bf51b7a9f289a58165a2\",\n", + " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/fitting/d70d2o.ort\",\n", + " known_hash=\"3e4750536621be8eec493fa21a287e408d384f29cacb113b71d02690d99f0998\",\n", ")\n", "data = load(file_path)\n", "plot(data)" @@ -104,7 +104,7 @@ "source": [ "## Building the model\n", "\n", - "The study of surfactant monolayers is very popular in the literature, including the models based on [functional descriptions](#hollinshead2009), [slab models](#campbell2018), and [molecular dynamics simulations](#mccluskey2019). \n", + "The study of surfactant monolayers is very popular in the literature, including the models based on [functional descriptions](https://doi.org/10.1021/la8028319)(Hollinshead et al. 2009), [slab models](https://doi.org/10.1016/j.jcis.2018.07.022)(Campbell et al. 2018), and [molecular dynamics simulations](https://doi.org/10.1088/2399-6528/ab12a9) (McCluskey et al. 2019). \n", "In `easyreflectometry`, we use a slab model description taht has become particularly commonplace. \n", "A graphical representation of the slab model for a phosphoplipid monolayer is shown below.\n", "\n", @@ -117,9 +117,12 @@ "\n", "The slab model for a phospholipid monolayer involves describing the system as consisting of two components, that for the hydrophilic head group layer and that for the hydrophobic tail group layer. \n", "Each of these layers have some thickness that can be estimated by considering the size of the head and tail groups.\n", - "The scattering length density ($\\rho$) for the layers is then defined based on the layer thickness ($d$), the scattering length for the lipid head or tail molecule ($b$), the surface number density of the monolayer (defined by the area per molecule, $\\mathrm{APM}$) and the presence of solvent in the head or tail molecules ($\\phi$ solvation), where the solvent has a known scattering length density ($\\rho_{\\mathrm{solvent}}$), \\n\",\n", + "The scattering length density (ρ) for the layers is then defined based on the layer thickness (d), the scattering length for the lipid head or tail molecule (b), the surface number density of the monolayer (defined by the area per molecule, APM) and the presence of solvent in the head or tail molecules (ϕ solvation), where the solvent has a known scattering length density (ρ solvent),\n", "\n", - "$$ \\rho = \\frac{b}{d\\mathrm{APM}}(1-\\phi) + \\rho_{\\mathrm{solvent}}\\phi. $$\n", + "
\n", + " \n", + "
\n", + "\n", "\n", "This approach has two benefits: \n", "1. By constraining the area per molecule of the head and tail groups to be the same, the analysis can ensure that the number density of the two components is equal (i.e. for every head group there is a tail group), as would be expected given the chemical bonding.\n", @@ -178,7 +181,7 @@ "id": "7f59e62a-071a-4921-bfd2-0f998e172885", "metadata": {}, "source": [ - "Next we define estimates for the thickness of each layer, for this we will use values from [a previous work](#mccluskey2020), as we will not be varying these parameters. " + "Next we define estimates for the thickness of each layer, for this we will use values from [a previous work](https://doi.org/10.1088/2632-2153/ab94c4)(McCluskey et al. 2020), as we will not be varying these parameters. " ] }, { @@ -366,7 +369,7 @@ "id": "514afa7a-cfa4-4ef9-a2c9-105c4d56ec6a", "metadata": {}, "source": [ - "Finally, as with other [tutorials](./tutorials.rst), we create the `CalculatorFactory` (and connect this to our model) and `MultiFitter` objects and perform the fit. " + "Finally, as with other [tutorials](../tutorials.rst), we create the `CalculatorFactory` (and connect this to our model) and `MultiFitter` objects and perform the fit. " ] }, { @@ -416,7 +419,7 @@ "id": "8dd6ead8-5019-44eb-9fc9-d8309443bc46", "metadata": {}, "source": [ - "We can see above that the solvent surface coverage of the surfactant was found to be around 60 % (solvent_fraction in head_layer) and the area per molecule around 50 Å2, in agreement with [previous investigations](#mccluskey2019). " + "We can see above that the solvent surface coverage of the surfactant was found to be around 60 % (solvent_fraction in head_layer) and the area per molecule around 50 Å2, in agreement with [previous investigations](https://doi.org/10.1088/2399-6528/ab12a9) (McCluskey et al. 2019). " ] }, { @@ -432,10 +435,9 @@ "id": "208e5f3c-3355-4c68-b8d2-27e883ab8e7f", "metadata": {}, "source": [ - "
\n", "Hollinshead, C. M., Harvey, R. D., Barlow, D. J., Webster, J. R. P., Hughes, A. V., Weston, A., Lawrence, M. J., **2009**,\n", "*Effects of Surface Pressure on the Structure of Distearoylphosphatidylcholine Monolayers Formed at the Air/Water Interface*,\n", - "[Langmuir, 25, 4070-4077](https://doi.org/10.1021/la8028319)" + "[Langmuir, 25, 4070-4077](https://doi.org/10.1021/la8028319)\n" ] }, { @@ -443,7 +445,6 @@ "id": "3a95ae4f-99e3-4b04-837f-1b92fb4c7d19", "metadata": {}, "source": [ - "
\n", "Campbell, R. A., Saaka, Y., Shao, Y., Gerelli, Y., Cubitt, R., Nazaruk, E., Matyszewska, D. Lawrence, M. J., **2018**,\n", "*Structure of surfactant and phospholipid monolayers at the air/water interface modeled from neutron reflectivity data*,\n", "[Journal of Colloid and Interface Science, 531, 98-108](https://doi.org/10.1016/j.jcis.2018.07.022)" @@ -454,7 +455,6 @@ "id": "d481d2f2-1388-4fa4-852c-741c74998261", "metadata": {}, "source": [ - "
\n", "McCluskey, A. R., Grant, J., Smith, A. J., Rawle, J. L., Barlow, D. J., Lawrence, M. J., Parker, S. C., Edler, K. J., **2019**,\n", "*Assessing molecular simulation for the analysis of lipid monolayer reflectometry*,\n", "[Journal of Physics Communications, 3, 075001](https://doi.org/10.1088/2399-6528/ab12a9)" @@ -465,7 +465,6 @@ "id": "30fb4898-c55c-413a-81ce-f8163ed56175", "metadata": {}, "source": [ - "
\n", "McCluskey, A. R., Cooper, J. F. K., Arnold, T., Snow, T., **2020**,\n", "*A general approach to maximise information density in neutron reflectometry analysis*,\n", "[Machine Learning: Science and Technology, 1, 035002](https://doi.org/10.1088/2632-2153/ab94c4)" @@ -474,7 +473,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv2", + "display_name": "easyref", "language": "python", "name": "python3" }, @@ -488,7 +487,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/docs/src/tutorials/fitting/repeating.ipynb b/docs/src/tutorials/fitting/repeating.ipynb index 75335c98..dd093c68 100644 --- a/docs/src/tutorials/fitting/repeating.ipynb +++ b/docs/src/tutorials/fitting/repeating.ipynb @@ -7,11 +7,11 @@ "source": [ "# A multilayer fitting model\n", "\n", - "One of the main tools in `easyreflectometry` is the [assemblies library](../../sample/assemblies_library.rst). \n", + "One of the main tools in `easyreflectometry` is the [assemblies library](../basic/assemblies_library.rst). \n", "This allows the user to define their model, using specific parameters for their system of interest (if it is included in the assemblies library). \n", "These assemblies will impose necessary constraints and computational efficiencies based on the assembly that is used. \n", "\n", - "In this tutorial, we will look at one of these assemblies, that of a `RepeatingMultilayer` ([documented here](../../sample/assemblies_library.rst#repeatingmultilayer)). \n", + "In this tutorial, we will look at one of these assemblies, that of a `RepeatingMultilayer` ([documented here](../basic/assemblies_library.rst#repeatingmultilayer)). \n", "This tutorial is based on an example from the [BornAgain](https://www.bornagainproject.org) documentation looking at [specular reflectivity analysis](https://www.bornagainproject.org/m/py/fitting/extended/fit-specular-data/). \n", "Before performing analysis, we should import the packages that we need." ] @@ -59,7 +59,7 @@ "id": "8fd3e8f7-84ac-41c4-a89d-922ed82a001e", "metadata": {}, "source": [ - "As mentioned in the [previous tutorial](./simple_fitting.rst), we share the version of the software packages we will use. " + "As mentioned in the [previous tutorial](./simple_fitting.ipynb), we share the version of the software packages we will use. " ] }, { @@ -171,7 +171,7 @@ "id": "f63ec440-089f-46cf-8ff5-be5012ad8dc8", "metadata": {}, "source": [ - "Then, to produce the repeating multilayer, we use the `RepeatingMultilayer` [assembly type](../../sample/assemblies_library.rst#RepeatingMultilayer). \n", + "Then, to produce the repeating multilayer, we use the `RepeatingMultilayer` [assembly type](../basic/assemblies_library.rst#RepeatingMultilayer). \n", "This can be constructed in a range of different ways, however here we pass a list of `Layer` type objects and a number of repetitions. " ] }, @@ -237,7 +237,7 @@ "source": [ "## Choosing our calculation engine\n", "\n", - "In the [previous tutorial](./simple_fitting.rst), we used the default [refnx](https://refnx.readthedocs.io/) engine for our analysis. \n", + "In the [previous tutorial](./simple_fitting.ipynb), we used the default [refnx](https://refnx.readthedocs.io/) engine for our analysis. \n", "Here, we will change our engine to be [*Refl1D*](https://refl1d.readthedocs.io/en/latest/).\n", "This is achieved with the `interface.switch('refl1d')` method below. " ] @@ -327,7 +327,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv2", + "display_name": "easyref", "language": "python", "name": "python3" }, @@ -341,7 +341,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/docs/src/tutorials/fitting/simple_fitting.ipynb b/docs/src/tutorials/fitting/simple_fitting.ipynb index 8e61f0f2..5dcd5eb8 100644 --- a/docs/src/tutorials/fitting/simple_fitting.ipynb +++ b/docs/src/tutorials/fitting/simple_fitting.ipynb @@ -231,7 +231,7 @@ "id": "7247fc52-6874-47eb-a234-c7bb7db229fd", "metadata": {}, "source": [ - "Given that the silicon and silicon dioxide layer both compose the solid subphase, it can be helpful to combine these as a `Multilayer` [assembly type](../../sample/assemblies_library.rst#multilayer) in our code. " + "Given that the silicon and silicon dioxide layer both compose the solid subphase, it can be helpful to combine these as a `Multilayer` [assembly type](../basic/assemblies_library.rst#multilayer) in our code. " ] }, { @@ -249,7 +249,7 @@ "id": "a3a2df9b-8ddb-4b3e-a5c3-55b72280b651", "metadata": {}, "source": [ - "These objects are then combined as a `Sample`, where the constructor takes a series of layers (or some more complex `easyreflectometry` [assemblies](../../sample/assemblies_library.rst)) and, optionally, some name for the sample." + "These objects are then combined as a `Sample`, where the constructor takes a series of layers (or some more complex `easyreflectometry` [assemblies](../basic/assemblies_library.rst)) and, optionally, some name for the sample." ] }, { @@ -524,7 +524,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".test", + "display_name": "easyref", "language": "python", "name": "python3" }, @@ -538,7 +538,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/docs/src/tutorials/project.ipynb b/docs/src/tutorials/project.ipynb deleted file mode 100644 index 1200f995..00000000 --- a/docs/src/tutorials/project.ipynb +++ /dev/null @@ -1,178 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Project\n", - "This notebook serves to demonstrate some of the functionality of the Project object.\n", - "\n", - "## Setup\n", - "First configure matplotlib to place figures in notebook and import needed modules." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from easyreflectometry import Project\n", - "from easyreflectometry.summary import Summary" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Project object\n", - "\n", - "First we will create a `Project` object. There should only be one such object. The project is follwoing set to have the current folder at its root and the we give it the name: `MyNewProject`. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "project = Project()\n", - "project.set_path_project_parent('.')\n", - "project._info['name'] = 'MyNewProject'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will then populate this `Project` with the default model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "project.default_model()\n", - "print(project.models)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also see which materials that are defined in the `Project`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(project._materials)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is possible to save a `Project` object. It will be place in the project folder and the state will be save in the file name `project.json`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "project.save_as_json(overwrite=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also generate a summary of the project. We are also going to store the PDF and HTML files with the summary in the project folder." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "summary = Summary(project)\n", - "summary.save_pdf_summary(str(project.path / 'summary.pdf'))\n", - "summary.save_html_summary(str(project.path / 'summary.html'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[Link to PDF summary](MyNewProject/summary.pdf) in `MyNewProject/summary.pdf`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can reset the project to a blank state." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "project.reset()\n", - "print(project.models)\n", - "print(project._materials)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then let us try to load the state we saved above." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "project.set_path_project_parent('.')\n", - "project._info['name'] = 'MyNewProject'\n", - "project.load_from_json()\n", - "print(project.models)\n", - "print(project._materials)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/src/tutorials/simulation/magnetism.ipynb b/docs/src/tutorials/simulation/magnetism.ipynb index a72fe39f..82834ee2 100644 --- a/docs/src/tutorials/simulation/magnetism.ipynb +++ b/docs/src/tutorials/simulation/magnetism.ipynb @@ -383,7 +383,7 @@ "id": "971baee6", "metadata": {}, "source": [ - "# Afterthoughts \n", + "## Afterthoughts \n", "Just for completion we will do a few additional calculations and comparisons of reflectivity." ] }, diff --git a/docs/src/tutorials/fitting/mod_pointwise_two_layer_sample_dq-0.0.ort b/docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-0.0.ort similarity index 100% rename from docs/src/tutorials/fitting/mod_pointwise_two_layer_sample_dq-0.0.ort rename to docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-0.0.ort diff --git a/docs/src/tutorials/fitting/mod_pointwise_two_layer_sample_dq-1.0.ort b/docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-1.0.ort similarity index 100% rename from docs/src/tutorials/fitting/mod_pointwise_two_layer_sample_dq-1.0.ort rename to docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-1.0.ort diff --git a/docs/src/tutorials/fitting/mod_pointwise_two_layer_sample_dq-10.0.ort b/docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-10.0.ort similarity index 100% rename from docs/src/tutorials/fitting/mod_pointwise_two_layer_sample_dq-10.0.ort rename to docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-10.0.ort diff --git a/docs/src/tutorials/simulation/resolution_functions copy.ipynb b/docs/src/tutorials/simulation/resolution_functions copy.ipynb deleted file mode 100644 index dabafc8b..00000000 --- a/docs/src/tutorials/simulation/resolution_functions copy.ipynb +++ /dev/null @@ -1,402 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a60117e3-d089-4375-ac7c-12a52ed47271", - "metadata": {}, - "source": [ - "# Resolution functions\n", - "The purpose of the resolution function is to enable the `easyreflectometry` model to quantify the experimental uncertainties in wavelength and incident angle.\n", - "When determining reflectivity the resolution function defines the smearing to apply. For a given Q-point such smearing is applied by determining an average of the neighboring Q-point weigthed by a normal distribution, which has a Q-point dependent Full Width at the Half Maximum (FWHM) that again is defined by the resolution function.\n", - "\n", - "Often we rely on a resolution function that has a simple functional dependecy of the Q-point. By this is understood that the applied smearing in an Q point-has a FWHM that is given as a percentage of the value of the Q-point.\n", - "\n", - "Alternatively the FWHM value might be determined and declared directly for each measured Q-point.\n", - "When this is the case the provided Q-points and the corresponding FWHM values can be used to declare a linear spline function and thereby enable a determination of the reflectivity at an arbitrary point within the provided range of discrete Q-points." - ] - }, - { - "cell_type": "markdown", - "id": "f5d0bd58", - "metadata": {}, - "source": [ - "## Setup\n", - "First configure matplotlib to place figures in notebook and import needed modules. Note that the plot function needs installation of `plopp` seperately or installation of `easyreflectometry[dev]`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "29d5d62d-af4a-416d-bbe2-1338d32b30f5", - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import scipp as sc\n", - "import refnx\n", - "import pooch\n", - "\n", - "import easyreflectometry\n", - "\n", - "from easyreflectometry.calculators import CalculatorFactory\n", - "from easyreflectometry.data import load\n", - "from easyreflectometry.model import Model\n", - "from easyreflectometry.model import LinearSpline\n", - "from easyreflectometry.model import PercentageFwhm\n", - "from easyreflectometry.sample import Layer\n", - "from easyreflectometry.sample import Material\n", - "from easyreflectometry.sample import Multilayer\n", - "from easyreflectometry.sample import Sample\n", - "from easyreflectometry.plot import plot" - ] - }, - { - "cell_type": "markdown", - "id": "8fd3e8f7-84ac-41c4-a89d-922ed82a001e", - "metadata": {}, - "source": [ - "For reference we fetch the version of the software packages we are using. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "549734c1-bbd9-41f3-8a20-d7a8ded37802", - "metadata": {}, - "outputs": [], - "source": [ - "print(f'numpy: {np.__version__}')\n", - "print(f'scipp: {sc.__version__}')\n", - "print(f'easyreflectometry: {easyreflectometry.__version__}')\n", - "print(f'refnx: {refnx.__version__}')" - ] - }, - { - "cell_type": "markdown", - "id": "687719c7-d5a2-4d60-953f-c854c5ca1c4a", - "metadata": {}, - "source": [ - "## Reading in measured data\n", - "\n", - "The data that we will investigate in this tutorial was generated with `Refnx` and are stored in `.ort` [format file](https://github.com/reflectivity/file_format/blob/master/specification.md) files. In this tutorial we are investigation how we can include resolution effects when simulating and reproducing data measured in an experiment. For an `.ort` file the resoultion data for reflectivity is stored in the fourth column.\n", - "\n", - "IMPORTANT when using `easyreflectometry` functionality for loading an `.ort` file we store the resolution data as a variance (squared value). As a consequence one needs to take the squareroot of the loaded data to recover the raw values (fourth column).\n", - "We use `pooch` to fetch the file from the repository." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "609174e5-1371-412d-a29f-cb05bfe36df0", - "metadata": {}, - "outputs": [], - "source": [ - "file_path_0 = pooch.retrieve(\n", - " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/mod_pointwise_two_layer_sample_dq-0.0.ort\",\n", - " known_hash=\"f8a3e7007b83f0de4e2c761134e7d1c55027f0099528bd56f746b50349369f50\",\n", - ")\n", - "file_path_1 = pooch.retrieve(\n", - " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/mod_pointwise_two_layer_sample_dq-1.0.ort\",\n", - " known_hash=\"9d81a512cbe45f923806ad307e476b27535614b2e08a2bf0f4559ab608a34f7a\",\n", - ")\n", - "file_path_10 = pooch.retrieve(\n", - " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/mod_pointwise_two_layer_sample_dq-10.0.ort\",\n", - " known_hash=\"991395c0b6a91bf60c12d234c645143dcac1cab929944fc4e452020d44b787ad\",\n", - ")\n", - "dict_reference = {}\n", - "dict_reference['0'] = load(file_path_0)\n", - "dict_reference['1'] = load(file_path_1)\n", - "dict_reference['10'] = load(file_path_10)" - ] - }, - { - "cell_type": "markdown", - "id": "1ab3a164-62c8-4bd3-b0d8-e6f22c83dc74", - "metadata": {}, - "source": [ - "As an example we can plot the reference data without any resolution effects." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "31ab44d3-826a-4270-9046-ad667dcb66ba", - "metadata": {}, - "outputs": [], - "source": [ - "plot(dict_reference['0'])" - ] - }, - { - "cell_type": "markdown", - "id": "dad78ccc-1e6f-47cd-8557-c4fa6c736f4b", - "metadata": {}, - "source": [ - "## Building our model\n", - "\n", - "The system that was used to produce the data shown above is based on a silicon subphase with two layers upon it. \n", - "These two layers are charachterized by having a scattering length density (SLD) of respectively 4 and 8.\n", - "Both layers have a rougness of 2 but their thicknesses are 100 and 150 angstrom respectively.\n", - "We show the model that will be used graphically below. \n", - "\n", - "
\n", - " A slab model description of the two_layers system.\n", - "
\n", - "
\n", - " A slab model description of the two layer.\n", - "
\n", - "\n", - "To construct such a layer structure, first we create each of the materials, the associated layers, and the sub and super phases. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0f95d620-35b7-4b47-a3b4-9e33d5525b50", - "metadata": {}, - "outputs": [], - "source": [ - "sld_4 = Material(sld=4.0, isld=0, name='Sld 4')\n", - "sld_8 = Material(sld=8.0, isld=0, name='Sld 8')\n", - "vacuum = Material(sld=0, isld=0, name='Vacuum')\n", - "si = Material(sld=2.047, isld=0, name='Si')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9a0b37ed-8714-4614-b49f-1e86ac232ac1", - "metadata": {}, - "outputs": [], - "source": [ - "sld_4_layer = Layer(material=sld_4, thickness=100, roughness=2, name='SLD 4 Layer')\n", - "sld_8_layer = Layer(material=sld_8, thickness=150, roughness=2, name='SLD 8 Layer')\n", - "superphase = Layer(material=vacuum, thickness=0, roughness=0, name='Vacuum Superphase')\n", - "subphase = Layer(material=si, thickness=0, roughness=2, name='Si Subphase')" - ] - }, - { - "cell_type": "markdown", - "id": "f63ec440-089f-46cf-8ff5-be5012ad8dc8", - "metadata": {}, - "source": [ - "Then, to produce the two layered structure, we use the `Multilayer` [assembly type](../../sample/assemblies_library.rst#Multilayer)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "311b25a1-6d5d-4e91-a72e-394ad8dcf464", - "metadata": {}, - "outputs": [], - "source": [ - "two_layers = Multilayer([sld_4_layer, sld_8_layer], name='SLD 4/8 Layer')\n", - "two_layers" - ] - }, - { - "cell_type": "markdown", - "id": "1c32d8ad-9baf-41bf-9fd8-419b92be36c4", - "metadata": {}, - "source": [ - "From this, we can construct our structure and combine this with a scaling and background." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2af8c30b", - "metadata": {}, - "outputs": [], - "source": [ - "sample = Sample(Multilayer(superphase), two_layers, Multilayer(subphase), name='Two Layer Sample')\n", - "model = Model(\n", - " sample=sample,\n", - " scale=1,\n", - " background=0,\n", - " name='Two Layer Model',\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "8f0581b9-7690-4b17-9a4f-766ed92aaba2", - "metadata": {}, - "source": [ - "## Set the calculation engine\n", - "\n", - "We will use the default [Refnx](https://refnx.readthedocs.io/) calculator for our analysis. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f1500603-d85d-4e16-b697-e1bf16502991", - "metadata": {}, - "outputs": [], - "source": [ - "interface = CalculatorFactory()\n", - "model.interface = interface\n", - "print(interface.current_interface.name)" - ] - }, - { - "cell_type": "markdown", - "id": "defd6dd5-c618-4af6-a5c7-17532207f0a0", - "metadata": {}, - "source": [ - "## Resolution functions\n", - "\n", - "We now define the different resoultion functions. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "880d10d7-b655-4ef1-b376-21b2e4394160", - "metadata": {}, - "outputs": [], - "source": [ - "resolution_function_dict = {}\n", - "resolution_function_dict['0'] = LinearSpline(\n", - " q_data_points=dict_reference['0']['coords']['Qz_0'].values,\n", - " fwhm_values=np.sqrt(dict_reference['0']['coords']['Qz_0'].variances),\n", - ")\n", - "\n", - "resolution_function_dict['1'] = LinearSpline(\n", - " q_data_points=dict_reference['1']['coords']['Qz_0'].values,\n", - " fwhm_values=np.sqrt(dict_reference['1']['coords']['Qz_0'].variances),\n", - ")\n", - "\n", - "resolution_function_dict['10'] = LinearSpline(\n", - " q_data_points=dict_reference['10']['coords']['Qz_0'].values,\n", - " fwhm_values=np.sqrt(dict_reference['10']['coords']['Qz_0'].variances),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "0481604e-3973-4e5d-a0ee-2f5915461d71", - "metadata": {}, - "source": [ - "## Simulations\n", - "The next step is to visualise how the resolution functions affect the model. \n", - "Furthermore, we compare the here determined reflectivities (Resolution) and the ones that were determined in `Refnx` (Reference)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e59d3153-f0da-4fce-a4f0-a424010acbec", - "metadata": {}, - "outputs": [], - "source": [ - "for key in resolution_function_dict.keys():\n", - " reference_coords = dict_reference[key]['coords']['Qz_0'].values\n", - " reference_data = dict_reference[key]['data']['R_0'].values\n", - " model_coords = np.linspace(\n", - " start=min(reference_coords),\n", - " stop=max(reference_coords),\n", - " num=1000,\n", - " )\n", - " model.resolution_function = resolution_function_dict[key]\n", - " model_data = model.interface().reflectity_profile(\n", - " model_coords,\n", - " model.unique_name,\n", - " )\n", - " plt.plot(model_coords, model_data, 'k-', label=f'Resolution: {key}%')\n", - " plt.plot(reference_coords, reference_data, 'rx', label=f'Reference')\n", - " ax = plt.gca()\n", - " ax.set_xlim([-0.01, 0.45])\n", - " ax.set_ylim([1e-10, 2.5])\n", - " plt.legend()\n", - " plt.yscale('log')\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "60d1896d-06ca-4bd2-b44c-d3788304220c", - "metadata": {}, - "source": [ - "From the plots it is apparent that an increasing resolution flattens the reflectivity profile." - ] - }, - { - "cell_type": "markdown", - "id": "e3c97d1b", - "metadata": {}, - "source": [ - "## Afterthoughts\n", - "As a last task we will compare the reflectivity determined using a percentage resolution function and a point-wise function.\n", - "We should recall that the \"experimental\" data was generated using `Refnx`.\n", - "By comparing the reflectivities determined using a resolution function with a FWHM of 1.0% and the point-wise FHWN constructed from data in a `.ort` file it is apparent that this reference data also was constructed using a resolution function of 1.0%." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ca0932f6", - "metadata": {}, - "outputs": [], - "source": [ - "key = '1'\n", - "reference_coords = dict_reference[key]['coords']['Qz_0'].values\n", - "reference_data = dict_reference[key]['data']['R_0'].values\n", - "model_coords = np.linspace(\n", - " start=min(reference_coords),\n", - " stop=max(reference_coords),\n", - " num=1000,\n", - ")\n", - "\n", - "model.resolution_function = resolution_function_dict[key]\n", - "model_data = model.interface().reflectity_profile(\n", - " model_coords,\n", - " model.unique_name,\n", - ")\n", - "plt.plot(model_coords, model_data, 'k-', label=f'Variable', linewidth=5)\n", - "\n", - "model.resolution_function = PercentageFwhm(1.0)\n", - "model_data = model.interface().reflectity_profile(\n", - " model_coords,\n", - " model.unique_name,\n", - ")\n", - "plt.plot(model_coords, model_data, 'r-', label=f'Percentage')\n", - "\n", - "ax = plt.gca()\n", - "ax.set_xlim([-0.01, 0.45])\n", - "ax.set_ylim([1e-10, 2.5])\n", - "plt.legend()\n", - "plt.yscale('log')\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv2", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/src/tutorials/simulation/resolution_functions.ipynb b/docs/src/tutorials/simulation/resolution_functions.ipynb index dabafc8b..237963e7 100644 --- a/docs/src/tutorials/simulation/resolution_functions.ipynb +++ b/docs/src/tutorials/simulation/resolution_functions.ipynb @@ -96,17 +96,17 @@ "source": [ "file_path_0 = pooch.retrieve(\n", " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/mod_pointwise_two_layer_sample_dq-0.0.ort\",\n", + " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-0.0.ort\",\n", " known_hash=\"f8a3e7007b83f0de4e2c761134e7d1c55027f0099528bd56f746b50349369f50\",\n", ")\n", "file_path_1 = pooch.retrieve(\n", " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/mod_pointwise_two_layer_sample_dq-1.0.ort\",\n", + " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-1.0.ort\",\n", " known_hash=\"9d81a512cbe45f923806ad307e476b27535614b2e08a2bf0f4559ab608a34f7a\",\n", ")\n", "file_path_10 = pooch.retrieve(\n", " # URL to one of Pooch's test files\n", - " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/sample/mod_pointwise_two_layer_sample_dq-10.0.ort\",\n", + " url=\"https://raw.githubusercontent.com/EasyScience/EasyReflectometryLib/master/docs/src/tutorials/simulation/mod_pointwise_two_layer_sample_dq-10.0.ort\",\n", " known_hash=\"991395c0b6a91bf60c12d234c645143dcac1cab929944fc4e452020d44b787ad\",\n", ")\n", "dict_reference = {}\n", @@ -186,7 +186,7 @@ "id": "f63ec440-089f-46cf-8ff5-be5012ad8dc8", "metadata": {}, "source": [ - "Then, to produce the two layered structure, we use the `Multilayer` [assembly type](../../sample/assemblies_library.rst#Multilayer)." + "Then, to produce the two layered structure, we use the `Multilayer` [assembly type](../basic/assemblies_library.rst#Multilayer)." ] }, { @@ -380,7 +380,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv2", + "display_name": "easyref", "language": "python", "name": "python3" }, @@ -394,7 +394,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/docs/src/tutorials/simulation/simulation.rst b/docs/src/tutorials/simulation/simulation.rst new file mode 100644 index 00000000..4f187b05 --- /dev/null +++ b/docs/src/tutorials/simulation/simulation.rst @@ -0,0 +1,10 @@ +Simulation +========== + +These are basic simulation examples using the :py:mod:`easyreflectometry` library, to get an understanding of the possibilities. + +.. toctree:: + :maxdepth: 1 + + magnetism.ipynb + resolution_functions.ipynb \ No newline at end of file diff --git a/docs/src/tutorials/tutorials.rst b/docs/src/tutorials/tutorials.rst index ea6868d7..b73e6666 100644 --- a/docs/src/tutorials/tutorials.rst +++ b/docs/src/tutorials/tutorials.rst @@ -1,6 +1,6 @@ -================ -**How to use** -================ +========== +How to use +========== Dictionary ========== @@ -40,10 +40,10 @@ And we are working to add more, in particular `bornagain`_ and `GenX`_. .. _`GenX`: https://aglavic.github.io/genx/doc/ .. toctree:: - :maxdepth: 1 + :maxdepth: 2 - tutorials/basic - tutorials/simulation - tutorials/fitting - tutorials/advancedfitting - tutorials/extra + basic/basic + simulation/simulation + fitting/fitting + advancedfitting/advancedfitting + extra/extra diff --git a/docs/src/usage.rst b/docs/src/usage.rst index c20cc720..fb6c24bf 100644 --- a/docs/src/usage.rst +++ b/docs/src/usage.rst @@ -1,6 +1,6 @@ -===== +=============== Getting started -===== +=============== To use :py:mod:`easyreflectometry` in a project:: @@ -39,4 +39,4 @@ To use :py:mod:`easyreflectometry` in a project:: Details of specific usage of :py:mod:`easyreflectometry` can be found in the `tutorials`_. -.. _`tutorials`: ./tutorials/tutorials.html \ No newline at end of file +.. _`tutorials`: ./tutorials/tutorials.rst \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index eebf6063..e0da3a2d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,13 +58,13 @@ dev = [ ] docs = [ - "myst_parser==4.0.1", - "nbsphinx==0.9.7", - "sphinx", + "myst_parser", + "nbsphinx", + "sphinx==8.1.3", "sphinx_autodoc_typehints", - "sphinx-book-theme==1.1.4", - "sphinx-copybutton==0.5.2", - "toml==0.10.2", + "sphinx_book_theme", + "sphinx-copybutton", + "toml" ] [project.urls] diff --git a/src/easyreflectometry/data/measurement.py b/src/easyreflectometry/data/measurement.py index 3664af4d..e7fe8b9c 100644 --- a/src/easyreflectometry/data/measurement.py +++ b/src/easyreflectometry/data/measurement.py @@ -11,17 +11,6 @@ from easyreflectometry.data import DataSet1D -def load_as_dataset(fname: Union[TextIO, str]) -> DataSet1D: - """Load data from an ORSO .ort file as a DataSet1D.""" - data_group = load(fname) - return DataSet1D( - x=data_group['coords']['Qz_0'].values, - y=data_group['data']['R_0'].values, - ye=data_group['data']['R_0'].variances, - xe=data_group['coords']['Qz_0'].variances, - ) - - def load(fname: Union[TextIO, str]) -> sc.DataGroup: """Load data from an ORSO .ort file. @@ -33,6 +22,17 @@ def load(fname: Union[TextIO, str]) -> sc.DataGroup: return _load_txt(fname) +def load_as_dataset(fname: Union[TextIO, str]) -> DataSet1D: + """Load data from an ORSO .ort file as a DataSet1D.""" + data_group = load(fname) + return DataSet1D( + x=data_group['coords']['Qz_0'].values, + y=data_group['data']['R_0'].values, + ye=data_group['data']['R_0'].variances, + xe=data_group['coords']['Qz_0'].variances, + ) + + def _load_orso(fname: Union[TextIO, str]) -> sc.DataGroup: """Load from an ORSO compatible file. diff --git a/src/easyreflectometry/sample/collections/sample.py b/src/easyreflectometry/sample/collections/sample.py index 12394474..9f44cc9c 100644 --- a/src/easyreflectometry/sample/collections/sample.py +++ b/src/easyreflectometry/sample/collections/sample.py @@ -15,6 +15,7 @@ # Needs to be a function, elements are added to the global_object.map def DEFAULT_ELEMENTS(interface): + """:meta private:""" return ( Multilayer(interface=interface), Multilayer(interface=interface),