Feature scaling in the run card
Hi @RoyStegeman as we discussed at the phone conf, we would like to find a way to select feature scaling in the run card which also enables to go back to the previous parametrisation, to check the effects of this variation everything else fixed.
In NNPDF4.0 we parametrise PDFs as
f(x) = A x^alpha * (1-x)^beta * NN(x, log(x))
and in the run card we specify the values of the ranges for the small-x and large-x exponents alphas and beta.
Now in NNPDF4.1, we want to use feature scaling, with basically tells us that the PDFs are being parametrised as
f(x) = A x^alpha ( NN(x) - NN(x=1) )
where x in the NN input is distributed as explained in the FS paper. In this case, one does not need to indicate the large-x exponents in the run card.
So looking at the current run card and with the motivation to maintain backwards compatibility, it would be nice that
-
[ ] have an option in the run card that more transparently allows the user to change between one option and the other (the current option is not very transparent), better to have some more clear selection
-
[ ] If one uses FS, the code stops if the run card also lists large-x exponents
Does it make sense? Thanks in advance!
Just try to order my ideas and to make sure that I understand what is being proposed:
a)
Right now removing/enabling feature scaling happens by adding (or not) the interpolation_points option to the runcard.
Perhaps it is not super clear and we might want to change it to:
feature_scaling_interpolation_points:
If that's not added (or False or None) then feature_scaling is not enabled.
b) RE FS and large-x exponent. I think we never added the option to control that in the runcard. Right now whenever we have FS, the large-x extrapolation becomes NN(x) - NN(1) so I guess we might as well have it as part checked before hand and force the user to explicitly remove the large-x extrapolation from the runcard so that there are no mistakes.
If I understood correctly both changes are trivial* and I can (hopefully) quickly do them as soon as I have 5 minutes. I'll then ask @jekoorn for a review.
*as they only apply to what the user sees in the runcard, the underlying routines will do exactly the same as before