Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork8.1k
Simplify parsing of errorbar input.#13124
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -3108,41 +3108,28 @@ def xywhere(xs, ys, mask): | ||
| return xs, ys | ||
| def extract_err(err, data): | ||
| """ | ||
| Private function to parse *err* and subtract/add it to *data*. | ||
| Both *err* and *data* are already iterables at this point. | ||
| """ | ||
| try: # Asymmetric error: pair of 1D iterables. | ||
| a, b = err | ||
| iter(a) | ||
| iter(b) | ||
| except (TypeError, ValueError): | ||
ContributorAuthor 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. the check that len(err) == len(data) is taken care of by safezip, so can be dropped. | ||
| a = b = err # Symmetric error: 1D iterable. | ||
| # This could just be `np.ndim(a) > 1 and np.ndim(b) > 1`, except | ||
| # for the (undocumented, but tested) support for (n, 1) arrays. | ||
| a_sh = np.shape(a) | ||
| b_sh = np.shape(b) | ||
| if (len(a_sh) > 2 or (len(a_sh) == 2 and a_sh[1] != 1) | ||
| or len(b_sh) > 2 or (len(b_sh) == 2 and b_sh[1] != 1)): | ||
| raise ValueError( | ||
| "err must be a scalar or a 1D or (2, n) array-like") | ||
| # Using list comprehensions rather than arrays to preserve units. | ||
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. Would it be worth it to special-case if v and e are arrays to speed up the calculation? Probably not. | ||
| low = [v - e for v, e in cbook.safezip(data, a)] | ||
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. What units has this been tested with? This is basically the same issue as ContributorAuthor 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. Do you want to first make a PR letting errorbar use _convert_dx? I can rebase this one onto yours after it's merged. However it's not actually clear to me it's the "same" issue as#12903; in bar() you need to be able to support deunitized widths (because the default, 0.8, is deunitized...) whereas here we can just always assume that the error has the same unit (or a compatible one) as the value. 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 agree they are different and maybe using the same helper doesn't make sense. (I actually think defaulting Tests with datetime-like obects would be helpful. Not sure categoricals need to be tested (when would the error be And we should decide if we should add ContributorAuthor 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. tbh I don't particularly care about adding tests for units for this PR specifically. 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. actually I guess thats fair since you didn't change the algorithm... | ||
| high = [v + e for v, e in cbook.safezip(data, b)] | ||
| return low, high | ||
| if xerr is not None: | ||