reflectorch 1.2.0__py3-none-any.whl → 1.3.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.
- reflectorch/data_generation/__init__.py +2 -0
- reflectorch/data_generation/dataset.py +27 -7
- reflectorch/data_generation/noise.py +115 -9
- reflectorch/data_generation/priors/parametric_models.py +90 -15
- reflectorch/data_generation/priors/parametric_subpriors.py +28 -7
- reflectorch/data_generation/priors/sampler_strategies.py +67 -3
- reflectorch/data_generation/q_generator.py +31 -11
- reflectorch/data_generation/reflectivity/__init__.py +56 -14
- reflectorch/data_generation/reflectivity/abeles.py +31 -16
- reflectorch/data_generation/reflectivity/kinematical.py +5 -6
- reflectorch/data_generation/reflectivity/memory_eff.py +1 -1
- reflectorch/data_generation/reflectivity/smearing.py +25 -10
- reflectorch/data_generation/reflectivity/smearing_pointwise.py +110 -0
- reflectorch/data_generation/smearing.py +42 -11
- reflectorch/data_generation/utils.py +92 -18
- reflectorch/extensions/refnx/refnx_conversion.py +77 -0
- reflectorch/inference/inference_model.py +220 -105
- reflectorch/inference/plotting.py +98 -0
- reflectorch/inference/scipy_fitter.py +84 -7
- reflectorch/ml/__init__.py +2 -0
- reflectorch/ml/basic_trainer.py +18 -6
- reflectorch/ml/callbacks.py +5 -4
- reflectorch/ml/loggers.py +25 -0
- reflectorch/ml/schedulers.py +116 -0
- reflectorch/ml/trainers.py +122 -23
- reflectorch/models/__init__.py +1 -1
- reflectorch/models/encoders/__init__.py +0 -2
- reflectorch/models/encoders/conv_encoder.py +54 -40
- reflectorch/models/encoders/fno.py +23 -16
- reflectorch/models/networks/__init__.py +2 -0
- reflectorch/models/networks/mlp_networks.py +324 -152
- reflectorch/models/networks/residual_net.py +31 -5
- reflectorch/runs/train.py +0 -1
- reflectorch/runs/utils.py +43 -9
- {reflectorch-1.2.0.dist-info → reflectorch-1.3.0.dist-info}/METADATA +19 -17
- {reflectorch-1.2.0.dist-info → reflectorch-1.3.0.dist-info}/RECORD +39 -36
- {reflectorch-1.2.0.dist-info → reflectorch-1.3.0.dist-info}/WHEEL +1 -1
- {reflectorch-1.2.0.dist-info → reflectorch-1.3.0.dist-info/licenses}/LICENSE.txt +0 -0
- {reflectorch-1.2.0.dist-info → reflectorch-1.3.0.dist-info}/top_level.txt +0 -0
|
@@ -18,15 +18,21 @@ class ResidualMLP(nn.Module):
|
|
|
18
18
|
repeats_per_block: int = 2,
|
|
19
19
|
activation: str = 'relu',
|
|
20
20
|
use_batch_norm: bool = True,
|
|
21
|
+
use_layer_norm: bool = False,
|
|
21
22
|
dropout_rate: float = 0.0,
|
|
22
23
|
residual: bool = True,
|
|
23
24
|
adaptive_activation: bool = False,
|
|
24
25
|
conditioning: str = 'glu',
|
|
26
|
+
concat_condition_first_layer: bool = True,
|
|
27
|
+
film_with_tanh: bool = False,
|
|
25
28
|
):
|
|
26
29
|
super().__init__()
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
self.concat_condition_first_layer = concat_condition_first_layer
|
|
32
|
+
|
|
33
|
+
dim_first_layer = dim_in + dim_condition if concat_condition_first_layer else dim_in
|
|
29
34
|
self.first_layer = nn.Linear(dim_first_layer, layer_width)
|
|
35
|
+
|
|
30
36
|
self.blocks = nn.ModuleList(
|
|
31
37
|
[
|
|
32
38
|
ResidualBlock(
|
|
@@ -35,24 +41,28 @@ class ResidualMLP(nn.Module):
|
|
|
35
41
|
repeats_per_block=repeats_per_block,
|
|
36
42
|
activation=activation,
|
|
37
43
|
use_batch_norm=use_batch_norm,
|
|
44
|
+
use_layer_norm=use_layer_norm,
|
|
38
45
|
dropout_rate=dropout_rate,
|
|
39
46
|
residual=residual,
|
|
40
47
|
adaptive_activation=adaptive_activation,
|
|
41
48
|
conditioning = conditioning,
|
|
49
|
+
film_with_tanh = film_with_tanh,
|
|
42
50
|
)
|
|
43
51
|
for _ in range(num_blocks)
|
|
44
52
|
]
|
|
45
53
|
)
|
|
54
|
+
|
|
46
55
|
self.last_layer = nn.Linear(layer_width, dim_out)
|
|
47
56
|
|
|
48
57
|
def forward(self, x, condition=None):
|
|
49
|
-
if condition is None:
|
|
50
|
-
x = self.first_layer(x)
|
|
51
|
-
else:
|
|
58
|
+
if self.concat_condition_first_layer and condition is not None:
|
|
52
59
|
x = self.first_layer(torch.cat([x, condition], dim=-1))
|
|
60
|
+
else:
|
|
61
|
+
x = self.first_layer(x)
|
|
53
62
|
|
|
54
63
|
for block in self.blocks:
|
|
55
64
|
x = block(x, condition=condition)
|
|
65
|
+
|
|
56
66
|
x = self.last_layer(x)
|
|
57
67
|
|
|
58
68
|
return x
|
|
@@ -68,19 +78,23 @@ class ResidualBlock(nn.Module):
|
|
|
68
78
|
repeats_per_block: int = 2,
|
|
69
79
|
activation: str = 'relu',
|
|
70
80
|
use_batch_norm: bool = False,
|
|
81
|
+
use_layer_norm: bool = False,
|
|
71
82
|
dropout_rate: float = 0.0,
|
|
72
83
|
residual: bool = True,
|
|
73
84
|
adaptive_activation: bool = False,
|
|
74
85
|
conditioning: str = 'glu',
|
|
86
|
+
film_with_tanh: bool = False,
|
|
75
87
|
):
|
|
76
88
|
super().__init__()
|
|
77
89
|
|
|
78
90
|
self.residual = residual
|
|
79
91
|
self.repeats_per_block = repeats_per_block
|
|
80
92
|
self.use_batch_norm = use_batch_norm
|
|
93
|
+
self.use_layer_norm = use_layer_norm
|
|
81
94
|
self.dropout_rate = dropout_rate
|
|
82
95
|
self.adaptive_activation = adaptive_activation
|
|
83
96
|
self.conditioning = conditioning
|
|
97
|
+
self.film_with_tanh = film_with_tanh
|
|
84
98
|
|
|
85
99
|
if not adaptive_activation:
|
|
86
100
|
self.activation = activation_by_name(activation)()
|
|
@@ -92,7 +106,11 @@ class ResidualBlock(nn.Module):
|
|
|
92
106
|
if use_batch_norm:
|
|
93
107
|
self.batch_norm_layers = nn.ModuleList(
|
|
94
108
|
[nn.BatchNorm1d(layer_width, eps=1e-3) for _ in range(repeats_per_block)]
|
|
95
|
-
|
|
109
|
+
)
|
|
110
|
+
elif use_layer_norm:
|
|
111
|
+
self.layer_norm_layers = nn.ModuleList(
|
|
112
|
+
[nn.LayerNorm(layer_width) for _ in range(repeats_per_block)]
|
|
113
|
+
)
|
|
96
114
|
|
|
97
115
|
if dim_condition:
|
|
98
116
|
if conditioning == 'glu':
|
|
@@ -113,12 +131,17 @@ class ResidualBlock(nn.Module):
|
|
|
113
131
|
for i in range(self.repeats_per_block):
|
|
114
132
|
if self.use_batch_norm:
|
|
115
133
|
x = self.batch_norm_layers[i](x)
|
|
134
|
+
elif self.use_layer_norm:
|
|
135
|
+
x = self.layer_norm_layers[i](x)
|
|
136
|
+
|
|
116
137
|
if not self.adaptive_activation:
|
|
117
138
|
x = self.activation(x)
|
|
118
139
|
else:
|
|
119
140
|
x = self.activation_layers[i](x)
|
|
141
|
+
|
|
120
142
|
if self.dropout_rate > 0 and i == self.repeats_per_block - 1:
|
|
121
143
|
x = self.dropout(x)
|
|
144
|
+
|
|
122
145
|
x = self.linear_layers[i](x)
|
|
123
146
|
|
|
124
147
|
if condition is not None:
|
|
@@ -126,6 +149,9 @@ class ResidualBlock(nn.Module):
|
|
|
126
149
|
x = F.glu(torch.cat((x, self.condition_layer(condition)), dim=-1), dim=-1)
|
|
127
150
|
elif self.conditioning == 'film':
|
|
128
151
|
gamma, beta = torch.chunk(self.condition_layer(condition), chunks=2, dim=-1)
|
|
152
|
+
if self.film_with_tanh:
|
|
153
|
+
tanh = nn.Tanh()
|
|
154
|
+
gamma, beta = tanh(gamma), tanh(beta)
|
|
129
155
|
x = x * gamma + beta
|
|
130
156
|
|
|
131
157
|
return x0 + x if self.residual else x
|
reflectorch/runs/train.py
CHANGED
|
@@ -72,7 +72,6 @@ def run_train_on_cluster(config_name: str):
|
|
|
72
72
|
|
|
73
73
|
def _change_to_test_config(config, batch_size: int, num_iterations: int):
|
|
74
74
|
config = dict(config)
|
|
75
|
-
config['training']['logger']['use_neptune'] = False
|
|
76
75
|
config['training']['num_iterations'] = num_iterations
|
|
77
76
|
config['training']['batch_size'] = batch_size
|
|
78
77
|
config['training']['update_tqdm_freq'] = 1
|
reflectorch/runs/utils.py
CHANGED
|
@@ -136,7 +136,7 @@ def get_callbacks_from_config(config: dict, folder_paths: dict = None) -> Tuple[
|
|
|
136
136
|
if callback:
|
|
137
137
|
callbacks.append(callback)
|
|
138
138
|
|
|
139
|
-
if
|
|
139
|
+
if 'logger' in train_conf.keys():
|
|
140
140
|
callbacks.append(LogLosses())
|
|
141
141
|
|
|
142
142
|
return tuple(callbacks)
|
|
@@ -162,9 +162,9 @@ def get_trainer_from_config(config: dict, folder_paths: dict = None):
|
|
|
162
162
|
|
|
163
163
|
optim_cls = getattr(torch.optim, train_conf['optimizer'])
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
logger_conf = train_conf.get('logger', None)
|
|
166
|
+
logger = init_from_conf(logger_conf) if logger_conf and logger_conf.get('cls') else None
|
|
166
167
|
|
|
167
|
-
train_with_q_input = train_conf.get('train_with_q_input', False)
|
|
168
168
|
clip_grad_norm_max = train_conf.get('clip_grad_norm_max', None)
|
|
169
169
|
|
|
170
170
|
trainer_cls = globals().get(train_conf['trainer_cls']) if 'trainer_cls' in train_conf else PointEstimatorTrainer
|
|
@@ -173,10 +173,13 @@ def get_trainer_from_config(config: dict, folder_paths: dict = None):
|
|
|
173
173
|
|
|
174
174
|
trainer = trainer_cls(
|
|
175
175
|
model, dset, train_conf['lr'], train_conf['batch_size'], clip_grad_norm_max=clip_grad_norm_max,
|
|
176
|
-
logger=logger, optim_cls=optim_cls,
|
|
176
|
+
logger=logger, optim_cls=optim_cls,
|
|
177
177
|
**trainer_kwargs
|
|
178
178
|
)
|
|
179
179
|
|
|
180
|
+
if train_conf.get('train_with_q_input', False) and getattr(trainer, 'train_with_q_input', None) is not None: #only for back-compatibility with configs in older versions
|
|
181
|
+
trainer.train_with_q_input = True
|
|
182
|
+
|
|
180
183
|
return trainer
|
|
181
184
|
|
|
182
185
|
|
|
@@ -187,7 +190,7 @@ def get_trainer_by_name(config_name, config_dir=None, model_path=None, load_weig
|
|
|
187
190
|
Args:
|
|
188
191
|
config_name (str): name of the configuration file
|
|
189
192
|
config_dir (str): path of the configuration directory
|
|
190
|
-
model_path (str, optional): path to the network weights.
|
|
193
|
+
model_path (str, optional): path to the network weights. The default path is 'saved_models' located in the package directory
|
|
191
194
|
load_weights (bool, optional): if True the saved network weights are loaded into the network. Defaults to True.
|
|
192
195
|
inference_device (str, optional): overwrites the device in the configuration file for the purpose of inference on a different device then the training was performed on. Defaults to 'cuda'.
|
|
193
196
|
|
|
@@ -195,8 +198,7 @@ def get_trainer_by_name(config_name, config_dir=None, model_path=None, load_weig
|
|
|
195
198
|
Trainer: the trainer object
|
|
196
199
|
"""
|
|
197
200
|
config = load_config(config_name, config_dir)
|
|
198
|
-
config['model']['network']['pretrained_name'] = None
|
|
199
|
-
config['training']['logger']['use_neptune'] = False
|
|
201
|
+
#config['model']['network']['pretrained_name'] = None
|
|
200
202
|
|
|
201
203
|
config['model']['network']['device'] = inference_device
|
|
202
204
|
config['dset']['prior_sampler']['kwargs']['device'] = inference_device
|
|
@@ -219,7 +221,7 @@ def get_trainer_by_name(config_name, config_dir=None, model_path=None, load_weig
|
|
|
219
221
|
|
|
220
222
|
if str(model_path).endswith('.pt'):
|
|
221
223
|
try:
|
|
222
|
-
state_dict = torch.load(model_path, map_location=inference_device)
|
|
224
|
+
state_dict = torch.load(model_path, map_location=inference_device, weights_only=False)
|
|
223
225
|
except Exception as err:
|
|
224
226
|
raise RuntimeError(f'Could not load model from {model_path}') from err
|
|
225
227
|
|
|
@@ -238,7 +240,7 @@ def get_trainer_by_name(config_name, config_dir=None, model_path=None, load_weig
|
|
|
238
240
|
raise RuntimeError('Weigths file with unknown extension')
|
|
239
241
|
|
|
240
242
|
return trainer
|
|
241
|
-
|
|
243
|
+
|
|
242
244
|
def get_callbacks_by_name(config_name, config_dir=None):
|
|
243
245
|
"""Initializes the trainer callbacks based on a configuration file
|
|
244
246
|
|
|
@@ -362,6 +364,38 @@ def convert_pt_to_safetensors(input_dir):
|
|
|
362
364
|
|
|
363
365
|
safetensors.torch.save_file(tensors=model_state_dict, filename=safetensors_file_path)
|
|
364
366
|
|
|
367
|
+
def convert_files_to_safetensors(files):
|
|
368
|
+
"""
|
|
369
|
+
Converts specified .pt files to .safetensors format.
|
|
370
|
+
|
|
371
|
+
Args:
|
|
372
|
+
files (str or list of str): Path(s) to .pt files containing model state dictionaries.
|
|
373
|
+
"""
|
|
374
|
+
if isinstance(files, str):
|
|
375
|
+
files = [files]
|
|
376
|
+
|
|
377
|
+
for pt_file_path in files:
|
|
378
|
+
if not pt_file_path.endswith('.pt'):
|
|
379
|
+
print(f"Skipping {pt_file_path}: not a .pt file.")
|
|
380
|
+
continue
|
|
381
|
+
|
|
382
|
+
if not os.path.exists(pt_file_path):
|
|
383
|
+
print(f"File {pt_file_path} does not exist.")
|
|
384
|
+
continue
|
|
385
|
+
|
|
386
|
+
safetensors_file_path = pt_file_path[:-3] + '.safetensors'
|
|
387
|
+
|
|
388
|
+
if os.path.exists(safetensors_file_path):
|
|
389
|
+
print(f"Skipping {pt_file_path}: .safetensors version already exists.")
|
|
390
|
+
continue
|
|
391
|
+
|
|
392
|
+
print(f"Converting {pt_file_path} to .safetensors format.")
|
|
393
|
+
data_pt = torch.load(pt_file_path, weights_only=False)
|
|
394
|
+
model_state_dict = data_pt["model"]
|
|
395
|
+
model_state_dict = split_complex_tensors(model_state_dict)
|
|
396
|
+
|
|
397
|
+
safetensors.torch.save_file(tensors=model_state_dict, filename=safetensors_file_path)
|
|
398
|
+
|
|
365
399
|
def load_state_dict_safetensors(model, filename, device):
|
|
366
400
|
state_dict = safetensors.torch.load_file(filename=filename, device=device)
|
|
367
401
|
state_dict = recombine_complex_tensors(state_dict)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: reflectorch
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
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>, Vladimir Starostin <vladimir.starostin@uni-tuebingen.de>, Alexander Hinderhofer <alexander.hinderhofer@uni-tuebingen.de>
|
|
7
|
+
License-Expression: MIT
|
|
7
8
|
Project-URL: Source, https://github.com/schreiber-lab/reflectorch/
|
|
8
9
|
Project-URL: Issues, https://github.com/schreiber-lab/reflectorch/issues
|
|
9
10
|
Project-URL: Documentation, https://schreiber-lab.github.io/reflectorch/
|
|
@@ -11,32 +12,33 @@ Keywords: reflectometry,machine learning
|
|
|
11
12
|
Classifier: Programming Language :: Python :: 3
|
|
12
13
|
Classifier: Operating System :: OS Independent
|
|
13
14
|
Classifier: Environment :: GPU :: NVIDIA CUDA
|
|
14
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
15
|
Classifier: Development Status :: 4 - Beta
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
17
17
|
Classifier: Intended Audience :: Science/Research
|
|
18
18
|
Requires-Python: >=3.7
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
|
-
Requires-Dist: numpy
|
|
22
|
-
Requires-Dist: torch
|
|
21
|
+
Requires-Dist: numpy
|
|
22
|
+
Requires-Dist: torch>=1.8.1
|
|
23
23
|
Requires-Dist: scipy
|
|
24
24
|
Requires-Dist: tqdm
|
|
25
25
|
Requires-Dist: PyYAML
|
|
26
26
|
Requires-Dist: click
|
|
27
27
|
Requires-Dist: matplotlib
|
|
28
28
|
Requires-Dist: ipywidgets
|
|
29
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: huggingface_hub
|
|
30
30
|
Requires-Dist: safetensors
|
|
31
|
-
|
|
32
|
-
Requires-Dist: build ; extra == 'build'
|
|
33
|
-
Requires-Dist: twine ; extra == 'build'
|
|
34
|
-
Provides-Extra: docs
|
|
35
|
-
Requires-Dist: jupyter-book ; extra == 'docs'
|
|
36
|
-
Requires-Dist: sphinx ; extra == 'docs'
|
|
31
|
+
Requires-Dist: tensorboard
|
|
37
32
|
Provides-Extra: tests
|
|
38
|
-
Requires-Dist: pytest
|
|
39
|
-
Requires-Dist: pytest-cov
|
|
33
|
+
Requires-Dist: pytest; extra == "tests"
|
|
34
|
+
Requires-Dist: pytest-cov; extra == "tests"
|
|
35
|
+
Provides-Extra: docs
|
|
36
|
+
Requires-Dist: jupyter-book; extra == "docs"
|
|
37
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
38
|
+
Provides-Extra: build
|
|
39
|
+
Requires-Dist: build; extra == "build"
|
|
40
|
+
Requires-Dist: twine; extra == "build"
|
|
41
|
+
Dynamic: license-file
|
|
40
42
|
|
|
41
43
|
# Reflectorch
|
|
42
44
|
|
|
@@ -50,7 +52,7 @@ Requires-Dist: pytest-cov ; extra == 'tests'
|
|
|
50
52
|
[](https://www.python.org/)
|
|
51
53
|

|
|
52
54
|

|
|
53
|
-
[](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch)
|
|
55
|
+
<!-- [](https://www.codefactor.io/repository/github/schreiber-lab/reflectorch) -->
|
|
54
56
|
[](https://jupyterbook.org/)
|
|
55
57
|
[](https://schreiber-lab.github.io/reflectorch/)
|
|
56
58
|
<!-- [](https://github.com/astral-sh/ruff) -->
|
|
@@ -101,8 +103,8 @@ We provide an interactive Google Colab notebook for exploring the basic function
|
|
|
101
103
|
[](https://huggingface.co/valentinsingularity/reflectivity)
|
|
102
104
|
Configuration files and the corresponding pretrained model weights are hosted on Huggingface: [https://huggingface.co/valentinsingularity/reflectivity](https://huggingface.co/valentinsingularity/reflectivity).
|
|
103
105
|
|
|
104
|
-
[](https://hub.docker.com/)
|
|
105
|
-
Docker images for reflectorch *will* be hosted on Dockerhub.
|
|
106
|
+
<!-- [](https://hub.docker.com/)
|
|
107
|
+
Docker images for reflectorch *will* be hosted on Dockerhub. -->
|
|
106
108
|
|
|
107
109
|
|
|
108
110
|
## Citation
|
|
@@ -4,15 +4,15 @@ reflectorch/test_config.py,sha256=1T7pMJ-WYLEu-4WtYMQxcJrqXvgdpvJ1yi2qINd0kNA,99
|
|
|
4
4
|
reflectorch/train.py,sha256=-c8ac1fpjrCiEwnAaXg_rcBNl1stO1V5p5afx_78xHs,87
|
|
5
5
|
reflectorch/train_on_cluster.py,sha256=aG3_g5_rzL8iL1tvtdY9ueJTo1f2Pn8lGJgudrrRknU,109
|
|
6
6
|
reflectorch/utils.py,sha256=ehG5dU02_WIFPIVGPsSjHl3Ji10MQ8-jsCwRkwUO7D4,1993
|
|
7
|
-
reflectorch/data_generation/__init__.py,sha256=
|
|
8
|
-
reflectorch/data_generation/dataset.py,sha256=
|
|
7
|
+
reflectorch/data_generation/__init__.py,sha256=4FuuBfhzgEGh_YkFmLBqjyjhlqI3D5It8iu6DqGmf4g,3419
|
|
8
|
+
reflectorch/data_generation/dataset.py,sha256=f2uYb8j8H88owZJhg9aMP7qen00_o2cXmDvA69yJwr8,8316
|
|
9
9
|
reflectorch/data_generation/likelihoods.py,sha256=gnqmsEfsZnCC6WuPcIe9rFl4SeiLv_LyNlTVM-5YTE8,2862
|
|
10
|
-
reflectorch/data_generation/noise.py,sha256=
|
|
10
|
+
reflectorch/data_generation/noise.py,sha256=Ps9lDKUjtjcpUfJ_L9zTmlj88GyicjNs962lLVEg2aI,22090
|
|
11
11
|
reflectorch/data_generation/process_data.py,sha256=iBvWB4_X5TTIZTacsq9baBZPyGCRyI1G-J3l1BVMuD4,1180
|
|
12
|
-
reflectorch/data_generation/q_generator.py,sha256=
|
|
12
|
+
reflectorch/data_generation/q_generator.py,sha256=_WGCqdu1M3kSUlSbAGMPXDIU82SBYT2pcmnUPqctkyo,9279
|
|
13
13
|
reflectorch/data_generation/scale_curves.py,sha256=hNZoGkA9FMdLUarp0fwj5nCDYvpy9NbSiO85_rCaNr8,4084
|
|
14
|
-
reflectorch/data_generation/smearing.py,sha256=
|
|
15
|
-
reflectorch/data_generation/utils.py,sha256=
|
|
14
|
+
reflectorch/data_generation/smearing.py,sha256=ZQ4bzHegUOVhNWOTHAi3KfNau85bchp1FX1NV0Kp7s8,4538
|
|
15
|
+
reflectorch/data_generation/utils.py,sha256=gYJFxSj_YYHXk8kCYIagGaugUv9SrxmZvGeR9gJQMVc,8500
|
|
16
16
|
reflectorch/data_generation/priors/__init__.py,sha256=ZUaQUgNR44MQGYcPVJaSzzoE270710RqdKAPcaBNHWo,1941
|
|
17
17
|
reflectorch/data_generation/priors/base.py,sha256=JNa2A3F4IWaEwV7gyTQjVdCRevUI43UUpTOm1U3XA8k,1705
|
|
18
18
|
reflectorch/data_generation/priors/exp_subprior_sampler.py,sha256=hjHey_32HGgZ4ojOAhmmx8jcQPCyvcPRgxMlfthSdOo,11551
|
|
@@ -20,32 +20,35 @@ reflectorch/data_generation/priors/independent_priors.py,sha256=ZdFCW4Ea6cK9f0Pn
|
|
|
20
20
|
reflectorch/data_generation/priors/multilayer_models.py,sha256=lAf-HJPbIDnbD1ecDTvx03TfA4jLN5tTLbwaBCiYgWM,7763
|
|
21
21
|
reflectorch/data_generation/priors/multilayer_structures.py,sha256=b1LTkzMK_R2hgbAmif96zRRzZRV2V-dD7eSTaNalMU8,3693
|
|
22
22
|
reflectorch/data_generation/priors/no_constraints.py,sha256=qioTThJ17NixCaMIIf4dusPtvcK_uI2jOoysyXKnkZ4,7292
|
|
23
|
-
reflectorch/data_generation/priors/parametric_models.py,sha256=
|
|
24
|
-
reflectorch/data_generation/priors/parametric_subpriors.py,sha256=
|
|
23
|
+
reflectorch/data_generation/priors/parametric_models.py,sha256=RBB67T5skHyC6ZlVtzRwuTis8VsCwFyIOoe5OsfMiu4,29300
|
|
24
|
+
reflectorch/data_generation/priors/parametric_subpriors.py,sha256=KPW3Y12A5ba405ofGdGny_FIzoFMd90IkQcvVcYhpxE,15164
|
|
25
25
|
reflectorch/data_generation/priors/params.py,sha256=JpH-LRxTztc0QP-3QwjLdu0MsVc1rSixtcscYGs_2Ew,8238
|
|
26
|
-
reflectorch/data_generation/priors/sampler_strategies.py,sha256=
|
|
26
|
+
reflectorch/data_generation/priors/sampler_strategies.py,sha256=ls9NRwjIsQJlgqv_m9l9MVm3tu4Ivafq5OzG2Q0sI3w,15791
|
|
27
27
|
reflectorch/data_generation/priors/scaler_mixin.py,sha256=gI64v2KOZugSJWaLKASR34fn6qVFl-aoeVA1BR5yXNg,2648
|
|
28
28
|
reflectorch/data_generation/priors/subprior_sampler.py,sha256=TE8DOQhxVr69VmWSjwHyElpgVjOhZKBIPChFWNVYzRc,14769
|
|
29
29
|
reflectorch/data_generation/priors/utils.py,sha256=bmIZYHq95gG68kETfNH6ygR39oitUEJ0eCO_Fb8maH0,3836
|
|
30
|
-
reflectorch/data_generation/reflectivity/__init__.py,sha256=
|
|
31
|
-
reflectorch/data_generation/reflectivity/abeles.py,sha256=
|
|
32
|
-
reflectorch/data_generation/reflectivity/kinematical.py,sha256=
|
|
33
|
-
reflectorch/data_generation/reflectivity/memory_eff.py,sha256=
|
|
30
|
+
reflectorch/data_generation/reflectivity/__init__.py,sha256=ryblJgCvnjBVPLpmOVovtZtdkEfJ_H26dqthdHfIqQ4,5209
|
|
31
|
+
reflectorch/data_generation/reflectivity/abeles.py,sha256=Pcov-m0HImw1DOR57t0OsBOLZs3MA6fk7RePf_VCEZU,3097
|
|
32
|
+
reflectorch/data_generation/reflectivity/kinematical.py,sha256=AKZqdA4dRU6Gvs7sq6ODLToMmImrMZWMCOMrzpoX2D4,2639
|
|
33
|
+
reflectorch/data_generation/reflectivity/memory_eff.py,sha256=pbsXkcGwDorey6qVx2SlBK6IlzNJY1FeeF84cEJB_hY,4023
|
|
34
34
|
reflectorch/data_generation/reflectivity/numpy_implementations.py,sha256=QBzn4yVnOdlkHeeR-ZFPS115GnLdO9lMTGO2d3YhG9I,3177
|
|
35
|
-
reflectorch/data_generation/reflectivity/smearing.py,sha256=
|
|
35
|
+
reflectorch/data_generation/reflectivity/smearing.py,sha256=qxaEi43Wv9OZHRQr-nQJbtPJEIaXb2NEA1q3evRhCCc,4395
|
|
36
|
+
reflectorch/data_generation/reflectivity/smearing_pointwise.py,sha256=y3iSc0wKh6wF4xzD24Zz2OmerwV8HKQZAg0Y3kpzPuU,3688
|
|
36
37
|
reflectorch/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
38
|
reflectorch/extensions/jupyter/__init__.py,sha256=bs6RQQ8LRcKAJu2I9K8BZEMQSll3kLdirRvxLbgsY9w,72
|
|
38
39
|
reflectorch/extensions/jupyter/callbacks.py,sha256=K4Z8Mlm_Pa80YDsNOdMZLIJZyVrg09kBVzVdFHKgQFk,1074
|
|
39
40
|
reflectorch/extensions/matplotlib/__init__.py,sha256=ARmc228xbZUj4fWNq5fVxZ8PN444fjDNxNP4ytVCyfo,104
|
|
40
41
|
reflectorch/extensions/matplotlib/losses.py,sha256=H2vrjNqzmQ0BP4377uN4uhlH88aS5OAfA7pwRM2WHqA,686
|
|
42
|
+
reflectorch/extensions/refnx/refnx_conversion.py,sha256=XBHT2zL9XOgL5h2Q-_yDJScUBAsBd0xlivXEMeVGmao,3450
|
|
41
43
|
reflectorch/inference/__init__.py,sha256=i0KNn83XN33mLrV7bpHdLd0SXxuGCKfbQcIoa247Uts,834
|
|
42
|
-
reflectorch/inference/inference_model.py,sha256=
|
|
44
|
+
reflectorch/inference/inference_model.py,sha256=1OBZA00xXNchFKxYxpaPFLdFPTcQYlxR3h7q7wSK9WE,44243
|
|
43
45
|
reflectorch/inference/multilayer_fitter.py,sha256=0CxDpLOEp1terR4N39yFlxhvA8qAbHf_01NbmvYadck,5510
|
|
44
46
|
reflectorch/inference/multilayer_inference_model.py,sha256=hH_-dJGdMOox8GHXdM_nODXDlNgh_v449xW5FmklRdo,7575
|
|
47
|
+
reflectorch/inference/plotting.py,sha256=zycWd2j9soe1NwoIE4X1iiGV-ghHH3M9TnFCsKN2jEQ,3868
|
|
45
48
|
reflectorch/inference/query_matcher.py,sha256=Dk49dW0XreeCjufzYBTKchfTdVbG6759ryV6I-wQL60,3387
|
|
46
49
|
reflectorch/inference/record_time.py,sha256=3er-aoR8Sd_Kc4qNwUmRqkEz4FYhVxdi1ARnBohybzM,1140
|
|
47
50
|
reflectorch/inference/sampler_solution.py,sha256=DeJM3EXEb6S5EiASj3mmdNI-Y07Cr5UzzA5oq-vEB-Q,2288
|
|
48
|
-
reflectorch/inference/scipy_fitter.py,sha256=
|
|
51
|
+
reflectorch/inference/scipy_fitter.py,sha256=5xUZ1JDRXbdQF1yZotMaDFQnxYioqycoZknCWyGvZOY,8201
|
|
49
52
|
reflectorch/inference/torch_fitter.py,sha256=j1NzkzLCmQ4H6LfIi82LsSBmIdunnWzm3kbGx-hqvDs,3391
|
|
50
53
|
reflectorch/inference/preprocess_exp/__init__.py,sha256=bR6H-xgBD96z4P9P1T2ECnWvalrimdMTfTNArIWPLy0,383
|
|
51
54
|
reflectorch/inference/preprocess_exp/attenuation.py,sha256=UKDfUjCKKMgAuEs5Ttyo0KEQmpvHZI52UgVflh7T81A,1518
|
|
@@ -54,30 +57,30 @@ reflectorch/inference/preprocess_exp/footprint.py,sha256=xc409M5X-QW0Ce_6dEZdj8N
|
|
|
54
57
|
reflectorch/inference/preprocess_exp/interpolation.py,sha256=o2v-mlfRYzeaaikeQVeY7EA7j-K42dMfT12oN3mk51k,694
|
|
55
58
|
reflectorch/inference/preprocess_exp/normalize.py,sha256=09v7nZdtw6SnW_67xFrPnqzOA5AtFBGarjK4Pfn4VoE,695
|
|
56
59
|
reflectorch/inference/preprocess_exp/preprocess.py,sha256=pyyq8fSvcm1bWAShzGHYnKOc55Rofh4FIw1AC7Smq-U,5111
|
|
57
|
-
reflectorch/ml/__init__.py,sha256=
|
|
58
|
-
reflectorch/ml/basic_trainer.py,sha256=
|
|
59
|
-
reflectorch/ml/callbacks.py,sha256=
|
|
60
|
+
reflectorch/ml/__init__.py,sha256=0LVWweeidkoZLqbDYKi-wx5BvG7DYwsR9IRKM3TZoOM,790
|
|
61
|
+
reflectorch/ml/basic_trainer.py,sha256=GbSs4ie5yzY7nhGiqHO5D4HZCqB-taKenaswf1dIvok,10073
|
|
62
|
+
reflectorch/ml/callbacks.py,sha256=u9jNvxVEIA0a_SpmT-gnP8qoC6-C8p0F4TvIuBQr-ek,2801
|
|
60
63
|
reflectorch/ml/dataloaders.py,sha256=IvKmsH5gX_b-00KRFeL-x3keEfBcvYkQFWGWd8Caj-I,1073
|
|
61
|
-
reflectorch/ml/loggers.py,sha256=
|
|
62
|
-
reflectorch/ml/schedulers.py,sha256=
|
|
63
|
-
reflectorch/ml/trainers.py,sha256
|
|
64
|
+
reflectorch/ml/loggers.py,sha256=Dvjte9rmDxoA8AB_7cFWWxkvaQBdhn2_ag2jYCM0uSQ,1478
|
|
65
|
+
reflectorch/ml/schedulers.py,sha256=p_Z-TqGsu45KencD_EwX6hGMMsvvTUnQtkwC98kKTDI,14227
|
|
66
|
+
reflectorch/ml/trainers.py,sha256=-1I4asSg2hYvsT6w5yru2RNG59OZWnykANTlAiHpubg,8142
|
|
64
67
|
reflectorch/ml/utils.py,sha256=_OKkc6o5od7vnfBNZKWsGApJxA62TrAlLok92s0nG4k,71
|
|
65
|
-
reflectorch/models/__init__.py,sha256=
|
|
68
|
+
reflectorch/models/__init__.py,sha256=jJUUjyFJBIZHXqCeaxxnlazDLAE5VbPrdYUYRAI95lo,345
|
|
66
69
|
reflectorch/models/activations.py,sha256=LDiIxCnLFb8r_TRBZSt6vdOZmexCWAGa5DfE_SotUL8,1431
|
|
67
|
-
reflectorch/models/encoders/__init__.py,sha256=
|
|
68
|
-
reflectorch/models/encoders/conv_encoder.py,sha256=
|
|
70
|
+
reflectorch/models/encoders/__init__.py,sha256=_cGxemTtkDZa5SoCGiz-1o9J1J4FyuRAqH_PyTmiXVI,413
|
|
71
|
+
reflectorch/models/encoders/conv_encoder.py,sha256=LLvqnt268VR6C_1UDR24qka_9ijHc1hvvciJaV8AmQo,7910
|
|
69
72
|
reflectorch/models/encoders/conv_res_net.py,sha256=VP1CCKdNqsva2R4l-IV6d63mQk6bI4Aresfd6b6_YKU,3343
|
|
70
|
-
reflectorch/models/encoders/fno.py,sha256=
|
|
71
|
-
reflectorch/models/networks/__init__.py,sha256=
|
|
72
|
-
reflectorch/models/networks/mlp_networks.py,sha256=
|
|
73
|
-
reflectorch/models/networks/residual_net.py,sha256=
|
|
73
|
+
reflectorch/models/encoders/fno.py,sha256=G1Iav7IYVdvogK40dlKK1zsCTRIkesffrcVTywRZKjI,5115
|
|
74
|
+
reflectorch/models/networks/__init__.py,sha256=QeNcWShZ7i-hoEFOLnOoq7U6WzBoXj7UIHCCJnZ99KA,341
|
|
75
|
+
reflectorch/models/networks/mlp_networks.py,sha256=5Sr6Rg4uZca5ghj9mJAHMtB9MXAcdGUIAR8EHU9MdH4,20441
|
|
76
|
+
reflectorch/models/networks/residual_net.py,sha256=oEPJTWjvKO1yniLTT9B54Z_ZbZv4i1uHsP9ongbn-ko,5643
|
|
74
77
|
reflectorch/runs/__init__.py,sha256=xjuZGjqZuEovlpe9Jj5d8Nn5ii-5jvAYdeHT5oYaYVI,723
|
|
75
78
|
reflectorch/runs/config.py,sha256=8YtUOXr_DvNvgpu59CNAr3KrQijx1AGDE95gYrsuwsM,804
|
|
76
79
|
reflectorch/runs/slurm_utils.py,sha256=Zyj4_K5YpiWNJhgpFLWYHsSaaI-mgVEWsN15Gd_BhI0,2600
|
|
77
|
-
reflectorch/runs/train.py,sha256=
|
|
78
|
-
reflectorch/runs/utils.py,sha256=
|
|
79
|
-
reflectorch-1.
|
|
80
|
-
reflectorch-1.
|
|
81
|
-
reflectorch-1.
|
|
82
|
-
reflectorch-1.
|
|
83
|
-
reflectorch-1.
|
|
80
|
+
reflectorch/runs/train.py,sha256=7BLjKjI3H2ZwqMhmlO4ebsz6X804e_O9XU73xKyOJW0,2503
|
|
81
|
+
reflectorch/runs/utils.py,sha256=maeHHXK3CdEnewPZTWpDO6lr_a8gwEyup6aSLGw_MGM,14055
|
|
82
|
+
reflectorch-1.3.0.dist-info/licenses/LICENSE.txt,sha256=2kX9kLKiIRiQRqUXwk3J-Ba3fqmztNu8ORskLBlAuKM,1098
|
|
83
|
+
reflectorch-1.3.0.dist-info/METADATA,sha256=rFJSL1nVJTbJu0Fo1DenYTpRmLbILtf-I5SLXq8ExaQ,7800
|
|
84
|
+
reflectorch-1.3.0.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
|
85
|
+
reflectorch-1.3.0.dist-info/top_level.txt,sha256=2EyIWrt4SeZ3hNadLXvEVpPFhyoZ4An7YflP4y_E3Fc,12
|
|
86
|
+
reflectorch-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|