[yt-dev] gdf fields

Matthew Turk matthewturk at gmail.com
Wed Jan 4 03:57:16 PST 2012


Hi Sam,

On Wed, Jan 4, 2012 at 6:52 AM, Matthew Turk <matthewturk at gmail.com> wrote:
> Hi Sam,
>
> On Tue, Jan 3, 2012 at 9:01 PM, Sam Skillman <samskillman at gmail.com> wrote:
>> Hi all,
>>
>> I'm running into an issue with translation dictionaries for the GDF
>> frontend.
>>
>> On the tip, if I load up a gdf dataset, and do:
>>
>> pf.h.find_max('Density')
>>
>> I get:
>>
>> http://paste.yt-project.org/show/2008/
>>
>> If I instead do pf.h.find_max('density'), I get what looks like the same
>> error.
>>
>> If I replace line 56 in yt/frontends/gdf/fields.py
>>
>>  55 KnownGDFFields = FieldInfoContainer()
>>  56 add_gdf_field = KnownGDFFields.add_field
>>
>> with
>>
>>  57 add_gdf_field = GDFFieldInfo.add_field
>>
>> It works fine.
>
> Hm, this is the opposite of what I'd expect.  "Known" is to indicate
> that a field may exist in a file, whereas the standard is to indicate
> it can be derived.  By that logic, "Known" is where "density" should
> go and standard is where "Density" should go, which in my version of
> the code is how it is done.

One quick thought.  Can you try with the validators for 'density'
removed, using the standard code as it is in the tip of the main repo?
 i.e., change

add_gdf_field("density", function=NullFunc, take_log=True,
          validators = [ValidateDataField("density")],
          units=r"\rm{g}/\rm{cm}^3",
          projected_units =r"\rm{g}/\rm{cm}^2")

to

add_gdf_field("density", function=NullFunc, take_log=True,
          units=r"\rm{g}/\rm{cm}^3",
          projected_units =r"\rm{g}/\rm{cm}^2")

-Matt

>
> Can you supply a small sample GDF dataset so I can dig in?
>
> -Matt
>
>>
>> Alternatively, if I replace
>>
>>  96 for f,v in log_translation_dict.items():
>>  97     add_field(f, function=TranslationFunc(v), take_log=True)
>>  98
>>  99 for f,v in translation_dict.items():
>> 100     add_field(f, function=TranslationFunc(v), take_log=False)
>>
>> with
>>
>> 102 def _generate_translation(mine, theirs, take_log=False):
>> 103     add_field(theirs, function=lambda a, b: b[mine], take_log=take_log)
>> 104
>> 105
>> 106 for f,v in log_translation_dict.items():
>> 107     if v not in GDFFieldInfo:
>> 108         add_field(v, function=lambda a,b: None, take_log=True,
>> 109                   validators = [ValidateDataField(v)])
>> 110     #print "Setting up translator from %s to %s" % (v, f)
>> 111     _generate_translation(v, f, take_log=True)
>> 112
>> 113
>> 114 for f,v in translation_dict.items():
>> 115     if v not in GDFFieldInfo:
>> 116         add_field(v, function=lambda a,b: None, take_log=False,
>> 117                   validators = [ValidateDataField(v)])
>> 118     #print "Setting up translator from %s to %s" % (v, f)
>> 119     _generate_translation(v, f, take_log=False)
>>
>> as is done in the orion reader, it works fine.
>>
>> Anyways, if someone sees what is going on here, let me know.  I'll also be
>> on IRC for a bit longer tonight and all tomorrow.
>>
>> Thanks,
>> Sam
>>
>> _______________________________________________
>> yt-dev mailing list
>> yt-dev at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
>>



More information about the yt-dev mailing list