[Yt-dev] filters for DerivedQuantities

John Wise jwise at astro.princeton.edu
Thu Aug 26 07:57:32 PDT 2010


Awesome, this looks great.  Thanks.  I knew I wasn't doing this the smartest and easiest way!

John

On 26 Aug 2010, at 10:37, Matthew Turk wrote:

> Hi John,
> 
> On Thu, Aug 26, 2010 at 7:00 AM, John Wise <jwise at astro.princeton.edu> wrote:
>> Hi,
>> 
>> I wanted to calculate volume filling fractions and mass fractions of gas that met some criteria.  Specifically, the fractions that have a certain metallicity.  The _Action routine looked promising, but I couldn't figure out how to use it.  I remember there was some talk about filters on the list, but I searched and found that it concerned the halo finder.
>> 
>> I might have reinvented the wheel, but this is how I did it.
>> 
>> http://paste.enzotools.org/show/1125/
>> 
>> It's basically _TotalQuantity with a filter.  Also I wanted it to accept multiple limits to avoid re-reading the data for every filter.
>> 
>> Was there an easier way to do this?
> 
> I think your best bet might be to use cut_region on a data object.
> This accepts a list of filters and uses them as input to the data
> region.
> 
> http://yt.enzotools.org/doc/api/generated/data_sources/yt.lagos.AMR3DData.cut_region.html
> 
> It's poorly documented, but I really think it's a useful object and
> technique.  I'll fix this documentation issue ...  but it actually
> performs the cuts as you go, rather than pre-storing a list of cut
> grids, so it's relatively memory conserving.
> 
> field_cuts is a list of statements that get executed with "grid" in
> the local namespace that should return logicals of the same size as
> the grid's dimensions.  So, for instance:
> 
> In [8]: dd = pf.h.all_data()
> yt         DEBUG      2010-08-26 08:36:42,780 Appending object to
> RedshiftOutput0005 (type: <class 'yt.lagos.HierarchyType.AMRRegion'>)
> yt         DEBUG      2010-08-26 08:36:42,780 Going to obtain []
> 
> In [9]: cr = dd.cut_region(["grid['Density'] > 1e-30",
> "grid['Temperature'] > 1e4"])
> yt         DEBUG      2010-08-26 08:36:51,151 Appending object to
> RedshiftOutput0005 (type: <class
> 'yt.lagos.BaseDataTypes.InLineExtractedRegionBase'>)
> yt         DEBUG      2010-08-26 08:36:51,152 Going to obtain []
> 
> In [10]: dd.quantities["Extrema"]("Temperature")
> Out[10]: [(671.12800064096166, 391670.05340733693)]
> 
> In [11]: cr.quantities["Extrema"]("Temperature")
> Out[11]: [(10000.132791838885, 391670.05340733693)]
> 
> 
> Like I said, I'm sorry this is poorly documented, because I think it's
> a pretty neat technique (and one I've used recently.)
> 
> Best,
> 
> Matt
> 
> 
>> 
>> Thanks,
>> John
>> _______________________________________________
>> Yt-dev mailing list
>> Yt-dev at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org
>> 
> _______________________________________________
> 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