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.

Files changed (514) hide show
  1. reflectorch-1.0.1/.github/workflows/draft-pdf.yml +24 -0
  2. reflectorch-1.0.1/LICENSE.txt +21 -0
  3. {reflectorch-1.0.0 → reflectorch-1.0.1}/PKG-INFO +9 -6
  4. {reflectorch-1.0.0 → reflectorch-1.0.1}/README.md +8 -5
  5. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/installation.ipynb +1 -17
  6. {reflectorch-1.0.0 → reflectorch-1.0.1}/paper/paper.md +9 -7
  7. {reflectorch-1.0.0 → reflectorch-1.0.1}/pyproject.toml +1 -1
  8. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/sampler_strategies.py +1 -1
  9. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/PKG-INFO +9 -6
  10. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/SOURCES.txt +8 -7
  11. reflectorch-1.0.1/tests/fixtures/__init__.py +8 -0
  12. {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/fixtures/data.py +1 -19
  13. reflectorch-1.0.1/tests/unit/test_dataloader.py +69 -0
  14. reflectorch-1.0.1/tests/unit/test_embedding_networks.py +46 -0
  15. reflectorch-1.0.1/tests/unit/test_mlp.py +34 -0
  16. reflectorch-1.0.1/tests/unit/test_prior_sampler.py +63 -0
  17. reflectorch-1.0.1/tests/unit/test_q_generator.py +25 -0
  18. reflectorch-1.0.1/tests/unit/test_reflectivity.py +123 -0
  19. reflectorch-1.0.0/LICENSE.txt +0 -621
  20. reflectorch-1.0.0/tests/data/test_preprocessed_curve_1.npz +0 -0
  21. reflectorch-1.0.0/tests/fixtures/__init__.py +0 -15
  22. reflectorch-1.0.0/tests/fixtures/models.py +0 -15
  23. reflectorch-1.0.0/tests/func/test_model.py +0 -18
  24. reflectorch-1.0.0/tests/helpers/__init__.py +0 -0
  25. reflectorch-1.0.0/tests/helpers/generate_data.py +0 -28
  26. reflectorch-1.0.0/tests/unit/__init__.py +0 -0
  27. {reflectorch-1.0.0 → reflectorch-1.0.1}/.dockerignore +0 -0
  28. {reflectorch-1.0.0 → reflectorch-1.0.1}/.github/workflows/ci.yml +0 -0
  29. {reflectorch-1.0.0 → reflectorch-1.0.1}/.gitignore +0 -0
  30. {reflectorch-1.0.0 → reflectorch-1.0.1}/CODE_OF_CONDUCT.md +0 -0
  31. {reflectorch-1.0.0 → reflectorch-1.0.1}/Dockerfile +0 -0
  32. {reflectorch-1.0.0 → reflectorch-1.0.1}/MANIFEST.in +0 -0
  33. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c1.yaml +0 -0
  34. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c1_trained.yaml +0 -0
  35. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_L10_d100_s150_r30_ws5_q03_nq256.yaml +0 -0
  36. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_L3_d200_s150_r60_ws5_q03_nq128.yaml +0 -0
  37. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_L5_d200_s150_r60_ws5_q03_nq256.yaml +0 -0
  38. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_absorption.yaml +0 -0
  39. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_absorption_L2_d500_s150_is30_r60_ws5_q03_nq256.yaml +0 -0
  40. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_absorption_L5_d200_s150_is30_r60_ws5_q03_nq256.yaml +0 -0
  41. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_ae.yaml +0 -0
  42. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_fno.yaml +0 -0
  43. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_model_with_shifts.yaml +0 -0
  44. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_repeating_multilayer.yaml +0 -0
  45. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/c_repeating_multilayer_trained1.yaml +0 -0
  46. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q109_exp_1.yaml +0 -0
  47. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_absorption_1.yaml +0 -0
  48. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_2.yaml +0 -0
  49. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_3.yaml +0 -0
  50. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_3_02.yaml +0 -0
  51. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_4.yaml +0 -0
  52. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_5.yaml +0 -0
  53. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_exp_sm_2.yaml +0 -0
  54. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q256_new_1.yaml +0 -0
  55. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l2q64_new_sub_1.yaml +0 -0
  56. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/l5q256_new_sub_1.yaml +0 -0
  57. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o1.yaml +0 -0
  58. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o10.yaml +0 -0
  59. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o11.yaml +0 -0
  60. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o12.yaml +0 -0
  61. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o13.yaml +0 -0
  62. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o14.yaml +0 -0
  63. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o15.yaml +0 -0
  64. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o16.yaml +0 -0
  65. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o2.yaml +0 -0
  66. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o3.yaml +0 -0
  67. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o4.yaml +0 -0
  68. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o5.yaml +0 -0
  69. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o7.yaml +0 -0
  70. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o8.yaml +0 -0
  71. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc-o9.yaml +0 -0
  72. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc1.yaml +0 -0
  73. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc10.yaml +0 -0
  74. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc11.yaml +0 -0
  75. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc12.yaml +0 -0
  76. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc13.yaml +0 -0
  77. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc14.yaml +0 -0
  78. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc15.yaml +0 -0
  79. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc16.yaml +0 -0
  80. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc17.yaml +0 -0
  81. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc18.yaml +0 -0
  82. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc19.yaml +0 -0
  83. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc2.yaml +0 -0
  84. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc20.yaml +0 -0
  85. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc21.yaml +0 -0
  86. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc22.yaml +0 -0
  87. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc23.yaml +0 -0
  88. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc24.yaml +0 -0
  89. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc25.yaml +0 -0
  90. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc26.yaml +0 -0
  91. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc27.yaml +0 -0
  92. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc28.yaml +0 -0
  93. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc29.yaml +0 -0
  94. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc3.yaml +0 -0
  95. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc30.yaml +0 -0
  96. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc31.yaml +0 -0
  97. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc32.yaml +0 -0
  98. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc33.yaml +0 -0
  99. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc34.yaml +0 -0
  100. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc35.yaml +0 -0
  101. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc36.yaml +0 -0
  102. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc37.yaml +0 -0
  103. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc38.yaml +0 -0
  104. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc39.yaml +0 -0
  105. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc4.yaml +0 -0
  106. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc40.yaml +0 -0
  107. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc41.yaml +0 -0
  108. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc42.yaml +0 -0
  109. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc43.yaml +0 -0
  110. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc44.yaml +0 -0
  111. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc45.yaml +0 -0
  112. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc46.yaml +0 -0
  113. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc47.yaml +0 -0
  114. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc48.yaml +0 -0
  115. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc49.yaml +0 -0
  116. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc5.yaml +0 -0
  117. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc50.yaml +0 -0
  118. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc51.yaml +0 -0
  119. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc52.yaml +0 -0
  120. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc53.yaml +0 -0
  121. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc54.yaml +0 -0
  122. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc55.yaml +0 -0
  123. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc56.yaml +0 -0
  124. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc57.yaml +0 -0
  125. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc58.yaml +0 -0
  126. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc59.yaml +0 -0
  127. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc6.yaml +0 -0
  128. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc60.yaml +0 -0
  129. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc61.yaml +0 -0
  130. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc62.yaml +0 -0
  131. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc63.yaml +0 -0
  132. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc64.yaml +0 -0
  133. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc65.yaml +0 -0
  134. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc66.yaml +0 -0
  135. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc67.yaml +0 -0
  136. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc7.yaml +0 -0
  137. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc8.yaml +0 -0
  138. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/mc9.yaml +0 -0
  139. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_1.yaml +0 -0
  140. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_1_1.yaml +0 -0
  141. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_2.yaml +0 -0
  142. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_2_2.yaml +0 -0
  143. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/multilayer_test_3.yaml +0 -0
  144. {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
  145. {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
  146. {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
  147. {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
  148. {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
  149. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q256_d300_r60_s25_bs4_budist_noise-poisson01.yaml +0 -0
  150. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
  151. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q256_d300_r60_s25_bs4_budist_noise-poisson03.yaml +0 -0
  152. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q64_d300_r60_s25_bs25_budist_noise-poisson03_scale002.yaml +0 -0
  153. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q64_d300_r60_s25_bs4_blogdist_noise-poisson04.yaml +0 -0
  154. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_exp_L2_q64_d300_r60_s25_bs4_budist_noise-poisson04.yaml +0 -0
  155. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_multilayer_V1.yaml +0 -0
  156. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_multilayer_V2.yaml +0 -0
  157. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_FNO_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
  158. {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
  159. {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
  160. {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
  161. {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
  162. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_br20_bs4_budist_noise-none.yaml +0 -0
  163. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs25_budist_noise-none.yaml +0 -0
  164. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs25_budist_noise-poisson02.yaml +0 -0
  165. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_blogdist_noise-poisson02.yaml +0 -0
  166. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-none.yaml +0 -0
  167. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02-hz512.yaml +0 -0
  168. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02-rb10.yaml +0 -0
  169. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L2_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
  170. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs25_budist_noise-poisson02.yaml +0 -0
  171. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs4_budist_noise-none.yaml +0 -0
  172. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs4_budist_noise-poisson02-TRY2.yaml +0 -0
  173. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L3_q256_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
  174. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q1024_d300_r60_s25_bs4_budist_noise-poisson02.yaml +0 -0
  175. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q256_d300_r60_s25_bs25_budist_noise-poisson02.yaml +0 -0
  176. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q256_d300_r60_s25_bs4_budist_noise-poisson02-Copy1.yaml +0 -0
  177. {reflectorch-1.0.0 → reflectorch-1.0.1}/configs/val_sim_L5_q256_d300_r60_s25_bs4_budist_noise-poisson02_LONGER.yaml +0 -0
  178. {reflectorch-1.0.0 → reflectorch-1.0.1}/debug.py +0 -0
  179. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/.buildinfo +0 -0
  180. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/.nojekyll +0 -0
  181. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/099e7c02597f512ca4bf329e5e70eabf2526b801bc2e41a4b60faf1fd2a0d5b1.png +0 -0
  182. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/1ac30c6dc424753591b75155c55218b97af8a9d4f39ba1f550e3726b99a8c203.png +0 -0
  183. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/3032465085654ffdb6867123c628f2cf254e999fbed6a3e83f086fbefff32f60.png +0 -0
  184. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/462e9fd6dbc00234aca3b1cae4463c91412d09f837f308179bec64ac6c0e2131.png +0 -0
  185. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/4d27eb91adf7ec25746b09811fb942ba4f3cbf658a3863b2c2187d81b8cbcf01.png +0 -0
  186. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/51d11b6255a573c0f8781fe74c1711151fbc2bc20db8ad460609c5fd5fcba04f.png +0 -0
  187. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/570b83780084f56a287d652d7580aa1858691a18cbc5cab9ceb4a7444baa0090.png +0 -0
  188. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/5a15129c3f2683e9a278d594c69424c4a81058c3f8d86a555ff3efd8e2343a0b.png +0 -0
  189. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/69d7c263b51df1bddc93a007ae2fecfd0545cf92af67c8882a0df8552576fa66.png +0 -0
  190. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/96a843c24bb16816e4ec21c2b6b5c481326b522c884f1655ff3105627ceabe0d.png +0 -0
  191. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/97a75e185ec40a99a279ded3b8e62245aa03f9f8d10d001217300c9383d0d765.png +0 -0
  192. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/FigureReflectometryNetwork.png +0 -0
  193. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/FigureReflectometryNetwork1.png +0 -0
  194. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/a4da539228f5cd6bedde145b371d42caf707eac2a4a9b6574589593efd850d6b.png +0 -0
  195. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/a8216c88102285c58af52732aad1a43ad5d47aa8b2d194ec59cf6475ab1575b9.png +0 -0
  196. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/c6ab9d1f271ac67ea566420b728be4083f1687e08889123058c64db9c0e61210.png +0 -0
  197. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/d06c461edbc6816f6bfffbb91ede2b62e2e5bce5bd1b258a1f77c64beb4203be.png +0 -0
  198. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/d0c0eef87034c8193308e5448c4cc7ca570131a67e594a3341a87be7df0c92c8.png +0 -0
  199. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/df92d9cc76ed41a7fe7e0782cb88350e1f3561df2a8e3eefb21b9837ec23ac41.png +0 -0
  200. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/e3c28ca591b3b7551f82ca4aa1c2bbbd7f8001fb3383fa3e47139ac76903cc79.png +0 -0
  201. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/f804fe4cf583d38dfe1719a535dd91976693adb6889bccb26ba3ba0e0fb1e647.png +0 -0
  202. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/fig_reflectometry_embedding_networks.png +0 -0
  203. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/fig_reflectometry_embedding_networks1.png +0 -0
  204. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/jupyter_widget_reflectorch.png +0 -0
  205. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_images/sketch_multilayer_0.png +0 -0
  206. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/index.html +0 -0
  207. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/dataset.html +0 -0
  208. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/likelihoods.html +0 -0
  209. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/noise.html +0 -0
  210. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/base.html +0 -0
  211. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/parametric_models.html +0 -0
  212. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/parametric_subpriors.html +0 -0
  213. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/params.html +0 -0
  214. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/sampler_strategies.html +0 -0
  215. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/priors/subprior_sampler.html +0 -0
  216. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/q_generator.html +0 -0
  217. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/reflectivity.html +0 -0
  218. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/scale_curves.html +0 -0
  219. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/smearing.html +0 -0
  220. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/data_generation/utils.html +0 -0
  221. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/inference_model.html +0 -0
  222. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/attenuation.html +0 -0
  223. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/footprint.html +0 -0
  224. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/interpolation.html +0 -0
  225. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/preprocess_exp/preprocess.html +0 -0
  226. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/inference/torch_fitter.html +0 -0
  227. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/basic_trainer.html +0 -0
  228. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/callbacks.html +0 -0
  229. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/dataloaders.html +0 -0
  230. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/loggers.html +0 -0
  231. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/schedulers.html +0 -0
  232. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/ml/trainers.html +0 -0
  233. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/encoders/conv_encoder.html +0 -0
  234. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/encoders/conv_fc_encoder.html +0 -0
  235. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/encoders/fno.html +0 -0
  236. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/models/networks/mlp_networks.html +0 -0
  237. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/runs/config.html +0 -0
  238. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/runs/utils.html +0 -0
  239. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_modules/reflectorch/utils.html +0 -0
  240. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/advanced_functionality.ipynb +0 -0
  241. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/api.rst +0 -0
  242. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/installation.ipynb +0 -0
  243. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/intro.md +0 -0
  244. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/training_reflectorch.ipynb +0 -0
  245. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sources/using_reflectorch.ipynb +0 -0
  246. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css +0 -0
  247. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_sphinx_design_static/design-tabs.js +0 -0
  248. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/basic.css +0 -0
  249. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/check-solid.svg +0 -0
  250. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/clipboard.min.js +0 -0
  251. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copy-button.svg +0 -0
  252. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copybutton.css +0 -0
  253. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copybutton.js +0 -0
  254. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/copybutton_funcs.js +0 -0
  255. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css +0 -0
  256. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/design-tabs.js +0 -0
  257. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/doctools.js +0 -0
  258. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/documentation_options.js +0 -0
  259. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/file.png +0 -0
  260. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_binder.svg +0 -0
  261. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_colab.png +0 -0
  262. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_deepnote.svg +0 -0
  263. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/images/logo_jupyterhub.svg +0 -0
  264. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/language_data.js +0 -0
  265. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ar/LC_MESSAGES/booktheme.mo +0 -0
  266. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ar/LC_MESSAGES/booktheme.po +0 -0
  267. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bg/LC_MESSAGES/booktheme.mo +0 -0
  268. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bg/LC_MESSAGES/booktheme.po +0 -0
  269. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bn/LC_MESSAGES/booktheme.mo +0 -0
  270. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/bn/LC_MESSAGES/booktheme.po +0 -0
  271. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ca/LC_MESSAGES/booktheme.mo +0 -0
  272. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ca/LC_MESSAGES/booktheme.po +0 -0
  273. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/cs/LC_MESSAGES/booktheme.mo +0 -0
  274. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/cs/LC_MESSAGES/booktheme.po +0 -0
  275. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/da/LC_MESSAGES/booktheme.mo +0 -0
  276. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/da/LC_MESSAGES/booktheme.po +0 -0
  277. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/de/LC_MESSAGES/booktheme.mo +0 -0
  278. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/de/LC_MESSAGES/booktheme.po +0 -0
  279. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/el/LC_MESSAGES/booktheme.mo +0 -0
  280. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/el/LC_MESSAGES/booktheme.po +0 -0
  281. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/eo/LC_MESSAGES/booktheme.mo +0 -0
  282. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/eo/LC_MESSAGES/booktheme.po +0 -0
  283. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/es/LC_MESSAGES/booktheme.mo +0 -0
  284. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/es/LC_MESSAGES/booktheme.po +0 -0
  285. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/et/LC_MESSAGES/booktheme.mo +0 -0
  286. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/et/LC_MESSAGES/booktheme.po +0 -0
  287. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fi/LC_MESSAGES/booktheme.mo +0 -0
  288. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fi/LC_MESSAGES/booktheme.po +0 -0
  289. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fr/LC_MESSAGES/booktheme.mo +0 -0
  290. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/fr/LC_MESSAGES/booktheme.po +0 -0
  291. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/hr/LC_MESSAGES/booktheme.mo +0 -0
  292. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/hr/LC_MESSAGES/booktheme.po +0 -0
  293. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/id/LC_MESSAGES/booktheme.mo +0 -0
  294. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/id/LC_MESSAGES/booktheme.po +0 -0
  295. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/it/LC_MESSAGES/booktheme.mo +0 -0
  296. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/it/LC_MESSAGES/booktheme.po +0 -0
  297. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/iw/LC_MESSAGES/booktheme.mo +0 -0
  298. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/iw/LC_MESSAGES/booktheme.po +0 -0
  299. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ja/LC_MESSAGES/booktheme.mo +0 -0
  300. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ja/LC_MESSAGES/booktheme.po +0 -0
  301. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ko/LC_MESSAGES/booktheme.mo +0 -0
  302. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ko/LC_MESSAGES/booktheme.po +0 -0
  303. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lt/LC_MESSAGES/booktheme.mo +0 -0
  304. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lt/LC_MESSAGES/booktheme.po +0 -0
  305. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lv/LC_MESSAGES/booktheme.mo +0 -0
  306. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/lv/LC_MESSAGES/booktheme.po +0 -0
  307. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ml/LC_MESSAGES/booktheme.mo +0 -0
  308. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ml/LC_MESSAGES/booktheme.po +0 -0
  309. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/mr/LC_MESSAGES/booktheme.mo +0 -0
  310. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/mr/LC_MESSAGES/booktheme.po +0 -0
  311. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ms/LC_MESSAGES/booktheme.mo +0 -0
  312. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ms/LC_MESSAGES/booktheme.po +0 -0
  313. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/nl/LC_MESSAGES/booktheme.mo +0 -0
  314. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/nl/LC_MESSAGES/booktheme.po +0 -0
  315. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/no/LC_MESSAGES/booktheme.mo +0 -0
  316. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/no/LC_MESSAGES/booktheme.po +0 -0
  317. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pl/LC_MESSAGES/booktheme.mo +0 -0
  318. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pl/LC_MESSAGES/booktheme.po +0 -0
  319. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pt/LC_MESSAGES/booktheme.mo +0 -0
  320. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/pt/LC_MESSAGES/booktheme.po +0 -0
  321. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ro/LC_MESSAGES/booktheme.mo +0 -0
  322. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ro/LC_MESSAGES/booktheme.po +0 -0
  323. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ru/LC_MESSAGES/booktheme.mo +0 -0
  324. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ru/LC_MESSAGES/booktheme.po +0 -0
  325. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sk/LC_MESSAGES/booktheme.mo +0 -0
  326. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sk/LC_MESSAGES/booktheme.po +0 -0
  327. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sl/LC_MESSAGES/booktheme.mo +0 -0
  328. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sl/LC_MESSAGES/booktheme.po +0 -0
  329. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sr/LC_MESSAGES/booktheme.mo +0 -0
  330. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sr/LC_MESSAGES/booktheme.po +0 -0
  331. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sv/LC_MESSAGES/booktheme.mo +0 -0
  332. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/sv/LC_MESSAGES/booktheme.po +0 -0
  333. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ta/LC_MESSAGES/booktheme.mo +0 -0
  334. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ta/LC_MESSAGES/booktheme.po +0 -0
  335. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/te/LC_MESSAGES/booktheme.mo +0 -0
  336. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/te/LC_MESSAGES/booktheme.po +0 -0
  337. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tg/LC_MESSAGES/booktheme.mo +0 -0
  338. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tg/LC_MESSAGES/booktheme.po +0 -0
  339. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/th/LC_MESSAGES/booktheme.mo +0 -0
  340. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/th/LC_MESSAGES/booktheme.po +0 -0
  341. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tl/LC_MESSAGES/booktheme.mo +0 -0
  342. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tl/LC_MESSAGES/booktheme.po +0 -0
  343. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tr/LC_MESSAGES/booktheme.mo +0 -0
  344. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/tr/LC_MESSAGES/booktheme.po +0 -0
  345. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/uk/LC_MESSAGES/booktheme.mo +0 -0
  346. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/uk/LC_MESSAGES/booktheme.po +0 -0
  347. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ur/LC_MESSAGES/booktheme.mo +0 -0
  348. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/ur/LC_MESSAGES/booktheme.po +0 -0
  349. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/vi/LC_MESSAGES/booktheme.mo +0 -0
  350. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/vi/LC_MESSAGES/booktheme.po +0 -0
  351. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo +0 -0
  352. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po +0 -0
  353. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo +0 -0
  354. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po +0 -0
  355. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/minus.png +0 -0
  356. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css +0 -0
  357. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/play-solid.svg +0 -0
  358. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/plus.png +0 -0
  359. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/pygments.css +0 -0
  360. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/reflectorch_logo.png +0 -0
  361. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sbt-webpack-macros.html +0 -0
  362. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/bootstrap.js +0 -0
  363. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/bootstrap.js.LICENSE.txt +0 -0
  364. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/bootstrap.js.map +0 -0
  365. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/pydata-sphinx-theme.js +0 -0
  366. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/pydata-sphinx-theme.js.map +0 -0
  367. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/sphinx-book-theme.js +0 -0
  368. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/scripts/sphinx-book-theme.js.map +0 -0
  369. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/searchtools.js +0 -0
  370. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sphinx-thebe.css +0 -0
  371. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sphinx-thebe.js +0 -0
  372. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/sphinx_highlight.js +0 -0
  373. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/bootstrap.css +0 -0
  374. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/bootstrap.css.map +0 -0
  375. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/pydata-sphinx-theme.css +0 -0
  376. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/pydata-sphinx-theme.css.map +0 -0
  377. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/sphinx-book-theme.css +0 -0
  378. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/styles/theme.css +0 -0
  379. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/togglebutton.css +0 -0
  380. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/togglebutton.js +0 -0
  381. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/LICENSE.txt +0 -0
  382. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/css/all.min.css +0 -0
  383. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/js/all.min.js +0 -0
  384. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/js/all.min.js.LICENSE.txt +0 -0
  385. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.ttf +0 -0
  386. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2 +0 -0
  387. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.ttf +0 -0
  388. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2 +0 -0
  389. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.ttf +0 -0
  390. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2 +0 -0
  391. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.ttf +0 -0
  392. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.woff2 +0 -0
  393. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/_static/webpack-macros.html +0 -0
  394. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/advanced_functionality.html +0 -0
  395. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/api.html +0 -0
  396. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/genindex.html +0 -0
  397. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/index.html +0 -0
  398. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/installation.html +0 -0
  399. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/intro.html +0 -0
  400. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/objects.inv +0 -0
  401. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/py-modindex.html +0 -0
  402. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/reports/advanced_functionality.err.log +0 -0
  403. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/reports/training_reflectorch.err.log +0 -0
  404. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/reports/using_reflectorch.err.log +0 -0
  405. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/search.html +0 -0
  406. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/searchindex.js +0 -0
  407. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/training_reflectorch.html +0 -0
  408. {reflectorch-1.0.0 → reflectorch-1.0.1}/docs/using_reflectorch.html +0 -0
  409. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/FigureReflectometryNetwork.png +0 -0
  410. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/_config.yml +0 -0
  411. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/_toc.yml +0 -0
  412. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/advanced_functionality.ipynb +0 -0
  413. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/api.rst +0 -0
  414. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/conf.py +0 -0
  415. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/fig_reflectometry_embedding_networks.png +0 -0
  416. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/intro.md +0 -0
  417. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/jupyter_widget_reflectorch.png +0 -0
  418. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/reflectorch_logo.png +0 -0
  419. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/requirements.txt +0 -0
  420. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/sketch_multilayer_0.png +0 -0
  421. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/training_reflectorch.ipynb +0 -0
  422. {reflectorch-1.0.0 → reflectorch-1.0.1}/documentation/using_reflectorch.ipynb +0 -0
  423. {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/33a.dat +0 -0
  424. {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/DIP-nSi_34a.dat +0 -0
  425. {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/data_C60.pt +0 -0
  426. {reflectorch-1.0.0 → reflectorch-1.0.1}/exp_data/data_PTCDI-C3.pt +0 -0
  427. {reflectorch-1.0.0 → reflectorch-1.0.1}/paper/docker_build_command.txt +0 -0
  428. {reflectorch-1.0.0 → reflectorch-1.0.1}/paper/paper.bib +0 -0
  429. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/__init__.py +0 -0
  430. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/__init__.py +0 -0
  431. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/dataset.py +0 -0
  432. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/likelihoods.py +0 -0
  433. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/noise.py +0 -0
  434. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/__init__.py +0 -0
  435. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/base.py +0 -0
  436. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/exp_subprior_sampler.py +0 -0
  437. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/independent_priors.py +0 -0
  438. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/multilayer_models.py +0 -0
  439. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/multilayer_structures.py +0 -0
  440. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/no_constraints.py +0 -0
  441. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/parametric_models.py +0 -0
  442. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/parametric_subpriors.py +0 -0
  443. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/params.py +0 -0
  444. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/scaler_mixin.py +0 -0
  445. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/subprior_sampler.py +0 -0
  446. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/priors/utils.py +0 -0
  447. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/process_data.py +0 -0
  448. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/q_generator.py +0 -0
  449. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/__init__.py +0 -0
  450. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/abeles.py +0 -0
  451. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/kinematical.py +0 -0
  452. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/memory_eff.py +0 -0
  453. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/numpy_implementations.py +0 -0
  454. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/reflectivity/smearing.py +0 -0
  455. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/scale_curves.py +0 -0
  456. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/smearing.py +0 -0
  457. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/data_generation/utils.py +0 -0
  458. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/__init__.py +0 -0
  459. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/jupyter/__init__.py +0 -0
  460. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/jupyter/callbacks.py +0 -0
  461. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/matplotlib/__init__.py +0 -0
  462. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/extensions/matplotlib/losses.py +0 -0
  463. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/__init__.py +0 -0
  464. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/inference_model.py +0 -0
  465. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/multilayer_fitter.py +0 -0
  466. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/multilayer_inference_model.py +0 -0
  467. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/__init__.py +0 -0
  468. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/attenuation.py +0 -0
  469. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/cut_with_q_ratio.py +0 -0
  470. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/footprint.py +0 -0
  471. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/interpolation.py +0 -0
  472. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/normalize.py +0 -0
  473. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/preprocess_exp/preprocess.py +0 -0
  474. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/record_time.py +0 -0
  475. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/sampler_solution.py +0 -0
  476. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/scipy_fitter.py +0 -0
  477. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/inference/torch_fitter.py +0 -0
  478. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/__init__.py +0 -0
  479. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/basic_trainer.py +0 -0
  480. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/callbacks.py +0 -0
  481. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/dataloaders.py +0 -0
  482. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/loggers.py +0 -0
  483. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/schedulers.py +0 -0
  484. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/trainers.py +0 -0
  485. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/ml/utils.py +0 -0
  486. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/__init__.py +0 -0
  487. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/activations.py +0 -0
  488. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/__init__.py +0 -0
  489. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/conv_encoder.py +0 -0
  490. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/conv_res_net.py +0 -0
  491. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/fno.py +0 -0
  492. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/encoders/transformers.py +0 -0
  493. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/networks/__init__.py +0 -0
  494. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/networks/mlp_networks.py +0 -0
  495. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/models/networks/residual_net.py +0 -0
  496. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/paths.py +0 -0
  497. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/__init__.py +0 -0
  498. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/config.py +0 -0
  499. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/slurm_utils.py +0 -0
  500. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/train.py +0 -0
  501. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/runs/utils.py +0 -0
  502. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/test_config.py +0 -0
  503. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/train.py +0 -0
  504. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/train_on_cluster.py +0 -0
  505. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch/utils.py +0 -0
  506. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/dependency_links.txt +0 -0
  507. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/requires.txt +0 -0
  508. {reflectorch-1.0.0 → reflectorch-1.0.1}/reflectorch.egg-info/top_level.txt +0 -0
  509. {reflectorch-1.0.0 → reflectorch-1.0.1}/setup.cfg +0 -0
  510. {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/__init__.py +0 -0
  511. {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/conftest.py +0 -0
  512. {reflectorch-1.0.0 → reflectorch-1.0.1}/tests/data/demo_scan.csv +0 -0
  513. {reflectorch-1.0.0/tests/func → reflectorch-1.0.1/tests/unit}/__init__.py +0 -0
  514. {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.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
  [![Python version](https://img.shields.io/badge/python-3.7%7C3.8%7C3.9%7C3.10%7C3.11%7C3.12-blue.svg)](https://www.python.org/)
52
52
  ![CI workflow status](https://github.com/schreiber-lab/reflectorch/actions/workflows/ci.yml/badge.svg)
53
53
  ![Repos size](https://img.shields.io/github/repo-size/schreiber-lab/reflectorch)
54
+ [![CodeFactor](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch/badge)](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
54
55
  [![Jupyter Book Documentation](https://jupyterbook.org/badge.svg)](https://schreiber-lab.github.io/reflectorch/)
55
56
  <!-- [![Code style: Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](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 based on Pytorch (written by [Vladimir Starostin](https://github.com/StarostinV/) & [Valentin Munteanu](https://github.com/valentinsingularity)). 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
+ **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 either from [![PyPi](https://img.shields.io/badge/PyPi-3776AB.svg?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/reflectorch/) via ``pip`` or from [![conda-forge](https://img.shields.io/badge/conda--forge-44A833.svg?style=flat&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/reflectorch/) via ``conda``:
63
+ **Reflectorch** can be installed from [![PyPi](https://img.shields.io/badge/PyPi-3776AB.svg?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/reflectorch/) via ``pip``:
64
+
65
+ <!-- or from [![conda-forge](https://img.shields.io/badge/conda--forge-44A833.svg?style=flat&logo=conda-forge&logoColor=white)](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
- Additionally, one can clone the entire Github repository and install the package in editable mode:
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
  [![Python version](https://img.shields.io/badge/python-3.7%7C3.8%7C3.9%7C3.10%7C3.11%7C3.12-blue.svg)](https://www.python.org/)
12
12
  ![CI workflow status](https://github.com/schreiber-lab/reflectorch/actions/workflows/ci.yml/badge.svg)
13
13
  ![Repos size](https://img.shields.io/github/repo-size/schreiber-lab/reflectorch)
14
+ [![CodeFactor](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch/badge)](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
14
15
  [![Jupyter Book Documentation](https://jupyterbook.org/badge.svg)](https://schreiber-lab.github.io/reflectorch/)
15
16
  <!-- [![Code style: Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](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 based on Pytorch (written by [Vladimir Starostin](https://github.com/StarostinV/) & [Valentin Munteanu](https://github.com/valentinsingularity)). 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
+ **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 either from [![PyPi](https://img.shields.io/badge/PyPi-3776AB.svg?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/reflectorch/) via ``pip`` or from [![conda-forge](https://img.shields.io/badge/conda--forge-44A833.svg?style=flat&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/reflectorch/) via ``conda``:
23
+ **Reflectorch** can be installed from [![PyPi](https://img.shields.io/badge/PyPi-3776AB.svg?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/reflectorch/) via ``pip``:
24
+
25
+ <!-- or from [![conda-forge](https://img.shields.io/badge/conda--forge-44A833.svg?style=flat&logo=conda-forge&logoColor=white)](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
- Additionally, one can clone the entire Github repository and install the package in editable mode:
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 **pip** or from the [conda-forge](https://anaconda.org/conda-forge/reflectorch) channel via the **conda** 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: 1
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
- - name: University of Tübingen, Institute for Applied Physics, Auf der Morgenstelle 10, 72076 Tübingen, Germany
33
- index: 1
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 thin films and, generally, 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 the existence of 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 in-operando investigations at large scale facilities (i.e. synchrotron and neutron sources), potentially enabling closed loop experiments [@Pithan2023].
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 in an embedding network for the reflectivtiy curves and a multilayer perceptron. The architecture can be customized, different embedding networks for the reflectivity curves also being available. Callback objects can be used to control the training process, such as scheduling the learning rate or periodically saving the model weights.
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.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"}
@@ -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.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
  [![Python version](https://img.shields.io/badge/python-3.7%7C3.8%7C3.9%7C3.10%7C3.11%7C3.12-blue.svg)](https://www.python.org/)
52
52
  ![CI workflow status](https://github.com/schreiber-lab/reflectorch/actions/workflows/ci.yml/badge.svg)
53
53
  ![Repos size](https://img.shields.io/github/repo-size/schreiber-lab/reflectorch)
54
+ [![CodeFactor](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch/badge)](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
54
55
  [![Jupyter Book Documentation](https://jupyterbook.org/badge.svg)](https://schreiber-lab.github.io/reflectorch/)
55
56
  <!-- [![Code style: Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](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 based on Pytorch (written by [Vladimir Starostin](https://github.com/StarostinV/) & [Valentin Munteanu](https://github.com/valentinsingularity)). 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
+ **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 either from [![PyPi](https://img.shields.io/badge/PyPi-3776AB.svg?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/reflectorch/) via ``pip`` or from [![conda-forge](https://img.shields.io/badge/conda--forge-44A833.svg?style=flat&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/reflectorch/) via ``conda``:
63
+ **Reflectorch** can be installed from [![PyPi](https://img.shields.io/badge/PyPi-3776AB.svg?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/reflectorch/) via ``pip``:
64
+
65
+ <!-- or from [![conda-forge](https://img.shields.io/badge/conda--forge-44A833.svg?style=flat&logo=conda-forge&logoColor=white)](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
- Additionally, one can clone the entire Github repository and install the package in editable mode:
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/test_preprocessing.py
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
@@ -0,0 +1,8 @@
1
+ from tests.fixtures.data import (
2
+ raw_data_with_preprocessing_params,
3
+ )
4
+
5
+
6
+ __all__ = [
7
+ "raw_data_with_preprocessing_params",
8
+ ]
@@ -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]