reflectorch 1.0.0__tar.gz → 1.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of reflectorch might be problematic. Click here for more details.
- reflectorch-1.0.1/.github/workflows/draft-pdf.yml +24 -0
- reflectorch-1.0.1/LICENSE.txt +21 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/PKG-INFO +9 -6
- {reflectorch-1.0.0 → reflectorch-1.0.1}/README.md +8 -5
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/installation.ipynb +1 -17
- {reflectorch-1.0.0 → reflectorch-1.0.1}/paper/paper.md +9 -7
- {reflectorch-1.0.0 → reflectorch-1.0.1}/pyproject.toml +1 -1
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/sampler_strategies.py +1 -1
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/PKG-INFO +9 -6
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/SOURCES.txt +8 -7
- reflectorch-1.0.1/tests/fixtures/__init__.py +8 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/fixtures/data.py +1 -19
- reflectorch-1.0.1/tests/unit/test_dataloader.py +69 -0
- reflectorch-1.0.1/tests/unit/test_embedding_networks.py +46 -0
- reflectorch-1.0.1/tests/unit/test_mlp.py +34 -0
- reflectorch-1.0.1/tests/unit/test_prior_sampler.py +63 -0
- reflectorch-1.0.1/tests/unit/test_q_generator.py +25 -0
- reflectorch-1.0.1/tests/unit/test_reflectivity.py +123 -0
- reflectorch-1.0.0/LICENSE.txt +0 -621
- reflectorch-1.0.0/tests/data/test_preprocessed_curve_1.npz +0 -0
- reflectorch-1.0.0/tests/fixtures/__init__.py +0 -15
- reflectorch-1.0.0/tests/fixtures/models.py +0 -15
- reflectorch-1.0.0/tests/func/test_model.py +0 -18
- reflectorch-1.0.0/tests/helpers/__init__.py +0 -0
- reflectorch-1.0.0/tests/helpers/generate_data.py +0 -28
- reflectorch-1.0.0/tests/unit/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/.dockerignore +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/.github/workflows/ci.yml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/.gitignore +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/CODE_OF_CONDUCT.md +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/Dockerfile +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/MANIFEST.in +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c1_trained.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_L10_d100_s150_r30_ws5_q03_nq256.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_L3_d200_s150_r60_ws5_q03_nq128.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_L5_d200_s150_r60_ws5_q03_nq256.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_absorption.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_absorption_L2_d500_s150_is30_r60_ws5_q03_nq256.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_absorption_L5_d200_s150_is30_r60_ws5_q03_nq256.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_ae.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_fno.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_model_with_shifts.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_repeating_multilayer.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_repeating_multilayer_trained1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q109_exp_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_absorption_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_3.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_3_02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_4.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_5.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_sm_2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_new_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q64_new_sub_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l5q256_new_sub_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o10.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o11.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o12.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o13.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o14.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o15.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o16.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o3.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o4.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o5.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o7.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o8.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o9.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc10.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc11.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc12.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc13.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc14.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc15.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc16.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc17.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc18.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc19.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc20.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc21.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc22.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc23.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc24.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc25.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc26.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc27.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc28.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc29.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc3.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc30.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc31.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc32.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc33.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc34.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc35.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc36.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc37.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc38.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc39.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc4.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc40.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc41.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc42.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc43.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc44.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc45.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc46.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc47.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc48.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc49.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc5.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc50.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc51.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc52.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc53.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc54.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc55.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc56.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc57.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc58.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc59.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc6.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc60.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc61.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc62.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc63.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc64.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc65.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc66.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc67.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc7.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc8.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc9.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_1_1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_2_2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_3.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/time_val_exp_L2_q128-015_d500_r60_s25n_bs4_budist_noise-poisson02-sh03-sc002-qs1e3-qn1e3.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/time_val_sim_L5_q256_d300_r60_s25_bs4_budist_noise-poisson02_LONGER.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q128-015_d500_r60_s25n_bs4_budist_noise-poisson02-sh03-sc002-qs1e3-qn1e3.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q128_d300_r60_s25_bs4_budist_noise-poisson02-various-noises.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q128_d300_r60_s25_bs4_budist_noise-poisson02-various-noises2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q256_d300_r60_s25_bs4_budist_noise-poisson01.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q256_d300_r60_s25_bs4_budist_noise-poisson03.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q64_d300_r60_s25_bs25_budist_noise-poisson03_scale002.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q64_d300_r60_s25_bs4_blogdist_noise-poisson04.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q64_d300_r60_s25_bs4_budist_noise-poisson04.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_multilayer_V1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_multilayer_V2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_FNO_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_FNO_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02_V2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_FNO_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02_varyQ.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_FNO_L2_q64-512_015-05_d300_r60_s25_bs4_budist_noise-poisson02_varyall.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_FNO_L2_q64-512_015-05_d500_r60_s25n_bs4_budist_noise-poisson02_varyall_V2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_br20_bs4_budist_noise-none.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs25_budist_noise-none.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs25_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_blogdist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-none.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02-hz512.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02-rb10.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs25_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs4_budist_noise-none.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs4_budist_noise-poisson02-TRY2.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q1024_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q256_d300_r60_s25_bs25_budist_noise-poisson02.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q256_d300_r60_s25_bs4_budist_noise-poisson02-Copy1.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q256_d300_r60_s25_bs4_budist_noise-poisson02_LONGER.yaml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/debug.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/.buildinfo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/.nojekyll +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/099e7c02597f512ca4bf329e5e70eabf2526b801bc2e41a4b60faf1fd2a0d5b1.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/1ac30c6dc424753591b75155c55218b97af8a9d4f39ba1f550e3726b99a8c203.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/3032465085654ffdb6867123c628f2cf254e999fbed6a3e83f086fbefff32f60.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/462e9fd6dbc00234aca3b1cae4463c91412d09f837f308179bec64ac6c0e2131.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/4d27eb91adf7ec25746b09811fb942ba4f3cbf658a3863b2c2187d81b8cbcf01.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/51d11b6255a573c0f8781fe74c1711151fbc2bc20db8ad460609c5fd5fcba04f.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/570b83780084f56a287d652d7580aa1858691a18cbc5cab9ceb4a7444baa0090.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/5a15129c3f2683e9a278d594c69424c4a81058c3f8d86a555ff3efd8e2343a0b.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/69d7c263b51df1bddc93a007ae2fecfd0545cf92af67c8882a0df8552576fa66.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/96a843c24bb16816e4ec21c2b6b5c481326b522c884f1655ff3105627ceabe0d.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/97a75e185ec40a99a279ded3b8e62245aa03f9f8d10d001217300c9383d0d765.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/FigureReflectometryNetwork.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/FigureReflectometryNetwork1.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/a4da539228f5cd6bedde145b371d42caf707eac2a4a9b6574589593efd850d6b.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/a8216c88102285c58af52732aad1a43ad5d47aa8b2d194ec59cf6475ab1575b9.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/c6ab9d1f271ac67ea566420b728be4083f1687e08889123058c64db9c0e61210.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/d06c461edbc6816f6bfffbb91ede2b62e2e5bce5bd1b258a1f77c64beb4203be.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/d0c0eef87034c8193308e5448c4cc7ca570131a67e594a3341a87be7df0c92c8.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/df92d9cc76ed41a7fe7e0782cb88350e1f3561df2a8e3eefb21b9837ec23ac41.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/e3c28ca591b3b7551f82ca4aa1c2bbbd7f8001fb3383fa3e47139ac76903cc79.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/f804fe4cf583d38dfe1719a535dd91976693adb6889bccb26ba3ba0e0fb1e647.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/fig_reflectometry_embedding_networks.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/fig_reflectometry_embedding_networks1.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/jupyter_widget_reflectorch.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/sketch_multilayer_0.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/index.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/dataset.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/likelihoods.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/noise.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/base.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/parametric_models.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/parametric_subpriors.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/params.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/sampler_strategies.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/subprior_sampler.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/q_generator.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/reflectivity.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/scale_curves.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/smearing.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/utils.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/inference_model.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/attenuation.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/footprint.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/interpolation.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/preprocess.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/torch_fitter.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/basic_trainer.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/callbacks.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/dataloaders.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/loggers.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/schedulers.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/trainers.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/encoders/conv_encoder.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/encoders/conv_fc_encoder.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/encoders/fno.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/networks/mlp_networks.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/runs/config.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/runs/utils.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/utils.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/advanced_functionality.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/api.rst +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/installation.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/intro.md +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/training_reflectorch.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/using_reflectorch.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sphinx_design_static/design-tabs.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/basic.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/check-solid.svg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/clipboard.min.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copy-button.svg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copybutton.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copybutton.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copybutton_funcs.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/design-tabs.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/doctools.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/documentation_options.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/file.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_binder.svg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_colab.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_deepnote.svg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_jupyterhub.svg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/language_data.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ar/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ar/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bg/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bg/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bn/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bn/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ca/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ca/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/cs/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/cs/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/da/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/da/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/de/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/de/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/el/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/el/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/eo/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/eo/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/es/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/es/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/et/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/et/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fi/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fi/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fr/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fr/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/hr/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/hr/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/id/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/id/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/it/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/it/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/iw/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/iw/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ja/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ja/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ko/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ko/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lt/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lt/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lv/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lv/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ml/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ml/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/mr/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/mr/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ms/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ms/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/nl/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/nl/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/no/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/no/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pl/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pl/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pt/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pt/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ro/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ro/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ru/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ru/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sk/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sk/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sl/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sl/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sr/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sr/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sv/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sv/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ta/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ta/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/te/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/te/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tg/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tg/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/th/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/th/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tl/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tl/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tr/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tr/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/uk/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/uk/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ur/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ur/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/vi/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/vi/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/minus.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/play-solid.svg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/plus.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/pygments.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/reflectorch_logo.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sbt-webpack-macros.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/bootstrap.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/bootstrap.js.LICENSE.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/bootstrap.js.map +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/pydata-sphinx-theme.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/pydata-sphinx-theme.js.map +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/sphinx-book-theme.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/sphinx-book-theme.js.map +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/searchtools.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sphinx-thebe.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sphinx-thebe.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sphinx_highlight.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/bootstrap.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/bootstrap.css.map +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/pydata-sphinx-theme.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/pydata-sphinx-theme.css.map +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/sphinx-book-theme.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/theme.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/togglebutton.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/togglebutton.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/LICENSE.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/css/all.min.css +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/js/all.min.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/js/all.min.js.LICENSE.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.ttf +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2 +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.ttf +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2 +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.ttf +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2 +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.ttf +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.woff2 +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/webpack-macros.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/advanced_functionality.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/api.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/genindex.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/index.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/installation.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/intro.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/objects.inv +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/py-modindex.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/reports/advanced_functionality.err.log +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/reports/training_reflectorch.err.log +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/reports/using_reflectorch.err.log +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/search.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/searchindex.js +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/training_reflectorch.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/using_reflectorch.html +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/FigureReflectometryNetwork.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/_config.yml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/_toc.yml +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/advanced_functionality.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/api.rst +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/conf.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/fig_reflectometry_embedding_networks.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/intro.md +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/jupyter_widget_reflectorch.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/reflectorch_logo.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/requirements.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/sketch_multilayer_0.png +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/training_reflectorch.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/using_reflectorch.ipynb +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/33a.dat +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/DIP-nSi_34a.dat +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/data_C60.pt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/data_PTCDI-C3.pt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/paper/docker_build_command.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/paper/paper.bib +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/dataset.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/likelihoods.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/noise.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/base.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/exp_subprior_sampler.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/independent_priors.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/multilayer_models.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/multilayer_structures.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/no_constraints.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/parametric_models.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/parametric_subpriors.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/params.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/scaler_mixin.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/subprior_sampler.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/utils.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/process_data.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/q_generator.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/abeles.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/kinematical.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/memory_eff.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/numpy_implementations.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/smearing.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/scale_curves.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/smearing.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/utils.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/jupyter/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/jupyter/callbacks.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/matplotlib/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/matplotlib/losses.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/inference_model.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/multilayer_fitter.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/multilayer_inference_model.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/attenuation.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/cut_with_q_ratio.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/footprint.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/interpolation.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/normalize.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/preprocess.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/record_time.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/sampler_solution.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/scipy_fitter.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/torch_fitter.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/basic_trainer.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/callbacks.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/dataloaders.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/loggers.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/schedulers.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/trainers.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/utils.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/activations.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/conv_encoder.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/conv_res_net.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/fno.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/transformers.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/networks/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/networks/mlp_networks.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/networks/residual_net.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/paths.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/config.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/slurm_utils.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/train.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/utils.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/test_config.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/train.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/train_on_cluster.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/utils.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/dependency_links.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/requires.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/top_level.txt +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/setup.cfg +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/conftest.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/data/demo_scan.csv +0 -0
- {reflectorch-1.0.0/tests/func → reflectorch-1.0.1/tests/unit}/__init__.py +0 -0
- {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/unit/test_preprocessing.py +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: Draft PDF
|
|
2
|
+
on: [push]
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
paper:
|
|
6
|
+
runs-on: ubuntu-latest
|
|
7
|
+
name: Paper Draft
|
|
8
|
+
steps:
|
|
9
|
+
- name: Checkout
|
|
10
|
+
uses: actions/checkout@v4
|
|
11
|
+
- name: Build draft PDF
|
|
12
|
+
uses: openjournals/openjournals-draft-action@master
|
|
13
|
+
with:
|
|
14
|
+
journal: joss
|
|
15
|
+
# This should be the path to the paper within your repo.
|
|
16
|
+
paper-path: paper/paper.md
|
|
17
|
+
- name: Upload
|
|
18
|
+
uses: actions/upload-artifact@v3
|
|
19
|
+
with:
|
|
20
|
+
name: paper
|
|
21
|
+
# This is the output path where Pandoc will write the compiled
|
|
22
|
+
# PDF. Note, this should be the same directory as the input
|
|
23
|
+
# paper.md
|
|
24
|
+
path: paper/paper.pdf
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Reflectorch Developers
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: reflectorch
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: A Pytorch-based package for the analysis of reflectometry data
|
|
5
5
|
Author-email: Vladimir Starostin <vladimir.starostin@uni-tuebingen.de>, Valentin Munteanu <valentin.munteanu@uni-tuebingen.de>
|
|
6
6
|
Maintainer-email: Valentin Munteanu <valentin.munteanu@uni-tuebingen.de>, Alexander Hinderhofer <alexander.hinderhofer@uni-tuebingen.de>
|
|
@@ -51,27 +51,30 @@ Requires-Dist: twine; extra == "build"
|
|
|
51
51
|
[](https://www.python.org/)
|
|
52
52
|

|
|
53
53
|

|
|
54
|
+
[](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
|
|
54
55
|
[](https://schreiber-lab.github.io/reflectorch/)
|
|
55
56
|
<!-- [](https://github.com/astral-sh/ruff) -->
|
|
56
57
|
|
|
57
58
|
|
|
58
|
-
**Reflectorch** is a machine learning Python package for the analysis of X-ray and neutron reflectometry data
|
|
59
|
+
**Reflectorch** is a machine learning Python package for the analysis of X-ray and neutron reflectometry data, written by [Vladimir Starostin](https://github.com/StarostinV/) & [Valentin Munteanu](https://github.com/valentinsingularity) at the University of Tübingen. It provides functionality for the fast simulation of reflectometry curves on the GPU, customizable setup of the physical parameterization model and neural network architecture via YAML configuration files, and prior-aware training of neural networks as described in our paper [Neural network analysis of neutron and X-ray reflectivity data incorporating prior knowledge](https://doi.org/10.1107/S1600576724002115).
|
|
59
60
|
|
|
60
61
|
## Installation
|
|
61
62
|
|
|
62
|
-
**Reflectorch** can be installed
|
|
63
|
+
**Reflectorch** can be installed from [](https://pypi.org/project/reflectorch/) via ``pip``:
|
|
64
|
+
|
|
65
|
+
<!-- or from [](https://anaconda.org/conda-forge/reflectorch/) via ``conda``: -->
|
|
63
66
|
|
|
64
67
|
```bash
|
|
65
68
|
pip install reflectorch
|
|
66
69
|
```
|
|
67
70
|
|
|
68
|
-
or
|
|
71
|
+
<!-- or
|
|
69
72
|
|
|
70
73
|
```bash
|
|
71
74
|
conda install -c conda-forge reflectorch
|
|
72
|
-
```
|
|
75
|
+
``` -->
|
|
73
76
|
|
|
74
|
-
|
|
77
|
+
Alternatively, one can clone the entire Github repository and install the package in editable mode:
|
|
75
78
|
|
|
76
79
|
```bash
|
|
77
80
|
git clone https://github.com/schreiber-lab/reflectorch.git
|
|
@@ -11,27 +11,30 @@
|
|
|
11
11
|
[](https://www.python.org/)
|
|
12
12
|

|
|
13
13
|

|
|
14
|
+
[](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
|
|
14
15
|
[](https://schreiber-lab.github.io/reflectorch/)
|
|
15
16
|
<!-- [](https://github.com/astral-sh/ruff) -->
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
**Reflectorch** is a machine learning Python package for the analysis of X-ray and neutron reflectometry data
|
|
19
|
+
**Reflectorch** is a machine learning Python package for the analysis of X-ray and neutron reflectometry data, written by [Vladimir Starostin](https://github.com/StarostinV/) & [Valentin Munteanu](https://github.com/valentinsingularity) at the University of Tübingen. It provides functionality for the fast simulation of reflectometry curves on the GPU, customizable setup of the physical parameterization model and neural network architecture via YAML configuration files, and prior-aware training of neural networks as described in our paper [Neural network analysis of neutron and X-ray reflectivity data incorporating prior knowledge](https://doi.org/10.1107/S1600576724002115).
|
|
19
20
|
|
|
20
21
|
## Installation
|
|
21
22
|
|
|
22
|
-
**Reflectorch** can be installed
|
|
23
|
+
**Reflectorch** can be installed from [](https://pypi.org/project/reflectorch/) via ``pip``:
|
|
24
|
+
|
|
25
|
+
<!-- or from [](https://anaconda.org/conda-forge/reflectorch/) via ``conda``: -->
|
|
23
26
|
|
|
24
27
|
```bash
|
|
25
28
|
pip install reflectorch
|
|
26
29
|
```
|
|
27
30
|
|
|
28
|
-
or
|
|
31
|
+
<!-- or
|
|
29
32
|
|
|
30
33
|
```bash
|
|
31
34
|
conda install -c conda-forge reflectorch
|
|
32
|
-
```
|
|
35
|
+
``` -->
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
Alternatively, one can clone the entire Github repository and install the package in editable mode:
|
|
35
38
|
|
|
36
39
|
```bash
|
|
37
40
|
git clone https://github.com/schreiber-lab/reflectorch.git
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"tags": []
|
|
16
16
|
},
|
|
17
17
|
"source": [
|
|
18
|
-
"**Reflectorch** can be installed directly from the Python Packaging Index (PyPI) via the Python package installer
|
|
18
|
+
"**Reflectorch** can be installed directly from the Python Packaging Index (PyPI) via the Python package installer `pip`:"
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
21
|
{
|
|
@@ -27,22 +27,6 @@
|
|
|
27
27
|
"```"
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
|
-
{
|
|
31
|
-
"cell_type": "markdown",
|
|
32
|
-
"metadata": {},
|
|
33
|
-
"source": [
|
|
34
|
-
"or"
|
|
35
|
-
]
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"cell_type": "markdown",
|
|
39
|
-
"metadata": {},
|
|
40
|
-
"source": [
|
|
41
|
-
"```bash\n",
|
|
42
|
-
"conda install -c conda-forge reflectorch\n",
|
|
43
|
-
"```"
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
30
|
{
|
|
47
31
|
"cell_type": "markdown",
|
|
48
32
|
"metadata": {},
|
|
@@ -13,7 +13,7 @@ authors:
|
|
|
13
13
|
equal-contrib: true
|
|
14
14
|
- name: Vladimir Starostin
|
|
15
15
|
orcid: 0000-0003-4533-6256
|
|
16
|
-
affiliation:
|
|
16
|
+
affiliation: 2
|
|
17
17
|
equal-contrib: true
|
|
18
18
|
- name: Alexander Hinderhofer
|
|
19
19
|
orcid: 0000-0001-8152-6386
|
|
@@ -29,8 +29,10 @@ authors:
|
|
|
29
29
|
affiliation: 1
|
|
30
30
|
corresponding: true
|
|
31
31
|
affiliations:
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
- name: University of Tübingen, Institute of Applied Physics, Auf der Morgenstelle 10, 72076 Tübingen, Germany
|
|
33
|
+
index: 1
|
|
34
|
+
- name: University of Tübingen, Cluster of Excellence "Machine learning - new perspectives for science", Maria-von-Linden-Straße 6, 72076 Tübingen, Germany
|
|
35
|
+
index: 2
|
|
34
36
|
|
|
35
37
|
date: 1 June 2024
|
|
36
38
|
bibliography: paper.bib
|
|
@@ -44,7 +46,7 @@ We introduce `reflectorch`, a Python package which facilitates the full machine
|
|
|
44
46
|
|
|
45
47
|
# Statement of need
|
|
46
48
|
|
|
47
|
-
X-ray and neutron reflectometry (XRR and NR) are widely-used and indispensable experimental techniques for elucidating
|
|
49
|
+
X-ray and neutron reflectometry (XRR and NR) are widely-used and indispensable experimental techniques for elucidating the structure of interfaces and thin films, i.e. layered systems. Experimentalists, having measured a reflectometry curve, are faced with the task of obtaining the physical parameters corresponding to an assumed parameterization of the scattering length density (SLD) profile along the depth of the investigated sample. The inverse problem is non-trivial and generally ambiguous due to the lack of phase information and experimental limitations. Recent years have seen an increased interest in the fast analysis of reflectometry data using machine learning techniques, as such methods could be adapted for real-time investigations at large scale facilities (i.e. synchrotron and neutron sources), potentially enabling closed loop experiments [@Pithan2023].
|
|
48
50
|
|
|
49
51
|
Our contribution to the open-source scientific software community is `reflectorch`, a deep learning package built in the Pytorch framework, which posseses a modular, object-oriented and customizable design. Reflectorch enables the user to simulate reflectivity curves in a fast and vectorized manner which takes advantage of the computing power of modern GPUs. The neural network architecture as well as the training callbacks and hyperparameters can be easily customized by editing YAML configuration files. As a result of the special training procedure, which incorporates minimum and maximum prior bounds for the parameters as described in [@Munteanu2024], the user is able to make use of prior knowledge about the investigated sample at inference time.
|
|
50
52
|
|
|
@@ -57,18 +59,18 @@ Several types of parameterizations of the SLD profile are available, being imple
|
|
|
57
59
|
|
|
58
60
|
The parameters are represented as an instance of the `BasicParams` class, which encapsulates the parameter values and their prior bounds, also taking care of scaling these values to neural-network friendly ranges. The prior sampler (a subclass of `PriorSampler`) is responsible for sampling the values of the parameters and their prior bounds from their predefined ranges, in which a subclass of `SamplingStrategy` can be used to further restrict the values of some parameters with respect to others (such as the interlayer roughness not exceeding a fraction of the thicknesses of the adjacent layers). Based on the sampled parameters and on the momentum transfer (q) values generated by a subclass of `QGenerator`, batches of reflectivity curves are simulated and augmented with experimentally-informed noise provided by a subclass of `IntensityNoiseGenerator` and scaled to a neural network-friendly range by a subclass of `CurvesScaler` (which is also responsible for restoring the scaled curves to their original ranges).
|
|
59
61
|
|
|
60
|
-
The trainer encapsulates the data loader, the Pytorch optimizer, the neural network, and other training hyperparameters, allowing the seamless training of the model and the saving of the resulting model weights and of the history of losses and learning rates. The neural network consists
|
|
62
|
+
The trainer encapsulates the data loader, the Pytorch optimizer, the neural network, and other training hyperparameters, allowing the seamless training of the model and the saving of the resulting model weights and of the history of losses and learning rates. The neural network consists of an embedding network for the reflectivity curves and a multilayer perceptron. The architecture can be easily customized. Different embedding networks for the reflectivity curves are also available. Callback objects can be used to control the training process, such as scheduling the learning rate or periodically saving the model weights.
|
|
61
63
|
|
|
62
64
|
Finally, the `EasyInferenceModel` class serves as a wrapper around trained models, simplifying the inference step. It also provides functionality for automatically downloading model weights and configuration files not locally available from a remote Huggingface repository.
|
|
63
65
|
|
|
64
66
|
# Related Work
|
|
65
67
|
|
|
66
|
-
There are several well-established packages designed for the conventional analysis of X-ray and neutron reflectometry data such as `GenX` [@GlaviGenX], `refnx` [@NelsonRefnx] and `refl1d` [@Maranville2020]. While several machine learning approaches pertaining to X-ray or neutron reflectometry have been proposed in various publications, `mlreflect` [@Greco2022Neural] is the only other properly packaged and documented software. Previously developed in our group, `mlreflect` is built in the Tensorflow deep learning framework and has limited functionality compared to `reflectorch` (specifically, the SLD profile is limited to a single film). Still, it has been successfully adopted for use in the scattering community such as in the publication [@Schumi-Marecek2024].
|
|
68
|
+
There are several well-established packages designed for the conventional analysis of X-ray and neutron reflectometry data such as `GenX` [@GlaviGenX], `refnx` [@NelsonRefnx] and `refl1d` [@Maranville2020]. While several machine learning approaches pertaining to X-ray or neutron reflectometry have been proposed in various publications, `mlreflect` [@Greco2022Neural] is the only other properly packaged and documented software so far to the best of our knowledge. Previously developed in our group, `mlreflect` is built in the Tensorflow deep learning framework and has limited functionality compared to `reflectorch` (specifically, the SLD profile is limited to a single film). Still, it has been successfully adopted for use in the scattering community such as in the publication [@Schumi-Marecek2024].
|
|
67
69
|
|
|
68
70
|
|
|
69
71
|
# Acknowledgements
|
|
70
72
|
|
|
71
|
-
The research was part of a project (VIPR 05D23VT1 ERUMDATA) funded by the German Federal Ministry for Science and Education (BMBF). This work was partly supported by the consortium DAPHNE4NFDI in the context of the work of the NFDI e.V., funded by the German Research Foundation.
|
|
73
|
+
The research was part of a project (VIPR 05D23VT1 ERUMDATA) funded by the German Federal Ministry for Science and Education (BMBF). This work was partly supported by the consortium DAPHNE4NFDI in the context of the work of the NFDI e.V., funded by the German Research Foundation. Supported by the Cluster of Excellence “Machine Learning – New Perspectives for Science” funded by the German Research Foundation under Germany’s Excellence Strategy – reference Number EXC 2064/1 - project number 390727645.
|
|
72
74
|
|
|
73
75
|
# References
|
|
74
76
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "reflectorch"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.1"
|
|
8
8
|
authors = [
|
|
9
9
|
{name = "Vladimir Starostin", email="vladimir.starostin@uni-tuebingen.de"},
|
|
10
10
|
{name = "Valentin Munteanu", email="valentin.munteanu@uni-tuebingen.de"}
|
{reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/sampler_strategies.py
RENAMED
|
@@ -283,7 +283,7 @@ def constrained_roughness_and_isld_sampler(
|
|
|
283
283
|
params[..., roughness_mask] = roughnesses
|
|
284
284
|
|
|
285
285
|
max_isld = torch.minimum(
|
|
286
|
-
params[..., sld_mask] * coef_isld,
|
|
286
|
+
torch.abs(params[..., sld_mask]) * coef_isld,
|
|
287
287
|
total_max_bounds[..., isld_mask]
|
|
288
288
|
)
|
|
289
289
|
min_isld = total_min_bounds[..., isld_mask]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: reflectorch
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: A Pytorch-based package for the analysis of reflectometry data
|
|
5
5
|
Author-email: Vladimir Starostin <vladimir.starostin@uni-tuebingen.de>, Valentin Munteanu <valentin.munteanu@uni-tuebingen.de>
|
|
6
6
|
Maintainer-email: Valentin Munteanu <valentin.munteanu@uni-tuebingen.de>, Alexander Hinderhofer <alexander.hinderhofer@uni-tuebingen.de>
|
|
@@ -51,27 +51,30 @@ Requires-Dist: twine; extra == "build"
|
|
|
51
51
|
[](https://www.python.org/)
|
|
52
52
|

|
|
53
53
|

|
|
54
|
+
[](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
|
|
54
55
|
[](https://schreiber-lab.github.io/reflectorch/)
|
|
55
56
|
<!-- [](https://github.com/astral-sh/ruff) -->
|
|
56
57
|
|
|
57
58
|
|
|
58
|
-
**Reflectorch** is a machine learning Python package for the analysis of X-ray and neutron reflectometry data
|
|
59
|
+
**Reflectorch** is a machine learning Python package for the analysis of X-ray and neutron reflectometry data, written by [Vladimir Starostin](https://github.com/StarostinV/) & [Valentin Munteanu](https://github.com/valentinsingularity) at the University of Tübingen. It provides functionality for the fast simulation of reflectometry curves on the GPU, customizable setup of the physical parameterization model and neural network architecture via YAML configuration files, and prior-aware training of neural networks as described in our paper [Neural network analysis of neutron and X-ray reflectivity data incorporating prior knowledge](https://doi.org/10.1107/S1600576724002115).
|
|
59
60
|
|
|
60
61
|
## Installation
|
|
61
62
|
|
|
62
|
-
**Reflectorch** can be installed
|
|
63
|
+
**Reflectorch** can be installed from [](https://pypi.org/project/reflectorch/) via ``pip``:
|
|
64
|
+
|
|
65
|
+
<!-- or from [](https://anaconda.org/conda-forge/reflectorch/) via ``conda``: -->
|
|
63
66
|
|
|
64
67
|
```bash
|
|
65
68
|
pip install reflectorch
|
|
66
69
|
```
|
|
67
70
|
|
|
68
|
-
or
|
|
71
|
+
<!-- or
|
|
69
72
|
|
|
70
73
|
```bash
|
|
71
74
|
conda install -c conda-forge reflectorch
|
|
72
|
-
```
|
|
75
|
+
``` -->
|
|
73
76
|
|
|
74
|
-
|
|
77
|
+
Alternatively, one can clone the entire Github repository and install the package in editable mode:
|
|
75
78
|
|
|
76
79
|
```bash
|
|
77
80
|
git clone https://github.com/schreiber-lab/reflectorch.git
|
|
@@ -8,6 +8,7 @@ README.md
|
|
|
8
8
|
debug.py
|
|
9
9
|
pyproject.toml
|
|
10
10
|
.github/workflows/ci.yml
|
|
11
|
+
.github/workflows/draft-pdf.yml
|
|
11
12
|
configs/c1.yaml
|
|
12
13
|
configs/c1_trained.yaml
|
|
13
14
|
configs/c_L10_d100_s150_r30_ws5_q03_nq256.yaml
|
|
@@ -491,13 +492,13 @@ reflectorch/runs/utils.py
|
|
|
491
492
|
tests/__init__.py
|
|
492
493
|
tests/conftest.py
|
|
493
494
|
tests/data/demo_scan.csv
|
|
494
|
-
tests/data/test_preprocessed_curve_1.npz
|
|
495
495
|
tests/fixtures/__init__.py
|
|
496
496
|
tests/fixtures/data.py
|
|
497
|
-
tests/fixtures/models.py
|
|
498
|
-
tests/func/__init__.py
|
|
499
|
-
tests/func/test_model.py
|
|
500
|
-
tests/helpers/__init__.py
|
|
501
|
-
tests/helpers/generate_data.py
|
|
502
497
|
tests/unit/__init__.py
|
|
503
|
-
tests/unit/
|
|
498
|
+
tests/unit/test_dataloader.py
|
|
499
|
+
tests/unit/test_embedding_networks.py
|
|
500
|
+
tests/unit/test_mlp.py
|
|
501
|
+
tests/unit/test_preprocessing.py
|
|
502
|
+
tests/unit/test_prior_sampler.py
|
|
503
|
+
tests/unit/test_q_generator.py
|
|
504
|
+
tests/unit/test_reflectivity.py
|
|
@@ -2,8 +2,6 @@ import pytest
|
|
|
2
2
|
import numpy as np
|
|
3
3
|
|
|
4
4
|
from reflectorch.paths import TEST_DATA_PATH
|
|
5
|
-
from tests.helpers.generate_data import load_generated_data
|
|
6
|
-
|
|
7
5
|
|
|
8
6
|
@pytest.fixture(
|
|
9
7
|
params=["demo_scan.csv"],
|
|
@@ -26,20 +24,4 @@ def raw_data_with_preprocessing_params(request):
|
|
|
26
24
|
sample_length=10.,
|
|
27
25
|
)
|
|
28
26
|
|
|
29
|
-
return raw_data, preprocessing_params
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@pytest.fixture(
|
|
33
|
-
params=['test_preprocessed_curve_2'],
|
|
34
|
-
scope="session",
|
|
35
|
-
)
|
|
36
|
-
def preprocessed_data(request):
|
|
37
|
-
return load_generated_data(request.param)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
@pytest.fixture(
|
|
41
|
-
params=['test_raw_data_input_1'],
|
|
42
|
-
scope="session",
|
|
43
|
-
)
|
|
44
|
-
def raw_data_input(request):
|
|
45
|
-
pass
|
|
27
|
+
return raw_data, preprocessing_params
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from reflectorch import ConstantQ, BasicExpIntensityNoise, BasicQNoiseGenerator, LogAffineCurvesScaler, SubpriorParametricSampler, \
|
|
3
|
+
Smearing, BasicDataset, ReflectivityDataLoader
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize("calc_denoised_curves", [False, True])
|
|
6
|
+
def test_dataloader(calc_denoised_curves):
|
|
7
|
+
prior_sampler = SubpriorParametricSampler(
|
|
8
|
+
param_ranges={
|
|
9
|
+
'thicknesses': [5.0, 300.0],
|
|
10
|
+
'roughnesses': [0.0, 30.0],
|
|
11
|
+
'slds': [0.0, 50.0],
|
|
12
|
+
},
|
|
13
|
+
bound_width_ranges={
|
|
14
|
+
'thicknesses': [1e-2, 300.0],
|
|
15
|
+
'roughnesses': [1e-2, 30.0],
|
|
16
|
+
'slds': [1e-2, 5.0],
|
|
17
|
+
},
|
|
18
|
+
model_name = 'standard_model',
|
|
19
|
+
device='cpu',
|
|
20
|
+
max_num_layers=3,
|
|
21
|
+
constrained_roughness = True,
|
|
22
|
+
max_thickness_share = 0.5,
|
|
23
|
+
scale_params_by_ranges=False,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
q_generator = ConstantQ(
|
|
27
|
+
q = [0.02, 0.15, 128],
|
|
28
|
+
device = 'cpu')
|
|
29
|
+
|
|
30
|
+
intensity_noise_generator = BasicExpIntensityNoise(
|
|
31
|
+
relative_errors = [0.0, 0.2],
|
|
32
|
+
abs_errors = 0.0,
|
|
33
|
+
consistent_rel_err = True,
|
|
34
|
+
logdist = False,
|
|
35
|
+
apply_shift = True,
|
|
36
|
+
shift_range = [-0.3, 0.3],
|
|
37
|
+
apply_scaling = True,
|
|
38
|
+
scale_range = [-0.02, 0.02],
|
|
39
|
+
apply_background = True,
|
|
40
|
+
background_range = [1.0e-10, 1.0e-8],
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
q_noise_generator = BasicQNoiseGenerator(
|
|
44
|
+
shift_std = 1.0e-3,
|
|
45
|
+
noise_std = [0., 1.0e-3],
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
smearing_generator = Smearing(
|
|
49
|
+
sigma_range = (0.0001, 0.005),
|
|
50
|
+
constant_dq = True,
|
|
51
|
+
gauss_num = 31,
|
|
52
|
+
share_smeared = 0.2,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
curves_scaler = LogAffineCurvesScaler(
|
|
56
|
+
weight = 0.2,
|
|
57
|
+
bias = 1.0,
|
|
58
|
+
eps = 1.0e-10,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
data_loader = ReflectivityDataLoader(
|
|
62
|
+
q_generator=q_generator,
|
|
63
|
+
prior_sampler=prior_sampler,
|
|
64
|
+
intensity_noise=intensity_noise_generator,
|
|
65
|
+
q_noise=q_noise_generator,
|
|
66
|
+
smearing=smearing_generator,
|
|
67
|
+
curves_scaler=curves_scaler,
|
|
68
|
+
calc_denoised_curves=calc_denoised_curves,
|
|
69
|
+
)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
import torch
|
|
3
|
+
from reflectorch.models.encoders import ConvEncoder, FnoEncoder
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize("input_dim", [128, 140])
|
|
6
|
+
@pytest.mark.parametrize("in_channels", [1])
|
|
7
|
+
@pytest.mark.parametrize("hidden_channels", [(32, 64, 128, 256, 512), (16, 32, 64, 128, 256)])
|
|
8
|
+
@pytest.mark.parametrize("dim_embedding", [64, 80])
|
|
9
|
+
@pytest.mark.parametrize("dim_avpool", [1, 4])
|
|
10
|
+
@pytest.mark.parametrize("use_batch_norm", [True, False])
|
|
11
|
+
@pytest.mark.parametrize("activation", ['relu', 'gelu'])
|
|
12
|
+
def test_cnn(input_dim, in_channels, hidden_channels, dim_embedding, dim_avpool, use_batch_norm, activation):
|
|
13
|
+
embedding_net = ConvEncoder(
|
|
14
|
+
in_channels=in_channels,
|
|
15
|
+
hidden_channels=hidden_channels,
|
|
16
|
+
dim_latent=dim_embedding,
|
|
17
|
+
dim_avpool=dim_avpool,
|
|
18
|
+
use_batch_norm=use_batch_norm,
|
|
19
|
+
activation=activation,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
batch_size = 4
|
|
23
|
+
input_tensor = torch.randn((batch_size, in_channels, input_dim))
|
|
24
|
+
|
|
25
|
+
assert embedding_net(input_tensor).shape == (batch_size, dim_embedding)
|
|
26
|
+
|
|
27
|
+
@pytest.mark.parametrize("input_dim", [128, 140])
|
|
28
|
+
@pytest.mark.parametrize("in_channels", [1, 2, 3])
|
|
29
|
+
@pytest.mark.parametrize("dim_embedding", [64, 80])
|
|
30
|
+
@pytest.mark.parametrize("modes", [16, 32])
|
|
31
|
+
@pytest.mark.parametrize("fusion_self_attention", [False, True])
|
|
32
|
+
def test_fno(input_dim, in_channels, dim_embedding, modes, fusion_self_attention):
|
|
33
|
+
embedding_net = FnoEncoder(
|
|
34
|
+
ch_in = in_channels,
|
|
35
|
+
dim_embedding = dim_embedding,
|
|
36
|
+
modes = modes,
|
|
37
|
+
width_fno = 128,
|
|
38
|
+
n_fno_blocks = 2,
|
|
39
|
+
activation = 'gelu',
|
|
40
|
+
fusion_self_attention=fusion_self_attention,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
batch_size = 4
|
|
44
|
+
input_tensor = torch.randn((batch_size, in_channels, input_dim))
|
|
45
|
+
|
|
46
|
+
assert embedding_net(input_tensor).shape == (batch_size, dim_embedding)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
import torch
|
|
3
|
+
from reflectorch import ResidualMLP
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@pytest.mark.parametrize("dim_in", [256])
|
|
7
|
+
@pytest.mark.parametrize("dim_out", [10])
|
|
8
|
+
@pytest.mark.parametrize("residual", [False, True])
|
|
9
|
+
@pytest.mark.parametrize("repeats_per_block", [1, 2])
|
|
10
|
+
@pytest.mark.parametrize("activation", ['relu', 'rowdy'])
|
|
11
|
+
@pytest.mark.parametrize("dropout_rate", [0, 0.2])
|
|
12
|
+
def test_mlp(dim_in, dim_out, residual, repeats_per_block, activation, dropout_rate):
|
|
13
|
+
adaptive_activation = True if activation == 'rowdy' else False
|
|
14
|
+
|
|
15
|
+
mlp = ResidualMLP(
|
|
16
|
+
dim_in = dim_in,
|
|
17
|
+
dim_out = dim_out,
|
|
18
|
+
dim_condition = 0,
|
|
19
|
+
layer_width = 128,
|
|
20
|
+
num_blocks = 4,
|
|
21
|
+
repeats_per_block= repeats_per_block,
|
|
22
|
+
activation = activation,
|
|
23
|
+
use_batch_norm = True,
|
|
24
|
+
dropout_rate = dropout_rate,
|
|
25
|
+
residual = residual,
|
|
26
|
+
adaptive_activation = adaptive_activation,
|
|
27
|
+
conditioning = 'concat',
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
batch_size = 8
|
|
31
|
+
input_tensor = torch.randn((batch_size, dim_in))
|
|
32
|
+
|
|
33
|
+
assert mlp(input_tensor).shape == (batch_size, dim_out)
|
|
34
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
import torch
|
|
3
|
+
from reflectorch import SubpriorParametricSampler
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize("batch_size", [1, 128])
|
|
6
|
+
@pytest.mark.parametrize("max_num_layers", [1, 2, 3, 4, 5, 10])
|
|
7
|
+
@pytest.mark.parametrize("constrained_roughness", [True, False])
|
|
8
|
+
def test_param_sampler_standard(batch_size, max_num_layers, constrained_roughness):
|
|
9
|
+
param_sampler = SubpriorParametricSampler(
|
|
10
|
+
param_ranges={
|
|
11
|
+
'thicknesses': [10.0, 500.0],
|
|
12
|
+
'roughnesses': [0.0, 60.0],
|
|
13
|
+
'slds': [-20.0, 100.0],
|
|
14
|
+
},
|
|
15
|
+
bound_width_ranges={
|
|
16
|
+
'thicknesses': [1e-2, 500.0],
|
|
17
|
+
'roughnesses': [1e-2, 60.0],
|
|
18
|
+
'slds': [1e-2, 10.0],
|
|
19
|
+
},
|
|
20
|
+
model_name = 'standard_model',
|
|
21
|
+
device='cpu',
|
|
22
|
+
max_num_layers=max_num_layers,
|
|
23
|
+
constrained_roughness = constrained_roughness,
|
|
24
|
+
max_thickness_share = 0.5,
|
|
25
|
+
scale_params_by_ranges=False,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
sampled_params = param_sampler.sample(batch_size=batch_size)
|
|
29
|
+
assert sampled_params.parameters.shape == (batch_size, 3*max_num_layers+2)
|
|
30
|
+
assert torch.all(sampled_params.min_bounds <= sampled_params.parameters ) and torch.all(sampled_params.parameters <= sampled_params.max_bounds)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@pytest.mark.parametrize("batch_size", [16])
|
|
34
|
+
@pytest.mark.parametrize("max_num_layers", [1, 3, 5])
|
|
35
|
+
@pytest.mark.parametrize("constrained_roughness", [True, False])
|
|
36
|
+
@pytest.mark.parametrize("constrained_isld", [True, False])
|
|
37
|
+
def test_param_sampler_absorption(batch_size, max_num_layers, constrained_roughness, constrained_isld):
|
|
38
|
+
param_sampler = SubpriorParametricSampler(
|
|
39
|
+
param_ranges={
|
|
40
|
+
'thicknesses': [10.0, 500.0],
|
|
41
|
+
'roughnesses': [0.0, 60.0],
|
|
42
|
+
'slds': [-20.0, 100.0],
|
|
43
|
+
'islds': [0.0, 10.0],
|
|
44
|
+
},
|
|
45
|
+
bound_width_ranges={
|
|
46
|
+
'thicknesses': [1e-2, 500.0],
|
|
47
|
+
'roughnesses': [1e-2, 60.0],
|
|
48
|
+
'slds': [1e-3, 20.0],
|
|
49
|
+
'islds': [1e-2, 10.0],
|
|
50
|
+
},
|
|
51
|
+
model_name = 'model_with_absorption',
|
|
52
|
+
device='cpu',
|
|
53
|
+
max_num_layers=max_num_layers,
|
|
54
|
+
constrained_roughness = constrained_roughness,
|
|
55
|
+
max_thickness_share = 0.5,
|
|
56
|
+
constrained_isld = constrained_isld,
|
|
57
|
+
max_sld_share = 0.2,
|
|
58
|
+
scale_params_by_ranges=False,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
sampled_params = param_sampler.sample(batch_size=batch_size)
|
|
62
|
+
assert sampled_params.parameters.shape == (batch_size, 4*max_num_layers+3)
|
|
63
|
+
assert torch.all(sampled_params.min_bounds <= sampled_params.parameters ) and torch.all(sampled_params.parameters <= sampled_params.max_bounds)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from reflectorch import ConstantQ, VariableQ
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize("batch_size", [1, 128])
|
|
6
|
+
@pytest.mark.parametrize("q_range", [(0.01, 0.3, 128), (0.05, 0.1, 200)])
|
|
7
|
+
def test_constantq(batch_size, q_range):
|
|
8
|
+
q_generator = ConstantQ(q=q_range, device='cpu')
|
|
9
|
+
q_values = q_generator.get_batch(batch_size=batch_size)
|
|
10
|
+
|
|
11
|
+
assert q_values.shape == (batch_size, q_range[-1])
|
|
12
|
+
assert q_values.min() == q_range[0]
|
|
13
|
+
assert q_values.max() == q_range[1]
|
|
14
|
+
|
|
15
|
+
@pytest.mark.parametrize("batch_size", [1, 128])
|
|
16
|
+
@pytest.mark.parametrize("q_min_range", [(0.005, 0.05), (0.01, 0.01)])
|
|
17
|
+
@pytest.mark.parametrize("q_max_range", [(0.15, 0.5), (0.3, 0.3)])
|
|
18
|
+
@pytest.mark.parametrize("n_q_range", [(64, 256), (128, 128)])
|
|
19
|
+
def test_variableq(batch_size, q_min_range, q_max_range, n_q_range):
|
|
20
|
+
q_generator = VariableQ(q_min_range, q_max_range, n_q_range, device='cpu')
|
|
21
|
+
q_values = q_generator.get_batch(batch_size=batch_size)
|
|
22
|
+
|
|
23
|
+
assert n_q_range[0] <= q_values.shape[-1] <= n_q_range[1]
|
|
24
|
+
assert q_values.min() >= q_min_range[0]
|
|
25
|
+
assert q_values.max() <= q_max_range[1]
|