[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