[Yt-svn] yt-commit r478 - in trunk/yt: lagos reason

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Fri May 16 09:05:24 PDT 2008


Author: mturk
Date: Fri May 16 09:05:19 2008
New Revision: 478
URL: http://yt.spacepope.org/changeset/478

Log:
Reason now only displays those fields that the hierarchy file has detected as being available.  Hierarchy file now detects derived fields.

Modified:
   trunk/yt/lagos/DerivedFields.py
   trunk/yt/lagos/HierarchyType.py
   trunk/yt/reason/Notebook.py

Modified: trunk/yt/lagos/DerivedFields.py
==============================================================================
--- trunk/yt/lagos/DerivedFields.py	(original)
+++ trunk/yt/lagos/DerivedFields.py	Fri May 16 09:05:19 2008
@@ -339,6 +339,11 @@
     add_field("particle_%s" % pf, function=pfunc,
               validators = [ValidateSpatial(0)],
               particle_type=True)
+for pf in ["creation_time", "dynamical_time", "metallicity_fraction"]:
+    pfunc = particle_func(pf)
+    add_field(pf, function=pfunc,
+              validators = [ValidateSpatial(0)],
+              particle_type=True)
 add_field("particle mass", function=particle_func("particle_mass"),
           validators=[ValidateSpatial(0)], particle_type=True)
 

Modified: trunk/yt/lagos/HierarchyType.py
==============================================================================
--- trunk/yt/lagos/HierarchyType.py	(original)
+++ trunk/yt/lagos/HierarchyType.py	Fri May 16 09:05:19 2008
@@ -326,7 +326,7 @@
         mylog.info("Caching hierarchy information")
         allArrays = na.zeros((self.num_grids,18),'float64')
         allArrays[:,0:3] = self.gridDimensions[:]
-        allArrays[:,3:6] = self.gridStartIndices[:]  
+        allArrays[:,3:6] = self.gridStartIndices[:]
         allArrays[:,6:9] = self.gridEndIndices[:]
         allArrays[:,9:12] = self.gridLeftEdge[:]
         allArrays[:,12:15] = self.gridRightEdge[:]
@@ -410,21 +410,7 @@
             grid._prepare_grid()
         self.__setup_grid_dxs()
         mylog.debug("Prepared")
-        field_list = self.get_data("/", "DataFields")
-        if field_list == None:
-            mylog.info("Gathering a field list (this may take a moment.)")
-            field_list = sets.Set()
-            if self.num_grids > 40:
-                starter = na.random.randint(0, 20)
-                random_sample = na.mgrid[starter:len(self.grids)-1:20j].astype("int32")
-                mylog.debug("Checking grids: %s", random_sample.tolist())
-            else:
-                random_sample = na.mgrid[0:max(len(self.grids)-1,1)].astype("int32")
-            for grid in self.grids[(random_sample,)]:
-                gf = grid.getFields()
-                mylog.debug("Grid %s has: %s", grid.id, gf)
-                field_list = field_list.union(sets.Set(gf))
-        self.field_list = list(field_list)
+        self.__setup_field_lists()
         self.levelIndices = {}
         self.levelNum = {}
         ad = self.gridEndIndices - self.gridStartIndices + 1
@@ -475,6 +461,33 @@
                     if grid.Parent: grid._guess_properties_from_parent()
                 if pbar: pbar.finish()
 
+    def __setup_field_lists(self):
+        field_list = self.get_data("/", "DataFields")
+        if field_list == None:
+            mylog.info("Gathering a field list (this may take a moment.)")
+            field_list = sets.Set()
+            if self.num_grids > 40:
+                starter = na.random.randint(0, 20)
+                random_sample = na.mgrid[starter:len(self.grids)-1:20j].astype("int32")
+                mylog.debug("Checking grids: %s", random_sample.tolist())
+            else:
+                random_sample = na.mgrid[0:max(len(self.grids)-1,1)].astype("int32")
+            for grid in self.grids[(random_sample,)]:
+                gf = grid.getFields()
+                mylog.debug("Grid %s has: %s", grid.id, gf)
+                field_list = field_list.union(sets.Set(gf))
+        self.field_list = list(field_list)
+        self.derived_field_list = []
+        for field in fieldInfo:
+            fd = fieldInfo[field].get_dependencies(pf = self.parameter_file)
+            available = na.all([f in self.field_list for f in fd.requested])
+            if available: self.derived_field_list.append(field)
+        for field in self.field_list:
+            if field not in self.derived_field_list:
+                self.derived_field_list.append(field)
+
+
+
     def __select_level(self, level):
         # We return a numarray of the indices of all the grids on a given level
         indices = na.where(self.gridLevels[:,0] == level)[0]
@@ -654,7 +667,7 @@
     def export_particles_pb(self, filename, filter = 1, indexboundary = 0, fields = None, scale=1.0):
         """
         Exports all the star particles, or a subset, to pb-format *filename*
-        for viewing in partiview.  Filters based on particle_type=*filter*, 
+        for viewing in partiview.  Filters based on particle_type=*filter*,
         particle_index>=*indexboundary*, and exports *fields*, if supplied.
         Otherwise, index, position(x,y,z).  Optionally *scale* by a given
         factor before outputting.

Modified: trunk/yt/reason/Notebook.py
==============================================================================
--- trunk/yt/reason/Notebook.py	(original)
+++ trunk/yt/reason/Notebook.py	Fri May 16 09:05:19 2008
@@ -621,11 +621,11 @@
         self.plot = be.SlicePlot(self.data, self.field, figure=self.figure, axes=self.axes)
 
     def QueryFields(self):
-        nativeFields = self.outputfile.hierarchy.field_list
-        nativeFields.sort()
-        derivedFields = lagos.fieldInfo.keys()
-        derivedFields.sort()
-        return nativeFields + [""] + derivedFields
+        fields = []
+        for f in self.outputfile.hierarchy.derived_field_list:
+            if f in lagos.fieldInfo and lagos.fieldInfo[f].particle_type: continue
+            fields.append(f)
+        return sorted(fields)
 
 class ProjPlotPage(VMPlotPage):
     def makePlot(self):



More information about the yt-svn mailing list