Skip to content

Commit

Permalink
apply review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
scarlehoff committed Feb 19, 2025
1 parent 9aab465 commit 2b92347
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 15 deletions.
20 changes: 11 additions & 9 deletions n3fit/src/n3fit/model_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
base_layer_selector,
)
from n3fit.backends import operations as op
from n3fit.backends import regularizer_selector as reg_sec
from n3fit.layers import (
DIS,
DY,
Expand All @@ -42,6 +41,8 @@
from n3fit.msr import generate_msr_model_and_grid
from validphys.photon.compute import Photon

from n3fit.backends import regularizer_selector # isort: skip isort and black don't agree


@dataclass
class ObservableWrapper:
Expand Down Expand Up @@ -127,7 +128,7 @@ def __call__(self, pdf_layer, mask=None):
def observable_generator(
spec_dict,
boundary_condition=None,
mask_array=None,
training_mask_array=None,
validation_mask_array=None,
training_data=None,
validation_data=None,
Expand All @@ -143,7 +144,6 @@ def observable_generator(
the result of the observable for each contained dataset (n_points,).
In summary the model has the following structure:
One experiment layer, made of any number of observable layers.
Observable layers, corresponding to commondata datasets
and made of any number of fktables (and an operation on them).
Expand Down Expand Up @@ -171,10 +171,12 @@ def observable_generator(
boundary_condition: dict
dictionary containing the instance of the a PDF set to be used as a
Boundary Condition.
mask_array: np.ndarray
training_mask_array: np.ndarray
training mask per replica
validation_mask_array: np.ndarray
validation mask per replica, when not given ¬mask_array will be used
validation mask per replica, when not given ~training_mask_array will be used
while in general the validation is a negation of the training, in special cases
such as 1-point datasets, these are accepted by both masks and then removed by the loss
n_replicas: int
number of replicas fitted simultaneously
positivity_initial: float
Expand Down Expand Up @@ -250,16 +252,16 @@ def observable_generator(
model_inputs = np.concatenate(model_inputs).reshape(1, -1)

# Make the mask layers...
if mask_array is None:
if training_mask_array is None:
tr_mask_layer = None
if validation_mask_array is None:
vl_mask_layer = None
else:
vl_mask_layer = Mask(validation_mask_array, name=f"vlmask_{spec_name}")
else:
tr_mask_layer = Mask(mask_array, name=f"trmask_{spec_name}")
tr_mask_layer = Mask(training_mask_array, name=f"trmask_{spec_name}")
if validation_mask_array is None:
vl_mask_layer = Mask(~mask_array, name=f"vlmask_{spec_name}")
vl_mask_layer = Mask(~training_mask_array, name=f"vlmask_{spec_name}")
else:
vl_mask_layer = Mask(validation_mask_array, name=f"vlmask_{spec_name}")

Expand Down Expand Up @@ -735,7 +737,7 @@ def generate_nn(
"""
nodes_list = list(nodes) # so we can modify it
x_input = Input(shape=(None, nodes_in), batch_size=1, name="NN_input")
reg = reg_sec(regularizer, **regularizer_args)
reg = regularizer_selector(regularizer, **regularizer_args)

if layer_type == "dense_per_flavour":
# set the arguments that will define the layer
Expand Down
10 changes: 5 additions & 5 deletions n3fit/src/n3fit/model_trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@
between iterations while at the same time keeping the amount of redundant calls to a minimum
"""

import logging
from collections import namedtuple
from itertools import zip_longest
import logging

import numpy as np

import n3fit.hyper_optimization.penalties
import n3fit.hyper_optimization.rewards
from n3fit import model_gen
from n3fit.backends import NN_LAYER_ALL_REPLICAS, Lambda, MetaModel, callbacks, clear_backend_state
from n3fit.backends import operations as op
from n3fit.hyper_optimization.hyper_scan import HYPEROPT_STATUSES
import n3fit.hyper_optimization.penalties
import n3fit.hyper_optimization.rewards
from n3fit.hyper_optimization.rewards import HyperLoss
from n3fit.scaler import generate_scaler
from n3fit.stopping import Stopping
Expand Down Expand Up @@ -563,7 +563,7 @@ def _generate_observables(
exp_layer = model_gen.observable_generator(
exp_dict,
self.boundary_condition,
mask_array=experiment_data["trmask"][i],
training_mask_array=experiment_data["trmask"][i],
validation_mask_array=experiment_data["vlmask"][i],
training_data=experiment_data["expdata"][i],
validation_data=experiment_data["expdata_vl"][i],
Expand Down Expand Up @@ -599,7 +599,7 @@ def _generate_observables(
pos_dict,
self.boundary_condition,
positivity_initial=pos_initial,
mask_array=replica_masks,
training_mask_array=replica_masks,
training_data=training_data,
validation_data=training_data,
n_replicas=len(self.replicas),
Expand Down
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,6 @@ line_length = 100
profile = "black" # https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#custom-configuration
skip_gitignore = true
known_first_party = ["validphys", "eko", "n3fit", "nnpdf_data", "reportengine"]
force_sort_within_sections = true

[tool.pytest.ini_options]
addopts = "--disable-warnings"

0 comments on commit 2b92347

Please sign in to comment.