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@gmail.com> wrote:



On Sun, Aug 23, 2015 at 10:32 PM, Madison Fitzgerald <fitzg152@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/). 

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/).

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/).

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@lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org


_______________________________________________
yt-users mailing list
yt-users@lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org