[yt-users] profile object / data container question
Nathan Goldbaum
nathan12343 at gmail.com
Mon Aug 29 11:56:02 PDT 2016
A workaround that seems to work for me is to manually copy over the missing
field_info data:
https://paste.yt-project.org/show/6792/
Keep in mind that you need to do it like I did, `profile =
prof_ds.profile`, and then work with that profile object from then on,
because `prof_ds.profile` is a property that doesn't cache its own result,
so every time you access it you get back a new profile object.
On Mon, Aug 29, 2016 at 1:41 PM, Molly Peeples <molly at stsci.edu> wrote:
> Hey Nathan,
>
> So currently there’s no way to save the profile and read it in later with
> this working? (The profile takes approximately forever to generate, so
> iterating on plotting while not in iPython is currently a p.i.t.a.)
>
> —Molly
>
>
> On August 29, 2016 at 2:37:56 PM, Nathan Goldbaum (nathan12343 at gmail.com)
> wrote:
>
> Hi Molly,
>
> I think this is a bug in yt - the issue is that the field_info associated
> with the original profile object is not being saved to the profile dataset.
>
> I've filed this issue here:
>
> https://bitbucket.org/yt_analysis/yt/issues/1267
>
> For now, you should be able to create a PhasePlot using the profile object
> you created from the original dataset:
>
> nhT_prof_new = yt.create_profile(sph, [('gas',
> 'H_number_density'),('gas','temperature')], fields='cell_mass',
>
> extrema=extrema,fractional=True, n_bins=6)
> plot = yt.PhasePlot.from_profile(nht_prof_new)
>
> -Nathan
>
> On Mon, Aug 29, 2016 at 12:45 PM, Molly Peeples <molly at stsci.edu> wrote:
>
>> Hi folks,
>>
>> I’m trying to construct and save a 2d profile container to make a phase
>> plot. Here’s what I have:
>>
>> nhT_prof_new = yt.create_profile(sph, [('gas',
>> 'H_number_density'),('gas','temperature')], fields='cell_mass',
>> extrema=extrema,fractional=True, n_bins=6)
>>
>> nhT_prof_new.save_as_dataset()
>>
>> prof_ds = yt.load("snap_047_z000p000_Profile2D.h5")
>>
>> (just using a small number of bins for now to play with…)
>>
>> In [115]: prof_ds.data["temperature"]
>>
>> ...: prof_ds.data["H_number_density"]
>>
>> ...: prof_ds.data["cell_mass"]
>>
>> ...:
>>
>> Out[115]:
>>
>> YTArray([[ 0.01685665, 0.0405085 , 0.03575519, 0.03091732, 0.02552936,
>>
>> 0.0230379 ],
>>
>> [ 0.03770747, 0.05441198, 0.04859202, 0.03285325, 0.02385346,
>>
>> 0.04674817],
>>
>> [ 0.03022001, 0.05150457, 0.03591368, 0.01974481, 0.01052408,
>>
>> 0.00331175],
>>
>> [ 0.04278126, 0.01889035, 0.0177686 , 0.01644028, 0.01598129,
>>
>> 0.00578262],
>>
>> [ 0.05010083, 0.06573628, 0.04247398, 0.03914208, 0. ,
>>
>> 0. ],
>>
>> [ 0. , 0.11691224, 0. , 0. , 0. ,
>>
>> 0. ]]) dimensionless
>>
>> but when I try to create a PhasePlot:
>>
>> In [116]: p = yt.PhasePlot(prof_ds.data, "H_number_density",
>> "temperature","cell_mass",weight_field=None)
>>
>> ...:
>>
>> ------------------------------------------------------------
>> ---------------
>>
>> KeyError Traceback (most recent call
>> last)
>>
>> <ipython-input-116-37b81d75b563> in <module>()
>>
>> ----> 1 p = yt.PhasePlot(prof_ds.data,"H_number_density",
>> "temperature","cell_mass",weight_field=None)
>>
>>
>> /Users/molly/anaconda2/envs/astroconda/lib/python2.7/site-pa
>> ckages/yt/visualization/profile_plotter.pyc in __init__(self,
>> data_source, x_field, y_field, z_fields, weight_field, x_bins, y_bins,
>> accumulation, fractional, fontsize, figure_size)
>>
>> 756
>>
>> 757 type(self)._initialize_instance(self, data_source,
>> profile, fontsize,
>>
>> --> 758 figure_size)
>>
>> 759
>>
>> 760 @classmethod
>>
>>
>> /Users/molly/anaconda2/envs/astroconda/lib/python2.7/site-pa
>> ckages/yt/visualization/profile_plotter.pyc in _initialize_instance(cls,
>> obj, data_source, profile, fontsize, figure_size)
>>
>> 773 obj.profile = profile
>>
>> 774 super(PhasePlot, obj).__init__(data_source, figure_size,
>> fontsize)
>>
>> --> 775 obj._setup_plots()
>>
>> 776 obj._initfinished = True
>>
>> 777 return obj
>>
>>
>> /Users/molly/anaconda2/envs/astroconda/lib/python2.7/site-pa
>> ckages/yt/visualization/profile_plotter.pyc in _setup_plots(self)
>>
>> 854 cax = self.plots[f].cax
>>
>> 855
>>
>> --> 856 x_scale, y_scale, z_scale = self._get_field_log(f,
>> self.profile)
>>
>> 857 x_title, y_title, z_title = self._get_field_title(f,
>> self.profile)
>>
>> 858
>>
>>
>> /Users/molly/anaconda2/envs/astroconda/lib/python2.7/site-pa
>> ckages/yt/visualization/profile_plotter.pyc in _get_field_log(self,
>> field_z, profile)
>>
>> 813
>>
>> 814 def _get_field_log(self, field_z, profile):
>>
>> --> 815 zfi = profile.field_info[field_z]
>>
>> 816 if self.x_log is None:
>>
>> 817 x_log = profile.x_log
>>
>>
>> KeyError: ('data', 'cell_mass')
>>
>>
>>
>>
>> Suggestions?
>> —Molly
>>
>> _______________________________________________
>> 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
>
>
> _______________________________________________
> 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/20160829/3fbea3bf/attachment.html>
More information about the yt-users
mailing list