-
-
Notifications
You must be signed in to change notification settings - Fork 83
Eliminate the Variable
class
#262
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?
Eliminate the Variable
class
#262
Conversation
Variable
class
@@ -104,9 +105,6 @@ def test_ufloat_fromstr(): | |||
"3.4(nan)e10": (3.4e10, float("nan")), | |||
# NaN value: | |||
"nan+/-3.14e2": (float("nan"), 314), | |||
# "Double-floats" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These floats are too large to work with. Prior to this PR the large float value could be saved into the AffineScalarFunc
object and displayed, but any arithmetic with such large values would result in an OverflowError
. In the new framework even displaying a UFloat
the first time requires a calculation, even if it's as simple as sqrt(x**2)
. So in the new framework the OverflowError
appears immediately.
All the tests are passing except some having to do with the uarray inverse and pseudo inverse functions. The code for this is pretty complicated. It might make sense to just rewrite the code to convert array-compatible functions to ufloat array compatible functions. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #262 +/- ##
==========================================
- Coverage 86.54% 78.68% -7.86%
==========================================
Files 18 19 +1
Lines 1903 1905 +2
==========================================
- Hits 1647 1499 -148
- Misses 256 406 +150
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Wow all tests are passing now. That's a big milestone for this PR. If folks are interested I'd be curious to hear general feedback on the source code changes in this PR. I tried to do as little wholesale rewriting as possible but did chose to do some of that in Here's a summary of the changes so far. See #251 for a more thorough discussion of these changes and their motivations.
Some todo items
Other notes:
|
- [ ] Closes # (insert issue number) - [ ] Executed `pre-commit run --all-files` with no errors - [ ] The change is fully covered by automated unit tests - [ ] Documented in docs/ as appropriate - [ ] Added an entry to the CHANGES file
- [ ] Closes # (insert issue number) - [ ] Executed `pre-commit run --all-files` with no errors - [ ] The change is fully covered by automated unit tests - [ ] Documented in docs/ as appropriate - [ ] Added an entry to the CHANGES file NOTE!!!! This PR targets `main`, not `master`. This PR will be released in version `4.x` (likely `4.0.0`). This PR eliminates functions, methods, and their corresponding tests that were deprecated in version 3.2.3: https://github.com/lmfit/uncertainties/releases/tag/3.2.3.
- [ ] Closes # (insert issue number) - [ ] Executed `pre-commit run --all-files` with no errors - [ ] The change is fully covered by automated unit tests - [ ] Documented in docs/ as appropriate - [ ] Added an entry to the CHANGES file This PR targets `main`, not `master`.
- [ ] Closes # (insert issue number) - [ ] Executed `pre-commit run --all-files` with no errors - [ ] The change is fully covered by automated unit tests - [ ] Documented in docs/ as appropriate - [ ] Added an entry to the CHANGES file
pre-commit run --all-files
with no errorsThis PR:
Variable
class and eliminates theAffineScalarFunc.derivatives
property.AffineScalarFunc
class is renamed toUFloat
withAffineScalarFunc
left as a legacy name.LinearCombo
class is refactored into theUCombo
class but the architectural role is similar: track the uncertainties ofUFloat
objects as a lazily expanded combination of objects with uncertaintyUAtom
object is introduced as the fundamental element which captures uncertainty. EachUAtom
models a random variable with zero mean and unity standard deviation/variance. EachUAtom
has auuid
and allUAtom
are mutually statistically independent. The expanded version of theUCombo
mapsdict[UAtom, float]
.For more detail/discussion see #251 (comment)
Note that as of the time opening this PR the PR is still a work in progress. Not all elements in the bullet list above are implemented and a good handful of tests are still failing.