Clearing a derived field from all grids
Hi, Is there a way of deleting a single derived field from all grids? I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep. I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g. ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng Elizabeth
Hi Elizabeth,
You can do:
del ng[fieldname]
-Matt
On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
Hi,
Is there a way of deleting a single derived field from all grids?
I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep.
I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g.
ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng
Elizabeth _______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Hi Matt,
Unfortunately, that doesn't work.
I can do:
del ng[n][fieldname]
But then I'd have to recreate the field afresh for each grid (very
slow), as opposed to just when I rerun the whole loop again:
for c in (nclouds):
grids, cis = kd.locate_neighbors_from_position(position)
for n in range(26):
phi = grids[n]["EffectivePotential"][cis[n]]
del grids[n]["EffectivePotential"]
I really want to delete every c-loop, not every n loop.
Possibly the best way is to loop over the n loop again and delete the
grids afterwards:
for n in range(26):
del grids[n]["EffectivePotential"]
Which is fine, I was just checking if there was a neater way!
Elizabeth
On 12 December 2011 20:18, Matthew Turk
Hi Elizabeth,
You can do:
del ng[fieldname]
-Matt
On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
wrote: Hi,
Is there a way of deleting a single derived field from all grids?
I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep.
I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g.
ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng
Elizabeth _______________________________________________ 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
Hi Elizabeth,
Yes, sorry, I misread 'ng'. I'll be more explicit -- if you have a
GridPatch object, you can do "del grid[field_name]" and it will remove
it. One thing you can do is iterate over the grids, as you note, like
this:
for g in pf.h.grids: del g[field_name]
Good luck.
-Matt
On Mon, Dec 12, 2011 at 8:58 PM, Elizabeth Tasker
Hi Matt,
Unfortunately, that doesn't work.
I can do:
del ng[n][fieldname]
But then I'd have to recreate the field afresh for each grid (very slow), as opposed to just when I rerun the whole loop again:
for c in (nclouds): grids, cis = kd.locate_neighbors_from_position(position) for n in range(26): phi = grids[n]["EffectivePotential"][cis[n]] del grids[n]["EffectivePotential"]
I really want to delete every c-loop, not every n loop.
Possibly the best way is to loop over the n loop again and delete the grids afterwards:
for n in range(26): del grids[n]["EffectivePotential"]
Which is fine, I was just checking if there was a neater way!
Elizabeth
On 12 December 2011 20:18, Matthew Turk
wrote: Hi Elizabeth,
You can do:
del ng[fieldname]
-Matt
On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
wrote: Hi,
Is there a way of deleting a single derived field from all grids?
I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep.
I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g.
ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng
Elizabeth _______________________________________________ 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
Hi Matt,
Sorry, this is still a problem for my set-up.
The issue is that EffectivePotential is only created on some grids,
not all of them, so if I do:
for g in pf.h.grids: del g[field_name]
it freaks out when it can't find the field.
But, I don't want to delete the grids as I go, because then I end up
calculating EffectivePotential a ridiculous number of times.
Yet, if I don't clear it as we go through that c loop, my results get
screwed up.
So what I need is:
for c in (nclouds):
grids, cis = kd.locate_neighbors_from_position(position)
for n in range(26):
phi = grids[n]["EffectivePotential"][cis[n]]
<< clear all the grids that have EffectivePotential on them before
c increments and it needs to be recalculated>>
Is it possible to hack yt so that
for g in pf.h.grids: del g[field_name]
just chills out and moves on if it can't find the field_name? Or do a
(if this field exists, delete grid) line?
Elizabeth
On 13 December 2011 12:14, Matthew Turk
Hi Elizabeth,
Yes, sorry, I misread 'ng'. I'll be more explicit -- if you have a GridPatch object, you can do "del grid[field_name]" and it will remove it. One thing you can do is iterate over the grids, as you note, like this:
for g in pf.h.grids: del g[field_name]
Good luck.
-Matt
On Mon, Dec 12, 2011 at 8:58 PM, Elizabeth Tasker
wrote: Hi Matt,
Unfortunately, that doesn't work.
I can do:
del ng[n][fieldname]
But then I'd have to recreate the field afresh for each grid (very slow), as opposed to just when I rerun the whole loop again:
for c in (nclouds): grids, cis = kd.locate_neighbors_from_position(position) for n in range(26): phi = grids[n]["EffectivePotential"][cis[n]] del grids[n]["EffectivePotential"]
I really want to delete every c-loop, not every n loop.
Possibly the best way is to loop over the n loop again and delete the grids afterwards:
for n in range(26): del grids[n]["EffectivePotential"]
Which is fine, I was just checking if there was a neater way!
Elizabeth
On 12 December 2011 20:18, Matthew Turk
wrote: Hi Elizabeth,
You can do:
del ng[fieldname]
-Matt
On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
wrote: Hi,
Is there a way of deleting a single derived field from all grids?
I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep.
I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g.
ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng
Elizabeth _______________________________________________ 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
Hi Elizabeth,
On Tue, Dec 13, 2011 at 4:14 AM, Elizabeth Tasker
Hi Matt,
Sorry, this is still a problem for my set-up.
The issue is that EffectivePotential is only created on some grids, not all of them, so if I do:
for g in pf.h.grids: del g[field_name]
it freaks out when it can't find the field.
But, I don't want to delete the grids as I go, because then I end up calculating EffectivePotential a ridiculous number of times.
Yet, if I don't clear it as we go through that c loop, my results get screwed up.
So what I need is:
for c in (nclouds):
grids, cis = kd.locate_neighbors_from_position(position) for n in range(26): phi = grids[n]["EffectivePotential"][cis[n]]
<< clear all the grids that have EffectivePotential on them before c increments and it needs to be recalculated>>
Is it possible to hack yt so that
for g in pf.h.grids: del g[field_name]
just chills out and moves on if it can't find the field_name? Or do a (if this field exists, delete grid) line?
No hacking needed. Grids have a "has_key" function. for g in pf.h.grids: if g.has_key(field_name): del g[field_name] -Matt
Elizabeth
On 13 December 2011 12:14, Matthew Turk
wrote: Hi Elizabeth,
Yes, sorry, I misread 'ng'. I'll be more explicit -- if you have a GridPatch object, you can do "del grid[field_name]" and it will remove it. One thing you can do is iterate over the grids, as you note, like this:
for g in pf.h.grids: del g[field_name]
Good luck.
-Matt
On Mon, Dec 12, 2011 at 8:58 PM, Elizabeth Tasker
wrote: Hi Matt,
Unfortunately, that doesn't work.
I can do:
del ng[n][fieldname]
But then I'd have to recreate the field afresh for each grid (very slow), as opposed to just when I rerun the whole loop again:
for c in (nclouds): grids, cis = kd.locate_neighbors_from_position(position) for n in range(26): phi = grids[n]["EffectivePotential"][cis[n]] del grids[n]["EffectivePotential"]
I really want to delete every c-loop, not every n loop.
Possibly the best way is to loop over the n loop again and delete the grids afterwards:
for n in range(26): del grids[n]["EffectivePotential"]
Which is fine, I was just checking if there was a neater way!
Elizabeth
On 12 December 2011 20:18, Matthew Turk
wrote: Hi Elizabeth,
You can do:
del ng[fieldname]
-Matt
On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
wrote: Hi,
Is there a way of deleting a single derived field from all grids?
I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep.
I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g.
ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng
Elizabeth _______________________________________________ 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
yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Problem solved! Thank you!!
Elizabeth
On 13 December 2011 21:03, Matthew Turk
Hi Elizabeth,
On Tue, Dec 13, 2011 at 4:14 AM, Elizabeth Tasker
wrote: Hi Matt,
Sorry, this is still a problem for my set-up.
The issue is that EffectivePotential is only created on some grids, not all of them, so if I do:
for g in pf.h.grids: del g[field_name]
it freaks out when it can't find the field.
But, I don't want to delete the grids as I go, because then I end up calculating EffectivePotential a ridiculous number of times.
Yet, if I don't clear it as we go through that c loop, my results get screwed up.
So what I need is:
for c in (nclouds):
grids, cis = kd.locate_neighbors_from_position(position) for n in range(26): phi = grids[n]["EffectivePotential"][cis[n]]
<< clear all the grids that have EffectivePotential on them before c increments and it needs to be recalculated>>
Is it possible to hack yt so that
for g in pf.h.grids: del g[field_name]
just chills out and moves on if it can't find the field_name? Or do a (if this field exists, delete grid) line?
No hacking needed. Grids have a "has_key" function.
for g in pf.h.grids: if g.has_key(field_name): del g[field_name]
-Matt
Elizabeth
On 13 December 2011 12:14, Matthew Turk
wrote: Hi Elizabeth,
Yes, sorry, I misread 'ng'. I'll be more explicit -- if you have a GridPatch object, you can do "del grid[field_name]" and it will remove it. One thing you can do is iterate over the grids, as you note, like this:
for g in pf.h.grids: del g[field_name]
Good luck.
-Matt
On Mon, Dec 12, 2011 at 8:58 PM, Elizabeth Tasker
wrote: Hi Matt,
Unfortunately, that doesn't work.
I can do:
del ng[n][fieldname]
But then I'd have to recreate the field afresh for each grid (very slow), as opposed to just when I rerun the whole loop again:
for c in (nclouds): grids, cis = kd.locate_neighbors_from_position(position) for n in range(26): phi = grids[n]["EffectivePotential"][cis[n]] del grids[n]["EffectivePotential"]
I really want to delete every c-loop, not every n loop.
Possibly the best way is to loop over the n loop again and delete the grids afterwards:
for n in range(26): del grids[n]["EffectivePotential"]
Which is fine, I was just checking if there was a neater way!
Elizabeth
On 12 December 2011 20:18, Matthew Turk
wrote: Hi Elizabeth,
You can do:
del ng[fieldname]
-Matt
On Dec 12, 2011 5:45 AM, "Elizabeth Tasker"
wrote: Hi,
Is there a way of deleting a single derived field from all grids?
I seem to be having a problem with my derived field not being re-calculated for every element in a loop (it needs to be). Therefore, if I run the complete loop, I get an incorrect result for some of the elements which are totally fine if I tell the code to just calculate that element in a single sweep.
I've tried deleting the individual elements that use that variable, but it doesn't seem to be enough, e.g.
ng, nc = kd.locate_neighbors_from_position(nposn) . . . del ng
Elizabeth _______________________________________________ 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
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
participants (2)
-
Elizabeth Tasker
-
Matthew Turk