center_of_mass_i = center_of_mass_i / float(nPt) pt_mat_i = np.zeros([2, nPt]) for j in range(nPt): pt_ij = output_i.GetPoint(j) pt_ij_norm = [(pt_ij[0] - center_of_mass_i) / size_i, (pt_ij[1] - center_of_mass_i) / size_i] pt_mat_i[0, j] = pt_ij_norm[0] pt_mat_i[1, j] = pt_ij_norm[1] shape_i = manifolds.kendall2D(nPt) scale_i = manifolds.pos_real(1) scale_i.SetPoint(scale_obs_list[i]) shape_i.SetPoint(pt_mat_i) scale_shape_i = manifolds.scale_kendall2D(nPt) scale_shape_i.SetPoint([scale_i, shape_i]) # Covariates if i in male_list: s_i = 1 else: s_i = 0 # if i in autism_list: # autism_i = 1 # else:
polyData = reader.GetOutput() if cnt == 0: meanPolyDataList[a].DeepCopy(polyData) # print( polyData ) nAtoms_a = polyData.GetNumberOfPoints() nAtoms += nAtoms_a for k in range(nAtoms_a): pos = polyData.GetPoint(k) rad = polyData.GetPointData().GetArray( "Radius Function").GetValue(k) cmrep_ij_pos_a_k = manifolds.euclidean(3) cmrep_ij_rad_a_k = manifolds.pos_real(1) cmrep_ij_pos_a_k.SetPoint(pos) cmrep_ij_rad_a_k.SetPoint(rad) cmrep_ij.AppendAtom([cmrep_ij_pos_a_k, cmrep_ij_rad_a_k]) # cmrep_ij.UpdateMeanRadius() CMRepDataList.append(cmrep_ij) riskGroupList.append(dataInfoList[i].CAPGroupList[j]) ageList.append(dataInfoList[i].AgeList[j]) SubjectList.append(dataInfoList[i].ID) CAPList.append(dataInfoList[i].CAPList[j]) cnt += 1
print(np.linalg.norm(Z_H_flatten)) print(length) print(length_HX) # Set CM-Rep Abstract Point cmrep_ij = manifolds.cmrep_abstract(nAtoms) # Center center_ij = manifolds.euclidean(3) # print( "Center Of Mass " ) center_ij.SetPoint(cenOfMass) # Scale scale_ij = manifolds.pos_real(1) # print( "Scale" ) scale_ij.SetPoint(length_HX) # Abstract Position pos_ij = manifolds.sphere(3 * (nAtoms - 1)) # print( "Abstract Position" ) # print( np.array( Z_H_flatten ).flatten().shape ) # print( 3 * ( nAtoms - 1 ) ) pos_ij.SetPoint(np.array(Z_H_flatten).flatten()) # Radius rad_ij = manifolds.pos_real(nAtoms)
# Geodesic Regression on Sphere Manifold # Manifolds import manifolds import numpy as np import StatsModel as sm # Visualization import matplotlib.pyplot as plt # Ground Truth nManifoldDim = 1 p_interp = manifolds.pos_real(nManifoldDim) v_slope = manifolds.pos_real_tVec(nManifoldDim) p_interp_vec = 2.0 p_interp.SetPoint(p_interp_vec) v_slope.SetTangentVector(2.0) ## Random Ground Truth Generation # random_interp = np.random.rand(3) # random_interp_n = np.divide( random_interp, np.linalg.norm( random_interp ) ) # random_tangent_vector = np.random.rand(3) # random_scale = np.random.rand(1) * 2 # random_tangent_vector = np.multiply( random_tangent_vector, random_scale ) # p_interp.SetSpherePt( random_interp_n ) # v_slope.SetTangentVector( random_tangent_vector )
print( sphere_pt_r.Type ) # Pos Real pos_real_tVec = manifolds.pos_real_tVec( 1 ) pos_real_tVec.SetTangentVector( 2 ) pos_real_tVec.Write( "pos_real_tVec.tvec" ) pos_real_tVec_r = manifolds.pos_real_tVec( 1 ) pos_real_tVec_r.Read( "pos_real_tVec.tvec" ) print( pos_real_tVec_r.tVector ) print( pos_real_tVec_r.nDim ) print( pos_real_tVec_r.Type ) pos_real_pt = manifolds.pos_real( 1 ) pos_real_pt.SetPoint( 4.0 ) pos_real_pt.Write( "pos_real.rpt" ) pos_real_pt_r = manifolds.pos_real( 1 ) pos_real_pt_r.Read( "pos_real.rpt" ) print( pos_real_pt_r.pt ) print( pos_real_pt_r.nDim ) print( pos_real_pt_r.Type ) # CMRep cmrep_tVec = manifolds.cmrep_tVec( 2 ) cmrep_tVec.SetTangentVector( [ [ eucl_tVec, pos_real_tVec ], [ eucl_tVec, pos_real_tVec ] ] ) cmrep_pt = manifolds.cmrep( 2 )