[yt-users] passing parameters to 'ray'

Matthew Turk matthewturk at gmail.com
Wed Aug 17 12:05:41 PDT 2011


On line 3337 in yt/data_objects/data_containers.py there is the
function definition for "_get_data_from_grid".  Try adding the
decorator "restore_grid_state", so that it looks like:

    @restore_grid_state
    def _get_data_from_grid(self, grid, fields):
        ll = int(grid.Level == self.level)
        ...

Performance may suffer, which is why this is not typically enabled.
If this works and the performance hit is <1% or so we can enable it
globally.

-Matt

On Thu, Aug 11, 2011 at 11:50 PM, Elizabeth Tasker <taskere at mcmaster.ca> wrote:
> Ah sorry; didn't realise this was the same issue.
>
>
> On 2011-08-11, at 10:36 PM, Matthew Turk wrote:
>
>> Elizabeth reported this bug about a week ago, so maybe followups can
>> go on the bug report:
>>
>> http://hg.enzotools.org/yt/issue/295/passing-field-parameters-to-covering-grids
>>
>> On Thu, Aug 11, 2011 at 5:12 PM, Sam Skillman <samskillman at gmail.com> wrote:
>>> Hi Elizabeth,
>>> It looks like there might be an issue with the transfer of parameters after
>>> using validate spatial, which creates a smoothed covering grid.  I'll get
>>> back to you when I figure it out.
>>> Best,
>>> Sam
>>> On Thu, Aug 11, 2011 at 2:53 PM, Elizabeth Tasker <taskere at mcmaster.ca>
>>> wrote:
>>>>
>>>> Hi Sam,
>>>>
>>>> OK, I've succeeded in breaking your improved script. When you try and set
>>>> both parameter and spatial validators, the code stops recognising them. So:
>>>>
>>>> add_field("RayTest", function=_RayTest,
>>>> validators=[ValidateParameter("disk_vector")])
>>>>
>>>> works while
>>>>
>>>> add_field("RayTest", function=_RayTest,
>>>> validators=[ValidateParameter("disk_vector"),
>>>> ValidateParameter("disk_center"), ValidateSpatial(1, ["x-velocity",
>>>> "y-velocity", "z-velocity", "x", "y", "z"])])
>>>>
>>>> does not.Which it why it didn't work in my longer script.
>>>>
>>>> Perhaps I've put the format in incorrectly?
>>>>
>>>> Elizabeth
>>>>
>>>>
>>>>
>>>> Elizabeth Tasker wrote:
>>>>>
>>>>> Hi Sam,
>>>>>
>>>>> Thank you -- my test script now works fine but I've managed to break my
>>>>> longer one so completely it's become impossible to test anything. Oops.
>>>>> However, I think when I tried the method below originally, I put the
>>>>> set_field_parameters in the wrong place, which would explain why they didn't
>>>>> work.
>>>>>
>>>>> Thanks loads for the example.
>>>>>
>>>>> Elizabeth
>>>>>
>>>>> Sam Skillman wrote:
>>>>>>
>>>>>> Hi Elizabeth,
>>>>>>
>>>>>> So the problem is that when you add_field and ask to validate the
>>>>>> height_vector, it doesn't exist yet.  I believe you can get the desired
>>>>>> behavior with:
>>>>>>
>>>>>> from yt.mods import *
>>>>>>
>>>>>> def _RayTest(field, data):
>>>>>>
>>>>>>    center = data.get_field_parameter("center")
>>>>>>    h_vec = na.array(data.get_field_parameter("height_vector"))
>>>>>>
>>>>>>    print "center :", center, "h_vec: ", h_vec
>>>>>>
>>>>>>    return data["Density"]
>>>>>>
>>>>>> add_field("RayTest", function=_RayTest)
>>>>>>
>>>>>> # Grab data
>>>>>> fn = "GravPotential/DD0301/GT_BTAccel_256AMR4_PeHeat_sf5_SNe_0301"
>>>>>> pf = load(fn)
>>>>>> ray1 = pf.h.ray((2.0, 2.0 ,2.0), (12.0, 12.0, 12.0))
>>>>>> ray1.set_field_parameter('height_vector',na.array([0.,0.,1.]))
>>>>>> ray1.set_field_parameter('center',[0.5]*3)
>>>>>> ray1["RayTest"]
>>>>>>
>>>>>> When I run this I get: center : [0.5, 0.5, 0.5] h_vec:  [ 0.  0.  1.]
>>>>>>
>>>>>> I'm not sure what dd was in your dd.center since dd wasn't defined in
>>>>>> that script, but you should be able to set center to whatever you want here.
>>>>>>  I also changed density to Density.
>>>>>> Best,
>>>>>> Sam
>>>>>>
>>>>>> On Wed, Aug 10, 2011 at 9:36 AM, Elizabeth Tasker <taskere at mcmaster.ca
>>>>>> <mailto:taskere at mcmaster.ca>> wrote:
>>>>>>
>>>>>>    Hi Matt,
>>>>>>
>>>>>>    I think this script explains what I mean. When I run it, I get:
>>>>>>
>>>>>>    /1/home/taskere/yt/yt/data_objects/field_info_container.py in
>>>>>>    __call__(self, data)
>>>>>>      357                 doesnt_have.append(p)
>>>>>>      358         if len(doesnt_have) > 0:
>>>>>>    --> 359             raise NeedsParameter(doesnt_have)
>>>>>>      360         return True
>>>>>>      361
>>>>>>
>>>>>>    NeedsParameter: (['height_vector'])
>>>>>>
>>>>>>
>>>>>>    As a side note, I think 'ray' sets its own value for the field
>>>>>>    parameter, "center", making it the start of the ray. If that's
>>>>>>    true, does it have problems for calling radius? e.g.
>>>>>>
>>>>>>    ray["Radius"]
>>>>>>
>>>>>>    where radius would need to be the center of the object, not
>>>>>>    necessarily the start of the ray? (This particular issue wouldn't
>>>>>>    affect me, but I thought it might bite someone later).
>>>>>>
>>>>>>    Elizabeth
>>>>>>
>>>>>>
>>>>>>
>>>>>>    Matthew Turk wrote:
>>>>>>
>>>>>>
>>>>>>        Hi Elizabeth,
>>>>>>
>>>>>>        Could you elaborate on what you mean, and provide an example
>>>>>>        script?
>>>>>>
>>>>>>        Thanks,
>>>>>>
>>>>>>        -Matt
>>>>>>
>>>>>>        On Aug 10, 2011 7:22 AM, "Elizabeth Tasker"
>>>>>>        <taskere at mcmaster.ca <mailto:taskere at mcmaster.ca>
>>>>>>        <mailto:taskere at mcmaster.ca <mailto:taskere at mcmaster.ca>>> wrote:
>>>>>>        > Hi,
>>>>>>        >
>>>>>>        > I'm having problems passing parameters to a ray object. I'm
>>>>>>        trying:
>>>>>>        >
>>>>>>        > ray1 = pf.h.ray( com[c], com[nearestcore], field_parameters =
>>>>>>        > {'height_vector':na.array([0,0,1]), 'center':dd.center})
>>>>>>        > Omega0 = ray1["Omega"]
>>>>>>        >
>>>>>>        > and I also tried out:
>>>>>>        >
>>>>>>        > ray1.set_field_parameter("height_vector", na.array([0,0,1]))
>>>>>>        > ray1.set_field_parameter("center", dd.center)
>>>>>>        >
>>>>>>        > But it can't recognise them.
>>>>>>        >
>>>>>>        > Elizabeth
>>>>>>        > _______________________________________________
>>>>>>        > yt-users mailing list
>>>>>>        > yt-users at lists.spacepope.org
>>>>>>        <mailto:yt-users at lists.spacepope.org>
>>>>>>        <mailto:yt-users at lists.spacepope.org
>>>>>>        <mailto: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
>>>>>> <mailto: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 <mailto: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
>>>
>>> _______________________________________________
>>> 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
>



More information about the yt-users mailing list