[yt-svn] commit/yt: ngoldbaum: Merged in xarthisius/yt (pull request #2066)

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Wed Mar 23 13:56:13 PDT 2016


1 new commit in yt:

http://link.bitbucket.org/wf/click?upn=8USRlNyft-2BCzk2l4Ywl6gDx2lD2xxoS9E7MwXb2SMR-2BXcTD42YocdnOFkyGBVHOUgUfP6N6z0V5yyT-2F6jWYUN5wA8TkpYvOeGqIJvbOGL3o-3D_ll4ctv0L-2ByeRZFC1LslHcg6aJmnQ70VruLbmeLQr27A7FIe1fAU5MYdMhryppkuDD7vuGwrKhxlD16FONRY41f5Cm8LbS-2B9Zq2K0wmkb-2BoJz1kJXbFxSIHmFWTINz-2BPs5QzSBdP87YZltpGotwoikQYaEQBqL4ZVt50AkAUKeUiZmdvs1Qv1nd211yFQZgwBdnYZ212z8zZM8R-2FdUMm4b6GRUet10LYUYvbfq-2FB1ID4-3D
Changeset:   ca40689574d6
Branch:      yt
User:        ngoldbaum
Date:        2016-03-23 20:56:04+00:00
Summary:     Merged in xarthisius/yt (pull request #2066)

Ensure that mpi operations retain ImageArray type instead of downgrading to YTArray parent class
Affected #:  1 file

diff -r 7d98d561e68cde5957a324cf1c6d6e3d92b43674 -r ca40689574d6bfcb2ec7155906597da1e247ae40 yt/utilities/parallel_tools/parallel_analysis_interface.py
--- a/yt/utilities/parallel_tools/parallel_analysis_interface.py
+++ b/yt/utilities/parallel_tools/parallel_analysis_interface.py
@@ -28,6 +28,7 @@
     ensure_list, iterable
 
 from yt.config import ytcfg
+from yt.data_objects.image_array import ImageArray
 import yt.utilities.logger
 from yt.utilities.lib.quad_tree import \
     QuadTree, merge_quadtrees
@@ -794,15 +795,25 @@
             if self.comm.rank == root:
                 if isinstance(data, YTArray):
                     info = (data.shape, data.dtype, str(data.units), data.units.registry.lut)
+                    if isinstance(data, ImageArray):
+                        info += ('ImageArray',)
+                    else:
+                        info += ('YTArray',)
                 else:
                     info = (data.shape, data.dtype)
             else:
                 info = ()
             info = self.comm.bcast(info, root=root)
             if self.comm.rank != root:
-                if len(info) == 4:
+                if len(info) == 5:
                     registry = UnitRegistry(lut=info[3], add_default_symbols=False)
-                    data = YTArray(np.empty(info[0], dtype=info[1]), info[2], registry=registry)
+                    if info[-1] == "ImageArray":
+                        data = ImageArray(np.empty(info[0], dtype=info[1]),
+                                          input_units=info[2],
+                                          registry=registry)
+                    else:
+                        data = YTArray(np.empty(info[0], dtype=info[1]), 
+                                       info[2], registry=registry)
                 else:
                     data = np.empty(info[0], dtype=info[1])
             mpi_type = get_mpi_type(info[1])
@@ -1008,6 +1019,10 @@
         # communicate type and shape and optionally units
         if isinstance(arr, YTArray):
             unit_metadata = (str(arr.units), arr.units.registry.lut)
+            if isinstance(arr, ImageArray):
+                unit_metadata += ('ImageArray',)
+            else:
+                unit_metadata += ('YTArray',)
         else:
             unit_metadata = ()
         self.comm.send((arr.dtype.str, arr.shape) + unit_metadata, dest=dest, tag=tag)
@@ -1020,9 +1035,13 @@
         if ne is None and dt is None:
             return self.comm.recv(source=source, tag=tag)
         arr = np.empty(ne, dtype=dt)
-        if len(metadata) == 4:
+        if len(metadata) == 5:
             registry = UnitRegistry(lut=metadata[3], add_default_symbols=False)
-            arr = YTArray(arr, metadata[2], registry=registry)
+            if metadata[-1] == "ImageArray":
+                arr = ImageArray(arr, input_units=metadata[2],
+                                 registry=registry)
+            else:
+                arr = YTArray(arr, metadata[2], registry=registry)
         tmp = arr.view(self.__tocast)
         self.comm.Recv([tmp, MPI.CHAR], source=source, tag=tag)
         return arr
@@ -1041,7 +1060,10 @@
         if isinstance(send, YTArray):
             # We assume send.units is consitent with the units
             # on the receiving end.
-            recv = YTArray(recv, send.units)
+            if isinstance(send, ImageArray):
+                recv = ImageArray(recv, input_units=send.units)
+            else:
+                recv = YTArray(recv, send.units)
         recv[offset:offset+send.size] = send[:]
         dtr = send.dtype.itemsize / tmp_send.dtype.itemsize # > 1
         roff = [off * dtr for off in offsets]

Repository URL: http://link.bitbucket.org/wf/click?upn=8USRlNyft-2BCzk2l4Ywl6gDx2lD2xxoS9E7MwXb2SMR-2BI0v8SbQq-2B8-2FZaaHaJT85r_ll4ctv0L-2ByeRZFC1LslHcg6aJmnQ70VruLbmeLQr27A7FIe1fAU5MYdMhryppkuDD7vuGwrKhxlD16FONRY41RvhB2MI36rgB9n15x5BCXIpXS5-2FClg-2FrLd10jT4ESApkAUafj43UKsHxxu7CS-2FKq8t9mvxCvnwy7lT2taGQLXAsD2pwelq5wn8UUAXCG8FOg3r2ss-2BpQQd5k6t6qvMOZBjkVzUuYRXyV2rys-2F0Ne6k-3D

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-svn-spacepope.org/attachments/20160323/a5e52eab/attachment.htm>


More information about the yt-svn mailing list