[AstroPy] Bug in units decompose()?
John Quinn
john.quinn at ucd.ie
Tue Jul 1 11:18:10 EDT 2014
Hello,
I am currently evaluating iPython Notebook as a replacement for MATHCAD in our teaching laboratories
and am particularly interested in using the units and constants packages of astropy.
I have encountered an apparent bug using the units decompose function and have reduced it to the
following example:
> from astropy import units as u
> u.J.decompose(bases=[u.J])
which produces the errors given below.
Similarly, I cannot decompose a unit consisting of 1 u.N * u.m into u.J, but strangely u.Ry.decompose(bases=[u.J]) works fine.
Am I missing something obvious or is this a bug?
I am using astropy 0.3.2 with python 3.4.1 on Mac OS X (anaconda). I see the same on the Linux and Windows
versions and with Python 2.7.7.
Thanks,
John
---------------------------------------------------------------------------
UnitsError Traceback (most recent call last)
<ipython-input-54-3aa084c7cc08> in <module>()
----> 1 u.J.decompose(bases=[u.J])
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in decompose(self, bases)
1837
1838 def decompose(self, bases=set()):
-> 1839 return self._represents.decompose(bases=bases)
1840 decompose.__doc__ = UnitBase.decompose.__doc__
1841
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in decompose(self, bases)
1999
2000 x = CompositeUnit(self.scale, self.bases, self.powers, decompose=True,
-> 2001 decompose_bases=bases)
2002 if len(bases) == 0:
2003 self._decomposed_cache = x
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in __init__(self, scale, bases, powers, decompose, decompose_bases, _error_check)
1897 self._powers = powers
1898 self._decomposed_cache = None
-> 1899 self._expand_and_gather(decompose=decompose, bases=decompose_bases)
1900
1901 def __repr__(self):
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in _expand_and_gather(self, decompose, bases)
1959 for b, p in zip(self.bases, self.powers):
1960 if decompose and b not in bases:
-> 1961 b = b.decompose(bases=bases)
1962
1963 if isinstance(b, CompositeUnit):
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in decompose(self, bases)
1837
1838 def decompose(self, bases=set()):
-> 1839 return self._represents.decompose(bases=bases)
1840 decompose.__doc__ = UnitBase.decompose.__doc__
1841
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in decompose(self, bases)
1999
2000 x = CompositeUnit(self.scale, self.bases, self.powers, decompose=True,
-> 2001 decompose_bases=bases)
2002 if len(bases) == 0:
2003 self._decomposed_cache = x
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in __init__(self, scale, bases, powers, decompose, decompose_bases, _error_check)
1897 self._powers = powers
1898 self._decomposed_cache = None
-> 1899 self._expand_and_gather(decompose=decompose, bases=decompose_bases)
1900
1901 def __repr__(self):
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in _expand_and_gather(self, decompose, bases)
1959 for b, p in zip(self.bases, self.powers):
1960 if decompose and b not in bases:
-> 1961 b = b.decompose(bases=bases)
1962
1963 if isinstance(b, CompositeUnit):
/Users/quinn/anaconda/envs/py34/lib/python3.4/site-packages/astropy/units/core.py in decompose(self, bases)
1573 raise UnitsError(
1574 "Unit {0} can not be decomposed into the requested "
-> 1575 "bases".format(self))
1576
1577 return self
UnitsError: Unit kg can not be decomposed into the requested bases
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/astropy/attachments/20140701/ff63e222/attachment.html>
More information about the AstroPy
mailing list