Derived Field Mass Unit Errors
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/>). 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
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
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 <mailto: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/ <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@lists.spacepope.org <mailto:yt-users@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@lists.spacepope.org <mailto:yt-users@lists.spacepope.org> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org <http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org>
participants (2)
-
Madison Fitzgerald
-
Nathan Goldbaum