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@gmail.com> wrote:


On Tue, Aug 18, 2015 at 5:28 PM, Jared Coughlin <Jared.W.Coughlin.29@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.
 

I've issued a pull request to fix this here:

 


Thanks!
-Jared


On Tue, Aug 18, 2015 at 5:51 PM, Nathan Goldbaum <nathan12343@gmail.com> wrote:


On Tue, Aug 18, 2015 at 4:46 PM, Jared Coughlin <Jared.W.Coughlin.29@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@lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org



_______________________________________________
yt-users mailing list
yt-users@lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org



_______________________________________________
yt-users mailing list
yt-users@lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org



_______________________________________________
yt-users mailing list
yt-users@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