FIDUCEO / FCDR_HIRS

Other
1 stars 2 forks source link

measurement equation fails with sympy ≥ 1.2 #303

Open gerritholl opened 5 years ago

gerritholl commented 5 years ago

Importing the measurement_equation module fails with sympy 1.2 or 1.3. Since this is being imported in several places, that means most scripts won't work, even if they don't use the measurement equation.

Using sympy 1.2 or 1.3:

$ summarise_hirs_fcdr --help
/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/matplotlib/__init__.py:846: MatplotlibDeprecationWarning:
The text.latex.unicode rcparam was deprecated in Matplotlib 2.2 and will be removed in 3.1.
  "2.2", name=key, obj_type="rcparam", addendum=addendum)
/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/matplotlib/__init__.py:846: MatplotlibDeprecationWarning:
The text.latex.unicode rcparam was deprecated in Matplotlib 2.2 and will be removed in 3.1.
  "2.2", name=key, obj_type="rcparam", addendum=addendum)
Traceback (most recent call last):
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/bin/summarise_hirs_fcdr", line 7, in <module>
    from FCDR_HIRS.analysis.summarise_fcdr import summarise
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/analysis/summarise_fcdr.py", line 5, in <module>
    from .. import common
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/common.py", line 9, in <module>
    from .fcdr import list_all_satellites
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/fcdr.py", line 34, in <module>
    from . import effects
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/effects.py", line 652, in <module>
    IWCT_type_b.magnitude=UADA(0.1, name="uncertainty", attrs={"units": "K"})
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/effects.py", line 333, in __setattr__
    super().__setattr__(k, v)
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/effects.py", line 397, in magnitude
    da.attrs["sensitivity_coefficient"] = str(self.sensitivity())
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/effects.py", line 496, in sensitivity
    return meq.calc_sensitivity_coefficient(s, self.parameter)
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/measurement_equation.py", line 316, in calc_sensitivity_coefficient
    expr = substitute_until_explicit(expr, s2)
  File "/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37c/lib/python3.7/site-packages/FCDR_HIRS/measurement_equation.py", line 292, in substitute_until_explicit
    if aliases.get(s2, s2) in dependencies[aliases.get(sym,sym)]:
KeyError: T_PRT[n]

It appears the problem has to do with the workings of ExpressionDict.