[yt-svn] commit/yt: MatthewTurk: Merged in ngoldbaum/yt/yt-3.0 (pull request #935)

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Fri Jun 6 05:54:38 PDT 2014


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/20366abd696f/
Changeset:   20366abd696f
Branch:      yt-3.0
User:        MatthewTurk
Date:        2014-06-06 14:54:30
Summary:     Merged in ngoldbaum/yt/yt-3.0 (pull request #935)

Be much more careful about sanitizing data object centers. Closes #848
Affected #:  4 files

diff -r 296453fafbedebdbcdf01e1ebddb3bcee3f0951e -r 20366abd696f82c865749d7d1b998d5b3fa87795 yt/analysis_modules/halo_analysis/halo_callbacks.py
--- a/yt/analysis_modules/halo_analysis/halo_callbacks.py
+++ b/yt/analysis_modules/halo_analysis/halo_callbacks.py
@@ -81,13 +81,13 @@
     dpf = halo.halo_catalog.data_pf
     hpf = halo.halo_catalog.halos_pf
     center = dpf.arr([halo.quantities["particle_position_%s" % axis] \
-                      for axis in "xyz"]) / dpf.length_unit
-    radius = factor * halo.quantities[radius_field] / dpf.length_unit
+                      for axis in "xyz"])
+    radius = factor * halo.quantities[radius_field]
     if radius <= 0.0:
         halo.data_object = None
         return
     try:
-        sphere = dpf.sphere(center, (radius, "code_length"))
+        sphere = dpf.sphere(center, radius)
     except YTSphereTooSmall:
         halo.data_object = None
         return

diff -r 296453fafbedebdbcdf01e1ebddb3bcee3f0951e -r 20366abd696f82c865749d7d1b998d5b3fa87795 yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -137,19 +137,25 @@
             self.center = None
             self.set_field_parameter('center', self.center)
             return
+        elif isinstance(center, YTArray):
+            self.center = self.pf.arr(center.in_cgs())
+            self.center.convert_to_units('code_length')
         elif isinstance(center, (types.ListType, types.TupleType, np.ndarray)):
-            center = self.pf.arr(center, 'code_length')
+            if isinstance(center[0], YTQuantity):
+                self.center = self.pf.arr([c.in_cgs() for c in center])
+                self.center.convert_to_units('code_length')
+            else:
+                self.center = self.pf.arr(center, 'code_length')
         elif isinstance(center, basestring):
             if center.lower() in ("c", "center"):
-                center = self.pf.domain_center
+                self.center = self.pf.domain_center
              # is this dangerous for race conditions?
             elif center.lower() in ("max", "m"):
-                center = self.pf.h.find_max(("gas", "density"))[1]
+                self.center = self.pf.h.find_max(("gas", "density"))[1]
             elif center.startswith("max_"):
-                center = self.pf.h.find_max(center[4:])[1]
+                self.center = self.pf.h.find_max(center[4:])[1]
         else:
-            center = np.array(center, dtype='float64')
-        self.center = self.pf.arr(center, 'code_length')
+            self.center = self.pf.arr(center, 'code_length', dtype='float64')
         self.set_field_parameter('center', self.center)
 
     def get_field_parameter(self, name, default=None):

diff -r 296453fafbedebdbcdf01e1ebddb3bcee3f0951e -r 20366abd696f82c865749d7d1b998d5b3fa87795 yt/geometry/selection_routines.pyx
--- a/yt/geometry/selection_routines.pyx
+++ b/yt/geometry/selection_routines.pyx
@@ -541,7 +541,7 @@
 
     def __init__(self, dobj):
         for i in range(3):
-            self.center[i] = dobj.center[i]
+            self.center[i] = _ensure_code(dobj.center[i])
         self.radius = _ensure_code(dobj.radius)
         self.radius2 = self.radius * self.radius
 
@@ -702,7 +702,7 @@
         cdef int i
         for i in range(3):
             self.norm_vec[i] = dobj._norm_vec[i]
-            self.center[i] = dobj.center[i]
+            self.center[i] = _ensure_code(dobj.center[i])
         self.radius = _ensure_code(dobj._radius)
         self.radius2 = self.radius * self.radius
         self.height = _ensure_code(dobj._height)

diff -r 296453fafbedebdbcdf01e1ebddb3bcee3f0951e -r 20366abd696f82c865749d7d1b998d5b3fa87795 yt/units/yt_array.py
--- a/yt/units/yt_array.py
+++ b/yt/units/yt_array.py
@@ -284,7 +284,7 @@
             return input_array
         elif isinstance(input_array, np.ndarray):
             pass
-        elif iterable(input_array):
+        elif iterable(input_array) and input_array:
             if isinstance(input_array[0], YTArray):
                 return YTArray(np.array(input_array, dtype=dtype),
                                input_array[0].units)

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