[yt-users] Confused about units in derived fields

Naiman, Jill jill.naiman at cfa.harvard.edu
Thu Nov 20 19:13:18 PST 2014


On Thu, Nov 20, 2014 at 9:36 PM, Nathan Goldbaum <nathan12343 at gmail.com>
wrote:

> Hi Jill,
>
> On Thu, Nov 20, 2014 at 6:27 PM, Jill Naiman <jill.naiman at cfa.harvard.edu>
> wrote:
>
>> Hi all,
>>
>> As the title states, I am confused - specifically about units.  I want to
>> create a derived field where parts of the field are different values,
>> dependent upon some cutoff criteria like so:
>>
>> def _dene2(field,data):
>>     tl = data['temperature']
>>     dl = data['density']
>>     print("TEMP")
>>     print(tl.in_cgs())
>>     aux = np.where(tl.in_cgs() > 5000.)
>>     np.putmask(dl,aux, 0.0)
>>     dene = dl
>>     return dene
>>
>>
>> ds.add_field("dene", units="g/cm**3", function = _dene2)
>>
>>
>> Not only does this produce a very worrisome error:  "RuntimeError:
>> Something has gone terribly wrong, _function is NullFunc for ('flash',
>> 'temp')"
>>
>
> This happens when field detection fails badly.  I'm a bit surprised to see
> it referencing a "temp" field - have you defined a "temp" field somewhere?
>

I do not have a "temp" field defined anywhere, its actually one of the
flash fields that is read in (I've printed out ds.field_list just to be
sure and see: [('flash', 'dens'), ('flash', 'temp'), ('flash', 'pres'),
('flash', 'gpot'), ('flash', 'divb'), ('flash', 'velx'), ('flash', 'vely'),
('flash', 'velz'), ('flash', 'magx'), ('flash', 'magy'), ('flash', 'magz'),
('flash', 'magp')]

... I assume ('flash','temp') is 'temp'... or I am even more confused than
previously thought :)



>
>
>>
>> The print statement in there shows a bunch of values close to 1, which is
>> why the "aux" mask never returns anything.But why is data a bunch of 1's in
>> here?  How do I access/convert to the "real" units?
>>
>
> yt's field detection algorithm will feed a field fake data that is close
> to 1 to see if there are errors in the field definition.  The values close
> to 1 you are seeing almost certainly come from field detection.  If the
> field validates correctly, real data will eventually be passed in.
>

Makes sense, I assume in the actual plotting routine as that is where the
actual error is happening, full error below:

Traceback (most recent call last):
  File "testderv.py", line 28, in <module>
    plot = yt.PhasePlot(my_sphere, "dene", "radius", ["temperature"],
weight_field="cell_volume")
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/visualization/profile_plotter.py",
line 709, in __init__
    fractional=fractional)
  File "/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/profiles.py",
line 1151, in create_profile
    for f, l in zip(bin_fields, logs)]
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.py",
line 483, in __call__
    rv = super(Extrema, self).__call__(fields, non_zero)
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.py",
line 59, in __call__
    sto.result = self.process_chunk(ds, *args, **kwargs)
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/derived_quantities.py",
line 491, in process_chunk
    fd = data[field]
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",
line 214, in __getitem__
    self.get_data(f)
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",
line 623, in get_data
    self._generate_fields(fields_to_generate)
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",
line 640, in _generate_fields
    fd = self._generate_field(field)
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",
line 251, in _generate_field
    tr = self._generate_fluid_field(field)
  File
"/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py",
line 271, in _generate_fluid_field
    rv = finfo(gen_obj)
  File "/pfs/sw/yt-3.0/yt-x86_64/src/yt-hg/yt/fields/derived_field.py",
line 176, in __call__
    "for %s" % (self.name,))
RuntimeError: Something has gone terribly wrong, _function is NullFunc for
('flash', 'temp')


>
> Is there any chance you can reproduce this issue using one of the test
> datasets on yt-project.org/data?  If so, can you pastebin a script that
> causes the error you're seeing?  That should make it much easier to
> reproduce and figure out exactly what's going wrong.
>
>
Done: http://paste.yt-project.org/show/5216/

Thanks!
-Jill


> -Nathan
>
>
>>
>> Any help is appreciated,
>> -Jill
>>
>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
>>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.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/20141120/b776f9b3/attachment.htm>


More information about the yt-users mailing list