[yt-users] Derived Field Mass Unit Errors

Madison Fitzgerald fitzg152 at msu.edu
Mon Aug 24 20:54:23 PDT 2015


That worked perfectly! Thank you—I thought it might have to do with numpy, but I couldn’t figure out how.

Thank you!
Madison Fitzgerald

Astrophysics | Lyman Briggs College
Women’s & Gender Studies | College of Arts & Letters
LGBTQ and Sexuality Studies Specialization
Women in Science, President
Undergraduate Teaching Assistant
Undergraduate Research Assistant
Department of Physics and Astronomy
Honors College
Michigan State University

> On Aug 24, 2015, at 10:11 AM, Nathan Goldbaum <nathan12343 at gmail.com> wrote:
> 
> 
> 
> On Sun, Aug 23, 2015 at 10:32 PM, Madison Fitzgerald <fitzg152 at msu.edu <mailto:fitzg152 at msu.edu>> wrote:
> Hello,
> 
> I’ve been working on a project where I created derived fields to represent inflowing and outflowing gas in the galaxy. In doing so, I’ve run into a strange issue where yt wants my derived field for inflowing/outflowing mass (cell mass) to be dimensionless, but it will scale graphs as though the units are grams (original script found here: http://paste.yt-project.org/show/5829/ <http://paste.yt-project.org/show/5829/>). 
> 
> However, this makes it difficult to work with the data, so I’ve tried to give units in the derived field function (g and Msun), but I receive errors similar to this (http://paste.yt-project.org/show/5830/ <http://paste.yt-project.org/show/5830/>).
> 
> Hi Madison,
> 
> This is actually an issue with the numpy.where function, which will return data without units even though you are expecting it to return data with units. This is illustrated with the following example:
> 
> In [1]: from yt.units import g
> 
> In [2]: import numpy as np
> 
> In [3]: test_data = np.arange(10)*g
> 
> In [4]: test_data
> Out[4]: YTArray([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.]) g
> 
> In [5]: test_where = np.where(test_data < 5, test_data, 0)
> 
> In [6]: test_where
> Out[6]: array([ 0.,  1.,  2.,  3.,  4.,  0.,  0.,  0.,  0.,  0.])
> 
> 
> Here's how I would define your inflowing_mass field to work around this issue:
> 
> def in_mass(field, data):
>     cell_mass = data['cell_mass']
>     new_field = np.where(data["radial_velocity"]<0, cell_mass, np.zeros_like(cell_mass))
>     return data.ds.arr(new_field, cell_mass.units)
> 
> You'll need to do something similar for the other fields you're defining that use np.where. Hope that helps,
> 
> Nathan
> 
>  
> 
> If I try to change the specified unit within the mass function in the script to g or Msun, I receive this error when I try to plot instead (http://paste.yt-project.org/show/5831/ <http://paste.yt-project.org/show/5831/>).
> 
> I’m working with yt through miniconda, so I have yt version 3.2, no changeset, on a Mac with OS X 10.10.4.
> 
> Any suggestions?
> 
> Thank you,
> Madison Fitzgerald
> 
> Astrophysics | Lyman Briggs College
> Women’s & Gender Studies | College of Arts & Letters
> LGBTQ and Sexuality Studies Specialization
> Women in Science, President
> Undergraduate Teaching Assistant
> Undergraduate Research Assistant
> Department of Physics and Astronomy
> Honors College
> Michigan State University
> 
> 
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org <http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org>
> 
> 
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org <mailto:yt-users at lists.spacepope.org>
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org <http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20150824/40022e44/attachment.html>


More information about the yt-users mailing list