[AstroPy] why the warning about Converting Quantity?
Thomas Robitaille
thomas.robitaille at gmail.com
Fri Mar 22 11:51:21 EDT 2013
This is actually an issue with the Quantity class, not constants
(Constant inherits the issue from Quantity). I've opened an issue to
keep track of it:
https://github.com/astropy/astropy/pull/899
with some initial code which *should* have fixed it, but doesn't, due
to a Numpy issue.
Cheers,
Tom
On 22 March 2013 16:18, Thomas Robitaille <thomas.robitaille at gmail.com> wrote:
> I think that
>
> In [4]: np.array([1,2,3]) * constants.au
> WARNING: Converting Quantity object in units 'm' to a Numpy array
> [astropy.units.quantity]
> Out[4]: array([ 1.49597871e+11, 2.99195741e+11, 4.48793612e+11])
>
> is actually a bug, as this should return a Quantity (like it does for
> scalars). I'll submit a PR shortly.
>
> Cheers,
> Tom
>
> On 22 March 2013 15:57, Erik Tollerud <erik.tollerud at gmail.com> wrote:
>> Hello Jonathan et al.,
>>
>> I think some confusion here stems from the fact that ``AU`` is a bit
>> of a special constant - in most cases, you're probably better off
>> using the AU *unit*, rather than the constant. That is, if you were
>> doing something like
>>
>> arrinau = arr * constants.au
>>
>> That gives exactly the warning you mentioned, whereas
>>
>> arrinau = arr * units.au
>>
>> won't give out a warning, because it creates a `Quantity` object with
>> the units `AU`, rather than a regular array without any units.
>>
>>
>> Does that make sense, or am I still misunderstanding how you're using
>> this? If the latter, can you give an actual example of the line that
>> actually produces this warning? That'll make it easier to understand
>> exactly what you're suggesting.
>>
>>
>>
>>
>> On Thu, Mar 21, 2013 at 3:22 PM, Jonathan Slavin
>> <jslavin at cfa.harvard.edu> wrote:
>>> Hi Adrian,
>>>
>>> Yes, as I mentioned farther down in my post, the warnings are generated
>>> when I use it in an expression -- with numpy arrays. It'd be nice to
>>> have a less cumbersome way of suppressing those warnings (yes it's just
>>> one line, but not so easy to remember). In fact, I would expect to use
>>> the constants mostly in expressions with numpy arrays, variables, etc.
>>> that don't have units, so my preference would be that by default those
>>> warnings are turned off -- at least for the constants. The constants
>>> are useful for their values alone, though clearly the value of the units
>>> module is to associate units with values. Maybe a simple method like
>>> value.asfloat() could be added that would allow conversion from a units
>>> object to a numpy float.
>>>
>>> Jon
>>>
>>> On Thu, 2013-03-21 at 15:05 -0400, Adrian Price-Whelan wrote:
>>>> Hey Jonathan --
>>>>
>>>> Are you sure that's the point in the code that's producing the
>>>> warning? What operations are you doing with the AU object? When you
>>>> use the .to() method, it still returns a Quantity object -- *not* the
>>>> value of the original object in those units. If you then stick AU into
>>>> any numpy function, it will work but will just extract the value from
>>>> the object (hence the warning).
>>>>
>>>> See, for example:
>>>>
>>>> >>> import astropy.units as u
>>>> >>> np.sqrt(15*u.km)
>>>> WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> [astropy.units.quantity]
>>>> 3.872983346207417
>>>>
>>>> To turn this off, you'll want to set:
>>>> >>> u.quantity.WARN_IMPLICIT_NUMERIC_CONVERSION.set(False)
>>>> >>> np.sqrt(15*u.km)
>>>> 3.872983346207417
>>>>
>>>> Note that this is documented in the astropy.units.quantity section of
>>>> the astropy documentation:
>>>> http://docs.astropy.org/en/latest/units/quantity.html#converting-to-python-or-numpy-types
>>>>
>>>> Thanks,
>>>> Adrian
>>>>
>>>> On Mar 21, 2013, at 2:20 PM, Jonathan Slavin wrote:
>>>>
>>>> > Hi,
>>>> >
>>>> > I have just used the constants module in astropy for the first time and
>>>> > got 6 warnings from my code as a result:
>>>> >
>>>> > import astropy.constants as const
>>>> > AU = const.au.to('km')
>>>> >
>>>> > leads to
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> >
>>>> > It seems that I get the warning every place I use the value of AU. Do I
>>>> > have to turn off warnings to prevent this? Is there some other way to
>>>> > deal with this?
>>>> >
>>>> > Jon
>>>> > --
>>>> > ______________________________________________________________
>>>> > Jonathan D. Slavin Harvard-Smithsonian CfA
>>>> > jslavin at cfa.harvard.edu 60 Garden Street, MS 83
>>>> > phone: (617) 496-7981 Cambridge, MA 02138-1516
>>>> > cell: (781) 363-0035 USA
>>>> > ______________________________________________________________
>>>> >
>>>> > _______________________________________________
>>>> > AstroPy mailing list
>>>> > AstroPy at scipy.org
>>>> > http://mail.scipy.org/mailman/listinfo/astropy
>>>>
>>>> --
>>>> Adrian Price-Whelan
>>>> Department of Astronomy
>>>> Columbia University
>>>>
>>>>
>>>>
>>>
>>> --
>>> ______________________________________________________________
>>> Jonathan D. Slavin Harvard-Smithsonian CfA
>>> jslavin at cfa.harvard.edu 60 Garden Street, MS 83
>>> phone: (617) 496-7981 Cambridge, MA 02138-1516
>>> cell: (781) 363-0035 USA
>>> ______________________________________________________________
>>>
>>> _______________________________________________
>>> AstroPy mailing list
>>> AstroPy at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/astropy
>>
>>
>>
>> --
>> Erik
>>
>> On Thu, Mar 21, 2013 at 3:22 PM, Jonathan Slavin
>> <jslavin at cfa.harvard.edu> wrote:
>>> Hi Adrian,
>>>
>>> Yes, as I mentioned farther down in my post, the warnings are generated
>>> when I use it in an expression -- with numpy arrays. It'd be nice to
>>> have a less cumbersome way of suppressing those warnings (yes it's just
>>> one line, but not so easy to remember). In fact, I would expect to use
>>> the constants mostly in expressions with numpy arrays, variables, etc.
>>> that don't have units, so my preference would be that by default those
>>> warnings are turned off -- at least for the constants. The constants
>>> are useful for their values alone, though clearly the value of the units
>>> module is to associate units with values. Maybe a simple method like
>>> value.asfloat() could be added that would allow conversion from a units
>>> object to a numpy float.
>>>
>>> Jon
>>>
>>> On Thu, 2013-03-21 at 15:05 -0400, Adrian Price-Whelan wrote:
>>>> Hey Jonathan --
>>>>
>>>> Are you sure that's the point in the code that's producing the
>>>> warning? What operations are you doing with the AU object? When you
>>>> use the .to() method, it still returns a Quantity object -- *not* the
>>>> value of the original object in those units. If you then stick AU into
>>>> any numpy function, it will work but will just extract the value from
>>>> the object (hence the warning).
>>>>
>>>> See, for example:
>>>>
>>>> >>> import astropy.units as u
>>>> >>> np.sqrt(15*u.km)
>>>> WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> [astropy.units.quantity]
>>>> 3.872983346207417
>>>>
>>>> To turn this off, you'll want to set:
>>>> >>> u.quantity.WARN_IMPLICIT_NUMERIC_CONVERSION.set(False)
>>>> >>> np.sqrt(15*u.km)
>>>> 3.872983346207417
>>>>
>>>> Note that this is documented in the astropy.units.quantity section of
>>>> the astropy documentation:
>>>> http://docs.astropy.org/en/latest/units/quantity.html#converting-to-python-or-numpy-types
>>>>
>>>> Thanks,
>>>> Adrian
>>>>
>>>> On Mar 21, 2013, at 2:20 PM, Jonathan Slavin wrote:
>>>>
>>>> > Hi,
>>>> >
>>>> > I have just used the constants module in astropy for the first time and
>>>> > got 6 warnings from my code as a result:
>>>> >
>>>> > import astropy.constants as const
>>>> > AU = const.au.to('km')
>>>> >
>>>> > leads to
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> > WARNING: Converting Quantity object in units 'km' to a Numpy array
>>>> > [astropy.units.quantity]
>>>> >
>>>> > It seems that I get the warning every place I use the value of AU. Do I
>>>> > have to turn off warnings to prevent this? Is there some other way to
>>>> > deal with this?
>>>> >
>>>> > Jon
>>>> > --
>>>> > ______________________________________________________________
>>>> > Jonathan D. Slavin Harvard-Smithsonian CfA
>>>> > jslavin at cfa.harvard.edu 60 Garden Street, MS 83
>>>> > phone: (617) 496-7981 Cambridge, MA 02138-1516
>>>> > cell: (781) 363-0035 USA
>>>> > ______________________________________________________________
>>>> >
>>>> > _______________________________________________
>>>> > AstroPy mailing list
>>>> > AstroPy at scipy.org
>>>> > http://mail.scipy.org/mailman/listinfo/astropy
>>>>
>>>> --
>>>> Adrian Price-Whelan
>>>> Department of Astronomy
>>>> Columbia University
>>>>
>>>>
>>>>
>>>
>>> --
>>> ______________________________________________________________
>>> Jonathan D. Slavin Harvard-Smithsonian CfA
>>> jslavin at cfa.harvard.edu 60 Garden Street, MS 83
>>> phone: (617) 496-7981 Cambridge, MA 02138-1516
>>> cell: (781) 363-0035 USA
>>> ______________________________________________________________
>>>
>>> _______________________________________________
>>> AstroPy mailing list
>>> AstroPy at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/astropy
>>
>>
>>
>> --
>> Erik Tollerud
>> _______________________________________________
>> AstroPy mailing list
>> AstroPy at scipy.org
>> http://mail.scipy.org/mailman/listinfo/astropy
More information about the AstroPy
mailing list