reflectorch 1.3.0__py3-none-any.whl → 1.5.0__py3-none-any.whl

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 (96) hide show
  1. reflectorch/__init__.py +17 -17
  2. reflectorch/data_generation/__init__.py +128 -126
  3. reflectorch/data_generation/dataset.py +210 -210
  4. reflectorch/data_generation/likelihoods.py +80 -80
  5. reflectorch/data_generation/noise.py +470 -470
  6. reflectorch/data_generation/priors/__init__.py +60 -60
  7. reflectorch/data_generation/priors/base.py +55 -55
  8. reflectorch/data_generation/priors/exp_subprior_sampler.py +298 -298
  9. reflectorch/data_generation/priors/independent_priors.py +195 -195
  10. reflectorch/data_generation/priors/multilayer_models.py +311 -311
  11. reflectorch/data_generation/priors/multilayer_structures.py +104 -104
  12. reflectorch/data_generation/priors/no_constraints.py +206 -206
  13. reflectorch/data_generation/priors/parametric_models.py +841 -841
  14. reflectorch/data_generation/priors/parametric_subpriors.py +369 -369
  15. reflectorch/data_generation/priors/params.py +252 -252
  16. reflectorch/data_generation/priors/sampler_strategies.py +369 -369
  17. reflectorch/data_generation/priors/scaler_mixin.py +65 -65
  18. reflectorch/data_generation/priors/subprior_sampler.py +371 -371
  19. reflectorch/data_generation/priors/utils.py +118 -118
  20. reflectorch/data_generation/process_data.py +41 -41
  21. reflectorch/data_generation/q_generator.py +280 -246
  22. reflectorch/data_generation/reflectivity/__init__.py +102 -102
  23. reflectorch/data_generation/reflectivity/abeles.py +97 -97
  24. reflectorch/data_generation/reflectivity/kinematical.py +70 -70
  25. reflectorch/data_generation/reflectivity/memory_eff.py +105 -105
  26. reflectorch/data_generation/reflectivity/numpy_implementations.py +120 -120
  27. reflectorch/data_generation/reflectivity/smearing.py +138 -138
  28. reflectorch/data_generation/reflectivity/smearing_pointwise.py +109 -109
  29. reflectorch/data_generation/scale_curves.py +112 -112
  30. reflectorch/data_generation/smearing.py +98 -98
  31. reflectorch/data_generation/utils.py +223 -222
  32. reflectorch/extensions/jupyter/__init__.py +11 -6
  33. reflectorch/extensions/jupyter/api.py +85 -0
  34. reflectorch/extensions/jupyter/callbacks.py +34 -34
  35. reflectorch/extensions/jupyter/components.py +758 -0
  36. reflectorch/extensions/jupyter/custom_select.py +268 -0
  37. reflectorch/extensions/jupyter/log_widget.py +241 -0
  38. reflectorch/extensions/jupyter/model_selection.py +495 -0
  39. reflectorch/extensions/jupyter/plotly_plot_manager.py +329 -0
  40. reflectorch/extensions/jupyter/widget.py +625 -0
  41. reflectorch/extensions/matplotlib/__init__.py +5 -5
  42. reflectorch/extensions/matplotlib/losses.py +32 -32
  43. reflectorch/extensions/refnx/refnx_conversion.py +76 -76
  44. reflectorch/inference/__init__.py +28 -24
  45. reflectorch/inference/inference_model.py +847 -851
  46. reflectorch/inference/input_interface.py +239 -0
  47. reflectorch/inference/loading_data.py +37 -0
  48. reflectorch/inference/multilayer_fitter.py +171 -171
  49. reflectorch/inference/multilayer_inference_model.py +193 -193
  50. reflectorch/inference/plotting.py +524 -98
  51. reflectorch/inference/preprocess_exp/__init__.py +6 -6
  52. reflectorch/inference/preprocess_exp/attenuation.py +36 -36
  53. reflectorch/inference/preprocess_exp/cut_with_q_ratio.py +31 -31
  54. reflectorch/inference/preprocess_exp/footprint.py +81 -81
  55. reflectorch/inference/preprocess_exp/interpolation.py +19 -16
  56. reflectorch/inference/preprocess_exp/normalize.py +21 -21
  57. reflectorch/inference/preprocess_exp/preprocess.py +121 -121
  58. reflectorch/inference/query_matcher.py +81 -81
  59. reflectorch/inference/record_time.py +43 -43
  60. reflectorch/inference/sampler_solution.py +56 -56
  61. reflectorch/inference/scipy_fitter.py +272 -248
  62. reflectorch/inference/torch_fitter.py +87 -87
  63. reflectorch/ml/__init__.py +32 -32
  64. reflectorch/ml/basic_trainer.py +292 -292
  65. reflectorch/ml/callbacks.py +80 -80
  66. reflectorch/ml/dataloaders.py +26 -26
  67. reflectorch/ml/loggers.py +55 -55
  68. reflectorch/ml/schedulers.py +355 -355
  69. reflectorch/ml/trainers.py +200 -191
  70. reflectorch/ml/utils.py +2 -2
  71. reflectorch/models/__init__.py +15 -14
  72. reflectorch/models/activations.py +50 -50
  73. reflectorch/models/encoders/__init__.py +19 -17
  74. reflectorch/models/encoders/conv_encoder.py +218 -218
  75. reflectorch/models/encoders/conv_res_net.py +115 -115
  76. reflectorch/models/encoders/fno.py +133 -133
  77. reflectorch/models/encoders/integral_kernel_embedding.py +390 -0
  78. reflectorch/models/networks/__init__.py +14 -14
  79. reflectorch/models/networks/mlp_networks.py +434 -428
  80. reflectorch/models/networks/residual_net.py +156 -156
  81. reflectorch/paths.py +29 -27
  82. reflectorch/runs/__init__.py +31 -31
  83. reflectorch/runs/config.py +25 -25
  84. reflectorch/runs/slurm_utils.py +93 -93
  85. reflectorch/runs/train.py +78 -78
  86. reflectorch/runs/utils.py +404 -401
  87. reflectorch/test_config.py +4 -4
  88. reflectorch/train.py +4 -4
  89. reflectorch/train_on_cluster.py +4 -4
  90. reflectorch/utils.py +98 -68
  91. {reflectorch-1.3.0.dist-info → reflectorch-1.5.0.dist-info}/METADATA +129 -125
  92. reflectorch-1.5.0.dist-info/RECORD +96 -0
  93. {reflectorch-1.3.0.dist-info → reflectorch-1.5.0.dist-info}/WHEEL +1 -1
  94. {reflectorch-1.3.0.dist-info → reflectorch-1.5.0.dist-info}/licenses/LICENSE.txt +20 -20
  95. reflectorch-1.3.0.dist-info/RECORD +0 -86
  96. {reflectorch-1.3.0.dist-info → reflectorch-1.5.0.dist-info}/top_level.txt +0 -0
@@ -1,65 +1,65 @@
1
- from typing import Tuple
2
-
3
- import torch
4
- from torch import Tensor
5
-
6
-
7
- class ScalerMixin:
8
- """Provides functionality to multiple inheritance classes for scaling the parameters to a specified range and restoring them to the original range."""
9
- @staticmethod
10
- def _get_delta_vector(min_vector: Tensor, max_vector: Tensor):
11
- delta_vector = max_vector - min_vector
12
- delta_vector[delta_vector == 0.] = 1.
13
- return delta_vector
14
-
15
- def _scale(self, params_t: Tensor, min_vector: Tensor, max_vector: Tensor):
16
- """scale the parameters to a specific range
17
- Args:
18
- params_t (Tensor): the values of the parameters
19
- min_vector (Tensor): minimum possible values of each parameter
20
- max_vector (Tensor): maximum possible values of each parameter
21
-
22
- Returns:
23
- Tensor: the scaled parameters
24
- """
25
- if params_t.dim() == 2:
26
- min_vector = torch.atleast_2d(min_vector)
27
- max_vector = torch.atleast_2d(max_vector)
28
-
29
- delta_vector = max_vector - min_vector
30
- delta_vector[delta_vector == 0.] = 1.
31
- scaled_params = (
32
- params_t - min_vector
33
- ) / self._get_delta_vector(min_vector, max_vector) * self._length + self._bias
34
- return scaled_params
35
-
36
- def _restore(self, scaled_params: Tensor, min_vector: Tensor, max_vector: Tensor):
37
- """restores the parameters to their original range
38
- Args:
39
- scaled_params: (Tensor): the scaled parameters
40
- min_vector (Tensor): minimum possible values of each parameter
41
- max_vector (Tensor): maximum possible values of each parameter
42
-
43
- Returns:
44
- Tensor: the restored parameters
45
- """
46
- if scaled_params.dim() == 2:
47
- min_vector = torch.atleast_2d(min_vector)
48
- max_vector = torch.atleast_2d(max_vector)
49
-
50
- params_t = (
51
- scaled_params - self._bias
52
- ) / self._length * self._get_delta_vector(min_vector, max_vector) + min_vector
53
- return params_t
54
-
55
- @property
56
- def scaled_range(self) -> Tuple[float, float]:
57
- return self._scaled_range
58
-
59
- @scaled_range.setter
60
- def scaled_range(self, scaled_range: Tuple[float, float]):
61
- """sets the range used for scaling the parameters"""
62
- self._scaled_range = scaled_range
63
- self._length = scaled_range[1] - scaled_range[0]
64
- self._init_bias = (scaled_range[0] + scaled_range[1]) / 2
65
- self._bias = (self._init_bias - 0.5 * self._length)
1
+ from typing import Tuple
2
+
3
+ import torch
4
+ from torch import Tensor
5
+
6
+
7
+ class ScalerMixin:
8
+ """Provides functionality to multiple inheritance classes for scaling the parameters to a specified range and restoring them to the original range."""
9
+ @staticmethod
10
+ def _get_delta_vector(min_vector: Tensor, max_vector: Tensor):
11
+ delta_vector = max_vector - min_vector
12
+ delta_vector[delta_vector == 0.] = 1.
13
+ return delta_vector
14
+
15
+ def _scale(self, params_t: Tensor, min_vector: Tensor, max_vector: Tensor):
16
+ """scale the parameters to a specific range
17
+ Args:
18
+ params_t (Tensor): the values of the parameters
19
+ min_vector (Tensor): minimum possible values of each parameter
20
+ max_vector (Tensor): maximum possible values of each parameter
21
+
22
+ Returns:
23
+ Tensor: the scaled parameters
24
+ """
25
+ if params_t.dim() == 2:
26
+ min_vector = torch.atleast_2d(min_vector)
27
+ max_vector = torch.atleast_2d(max_vector)
28
+
29
+ delta_vector = max_vector - min_vector
30
+ delta_vector[delta_vector == 0.] = 1.
31
+ scaled_params = (
32
+ params_t - min_vector
33
+ ) / self._get_delta_vector(min_vector, max_vector) * self._length + self._bias
34
+ return scaled_params
35
+
36
+ def _restore(self, scaled_params: Tensor, min_vector: Tensor, max_vector: Tensor):
37
+ """restores the parameters to their original range
38
+ Args:
39
+ scaled_params: (Tensor): the scaled parameters
40
+ min_vector (Tensor): minimum possible values of each parameter
41
+ max_vector (Tensor): maximum possible values of each parameter
42
+
43
+ Returns:
44
+ Tensor: the restored parameters
45
+ """
46
+ if scaled_params.dim() == 2:
47
+ min_vector = torch.atleast_2d(min_vector)
48
+ max_vector = torch.atleast_2d(max_vector)
49
+
50
+ params_t = (
51
+ scaled_params - self._bias
52
+ ) / self._length * self._get_delta_vector(min_vector, max_vector) + min_vector
53
+ return params_t
54
+
55
+ @property
56
+ def scaled_range(self) -> Tuple[float, float]:
57
+ return self._scaled_range
58
+
59
+ @scaled_range.setter
60
+ def scaled_range(self, scaled_range: Tuple[float, float]):
61
+ """sets the range used for scaling the parameters"""
62
+ self._scaled_range = scaled_range
63
+ self._length = scaled_range[1] - scaled_range[0]
64
+ self._init_bias = (scaled_range[0] + scaled_range[1]) / 2
65
+ self._bias = (self._init_bias - 0.5 * self._length)