[yt-svn] commit/yt: xarthisius: Merged in madcpf/yt (pull request #989)
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Thu Jul 10 00:38:59 PDT 2014
1 new commit in yt:
https://bitbucket.org/yt_analysis/yt/commits/e89295c7393d/
Changeset: e89295c7393d
Branch: yt
User: xarthisius
Date: 2014-07-10 09:38:52
Summary: Merged in madcpf/yt (pull request #989)
ellipsoid bugs fixed
Affected #: 3 files
diff -r c9e843865b2a3f74319fced1e70e98304b32c490 -r e89295c7393d410f8d3f1f2868d1fbad428cd654 yt/analysis_modules/halo_finding/halo_objects.py
--- a/yt/analysis_modules/halo_finding/halo_objects.py
+++ b/yt/analysis_modules/halo_finding/halo_objects.py
@@ -540,22 +540,23 @@
temp_e2[:,dim] = e2_vector[dim]
length = np.abs(np.sum(rr * temp_e2, axis = 1) * (1 - \
np.sum(rr * temp_e0, axis = 1)**2. * mag_A**-2. - \
- np.sum(rr * temp_e1, axis = 1)**2. * mag_B**-2)**(-0.5))
+ np.sum(rr * temp_e1, axis = 1)**2. * mag_B**-2.)**(-0.5))
length[length == np.inf] = 0.
tC_index = np.nanargmax(length)
mag_C = length[tC_index]
# tilt is calculated from the rotation about x axis
# needed to align e1 vector with the y axis
# after e0 is aligned with x axis
- # find the t1 angle needed to rotate about z axis to align e0 to x
- t1 = np.arctan(e0_vector[1] / e0_vector[0])
- RZ = get_rotation_matrix(-t1, (0, 0, 1)).transpose()
- r1 = (e0_vector * RZ).sum(axis = 1)
+ # find the t1 angle needed to rotate about z axis to align e0 onto x-z plane
+ t1 = np.arctan(-e0_vector[1] / e0_vector[0])
+ RZ = get_rotation_matrix(t1, (0, 0, 1))
+ r1 = np.dot(RZ, e0_vector)
# find the t2 angle needed to rotate about y axis to align e0 to x
- t2 = np.arctan(-r1[2] / r1[0])
- RY = get_rotation_matrix(-t2, (0, 1, 0)).transpose()
+ t2 = np.arctan(r1[2] / r1[0])
+ RY = get_rotation_matrix(t2, (0, 1, 0))
r2 = np.dot(RY, np.dot(RZ, e1_vector))
- tilt = np.arctan(r2[2]/r2[1])
+ # find the tilt angle needed to rotate about x axis to align e1 to y and e2 to z
+ tilt = np.arctan(-r2[2] / r2[1])
return (mag_A, mag_B, mag_C, e0_vector[0], e0_vector[1],
e0_vector[2], tilt)
@@ -771,13 +772,13 @@
Returns
-------
- tuple : (cm, mag_A, mag_B, mag_C, e1_vector, tilt)
+ tuple : (cm, mag_A, mag_B, mag_C, e0_vector, tilt)
The 6-tuple has in order:
#. The center of mass as an array.
#. mag_A as a float.
#. mag_B as a float.
#. mag_C as a float.
- #. e1_vector as an array.
+ #. e0_vector as an array.
#. tilt as a float.
Examples
@@ -808,7 +809,7 @@
def __init__(self, pf, id, size=None, CoM=None,
max_dens_point=None, group_total_mass=None, max_radius=None, bulk_vel=None,
rms_vel=None, fnames=None, mag_A=None, mag_B=None, mag_C=None,
- e1_vec=None, tilt=None, supp=None):
+ e0_vec=None, tilt=None, supp=None):
self.pf = pf
self.gridsize = (self.pf.domain_right_edge - \
@@ -824,7 +825,7 @@
self.mag_A = mag_A
self.mag_B = mag_B
self.mag_C = mag_C
- self.e1_vec = e1_vec
+ self.e0_vec = e0_vec
self.tilt = tilt
# locs=the names of the h5 files that have particle data for this halo
self.fnames = fnames
@@ -902,8 +903,8 @@
def _get_ellipsoid_parameters_basic_loadedhalo(self):
if self.mag_A is not None:
- return (self.mag_A, self.mag_B, self.mag_C, self.e1_vec[0],
- self.e1_vec[1], self.e1_vec[2], self.tilt)
+ return (self.mag_A, self.mag_B, self.mag_C, self.e0_vec[0],
+ self.e0_vec[1], self.e0_vec[2], self.tilt)
else:
return self._get_ellipsoid_parameters_basic()
@@ -917,13 +918,13 @@
Returns
-------
- tuple : (cm, mag_A, mag_B, mag_C, e1_vector, tilt)
+ tuple : (cm, mag_A, mag_B, mag_C, e0_vector, tilt)
The 6-tuple has in order:
#. The center of mass as an array.
#. mag_A as a float.
#. mag_B as a float.
#. mag_C as a float.
- #. e1_vector as an array.
+ #. e0_vector as an array.
#. tilt as a float.
Examples
@@ -996,7 +997,7 @@
max_dens_point=None, group_total_mass=None, max_radius=None, bulk_vel=None,
rms_vel=None, fnames=None, mag_A=None, mag_B=None, mag_C=None,
- e1_vec=None, tilt=None, supp=None):
+ e0_vec=None, tilt=None, supp=None):
self.pf = pf
self.gridsize = (self.pf.domain_right_edge - \
@@ -1012,7 +1013,7 @@
self.mag_A = mag_A
self.mag_B = mag_B
self.mag_C = mag_C
- self.e1_vec = e1_vec
+ self.e0_vec = e0_vec
self.tilt = tilt
self.bin_count = None
self.overdensity = None
@@ -1256,8 +1257,8 @@
"x","y","z", "center-of-mass",
"x","y","z",
"vx","vy","vz","max_r","rms_v",
- "mag_A", "mag_B", "mag_C", "e1_vec0",
- "e1_vec1", "e1_vec2", "tilt", "\n"]))
+ "mag_A", "mag_B", "mag_C", "e0_vec0",
+ "e0_vec1", "e0_vec2", "tilt", "\n"]))
for group in self:
f.write("%10i\t" % group.id)
@@ -1569,17 +1570,17 @@
mag_A = float(line[15])
mag_B = float(line[16])
mag_C = float(line[17])
- e1_vec0 = float(line[18])
- e1_vec1 = float(line[19])
- e1_vec2 = float(line[20])
- e1_vec = np.array([e1_vec0, e1_vec1, e1_vec2])
+ e0_vec0 = float(line[18])
+ e0_vec1 = float(line[19])
+ e0_vec2 = float(line[20])
+ e0_vec = np.array([e0_vec0, e0_vec1, e0_vec2])
tilt = float(line[21])
self._groups.append(LoadedHalo(self.pf, halo, size = size,
CoM = CoM,
max_dens_point = max_dens_point,
group_total_mass = group_total_mass, max_radius = max_radius,
bulk_vel = bulk_vel, rms_vel = rms_vel, fnames = fnames,
- mag_A = mag_A, mag_B = mag_B, mag_C = mag_C, e1_vec = e1_vec,
+ mag_A = mag_A, mag_B = mag_B, mag_C = mag_C, e0_vec = e0_vec,
tilt = tilt))
else:
mylog.error("I am unable to parse this line. Too many or too few items. %s" % orig)
diff -r c9e843865b2a3f74319fced1e70e98304b32c490 -r e89295c7393d410f8d3f1f2868d1fbad428cd654 yt/data_objects/data_containers.py
--- a/yt/data_objects/data_containers.py
+++ b/yt/data_objects/data_containers.py
@@ -3587,23 +3587,23 @@
self._tilt = tilt
# find the t1 angle needed to rotate about z axis to align e0 to x
- t1 = np.arctan(e0[1] / e0[0])
+ t1 = np.arctan(-e0[1] / e0[0])
# rotate e0 by -t1
- RZ = get_rotation_matrix(t1, (0,0,1)).transpose()
- r1 = (e0 * RZ).sum(axis = 1)
+ RZ = get_rotation_matrix(t1, (0,0,1))
+ r1 = np.dot(RZ, e0)
# find the t2 angle needed to rotate about y axis to align e0 to x
- t2 = np.arctan(-r1[2] / r1[0])
+ t2 = np.arctan(r1[2] / r1[0])
"""
calculate the original e1
given the tilt about the x axis when e0 was aligned
to x after t1, t2 rotations about z, y
"""
- RX = get_rotation_matrix(-tilt, (1, 0, 0)).transpose()
- RY = get_rotation_matrix(-t2, (0, 1, 0)).transpose()
- RZ = get_rotation_matrix(-t1, (0, 0, 1)).transpose()
- e1 = ((0, 1, 0) * RX).sum(axis=1)
- e1 = (e1 * RY).sum(axis=1)
- e1 = (e1 * RZ).sum(axis=1)
+ RX = get_rotation_matrix(-tilt, (1, 0, 0))
+ RY = get_rotation_matrix(-t2, (0, 1, 0))
+ RZ = get_rotation_matrix(-t1, (0, 0, 1))
+ e1 = np.dot(RX, (0,1,0))
+ e1 = np.dot(RY, e1)
+ e1 = np.dot(RZ, e1)
e2 = np.cross(e0, e1)
self._e1 = e1
diff -r c9e843865b2a3f74319fced1e70e98304b32c490 -r e89295c7393d410f8d3f1f2868d1fbad428cd654 yt/data_objects/tests/test_boolean_regions.py
--- a/yt/data_objects/tests/test_boolean_regions.py
+++ b/yt/data_objects/tests/test_boolean_regions.py
@@ -246,10 +246,8 @@
for n in [1, 2, 4, 8]:
pf = fake_random_pf(64, nprocs=n)
pf.h
- ell1 = pf.h.ellipsoid([0.25]*3, 0.05, 0.05, 0.05, np.array([0.1]*3),
- np.array([0.1]*3))
- ell2 = pf.h.ellipsoid([0.75]*3, 0.05, 0.05, 0.05, np.array([0.1]*3),
- np.array([0.1]*3))
+ ell1 = pf.h.ellipsoid([0.25]*3, 0.05, 0.05, 0.05, np.array([0.1]*3), 0.1)
+ ell2 = pf.h.ellipsoid([0.75]*3, 0.05, 0.05, 0.05, np.array([0.1]*3), 0.1)
# Store the original indices
i1 = ell1['ID']
i1.sort()
@@ -287,10 +285,8 @@
for n in [1, 2, 4, 8]:
pf = fake_random_pf(64, nprocs=n)
pf.h
- ell1 = pf.h.ellipsoid([0.45]*3, 0.05, 0.05, 0.05, np.array([0.1]*3),
- np.array([0.1]*3))
- ell2 = pf.h.ellipsoid([0.55]*3, 0.05, 0.05, 0.05, np.array([0.1]*3),
- np.array([0.1]*3))
+ ell1 = pf.h.ellipsoid([0.45]*3, 0.05, 0.05, 0.05, np.array([0.1]*3), 0.1)
+ ell2 = pf.h.ellipsoid([0.55]*3, 0.05, 0.05, 0.05, np.array([0.1]*3), 0.1)
# Get indices of both.
i1 = ell1['ID']
i2 = ell2['ID']
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