[Yt-svn] yt-commit r760 - branches/yt-generalization/yt/lagos

mturk at wrangler.dreamhost.com mturk at wrangler.dreamhost.com
Tue Sep 9 02:51:50 PDT 2008


Author: mturk
Date: Tue Sep  9 02:51:50 2008
New Revision: 760
URL: http://yt.spacepope.org/changeset/760

Log:
 * Added iterator methods to the FieldInfoContainers
 * Changed lagos all over to the new field info method, but that might need to
   be cleaned up slightly
 * Changed imports



Modified:
   branches/yt-generalization/yt/lagos/BaseDataTypes.py
   branches/yt-generalization/yt/lagos/FieldInfoContainer.py
   branches/yt-generalization/yt/lagos/HierarchyType.py
   branches/yt-generalization/yt/lagos/OutputTypes.py
   branches/yt-generalization/yt/lagos/__init__.py

Modified: branches/yt-generalization/yt/lagos/BaseDataTypes.py
==============================================================================
--- branches/yt-generalization/yt/lagos/BaseDataTypes.py	(original)
+++ branches/yt-generalization/yt/lagos/BaseDataTypes.py	Tue Sep  9 02:51:50 2008
@@ -313,16 +313,16 @@
             temp = grid[field]
 
     def _generate_field(self, field):
-        if fieldInfo.has_key(field):
+        if self.pf.field_info.has_key(field):
             # First we check the validator
             try:
-                fieldInfo[field].check_available(self)
+                self.pf.field_info[field].check_available(self)
             except NeedsGridType, ngt_exception:
                 # We leave this to be implementation-specific
                 self._generate_field_in_grids(field, ngt_exception.ghost_zones)
                 return False
             else:
-                self[field] = fieldInfo[field](self)
+                self[field] = self.pf.field_info[field](self)
                 return True
         else: # Can't find the field, try as it might
             raise exceptions.KeyError(field)
@@ -433,16 +433,16 @@
 
 
     def _generate_field(self, field):
-        if fieldInfo.has_key(field):
+        if self.pf.field_info.has_key(field):
             # First we check the validator
             try:
-                fieldInfo[field].check_available(self)
+                self.pf.field_info[field].check_available(self)
             except NeedsGridType, ngt_exception:
                 # We leave this to be implementation-specific
                 self._generate_field_in_grids(field, ngt_exception.ghost_zones)
                 return False
             else:
-                self[field] = fieldInfo[field](self)
+                self[field] = self.pf.field_info[field](self)
                 return True
         else: # Can't find the field, try as it might
             raise exceptions.KeyError(field)
@@ -574,14 +574,14 @@
         sl = [slice(None), slice(None), slice(None)]
         sl[self.axis] = slice(wantedIndex, wantedIndex + 1)
         sl = tuple(sl)
-        if fieldInfo.has_key(field) and fieldInfo[field].particle_type:
+        if self.pf.field_info.has_key(field) and self.pf.field_info[field].particle_type:
             return grid[field]
-        elif field in fieldInfo and fieldInfo[field].not_in_all:
+        elif field in self.pf.field_info and self.pf.field_info[field].not_in_all:
             dv = grid[field][sl]
         elif not grid.has_key(field):
             conv_factor = 1.0
-            if fieldInfo.has_key(field):
-                conv_factor = fieldInfo[field]._convert_function(self)
+            if self.pf.field_info.has_key(field):
+                conv_factor = self.pf.field_info[field]._convert_function(self)
             dv = self._read_data_slice(grid, field, self.axis, wantedIndex) * conv_factor
         else:
             dv = grid[field]
@@ -687,7 +687,7 @@
         return na.array(coords).swapaxes(0,1)
 
     def _get_data_from_grid(self, grid, field):
-        if not fieldInfo[field].particle_type:
+        if not self.pf.field_info[field].particle_type:
             pointI = self._get_point_indices(grid)
             if grid[field].size == 1: # dx, dy, dz, cellvolume
                 t = grid[field] * na.ones(grid.ActiveDimensions)
@@ -814,7 +814,7 @@
         for field in fields + [self._weight]:
             if field is None: continue
             dls.append(just_one(grid['d%s' % axis_names[self.axis]]))
-            convs.append(self.pf.units[fieldInfo[field].projection_conversion])
+            convs.append(self.pf.units[self.pf.field_info[field].projection_conversion])
         return na.array(dls), na.array(convs)
 
     def __project_level(self, level, fields):
@@ -1086,11 +1086,11 @@
 
     @restore_grid_state
     def _get_data_from_grid(self, grid, field):
-        if field in fieldInfo and fieldInfo[field].particle_type:
+        if field in self.pf.field_info and self.pf.field_info[field].particle_type:
             if grid.NumberOfParticles == 0: return na.array([])
             pointI = self._get_particle_indices(grid)
             return grid[field][pointI].ravel()
-        if field in fieldInfo and fieldInfo[field].vector_field:
+        if field in self.pf.field_info and self.pf.field_info[field].vector_field:
             pointI = self._get_point_indices(grid)
             f = grid[field]
             return na.array([f[i,:][pointI] for i in range(3)])
@@ -1118,16 +1118,16 @@
             i += np
 
     def _generate_field(self, field):
-        if fieldInfo.has_key(field):
+        if self.pf.field_info.has_key(field):
             # First we check the validator
             try:
-                fieldInfo[field].check_available(self)
+                self.pf.field_info[field].check_available(self)
             except NeedsGridType, ngt_exception:
                 # We leave this to be implementation-specific
                 self._generate_field_in_grids(field, ngt_exception.ghost_zones)
                 return False
             else:
-                self[field] = fieldInfo[field](self)
+                self[field] = self.pf.field_info[field](self)
                 return True
         else: # Can't find the field, try as it might
             raise exceptions.KeyError(field)
@@ -1600,7 +1600,7 @@
         for ax in 'xyz': self['cd%s'%ax] = fake_grid['d%s'%ax]
         for field in fields:
             # Generate the new grid field
-            if field in fieldInfo and fieldInfo[field].take_log:
+            if field in self.pf.field_info and self.pf.field_info[field].take_log:
                 interpolator = TrilinearFieldInterpolator(
                                 na.log10(self[field]), bounds, ['x','y','z'],
                                 truncate = True)

Modified: branches/yt-generalization/yt/lagos/FieldInfoContainer.py
==============================================================================
--- branches/yt-generalization/yt/lagos/FieldInfoContainer.py	(original)
+++ branches/yt-generalization/yt/lagos/FieldInfoContainer.py	Tue Sep  9 02:51:50 2008
@@ -29,6 +29,7 @@
 import numpy as na
 import inspect
 import copy
+import itertools
 
 from yt.funcs import *
 
@@ -43,9 +44,13 @@
         if key in self._universal_field_list:
             return self._universal_field_list[key]
         raise KeyError
+    def keys(self):
+        return self._universal_field_list.keys()
+    def __iter__(self):
+        return self._universal_field_list.iterkeys()
     def __setitem__(self, key, val):
         self._universal_field_list[key] = val
-    def add_field(name, function = None, **kwargs):
+    def add_field(self, name, function = None, **kwargs):
         if function == None:
             if kwargs.has_key("function"):
                 function = kwargs.pop("function")
@@ -60,6 +65,11 @@
 class CodeFieldInfoContainer(FieldInfoContainer):
     def __setitem__(self, key, val):
         self._field_list[key] = val
+    def __iter__(self):
+        return itertools.chain(self._field_list.iterkeys(),
+                        self._universal_field_list.iterkeys())
+    def keys(self):
+        return set(self._field_list.keys() + self._universal_field_list.keys())
     def __getitem__(self, key):
         if key in self._field_list:
             return self._field_list[key]

Modified: branches/yt-generalization/yt/lagos/HierarchyType.py
==============================================================================
--- branches/yt-generalization/yt/lagos/HierarchyType.py	(original)
+++ branches/yt-generalization/yt/lagos/HierarchyType.py	Tue Sep  9 02:51:50 2008
@@ -506,6 +506,7 @@
         """
         # Expect filename to be the name of the parameter file, not the
         # hierarchy
+        self.field_info = EnzoFields()
         self.data_style = data_style
         self.hierarchy_filename = os.path.abspath(pf.parameter_filename) \
                                + ".hierarchy"
@@ -813,13 +814,13 @@
                 field_list = field_list.union(sets.Set(gf))
         self.field_list = list(field_list)
         for field in self.field_list:
-            if field in fieldInfo: continue
+            if field in self.field_info: continue
             mylog.info("Adding %s to list of fields", field)
             add_field(field, lambda a, b: None)
         self.derived_field_list = []
-        for field in fieldInfo:
+        for field in self.field_info:
             try:
-                fd = fieldInfo[field].get_dependencies(pf = self.parameter_file)
+                fd = self.field_info[field].get_dependencies(pf = self.parameter_file)
             except:
                 continue
             available = na.all([f in self.field_list for f in fd.requested])
@@ -851,6 +852,7 @@
 
 class OrionHierarchy(AMRHierarchy):
     def __init__(self,pf,data_style=7):
+        self.field_info = OrionFields()
         self.field_indexes = {}
         self.parameter_file = weakref.proxy(pf)
         header_filename = os.path.join(pf.fullplotdir,'Header')
@@ -1057,9 +1059,9 @@
 
     def _setup_field_list(self):
         self.derived_field_list = []
-        for field in fieldInfo:
+        for field in self.field_info:
             try:
-                fd = fieldInfo[field].get_dependencies(pf = self.parameter_file)
+                fd = self.field_info[field].get_dependencies(pf = self.parameter_file)
             except:
                 continue
             available = na.all([f in self.field_list for f in fd.requested])

Modified: branches/yt-generalization/yt/lagos/OutputTypes.py
==============================================================================
--- branches/yt-generalization/yt/lagos/OutputTypes.py	(original)
+++ branches/yt-generalization/yt/lagos/OutputTypes.py	Tue Sep  9 02:51:50 2008
@@ -146,6 +146,7 @@
         cp = os.path.join(self.directory, "cool_rates.out")
         if os.path.exists(cp):
             self.cool = EnzoTable(cp, cool_out_key)
+        self.field_info = EnzoFields()
 
     def _parse_parameter_file(self):
         """

Modified: branches/yt-generalization/yt/lagos/__init__.py
==============================================================================
--- branches/yt-generalization/yt/lagos/__init__.py	(original)
+++ branches/yt-generalization/yt/lagos/__init__.py	Tue Sep  9 02:51:50 2008
@@ -73,7 +73,15 @@
 import HDF5LightReader
 from EnzoDefs import *
 from OrionDefs import *
-from DerivedFields import *
+
+# Now our fields
+#from DerivedFields import *
+from FieldInfoContainer import *
+from UniversalFields import *
+from EnzoFields import *
+from OrionFields import *
+
+# Derived quantities
 from DerivedQuantities import DerivedQuantityCollection, GridChildMaskWrapper
 from DataReadingFuncs import *
 from ClusterFiles import *



More information about the yt-svn mailing list