[yt-users] Gadget snapshot read Problem

Jared Coughlin Jared.W.Coughlin.29 at nd.edu
Wed Aug 19 09:34:03 PDT 2015


Awesome, thanks, that worked like a charm! Just another quick question, if
you wouldn't mind? I'm trying to make a simple projection plot from within
ipython (terminal version, not the ipython notebook). I have all of my
commands in a script that I run via: %run yt_script.py

The script imports yt, numpy as np, pylab, and yt.units as units.  It then
loads the snapshot using ds = yt.GadgetDataset(fname, unit_base=unit_base,
field_spec=my_field_def), does the indexing as ds.index, and then sets up a
projection plot as: pz = yt.ProjectionPlot(ds, 'z', ('gas', 'density')).
However, when I call pz.show(), I get this in my terminal:

yt : [INFO     ] 2015-08-19 12:26:28,544 Projection completed
yt : [INFO     ] 2015-08-19 12:26:28,544 xlim = 0.000000 50000.000000
yt : [INFO     ] 2015-08-19 12:26:28,544 ylim = 0.000000 50000.000000
yt : [INFO     ] 2015-08-19 12:26:28,546 xlim = 0.000000 50000.000000
yt : [INFO     ] 2015-08-19 12:26:28,546 ylim = 0.000000 50000.000000
yt : [INFO     ] 2015-08-19 12:26:28,552 Making a fixed resolution buffer
of (('gas', 'density')) 800 by 800
<yt.visualization.plot_window.ProjectionPlot at 0x7f01c5170850>

And the plot does not actually show up anywhere.  Do I have to manually set
a graphics device/window or some such thing like you do in gnuplot, or am I
missing a needed library that's causing the plot to not actually show up?
Thanks, and sorry for the bother!
-Jared

On Tue, Aug 18, 2015 at 6:39 PM, Cameron Hummels <chummels at gmail.com> wrote:

> Nathan is right.  If you want to permanently add your field spec to the
> codebase in the same way that I added the group0000 field spec, then you
> (and your group) wouldn't need to define it in each script you're using.
> To add it, you can put it in:
>
> yt/frontends/gadget/definitions.py, and just name it group0001.
>
> Let us know if you have any problems!
>
> Cameron
>
> On Tue, Aug 18, 2015 at 3:35 PM, Nathan Goldbaum <nathan12343 at gmail.com>
> wrote:
>
>>
>>
>> On Tue, Aug 18, 2015 at 5:28 PM, Jared Coughlin <
>> Jared.W.Coughlin.29 at nd.edu> wrote:
>>
>>> Thanks! I'll give that a try.  Also, in my field_spec definition, for
>>> those fields that applied to more than one particle type, I edited it to
>>> have () around them, so it reads ("C", ("Gas", "Stars")).  Is that the
>>> right way to do that?
>>>
>>
>> Yes, I think that's correct. It seems to be used that way in the
>> group0000 field spec we have already. I've never actually tried to do what
>> you're doing, though.
>>
>> By the way, if you *do* get this working, we'd love to include your field
>> spec in yt itself so future users who have data that looks like yours won't
>> have to deal with this. Unfortunately due to the proliferation of Gadget
>> output types, someone at some point needs to add support for each custom
>> type to yt so we can ascribe semantic meaning to all of the fields.
>>
>>
>>> Also, here's the documentation page I was following:
>>>
>>> http://yt-project.org/doc/examining/loading_data.html?highlight=gadget_field_specs#gadget-data
>>>
>>
>> I've issued a pull request to fix this here:
>>
>>
>> https://bitbucket.org/yt_analysis/yt/pull-requests/1706/correcting-two-incorrect-paths-in-the/diff
>>
>>
>>>
>>>
>>> Thanks!
>>> -Jared
>>>
>>>
>>> On Tue, Aug 18, 2015 at 5:51 PM, Nathan Goldbaum <nathan12343 at gmail.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Aug 18, 2015 at 4:46 PM, Jared Coughlin <
>>>> Jared.W.Coughlin.29 at nd.edu> wrote:
>>>>
>>>>> Hello! I have two questions: the first is related to saving new field
>>>>> specs, and the second is related to reading in the file itself.
>>>>>
>>>>> I was following along with the documentation that describes saving new
>>>>> field specs, and I defined a new field spec as (it should be noted that my
>>>>> extra columns are for both gas and star particles, and I was unsure as to
>>>>> how to tell yt that it applied for both types, so I made a best guess):
>>>>>
>>>>> my_field_def = ("Coordinates",
>>>>>                   "Velocities",
>>>>>                   "ParticleIDs",
>>>>>                   "Mass",
>>>>>                   ("InternalEnergy", "Gas"),
>>>>>                   ("Density", "Gas"),
>>>>>                   ("SmoothingLength", "Gas"),
>>>>>                   ("RII", "Stars"),
>>>>>                   ("RIa", "Stars"),
>>>>>                   ("StellarAge", "Stars"),
>>>>>                   ("C", "Gas", "Stars"),
>>>>>                   ("O", "Gas", "Stars"),
>>>>>                   ("Ca", "Gas", "Stars"),
>>>>>                   ("Cr", "Gas", "Stars"),
>>>>>                   ("Mn", "Gas", "Stars"),
>>>>>                   ("Fe", "Gas", "Stars"),
>>>>>                )
>>>>> And a unit base:
>>>>>
>>>>> unit_base = {'UnitLength_in_cm' : 3.085678e+21,
>>>>>                'UnitMass_in_g' : 1.989e+43,
>>>>>                'UnitVelocity_in_cm_per_s' : 1.0e+5}
>>>>>
>>>>> Firstly, when I tried to add my custom field definition to the
>>>>> gadget_field_specs by doing:
>>>>>
>>>>> from yt.frontends.sph.definitions import gadget_field_specs
>>>>>
>>>>> I get the error:
>>>>> Traceback (most recent call last):
>>>>>   File "<stdin>", line 1, in <module>
>>>>> ImportError: No module named definitions
>>>>>
>>>>> Just wondering what I was doing wrong?  Also, when I try to load in
>>>>> the snapshot, I am doing:
>>>>>
>>>>
>>>> It looks like you're reading some out of date documentation. The
>>>> correct import is now "from yt.frontends.gadget.definitions import
>>>> gadget_field_specs"
>>>>
>>>> Can you paste the link to the page with the incorrect import? If it's
>>>> still that way in the latest version of the docs, we can correct it.
>>>>
>>>>
>>>>>
>>>>> fname = 'snapshot_000.0'
>>>>> ds = yt.GadgetDataset(fname, unit_base=unit_base,
>>>>> field_spec=my_field_def)
>>>>>
>>>>> ds.index
>>>>>
>>>>> ad = ds.all_data()
>>>>>
>>>>> pz = yt.ProjectionPlot(ds, 'z', ('gas', 'density'))
>>>>> pz.show()
>>>>>
>>>>> The output is:
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,103 Calculating time from
>>>>> 2.500e-01 to be 6.950e+16 seconds
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,144 Parameters: current_time
>>>>>          = 6.95032608578e+16 s
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,144 Parameters: domain_dimensions
>>>>>         = [2 2 2]
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,144 Parameters: domain_left_edge
>>>>>          = [ 0.  0.  0.]
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,145 Parameters: domain_right_edge
>>>>>         = [ 50000.  50000.  50000.]
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,145 Parameters:
>>>>> cosmological_simulation   = 1
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,145 Parameters: current_redshift
>>>>>          = 3.00000005201
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,145 Parameters: omega_lambda
>>>>>          = 0.726
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,145 Parameters: omega_matter
>>>>>          = 0.274
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,145 Parameters: hubble_constant
>>>>>         = 0.702
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,146 Allocating for 4.194e+06
>>>>> particles
>>>>> yt : [INFO     ] 2015-08-18 17:24:45,664 Identified 3.077e+05 octs
>>>>> Traceback (most recent call last):
>>>>>   File "yt_test_script.py", line 72, in <module>
>>>>>     ds.index
>>>>>   File
>>>>> "/home/user/Research/Tools/yt/yt-x86_64/src/yt-hg/yt/data_objects/static_output.py",
>>>>> line 321, in index
>>>>>     self, dataset_type=self.dataset_type)
>>>>>   File
>>>>> "/home/user/Research/Tools/yt/yt-x86_64/src/yt-hg/yt/geometry/particle_geometry_handler.py",
>>>>> line 53, in __init__
>>>>>     super(ParticleIndex, self).__init__(ds, dataset_type)
>>>>>   File
>>>>> "/home/user/Research/Tools/yt/yt-x86_64/src/yt-hg/yt/geometry/geometry_handler.py",
>>>>> line 65, in __init__
>>>>>     self._detect_output_fields()
>>>>>   File
>>>>> "/home/user/Research/Tools/yt/yt-x86_64/src/yt-hg/yt/geometry/particle_geometry_handler.py",
>>>>> line 125, in _detect_output_fields
>>>>>     fl, _units = self.io._identify_fields(dom)
>>>>>   File
>>>>> "/home/user/Research/Tools/yt/yt-x86_64/src/yt-hg/yt/frontends/gadget/io.py",
>>>>> line 208, in _identify_fields
>>>>>     field, req = field
>>>>> ValueError: too many values to unpack
>>>>>
>>>>
>>>> This is probably related to not having the correct field spec when
>>>> loading the data.
>>>>
>>>>
>>>>>
>>>>>
>>>>> The snapshot I'm trying to load is a 128^3 50Mpc snapshot distributed
>>>>> onto 4 files and the error occurs on a call to ds.index, if that helps.
>>>>> Thank you!
>>>>> -Jared
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>
>>>
>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
>>
>
>
> --
> Cameron Hummels
> NSF Postdoctoral Fellow
> Department of Astronomy
> California Institute of Technology
> http://chummels.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/20150819/9c1f933f/attachment.htm>


More information about the yt-users mailing list