[yt-svn] commit/yt: xarthisius: Merged in MatthewTurk/yt (pull request #1331)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Dec 9 11:21:37 PST 2014
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/8ad3ae533a5c/
Changeset: 8ad3ae533a5c
Branch: yt
User: xarthisius
Date: 2014-12-09 19:21:26+00:00
Summary: Merged in MatthewTurk/yt (pull request #1331)
Speed up smoothed covering grid alias fields.
Affected #: 2 files
diff -r 8b8a5a4348f0918536c019ab2bb04bd420fd54ca -r 8ad3ae533a5c38f97a234f7c55fb8afb9cdc8c61 yt/data_objects/construction_data_containers.py
--- a/yt/data_objects/construction_data_containers.py
+++ b/yt/data_objects/construction_data_containers.py
@@ -54,6 +54,8 @@
NeedsDataField,\
NeedsProperty,\
NeedsParameter
+from yt.fields.derived_field import \
+ TranslationFunc
class YTStreamlineBase(YTSelectionContainer1D):
"""
@@ -525,19 +527,26 @@
fields_to_get = [f for f in fields if f not in self.field_data]
fields_to_get = self._identify_dependencies(fields_to_get)
if len(fields_to_get) == 0: return
- fill, gen, part = self._split_fields(fields_to_get)
+ fill, gen, part, alias = self._split_fields(fields_to_get)
if len(part) > 0: self._fill_particles(part)
if len(fill) > 0: self._fill_fields(fill)
+ for a, f in sorted(alias.items()):
+ self[a] = f(self)
+ self.field_data[a].convert_to_units(f.output_units)
if len(gen) > 0: self._generate_fields(gen)
def _split_fields(self, fields_to_get):
fill, gen = self.index._split_fields(fields_to_get)
particles = []
+ alias = {}
for field in gen:
if field[0] == 'deposit':
fill.append(field)
continue
finfo = self.ds._get_field_info(*field)
+ if finfo._function.func_name == "_TranslationFunc":
+ alias[field] = finfo
+ continue
try:
finfo.check_available(self)
except NeedsOriginalGrid:
@@ -546,15 +555,17 @@
finfo = self.ds._get_field_info(*field)
if finfo.particle_type:
particles.append(field)
- gen = [f for f in gen if f not in fill]
+ gen = [f for f in gen if f not in fill and f not in alias]
fill = [f for f in fill if f not in particles]
- return fill, gen, particles
+ return fill, gen, particles, alias
def _fill_particles(self, part):
for p in part:
self[p] = self._pdata_source[p]
def _fill_fields(self, fields):
+ fields = [f for f in fields if f not in self.field_data]
+ if len(fields) == 0: return
output_fields = [np.zeros(self.ActiveDimensions, dtype="float64")
for field in fields]
domain_dims = self.ds.domain_dimensions.astype("int64") \
@@ -786,6 +797,8 @@
def _fill_fields(self, fields):
+ fields = [f for f in fields if f not in self.field_data]
+ if len(fields) == 0: return
ls = self._initialize_level_state(fields)
for level in range(self.level + 1):
domain_dims = self.ds.domain_dimensions.astype("int64") \
diff -r 8b8a5a4348f0918536c019ab2bb04bd420fd54ca -r 8ad3ae533a5c38f97a234f7c55fb8afb9cdc8c61 yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -600,11 +600,6 @@
if inspected >= len(fields_to_get): break
inspected += 1
fi = self.ds._get_field_info(*field)
- if not spatial and any(
- isinstance(v, ValidateSpatial) for v in fi.validators):
- # We don't want to pre-fetch anything that's spatial, as that
- # will be done later.
- continue
fd = self.ds.field_dependencies.get(field, None) or \
self.ds.field_dependencies.get(field[1], None)
# This is long overdue. Any time we *can't* find a field
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list