-
Notifications
You must be signed in to change notification settings - Fork 4
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
Astropy 1.1.1 version breaks Tesla conversion to cgs again #14
Comments
a simple example: field = u.Quantity([1,2,3])*u.T
field.unit.to_system(u.cgs)
---------------------------------------------------------------------------
UnitConversionError Traceback (most recent call last)
<ipython-input-6-6c708e450c60> in <module>()
----> 1 field.unit.to_system(u.cgs)
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in to_system(self, system)
1282 return sum / float(len(compose_bases))
1283
-> 1284 x = self.decompose(bases=bases)
1285 composed = x.compose(units=system)
1286 composed = sorted(composed, key=score, reverse=True)
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
1925
1926 def decompose(self, bases=set()):
-> 1927 return self._represents.decompose(bases=bases)
1928
1929 def is_unity(self):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
2102
2103 x = CompositeUnit(self.scale, self.bases, self.powers, decompose=True,
-> 2104 decompose_bases=bases)
2105 if len(bases) == 0:
2106 self._decomposed_cache = x
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in __init__(self, scale, bases, powers, decompose, decompose_bases, _error_check)
1985 self._powers = powers
1986 self._decomposed_cache = None
-> 1987 self._expand_and_gather(decompose=decompose, bases=decompose_bases)
1988 self._hash = None
1989
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in _expand_and_gather(self, decompose, bases)
2058 for b, p in zip(self.bases, self.powers):
2059 if decompose and b not in bases:
-> 2060 b = b.decompose(bases=bases)
2061
2062 if isinstance(b, CompositeUnit):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
1925
1926 def decompose(self, bases=set()):
-> 1927 return self._represents.decompose(bases=bases)
1928
1929 def is_unity(self):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
2102
2103 x = CompositeUnit(self.scale, self.bases, self.powers, decompose=True,
-> 2104 decompose_bases=bases)
2105 if len(bases) == 0:
2106 self._decomposed_cache = x
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in __init__(self, scale, bases, powers, decompose, decompose_bases, _error_check)
1985 self._powers = powers
1986 self._decomposed_cache = None
-> 1987 self._expand_and_gather(decompose=decompose, bases=decompose_bases)
1988 self._hash = None
1989
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in _expand_and_gather(self, decompose, bases)
2058 for b, p in zip(self.bases, self.powers):
2059 if decompose and b not in bases:
-> 2060 b = b.decompose(bases=bases)
2061
2062 if isinstance(b, CompositeUnit):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
1925
1926 def decompose(self, bases=set()):
-> 1927 return self._represents.decompose(bases=bases)
1928
1929 def is_unity(self):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
2102
2103 x = CompositeUnit(self.scale, self.bases, self.powers, decompose=True,
-> 2104 decompose_bases=bases)
2105 if len(bases) == 0:
2106 self._decomposed_cache = x
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in __init__(self, scale, bases, powers, decompose, decompose_bases, _error_check)
1985 self._powers = powers
1986 self._decomposed_cache = None
-> 1987 self._expand_and_gather(decompose=decompose, bases=decompose_bases)
1988 self._hash = None
1989
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in _expand_and_gather(self, decompose, bases)
2058 for b, p in zip(self.bases, self.powers):
2059 if decompose and b not in bases:
-> 2060 b = b.decompose(bases=bases)
2061
2062 if isinstance(b, CompositeUnit):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
1925
1926 def decompose(self, bases=set()):
-> 1927 return self._represents.decompose(bases=bases)
1928
1929 def is_unity(self):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
2102
2103 x = CompositeUnit(self.scale, self.bases, self.powers, decompose=True,
-> 2104 decompose_bases=bases)
2105 if len(bases) == 0:
2106 self._decomposed_cache = x
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in __init__(self, scale, bases, powers, decompose, decompose_bases, _error_check)
1985 self._powers = powers
1986 self._decomposed_cache = None
-> 1987 self._expand_and_gather(decompose=decompose, bases=decompose_bases)
1988 self._hash = None
1989
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in _expand_and_gather(self, decompose, bases)
2058 for b, p in zip(self.bases, self.powers):
2059 if decompose and b not in bases:
-> 2060 b = b.decompose(bases=bases)
2061
2062 if isinstance(b, CompositeUnit):
/opt/miniconda/envs/sunpy-dev/lib/python2.7/site-packages/astropy/units/core.pyc in decompose(self, bases)
1660 raise UnitConversionError(
1661 "Unit {0} can not be decomposed into the requested "
-> 1662 "bases".format(self))
1663
1664 return self
UnitConversionError: Unit A can not be decomposed into the requested bases |
this is the fault of astropy/astropy#4355 and the fact it was backported to 1.1.1. |
I guess the fix is to convert directly to Gauss |
I did try converting to Gauss and it doesn't actually seem to get around the problem, unless I missed something. |
hot damn. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
With astropy 1.1.1 the conversion between Tesla and Gauss is once again broken. Tesla can be directly converted to Gauss and vice versa, but the
fv.attrs['field_to_cgs'] = field.unit.to_system(u.cgs)[0].scale
in the gdf_writer has no valid result
I have loaded astropy version 1.0.5 on iceberg, but we should raise this issue with the astropy developers. Clearly the bug was fixed last year and the latest upgrade has reintroduced it
The text was updated successfully, but these errors were encountered: