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

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Thu Aug 25 09:07:23 PDT 2016


1 new commit in yt:

https://bitbucket.org/yt_analysis/yt/commits/074304ddcca5/
Changeset:   074304ddcca5
Branch:      yt
User:        chummels
Date:        2016-08-25 16:06:55+00:00
Summary:     Merged in ngoldbaum/yt (pull request #2347)

Don't mutate a YTArray if it is passed to the YTArray initializer. Fixes #1264
Affected #:  3 files

diff -r ba2e9f70abdcd55a72b0446bbaf66cdfc77ec1e8 -r 074304ddcca58c47e5ad244ff6f93578704b7745 yt/units/tests/test_ytarray.py
--- a/yt/units/tests/test_ytarray.py
+++ b/yt/units/tests/test_ytarray.py
@@ -28,7 +28,8 @@
     assert_array_equal, \
     assert_equal, assert_raises, \
     assert_array_almost_equal_nulp, \
-    assert_array_almost_equal
+    assert_array_almost_equal, \
+    assert_almost_equal
 from numpy import array
 from yt.units.yt_array import \
     YTArray, YTQuantity, \
@@ -1221,3 +1222,16 @@
     arr = [1, 2, 3]*km
     assert_equal(sum(arr), 6*km)
 
+def test_initialization_different_registries():
+    from yt.testing import fake_random_ds
+
+    ds1 = fake_random_ds(32, length_unit=1)
+    ds2 = fake_random_ds(32, length_unit=3)
+
+    l1 = ds1.quan(0.3, 'unitary')
+    l2 = ds2.quan(l1, 'unitary')
+
+    assert_almost_equal(float(l1.in_cgs()), 0.3)
+    assert_almost_equal(float(l2.in_cgs()), 0.9)
+    assert_almost_equal(float(ds1.quan(0.3, 'unitary').in_cgs()), 0.3)
+    assert_almost_equal(float(ds2.quan(0.3, 'unitary').in_cgs()), 0.9)

diff -r ba2e9f70abdcd55a72b0446bbaf66cdfc77ec1e8 -r 074304ddcca58c47e5ad244ff6f93578704b7745 yt/units/yt_array.py
--- a/yt/units/yt_array.py
+++ b/yt/units/yt_array.py
@@ -389,17 +389,18 @@
                     "ds.arr(%s, \"%s\")" % (input_array, input_units)
                     )
         if isinstance(input_array, YTArray):
+            ret = input_array.view(cls)
             if input_units is None:
                 if registry is None:
                     pass
                 else:
                     units = Unit(str(input_array.units), registry=registry)
-                    input_array.units = units
+                    ret.units = units
             elif isinstance(input_units, Unit):
-                input_array.units = input_units
+                ret.units = input_units
             else:
-                input_array.units = Unit(input_units, registry=registry)
-            return input_array.view(cls)
+                ret.units = Unit(input_units, registry=registry)
+            return ret
         elif isinstance(input_array, np.ndarray):
             pass
         elif iterable(input_array) and input_array:

diff -r ba2e9f70abdcd55a72b0446bbaf66cdfc77ec1e8 -r 074304ddcca58c47e5ad244ff6f93578704b7745 yt/visualization/volume_rendering/off_axis_projection.py
--- a/yt/visualization/volume_rendering/off_axis_projection.py
+++ b/yt/visualization/volume_rendering/off_axis_projection.py
@@ -156,21 +156,26 @@
     camera.resolution = resolution
     if not iterable(width):
         width = data_source.ds.arr([width]*3)
-    camera.position = center - width[2]*normal_vector
+    normal = np.array(normal_vector)
+    normal = normal / np.linalg.norm(normal)
+
+    camera.position = center - width[2]*normal
     camera.focus = center
-    
+
     # If north_vector is None, we set the default here.
-    # This is chosen so that if normal_vector is one of the 
+    # This is chosen so that if normal_vector is one of the
     # cartesian coordinate axes, the projection will match
     # the corresponding on-axis projection.
     if north_vector is None:
         vecs = np.identity(3)
-        t = np.cross(vecs, normal_vector).sum(axis=1)
+        t = np.cross(vecs, normal).sum(axis=1)
         ax = t.argmax()
-        east_vector = np.cross(vecs[ax, :], normal_vector).ravel()
-        north_vector = np.cross(normal_vector, east_vector).ravel()
-    camera.switch_orientation(normal_vector,
-                              north_vector)
+        east_vector = np.cross(vecs[ax, :], normal).ravel()
+        north = np.cross(normal, east_vector).ravel()
+    else:
+        north = np.array(north_vector)
+        north = north / np.linalg.norm(north)
+    camera.switch_orientation(normal, north)
 
     sc.add_source(vol)

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