[yt-users] hierarchy.io.pop, projection

Matthew Turk matthewturk at gmail.com
Mon Oct 25 15:24:38 PDT 2010


Hi Dave,

This is the field detection mechanism, to determine if a field is
available to be used.  It's how the list derived_field_list is
constructed upon hierarchy instantiation, and it's how dependencies
are calculated.

If you look in the definition of the FieldDetector object
(yt/data_objects/field_info_container) you can see where the IO
mechanism is mocked up in the locally-defined class (which violates
the yt style guide, I see now) fake_hierarchy and its nested fake_io.
Add the pop method to the fake_io object, identical to _read_data_set.

Go ahead and push the changes when you've made them, this is a valuable change.

Best,

Matt

On Mon, Oct 25, 2010 at 3:20 PM, david collins <antpuncher at gmail.com> wrote:
> Hi, Everybody!
>
> In order to ensure all my units are being done correctly, I have a
> field 'TE' that forces 'TotalEnergy' to be read off disk, like this:
>
> def _TE(field,data):
>    return data.hierarchy.io.pop(data, 'TotalEnergy')
>
> lagos.add_field("TE", function=_TE,
>               validators=[lagos.ValidateGridType()])
>
> This lets me circumvent the assumptions that yt makes on a field by
> that name, specifically unit conversion.  However, I can't seem to
> project it.  I get the error, below.  Does anyone have any ideas of
> either different ways to do this, or ways around the projection error?
>
> Thanks,
> d.
>
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
>  File "tmp.py", line 9, in <module>
>    mp.plot()
>  File "/home/dccollin/yt/uber.py", line 398, in plot
>    fig = self.add_plots(field,axis,FirstOne)
>  File "/home/dccollin/yt/uber.py", line 676, in add_plots
>    **extra_args)
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/raven/plot_collection.py",
> line 719, in add_projection
>    **field_parameters)
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/lagos/BaseDataTypes.py",
> line 1205, in __init__
>    self._refresh_data()
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/lagos/BaseDataTypes.py",
> line 237, in _refresh_data
>    self.get_data()
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/lagos/BaseDataTypes.py",
> line 1380, in get_data
>    self._get_dependencies(fields), self.hierarchy.io)
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/lagos/ParallelTools.py",
> line 1438, in _get_dependencies
>    deps += ensure_list(fi[field].get_dependencies(pf=self.pf).requested)
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/lagos/field_info_container.py",
> line 297, in get_dependencies
>    self(e)
>  File "/projects/lca-group/local-dev/lib/python2.6/site-packages/yt-2.0dev-py2.6-linux-x86_64.egg/yt/lagos/field_info_container.py",
> line 318, in __call__
>    dd = self._function(self, data)
>  File "xtra_fields.py", line 161, in _TE
>    dataset = data.hierarchy.io.pop(data, 'TotalEnergy')
> AttributeError: 'fake_io' object has no attribute 'pop'
>
>
> --
> Sent from my Stone Tablet and carried by my Pterodactyl.
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>



More information about the yt-users mailing list