[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