[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