-
Notifications
You must be signed in to change notification settings - Fork 14
Fix shifts in plot_fancy_dataspecs #2484
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
c0226c0
0589797
8d9e405
ccd20fe
8b16ce6
9a5085d
b72dfca
85a1c02
007e926
34de111
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -263,10 +263,6 @@ def _plot_fancy_impl( | |||||||||||||||||||||||||||||||||||
| nkinlabels = len(table.columns) | ||||||||||||||||||||||||||||||||||||
| ndata = len(table) | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # Compute shifts due to the correlated part of the exp cov matrix | ||||||||||||||||||||||||||||||||||||
| lcd_wc = loaded_commondata_with_cuts(commondata, cutlist[0]) | ||||||||||||||||||||||||||||||||||||
| theory_predictions = results[1].central_value | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # This is easier than cheking every time | ||||||||||||||||||||||||||||||||||||
| if labellist is None: | ||||||||||||||||||||||||||||||||||||
| labellist = [None] * len(results) | ||||||||||||||||||||||||||||||||||||
|
|
@@ -281,36 +277,49 @@ def _plot_fancy_impl( | |||||||||||||||||||||||||||||||||||
| # We modify the table, so we pass only the label columns | ||||||||||||||||||||||||||||||||||||
| norm_cv, _ = transform_result(cv, err, table.iloc[:, :nkinlabels], info) | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| cvcols = [] | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # Compute systematic shifts | ||||||||||||||||||||||||||||||||||||
| # For unknown reasons, `shifts_from_systematics` may | ||||||||||||||||||||||||||||||||||||
| # randomly fails. If a LinAlgError is raised, shifts are not included in | ||||||||||||||||||||||||||||||||||||
| # the final plot. | ||||||||||||||||||||||||||||||||||||
| if with_shift: | ||||||||||||||||||||||||||||||||||||
| try: | ||||||||||||||||||||||||||||||||||||
| shifts, alpha = shifts_from_systematics(lcd_wc, theory_predictions) | ||||||||||||||||||||||||||||||||||||
| except np.linalg.LinAlgError: | ||||||||||||||||||||||||||||||||||||
| log.warning( | ||||||||||||||||||||||||||||||||||||
| "Error occurred in computing systematic shifts for " | ||||||||||||||||||||||||||||||||||||
| f"{info.ds_metadata.name}. These will be disregarded in the plots." | ||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||
| with_shift = False | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| cvcols = [] | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| for i, (result, cuts) in enumerate(zip(results, cutlist)): | ||||||||||||||||||||||||||||||||||||
| # We modify the table, so we pass only the label columns | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| mask = cut_mask(cuts) | ||||||||||||||||||||||||||||||||||||
| cv = np.full(ndata, np.nan) | ||||||||||||||||||||||||||||||||||||
| err = np.full(ndata, np.nan) | ||||||||||||||||||||||||||||||||||||
| # Shift the theory when with_shift option is True | ||||||||||||||||||||||||||||||||||||
| if i == 1 and with_shift: | ||||||||||||||||||||||||||||||||||||
| cv[mask] = result.central_value - shifts | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| shifts = None | ||||||||||||||||||||||||||||||||||||
| alpha = None | ||||||||||||||||||||||||||||||||||||
| do_shift = with_shift | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # Compute shifts due to the correlated part on the experiemntal ucnertainty | ||||||||||||||||||||||||||||||||||||
| if with_shift: | ||||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it would be cleaner if this were instead:
Suggested change
where (you might need to import DataResults from results.py) So that you don't enter the if condition with the Data, so you don't have to check if i>=1, which might not always be reliable if things change in validphys. You still need the alpha of course, so make sure that you add:
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In my opinion, we have to enter the condition with the Data, also to get the uncorrelated part of the uncertainty, because these are Data with cuts, and cuts may differ. |
||||||||||||||||||||||||||||||||||||
| lcd_wc = loaded_commondata_with_cuts(commondata, cuts) | ||||||||||||||||||||||||||||||||||||
| theory_predictions = result.central_value | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # For unknown reasons, `shifts_from_systematics` may randomly fail. | ||||||||||||||||||||||||||||||||||||
| # If a LinAlgError is raised, shifts are not included in the final plot. | ||||||||||||||||||||||||||||||||||||
| try: | ||||||||||||||||||||||||||||||||||||
| shifts, alpha = shifts_from_systematics(lcd_wc, theory_predictions) | ||||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think Btw, one thing that might reduce the report time is to make the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have separated the computation of the shifts and the extraction of the uncorrelated and correlated parts part of the uncertainty. |
||||||||||||||||||||||||||||||||||||
| except np.linalg.LinAlgError: | ||||||||||||||||||||||||||||||||||||
| log.warning( | ||||||||||||||||||||||||||||||||||||
| "Error occurred in computing systematic shifts for " | ||||||||||||||||||||||||||||||||||||
| f"{info.ds_metadata.name}. These will be disregarded in the plots." | ||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||
| do_shift = False | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # Shift theory predictions, but not data | ||||||||||||||||||||||||||||||||||||
| if i >= 1 and do_shift: | ||||||||||||||||||||||||||||||||||||
| cv[mask] = result.central_value - shifts | ||||||||||||||||||||||||||||||||||||
| else: | ||||||||||||||||||||||||||||||||||||
| cv[mask] = result.central_value | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # Retain only the uncorrelated part of the data error if shifting the data | ||||||||||||||||||||||||||||||||||||
| if i == 0 and do_shift: | ||||||||||||||||||||||||||||||||||||
| err[mask] = alpha | ||||||||||||||||||||||||||||||||||||
| else: | ||||||||||||||||||||||||||||||||||||
| err[mask] = result.std_error | ||||||||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Since when you are dealing with the data, you are not entering in the if condition, this is safe.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| # No shifts | ||||||||||||||||||||||||||||||||||||
| else: | ||||||||||||||||||||||||||||||||||||
| cv[mask] = result.central_value | ||||||||||||||||||||||||||||||||||||
| # Retain only the uncorrelated part of the error if shifting the data | ||||||||||||||||||||||||||||||||||||
| if i == 0 and with_shift: | ||||||||||||||||||||||||||||||||||||
| err[mask] = alpha | ||||||||||||||||||||||||||||||||||||
| else: | ||||||||||||||||||||||||||||||||||||
| err[mask] = result.std_error | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| cv, err = transform_result(cv, err, table.iloc[:, :nkinlabels], info) | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.