def odf(self, Pr): """ fill the odf by sampling radially on the pdf crucial parameter here is self.radius """ odf = np.zeros(self.odfn) """ #for all odf vertices for m in range(self.odfn): xi=self.origin+self.radius*self.odf_vertices[m,0] yi=self.origin+self.radius*self.odf_vertices[m,1] zi=self.origin+self.radius*self.odf_vertices[m,2] #apply linear 3d interpolation (trilinear) PrI=map_coordinates(Pr,np.vstack((xi,yi,zi)),order=1) for i in range(self.radiusn): odf[m]=odf[m]+PrI[i]*self.radius[i]**2 """ PrIs = map_coordinates(Pr, self.Xs, order=1) #print PrIs.shape """ in pdf_to_odf an optimized version of the function below for m in range(self.odfn): for i in range(self.radiusn): odf[m]=odf[m]+PrIs[m*self.radiusn+i]*self.radius[i]**2 """ pdf_to_odf(odf, PrIs, self.radius, self.odfn, self.radiusn) return odf
def odf(self,Pr): """ fill the odf by sampling radially on the pdf crucial parameter here is self.radius """ odf = np.zeros(self.odfn) """ #for all odf vertices for m in range(self.odfn): xi=self.origin+self.radius*self.odf_vertices[m,0] yi=self.origin+self.radius*self.odf_vertices[m,1] zi=self.origin+self.radius*self.odf_vertices[m,2] #apply linear 3d interpolation (trilinear) PrI=map_coordinates(Pr,np.vstack((xi,yi,zi)),order=1) for i in range(self.radiusn): odf[m]=odf[m]+PrI[i]*self.radius[i]**2 """ PrIs=map_coordinates(Pr,self.Xs,order=1) #print PrIs.shape """ in pdf_to_odf an optimized version of the function below for m in range(self.odfn): for i in range(self.radiusn): odf[m]=odf[m]+PrIs[m*self.radiusn+i]*self.radius[i]**2 """ pdf_to_odf(odf,PrIs, self.radius,self.odfn,self.radiusn) return odf
def pdf_odf(Pr, sphere, rradius, interp_coords): r""" Calculates the real ODF from the diffusion propagator(PDF) Pr Parameters ---------- Pr : array, shape (X, X, X) probability density function sphere : Sphere reconstruction sphere rradius : array, shape (N,) interpolation range on the radius interp_coords : array, shape (N, 3) coordinates in the pdf for interpolating the odf """ verts_no = sphere.vertices.shape[0] odf = np.zeros(verts_no) rradius_no = len(rradius) #interp_coords = pdf_interp_coords(sphere, rradius, origin) PrIs = map_coordinates(Pr, interp_coords, order=1) pdf_to_odf(odf, PrIs, rradius, verts_no, rradius_no) return odf