[yt-svn] commit/yt: 2 new changesets

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Tue Dec 9 11:21:35 PST 2014


2 new commits in yt:

https://bitbucket.org/yt_analysis/yt/commits/43f52b70d68c/
Changeset:   43f52b70d68c
Branch:      yt
User:        MatthewTurk
Date:        2014-12-03 19:05:37+00:00
Summary:     Speed up smoothed covering grid alias fields.

This removes a check about field dependencies for spatial fields -- we do now
want to check for them, as we will not be checking for them later.  It also
allows alias fields to be generated more efficiently.
Affected #:  2 files

diff -r 9ee14df5caa348fed77c9e9f1247418f8423efe9 -r 43f52b70d68cd7541e9e6d197710207a004b3d83 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 9ee14df5caa348fed77c9e9f1247418f8423efe9 -r 43f52b70d68cd7541e9e6d197710207a004b3d83 yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -601,11 +601,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


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