From 7411f0ad5117eff433a150b71442c1d92f69bb68 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Fri, 7 Oct 2022 13:56:47 +0200 Subject: [PATCH 01/14] added a new module "modelling.py" to allow for forward modelling and testing systematics. Includes functionality to create 2D nfw shear and convergence maps, kaiser-squires transformation and angular and radial profiles. --- clmm/modelling.py | 245 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 clmm/modelling.py diff --git a/clmm/modelling.py b/clmm/modelling.py new file mode 100644 index 000000000..a257f6c47 --- /dev/null +++ b/clmm/modelling.py @@ -0,0 +1,245 @@ +from astropy.cosmology import LambdaCDM +from astropy import constants as const +from astropy import units as u +import numpy as np +import matplotlib.pyplot as plt + +class profiles: + + def __init__(self,M,c,z_l,z_s,sig=False): + import numpy as np + from astropy.cosmology import FlatLambdaCDM + from astropy import constants as const + from astropy import units as u + + self.M = M + self.c = c + self.z_l = z_l + self.z_s = z_s + self.sig = sig + + self.cosmology() + + return + + def cosmology(self, H_0 = 70., Omega_m = 0.3, Omega_Lambda = 0.7, Tcmb0=2.725): + + self.H_0 = H_0 + self.Omega_m = Omega_m + self.Tcmb0 = Tcmb0 + self.Omega_Lambda = Omega_Lambda + + return + + + def get_r_vals(self,nbins,lower_r,upper_r,log=False): + '''create radial bins for profiles + nbins: number of bins + lower_r: lowest bin value + upper_r: highest bin value + returns bin edges in units provided, or kpc if none are provided + ''' + #create r values + self.nbins = nbins + self.lower_r = lower_r + self.upper_r = upper_r + self.log_r_vals = log + + + if self.log_r_vals: + if self.lower_r == 0: + raise ValueError('log(lower_r) cannot be evaluated for lower_r = 0') + + r_vals = np.logspace(np.log10(self.lower_r),np.log10(self.upper_r),self.nbins+1) + + if not self.log_r_vals: + r_vals = np.linspace(self.lower_r,self.upper_r,self.nbins+1) + + #if no units are provided, set units to kpc, otherwise keep input units + r_vals *= u.dimensionless_unscaled + if r_vals.unit == u.dimensionless_unscaled: + r_vals *= u.kpc + + self.r_vals = r_vals + return self.r_vals + + def kappa_NFW(self,r_vals=None): + '''r_vals: radial bin values for halo lensing profile + M: halo mass + c: concentration + z_l: lens redshift + z_s: source redshift + delta_sig: If False, return convergence profile, if True, return delta Sigma profile + ''' + + if np.all(r_vals.value) == None: + r_vals = self.r_vals + + cosmo = LambdaCDM(H0=self.H_0, Om0=self.Omega_m, Ode0=self.Omega_Lambda, Tcmb0=self.Tcmb0) + + r_200 = ( (const.G * self.M)/(100. * cosmo.H(self.z_l)**2) )**(1./3.) + r_s = r_200 * self.c + delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) + + x = r_vals/r_s + + Sigma_crit_coeff = const.c**2 / (4. * np.pi * const.G) + + D_s = cosmo.angular_diameter_distance(self.z_s) + D_d = cosmo.angular_diameter_distance(self.z_l) + D_ds = cosmo.angular_diameter_distance_z1z2(self.z_l,self.z_s) + + Sigma_crit = Sigma_crit_coeff * D_s / (D_d * D_ds) + + k_s = cosmo.critical_density(self.z_l) * delta_c * r_s + + coeff = 2.*k_s / (x**2 - 1.) + + f_internal = 1. - (2./np.lib.scimath.sqrt(1.-x**2)) * np.arctanh(np.lib.scimath.sqrt((1.-x)/(1.+x))) + + nfw = coeff * f_internal + + if self.sig: + return nfw.to(const.M_sun / u.Mpc**2).real + if not self.sig: + return (nfw.real / Sigma_crit).decompose() + + def make_grid(self,npix,r_max): + '''make 2D grid centered on origin + npix: resolution of grid + r_max: width of grid is 2*r_max + ''' + + npix *= 1j #imaginary so that ogrid knows to interpret npix as array size + y,x = np.ogrid[-r_max:r_max:npix,-r_max:r_max:npix] + r_2D = np.hypot(y,x) + + return r_2D + + def kappa_NFW_2D(self,npix,r_max): + + '''create 2D NFW profile on grid + ''' + + self.npix = npix + self.r_max = r_max + r_2D = self.make_grid(self.npix,self.r_max) + + return self.kappa_NFW(r_2D) + + + +def KaiserSquires(Sigma): + + kappa_tilde = np.fft.fft2(Sigma) + + k = np.fft.fftfreq(kappa_tilde.shape[0]) + + oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2) + oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :] + + oper_1[0, 0] = -1 + oper_2[0, 0] = -1 + + e1_tilde = oper_1*kappa_tilde + e2_tilde = oper_2*kappa_tilde + + e1 = np.fft.ifft2(e1_tilde).real + e2 = np.fft.ifft2(e2_tilde).real + + return e1, e2 + +def getTangetial(e1, e2, center, dx=10./1000.): + + n = e1.shape[0] + + xx = np.arange(-n/2, n/2)*dx + + XX, YY = np.meshgrid(xx, xx) + + center_1, center_2 = center + + from_cent_1 = XX - center_1 + from_cent_2 = YY - center_2 + + angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2)) + radius = np.sqrt(from_cent_1**2+from_cent_2**2) + + angle[np.isnan(angle)] = 0 + + et = - e1*np.cos(2*angle) - e2*np.sin(2*angle) + ex = + e1*np.sin(2*angle) - e2*np.cos(2*angle) + + return et, ex, radius, angle + +def getRadial(radius_map,r_bins,angle_map,phi_bins,kappa_map,et_map): + + _N = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + _K = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + _GT = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + + ii_r = np.digitize(radius_map, r_bins) - 1 + ii_phi = np.digitize(angle_map, phi_bins) - 1 + + for i_r, i_phi, kk, gg in zip(ii_r.flatten(), ii_phi.flatten(), kappa_map.flatten(), et_map.flatten()): + + _N[i_r, i_phi] += 1 + _K[i_r, i_phi] += kk + _GT[i_r, i_phi] += gg + + kappa_radial = _K/_N + gammat_radial = _GT/_N + + return kappa_radial,gammat_radial + + +def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map, + kappa_radial,gammat_radial,r_bins): + + fig, ax = plt.subplots(2,3,figsize=[9,6]) + ax.ravel() + + ax[0,0].imshow(kappa_map,origin = 'lower') + ax[0,0].set_title(r'$\kappa$') + + + ax[0,1].imshow(e1_map,origin = 'lower') + ax[0,1].set_title(r'$e_1$') + + + ax[0,2].imshow(e2_map,origin = 'lower') + ax[0,2].set_title(r'$e_2$') + + + ax[1,0].imshow(et_map,origin = 'lower') + ax[1,0].set_title(r'$e_t$') + + + ax[1,1].imshow(ex_map,origin = 'lower') + ax[1,1].set_title(r'$e_x$') + + + + r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1]) + + ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\kappa(r)$') + ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\gamma_t(r)$') + + plt.legend() + plt.show() + + fig,ax = plt.subplots(1,2) + + ax[0].imshow(kappa_radial,origin='lower') + ax[1].imshow(gammat_radial,origin='lower') + + ax[0].set_ylabel('r') + ax[0].set_xlabel('$\phi$') + + ax[1].set_ylabel('r') + ax[1].set_xlabel('$\phi$') + + ax[0].set_title(r'$\kappa$') + ax[1].set_title(r'$\gamma_t$') + + plt.show() From 9471d8eec10d78d006ef0dbe827230069a6e9063 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Fri, 7 Oct 2022 13:59:48 +0200 Subject: [PATCH 02/14] added a demo notebook to demonstrate functionality of modelling.py --- examples/demo_modelling.ipynb | 12663 ++++++++++++++++++++++++++++++++ 1 file changed, 12663 insertions(+) create mode 100644 examples/demo_modelling.ipynb diff --git a/examples/demo_modelling.ipynb b/examples/demo_modelling.ipynb new file mode 100644 index 000000000..06cd1aece --- /dev/null +++ b/examples/demo_modelling.ipynb @@ -0,0 +1,12663 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "45308159", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'svg'\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import sys\n", + "sys.path.append('/home/cdavies/CLMM/')\n", + "import clmm\n", + "from clmm import Cosmology\n", + "from clmm.support import mock_data as mock\n", + "from clmm.galaxycluster import GalaxyCluster\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import clmm.utils as u\n", + "\n", + "from modelling import *" + ] + }, + { + "cell_type": "markdown", + "id": "7ba07a0d", + "metadata": {}, + "source": [ + "Make sure we know which version we're using" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bbd94d3a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1.0.1'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clmm.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "66c330d7", + "metadata": {}, + "source": [ + "The modelling module can be used to create 2D lensing maps. This allows us to forward model systematics, starting at the map level. In this notebook, we use miscentering as an example systematic." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8aea13a2", + "metadata": {}, + "outputs": [], + "source": [ + "#Define the center of the map (in Mpc)\n", + "center_1 = 0\n", + "center_2 = 0\n", + "\n", + "#define radial and angular bins\n", + "N_r_bins = 30\n", + "N_phi_bins = 25\n", + "r_bins = np.insert(np.logspace(-2, 1, N_r_bins), 0, 0)\n", + "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "909edd57", + "metadata": {}, + "outputs": [], + "source": [ + "#specify parameters for NFW halo\n", + "c = 1 #concentration\n", + "z_l = 1.0 #lens redshift\n", + "z_s = 2.0 #source redshift\n", + "Mass = 1E13 * const.M_sun\n", + "\n", + "#define physical size of grid\n", + "units = u.mpc\n", + "r_max = 10 * units\n", + "\n", + "#number of pixels in grid\n", + "npix = 512\n", + "\n", + "#define physcial size of a pixel\n", + "dx = r_max/npix" + ] + }, + { + "cell_type": "markdown", + "id": "de3d76d6", + "metadata": {}, + "source": [ + "Now we can create the convergence maps" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5b51bbc8", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" + ] + } + ], + "source": [ + "#lensing_map has the option to return either Sigma map or the convergence map.\n", + "lensing_map = profiles(Mass, c, z_l, z_s, sig=False) \n", + "#make map\n", + "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b0dc4b6c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:29.110446\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "axlim = 2*r_max.value\n", + "plt.imshow(kappa_map,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$\\\\kappa$',rotation=0)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e073090a", + "metadata": {}, + "source": [ + "Repeat the procedure for a Sigma map" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2aaf9cb0", + "metadata": {}, + "outputs": [], + "source": [ + "#lensing_map has the option to return either Sigma map or the convergence map.\n", + "lensing_map = profiles(Mass, c, z_l, z_s, sig=True) \n", + "#make map\n", + "Sigma_map = lensing_map.kappa_NFW_2D(npix,r_max)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "72993065", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:29.510839\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "axlim = 2*r_max.value\n", + "plt.imshow(kappa_map,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$\\\\Sigma [M_\\odot\\; Mpc^{-2}]$',rotation=90)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4b28b017", + "metadata": {}, + "source": [ + "We can transform from the convergence to the shear with the Kaiser Squires algorithm, returning the e1 and e2 shear maps." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "eec34ea3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/cdavies/CLMM_testing/modelling.py:138: RuntimeWarning: divide by zero encountered in true_divide\n", + " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", + "/home/cdavies/CLMM_testing/modelling.py:138: RuntimeWarning: invalid value encountered in multiply\n", + " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", + "/home/cdavies/CLMM_testing/modelling.py:139: RuntimeWarning: divide by zero encountered in true_divide\n", + " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n", + "/home/cdavies/CLMM_testing/modelling.py:139: RuntimeWarning: invalid value encountered in multiply\n", + " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n" + ] + } + ], + "source": [ + "e1_map, e2_map = KaiserSquires(kappa_map)" + ] + }, + { + "cell_type": "markdown", + "id": "25f42de1", + "metadata": {}, + "source": [ + "Plot the e1 and e2 maps" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2ba6da86", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:29.887896\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:30.142227\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(e1_map)\n", + "plt.colorbar()\n", + "plt.show()\n", + "\n", + "plt.imshow(e2_map)\n", + "plt.colorbar()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "12c04b61", + "metadata": {}, + "source": [ + "from the convergence map we can compute the convergence profile, and from the e1 and e2 maps we can compute the tangential shear profile." + ] + }, + { + "cell_type": "markdown", + "id": "f6af6b7e", + "metadata": {}, + "source": [ + "The getTangential function uses the e1 and e2 maps as an input, along with a map center, and returns e_tangential and e_cross maps about a given center. \n", + "\n", + "The function also returns a radius map and an angle map, which is used when computing radial profile with getRadial" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "6b8c1825", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/cdavies/CLMM_testing/modelling.py:165: RuntimeWarning: invalid value encountered in true_divide\n", + " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n" + ] + } + ], + "source": [ + "et_map, ex_map, radius_map, angle_map = getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e743f1b8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:30.448461\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:30.697453\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(et_map)\n", + "plt.colorbar()\n", + "plt.show()\n", + "\n", + "plt.imshow(ex_map)\n", + "plt.colorbar()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "cde1c95f", + "metadata": {}, + "source": [ + "With the radius_map and angle_map, we can calculate the radial convergence profile from the kappa map and the radial tangential shear profile from the e_tangential map, using the getRadial function" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e3d066a0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/cdavies/CLMM_testing/modelling.py:190: RuntimeWarning: invalid value encountered in true_divide\n", + " kappa_radial = _K/_N\n", + "/home/cdavies/CLMM_testing/modelling.py:191: RuntimeWarning: invalid value encountered in true_divide\n", + " gammat_radial = _GT/_N\n" + ] + } + ], + "source": [ + "kappa_radial, gammat_radial = getRadial(radius_map,r_bins,\n", + " angle_map,phi_bins,kappa_map,et_map)" + ] + }, + { + "cell_type": "markdown", + "id": "f89da817", + "metadata": {}, + "source": [ + "plot the radial convergence and tangential shear profiles. Note that these profiles are not averaged over all angles yet, meaning that these profiles are 2D (radial and angular). This is useful for miscentering which leaves anisotropic signatures on the resulting lensing profiles" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "080ff2f4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:52.160349\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:52.273201\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(kappa_radial)\n", + "plt.show()\n", + "\n", + "plt.imshow(gammat_radial)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "1086e4de", + "metadata": {}, + "source": [ + "We can recover the 1D radial convergence and tangential shear profiles as follows" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5c6174be", + "metadata": {}, + "outputs": [], + "source": [ + "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", + "gammat_1D_radial = gammat_radial.mean(axis=-1)" + ] + }, + { + "cell_type": "markdown", + "id": "ebb41586", + "metadata": {}, + "source": [ + "Plot the 1D radial profiles" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "29a26710", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:35:52.431149\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + "plt.plot(r_bins_mid,kappa_1D_radial,label='$\\\\kappa(r)$')\n", + "plt.plot(r_bins_mid,gammat_1D_radial,label='$\\gamma_t(r)$')\n", + "plt.legend()\n", + "plt.xlabel('r [Mpc]')\n", + "plt.ylabel('Lensing amplitude')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "81e0ceb4", + "metadata": {}, + "source": [ + "We now repeat the above procedure, but this time we use an incorrect center (relative to the true hale center) when performing the calculations, the exemplify the impact of miscentering" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "13660944", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/cdavies/CLMM_testing/modelling.py:190: RuntimeWarning: invalid value encountered in true_divide\n", + " kappa_radial = _K/_N\n", + "/home/cdavies/CLMM_testing/modelling.py:191: RuntimeWarning: invalid value encountered in true_divide\n", + " gammat_radial = _GT/_N\n" + ] + } + ], + "source": [ + "#First we a define miscentring parameter\n", + "R_mis = 1 #Mpc\n", + "\n", + "#find new center based on R_mis:\n", + "_phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", + "\n", + "# mis-centered coordinates\n", + "center_1 = R_mis*np.cos(_phi_Rmis)\n", + "center_2 = R_mis*np.sin(_phi_Rmis)\n", + "\n", + "et_map, ex_map, radius_map, angle_map = getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "\n", + "kappa_radial, gammat_radial = getRadial(radius_map,r_bins,\n", + " angle_map,phi_bins,kappa_map,et_map)" + ] + }, + { + "cell_type": "markdown", + "id": "e9720a7d", + "metadata": {}, + "source": [ + "we can plot all of the results at once using the plot_maps_and_profiles function" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "32772d61", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:36:14.789394\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:36:15.214004\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", + " kappa_radial,gammat_radial,r_bins)" + ] + }, + { + "cell_type": "markdown", + "id": "510b4c9c", + "metadata": {}, + "source": [ + "We can also investigate how the 1D radial lensing profiles change as a function of miscentering" + ] + }, + { + "cell_type": "markdown", + "id": "53fa70dd", + "metadata": {}, + "source": [ + "Now define a miscentering distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "38b199f1", + "metadata": {}, + "outputs": [], + "source": [ + "#define miscentring distribution\n", + "R_mis_max = 1 \n", + "N_R_mis = 15\n", + "R_mis_arr = np.insert(np.logspace(-2, np.log10(R_mis_max), N_R_mis-1), 0, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c17883c2", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/cdavies/CLMM_testing/modelling.py:165: RuntimeWarning: invalid value encountered in true_divide\n", + " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n", + "/home/cdavies/CLMM_testing/modelling.py:190: RuntimeWarning: invalid value encountered in true_divide\n", + " kappa_radial = _K/_N\n", + "/home/cdavies/CLMM_testing/modelling.py:191: RuntimeWarning: invalid value encountered in true_divide\n", + " gammat_radial = _GT/_N\n" + ] + } + ], + "source": [ + "et_map = np.zeros((N_R_mis,kappa_map.shape[0],kappa_map.shape[1]))\n", + "ex_map = np.zeros(et_map.shape)\n", + "radius_map = np.zeros(et_map.shape)\n", + "angle_map = np.zeros(et_map.shape)\n", + "\n", + "kappa_radial = np.zeros((N_R_mis,N_r_bins,N_phi_bins))\n", + "gammat_radial = np.zeros(kappa_radial.shape)\n", + "\n", + "for j in range(len(R_mis_arr)):\n", + "\n", + " _phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", + "\n", + " # mis-centered coordinates\n", + " center_1 = R_mis_arr[j]*np.cos(_phi_Rmis)\n", + " center_2 = R_mis_arr[j]*np.sin(_phi_Rmis)\n", + "\n", + " et_map[j], ex_map[j], radius_map[j], angle_map[j] = getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "\n", + " kappa_radial[j], gammat_radial[j] = getRadial(radius_map[j],r_bins,\n", + " angle_map[j],phi_bins,kappa_map,et_map[j])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "22ba0469", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:48:49.844858\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:48:50.345602\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "R_mis_ind = 10\n", + "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", + " kappa_radial[R_mis_ind],gammat_radial[R_mis_ind],r_bins)" + ] + }, + { + "cell_type": "markdown", + "id": "2dbde4d3", + "metadata": {}, + "source": [ + "Finally we can plot the lensing profiles for the whole miscentering distrubtion" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "7e458c10", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:54:06.893343\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(N_R_mis):\n", + " plt.plot(r_bins_mid,kappa_radial[i].mean(axis=-1))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "2864956a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2022-10-06T15:55:11.196804\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.4.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(N_R_mis):\n", + " plt.plot(r_bins_mid,gammat_radial[i].mean(axis=-1))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea9ce0dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From ec1e463551fb14cab8abc37220e6d953be0764d4 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Wed, 9 Nov 2022 16:14:14 +0100 Subject: [PATCH 03/14] moved code from modelling.py to utils.py and added function descriptions --- clmm/utils.py | 246 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) diff --git a/clmm/utils.py b/clmm/utils.py index 3f24affc9..a9e774fe1 100644 --- a/clmm/utils.py +++ b/clmm/utils.py @@ -7,7 +7,253 @@ from scipy.integrate import quad, cumulative_trapezoid, simps from scipy.interpolate import interp1d from .constants import Constants as const +import matplotlib.pyplot as plt + +from astropy.cosmology import LambdaCDM #update +from astropy import constants as astconst #update + +class profiles: + '''A class to generate 2D covnergence profiles on a regular grid + ''' + def __init__(self,M,c,z_l,z_s,sig=False): + + self.M = M + self.c = c + self.z_l = z_l + self.z_s = z_s + self.sig = sig + + self.cosmology() + + return + + def cosmology(self, H_0 = 70., Omega_m = 0.3, Omega_Lambda = 0.7, Tcmb0=2.725): + + self.H_0 = H_0 + self.Omega_m = Omega_m + self.Tcmb0 = Tcmb0 + self.Omega_Lambda = Omega_Lambda + + return + + + def get_r_vals(self,nbins,lower_r,upper_r,log=False): + '''create radial bins for profiles + nbins: number of bins + lower_r: lowest bin value + upper_r: highest bin value + returns bin edges in units provided, or kpc if none are provided + ''' + #create r values + self.nbins = nbins + self.lower_r = lower_r + self.upper_r = upper_r + self.log_r_vals = log + + + if self.log_r_vals: + if self.lower_r == 0: + raise ValueError('log(lower_r) cannot be evaluated for lower_r = 0') + + r_vals = np.logspace(np.log10(self.lower_r),np.log10(self.upper_r),self.nbins+1) + + if not self.log_r_vals: + r_vals = np.linspace(self.lower_r,self.upper_r,self.nbins+1) + + #if no units are provided, set units to kpc, otherwise keep input units + r_vals *= u.dimensionless_unscaled + if r_vals.unit == u.dimensionless_unscaled: + r_vals *= u.kpc + + self.r_vals = r_vals + return self.r_vals + + def kappa_NFW(self,r_vals=None): + '''r_vals: radial bin values for halo lensing profile + M: halo mass + c: concentration + z_l: lens redshift + z_s: source redshift + delta_sig: If False, return convergence profile, if True, return delta Sigma profile + ''' + + if np.all(r_vals.value) == None: + r_vals = self.r_vals + + cosmo = LambdaCDM(H0=self.H_0, Om0=self.Omega_m, Ode0=self.Omega_Lambda, Tcmb0=self.Tcmb0) + + r_200 = ( (astconst.G * self.M)/(100. * cosmo.H(self.z_l)**2) )**(1./3.) + r_s = r_200 * self.c + delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) + + x = r_vals/r_s + + Sigma_crit_coeff = astconst.c**2 / (4. * np.pi * astconst.G) + + D_s = cosmo.angular_diameter_distance(self.z_s) + D_d = cosmo.angular_diameter_distance(self.z_l) + D_ds = cosmo.angular_diameter_distance_z1z2(self.z_l,self.z_s) + + Sigma_crit = Sigma_crit_coeff * D_s / (D_d * D_ds) + + k_s = cosmo.critical_density(self.z_l) * delta_c * r_s + + coeff = 2.*k_s / (x**2 - 1.) + + f_internal = 1. - (2./np.lib.scimath.sqrt(1.-x**2)) * np.arctanh(np.lib.scimath.sqrt((1.-x)/(1.+x))) + + nfw = coeff * f_internal + + if self.sig: + return nfw.to(astconst.M_sun / u.Mpc**2).real + if not self.sig: + return (nfw.real / Sigma_crit).decompose() + + def make_grid(self,npix,r_max): + '''make 2D grid centered on origin + npix: resolution of grid + r_max: width of grid is 2*r_max + ''' + + npix *= 1j #imaginary so that ogrid knows to interpret npix as array size + y,x = np.ogrid[-r_max:r_max:npix,-r_max:r_max:npix] + r_2D = np.hypot(y,x) + + return r_2D + + def kappa_NFW_2D(self,npix,r_max): + + '''create 2D NFW profile on grid + ''' + + self.npix = npix + self.r_max = r_max + r_2D = self.make_grid(self.npix,self.r_max) + + return self.kappa_NFW(r_2D) + + + +def KaiserSquires(Sigma): + '''Apply the Kaiser Squires algorithm to a 2D convergence field + Returns the complex shear as e1 and e2 + ''' + kappa_tilde = np.fft.fft2(Sigma) + + k = np.fft.fftfreq(kappa_tilde.shape[0]) + + oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2) + oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :] + + oper_1[0, 0] = -1 + oper_2[0, 0] = -1 + + e1_tilde = oper_1*kappa_tilde + e2_tilde = oper_2*kappa_tilde + + e1 = np.fft.ifft2(e1_tilde).real + e2 = np.fft.ifft2(e2_tilde).real + + return e1, e2 + +def getTangetial(e1, e2, center, dx=10./1000.): + '''Measure the tangential and cross shear maps from the e1 and e2 maps + Requires a center as an input, about which the tangential and cross maps are calculated + ''' + n = e1.shape[0] + + xx = np.arange(-n/2, n/2)*dx + + XX, YY = np.meshgrid(xx, xx) + + center_1, center_2 = center + + from_cent_1 = XX - center_1 + from_cent_2 = YY - center_2 + + angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2)) + radius = np.sqrt(from_cent_1**2+from_cent_2**2) + + angle[np.isnan(angle)] = 0 + + et = - e1*np.cos(2*angle) - e2*np.sin(2*angle) + ex = + e1*np.sin(2*angle) - e2*np.cos(2*angle) + + return et, ex, radius, angle + +def getRadial(radius_map,r_bins,angle_map,phi_bins,kappa_map,et_map): + '''Bin a map into radial and angular bins as a 2d histogram + ''' + _N = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + _K = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + _GT = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + + ii_r = np.digitize(radius_map, r_bins) - 1 + ii_phi = np.digitize(angle_map, phi_bins) - 1 + + for i_r, i_phi, kk, gg in zip(ii_r.flatten(), ii_phi.flatten(), kappa_map.flatten(), et_map.flatten()): + + _N[i_r, i_phi] += 1 + _K[i_r, i_phi] += kk + _GT[i_r, i_phi] += gg + + kappa_radial = _K/_N + gammat_radial = _GT/_N + + return kappa_radial,gammat_radial + + +def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map, + kappa_radial,gammat_radial,r_bins): + '''quickly plot the convergence, e1,e2, ex,et and radial profiles + ''' + fig, ax = plt.subplots(2,3,figsize=[9,6]) + ax.ravel() + + ax[0,0].imshow(kappa_map,origin = 'lower') + ax[0,0].set_title(r'$\kappa$') + + + ax[0,1].imshow(e1_map,origin = 'lower') + ax[0,1].set_title(r'$e_1$') + + + ax[0,2].imshow(e2_map,origin = 'lower') + ax[0,2].set_title(r'$e_2$') + + + ax[1,0].imshow(et_map,origin = 'lower') + ax[1,0].set_title(r'$e_t$') + + + ax[1,1].imshow(ex_map,origin = 'lower') + ax[1,1].set_title(r'$e_x$') + + + + r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1]) + + ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\kappa(r)$') + ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\gamma_t(r)$') + + plt.legend() + plt.show() + + fig,ax = plt.subplots(1,2) + + ax[0].imshow(kappa_radial,origin='lower') + ax[1].imshow(gammat_radial,origin='lower') + + ax[0].set_ylabel('r') + ax[0].set_xlabel('$\phi$') + + ax[1].set_ylabel('r') + ax[1].set_xlabel('$\phi$') + + ax[0].set_title(r'$\kappa$') + ax[1].set_title(r'$\gamma_t$') + plt.show() def compute_nfw_boost(rvals, rs=1000, b0=0.1) : """ Given a list of rvals, and optional rs and b0, return the corresponding boost factor at each rval From febe795ed5b51e041919a347524ebc7ae3d12345 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Wed, 9 Nov 2022 16:15:25 +0100 Subject: [PATCH 04/14] updated notebook to account for code moving from modelling.py to utils --- examples/demo_modelling.ipynb | 2377 +++++++++++++++++---------------- 1 file changed, 1197 insertions(+), 1180 deletions(-) diff --git a/examples/demo_modelling.ipynb b/examples/demo_modelling.ipynb index 06cd1aece..19bdc323e 100644 --- a/examples/demo_modelling.ipynb +++ b/examples/demo_modelling.ipynb @@ -13,16 +13,14 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import sys\n", - "sys.path.append('/home/cdavies/CLMM/')\n", + "#sys.path.append('/home/cdavies/CLMM/')\n", "import clmm\n", "from clmm import Cosmology\n", "from clmm.support import mock_data as mock\n", "from clmm.galaxycluster import GalaxyCluster\n", "import matplotlib.pyplot as plt\n", "\n", - "import clmm.utils as u\n", - "\n", - "from modelling import *" + "import clmm.utils as u" ] }, { @@ -42,7 +40,7 @@ { "data": { "text/plain": [ - "'1.0.1'" + "'1.4.0'" ] }, "execution_count": 2, @@ -87,6 +85,9 @@ "metadata": {}, "outputs": [], "source": [ + "from astropy import constants as const #update\n", + "from astropy import units as un\n", + "\n", "#specify parameters for NFW halo\n", "c = 1 #concentration\n", "z_l = 1.0 #lens redshift\n", @@ -94,7 +95,7 @@ "Mass = 1E13 * const.M_sun\n", "\n", "#define physical size of grid\n", - "units = u.mpc\n", + "units = un.mpc\n", "r_max = 10 * units\n", "\n", "#number of pixels in grid\n", @@ -128,7 +129,7 @@ ], "source": [ "#lensing_map has the option to return either Sigma map or the convergence map.\n", - "lensing_map = profiles(Mass, c, z_l, z_s, sig=False) \n", + "lensing_map = u.profiles(Mass, c, z_l, z_s, sig=False) \n", "#make map\n", "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max)" ] @@ -150,7 +151,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:29.110446\n", + " 2022-11-09T16:03:52.275177\n", " image/svg+xml\n", " \n", " \n", @@ -181,8 +182,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -191,10 +192,10 @@ " \n", " \n", + "\" id=\"mc249ef2241\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -263,7 +264,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -294,7 +295,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -307,7 +308,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -321,7 +322,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -472,10 +473,10 @@ " \n", " \n", + "\" id=\"m27e0fa2ff4\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -490,7 +491,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -532,7 +533,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -547,7 +548,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -561,7 +562,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -574,7 +575,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -587,7 +588,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -601,7 +602,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -615,7 +616,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -689,7 +690,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -710,10 +711,10 @@ " \n", " \n", + "\" id=\"m243b2963f1\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -739,7 +740,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -768,7 +769,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -817,7 +818,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -834,7 +835,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -851,7 +852,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -868,7 +869,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -885,7 +886,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -939,10 +940,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -977,20 +978,20 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "2aaf9cb0", "metadata": {}, "outputs": [], "source": [ "#lensing_map has the option to return either Sigma map or the convergence map.\n", - "lensing_map = profiles(Mass, c, z_l, z_s, sig=True) \n", + "lensing_map = u.profiles(Mass, c, z_l, z_s, sig=True) \n", "#make map\n", "Sigma_map = lensing_map.kappa_NFW_2D(npix,r_max)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "72993065", "metadata": {}, "outputs": [ @@ -1005,7 +1006,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:29.510839\n", + " 2022-11-09T16:06:03.757461\n", " image/svg+xml\n", " \n", " \n", @@ -1036,8 +1037,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -1046,10 +1047,10 @@ " \n", " \n", + "\" id=\"m483ad28c78\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1118,7 +1119,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1149,7 +1150,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1162,7 +1163,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1176,7 +1177,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1327,10 +1328,10 @@ " \n", " \n", + "\" id=\"mde48a642b6\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1345,7 +1346,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1387,7 +1388,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1402,7 +1403,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1416,7 +1417,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1429,7 +1430,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1442,7 +1443,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1456,7 +1457,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1470,7 +1471,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1544,7 +1545,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -1565,10 +1566,10 @@ " \n", " \n", + "\" id=\"m13e02478c4\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1594,7 +1595,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1623,7 +1624,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1672,7 +1673,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1689,7 +1690,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1706,7 +1707,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1723,7 +1724,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1740,7 +1741,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1941,10 +1942,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1979,7 +1980,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "id": "eec34ea3", "metadata": {}, "outputs": [ @@ -1987,19 +1988,15 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/CLMM_testing/modelling.py:138: RuntimeWarning: divide by zero encountered in true_divide\n", - " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/home/cdavies/CLMM_testing/modelling.py:138: RuntimeWarning: invalid value encountered in multiply\n", - " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/home/cdavies/CLMM_testing/modelling.py:139: RuntimeWarning: divide by zero encountered in true_divide\n", - " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n", - "/home/cdavies/CLMM_testing/modelling.py:139: RuntimeWarning: invalid value encountered in multiply\n", - " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:145: RuntimeWarning: divide by zero encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:145: RuntimeWarning: invalid value encountered in multiply\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:146: RuntimeWarning: divide by zero encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:146: RuntimeWarning: invalid value encountered in multiply\n" ] } ], "source": [ - "e1_map, e2_map = KaiserSquires(kappa_map)" + "e1_map, e2_map = u.KaiserSquires(kappa_map)" ] }, { @@ -2012,7 +2009,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "id": "2ba6da86", "metadata": {}, "outputs": [ @@ -2027,7 +2024,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:29.887896\n", + " 2022-11-09T16:06:13.336586\n", " image/svg+xml\n", " \n", " \n", @@ -2058,8 +2055,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -2068,10 +2065,10 @@ " \n", " \n", + "\" id=\"m7fb05967c7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2107,7 +2104,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2138,7 +2135,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2179,7 +2176,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2228,7 +2225,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2264,7 +2261,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2310,10 +2307,10 @@ " \n", " \n", + "\" id=\"mdd2077d222\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2326,7 +2323,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2341,7 +2338,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2356,7 +2353,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2371,7 +2368,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2386,7 +2383,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2430,7 +2427,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -2451,10 +2448,10 @@ " \n", " \n", + "\" id=\"mf67b0d7838\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2526,7 +2523,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2555,7 +2552,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2604,7 +2601,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2621,7 +2618,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2638,7 +2635,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2669,10 +2666,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2698,7 +2695,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:30.142227\n", + " 2022-11-09T16:06:13.625422\n", " image/svg+xml\n", " \n", " \n", @@ -2729,8 +2726,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -2739,10 +2736,10 @@ " \n", " \n", + "\" id=\"md0b8068baf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2778,7 +2775,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2809,7 +2806,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2850,7 +2847,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2899,7 +2896,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2935,7 +2932,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2981,10 +2978,10 @@ " \n", " \n", + "\" id=\"ma9d39fa7d8\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2997,7 +2994,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3012,7 +3009,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3027,7 +3024,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3042,7 +3039,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3057,7 +3054,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3101,7 +3098,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -3122,10 +3119,10 @@ " \n", " \n", + "\" id=\"me553eaeb8d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3189,7 +3186,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3207,7 +3204,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3225,7 +3222,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3243,7 +3240,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3261,7 +3258,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3293,10 +3290,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3342,7 +3339,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "id": "6b8c1825", "metadata": {}, "outputs": [ @@ -3350,18 +3347,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/CLMM_testing/modelling.py:165: RuntimeWarning: invalid value encountered in true_divide\n", - " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:174: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], "source": [ - "et_map, ex_map, radius_map, angle_map = getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)" + "et_map, ex_map, radius_map, angle_map = u.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "id": "e743f1b8", "metadata": {}, "outputs": [ @@ -3376,7 +3372,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:30.448461\n", + " 2022-11-09T16:06:29.108396\n", " image/svg+xml\n", " \n", " \n", @@ -3407,8 +3403,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -3417,10 +3413,10 @@ " \n", " \n", + "\" id=\"m2aab82d911\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3456,7 +3452,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3487,7 +3483,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3528,7 +3524,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3577,7 +3573,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3613,7 +3609,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3659,10 +3655,10 @@ " \n", " \n", + "\" id=\"m61c97259bf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3675,7 +3671,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3690,7 +3686,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3705,7 +3701,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3720,7 +3716,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3735,7 +3731,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3779,7 +3775,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -3800,10 +3796,10 @@ " \n", " \n", + "\" id=\"m14ba262019\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3865,7 +3861,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3881,7 +3877,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3897,7 +3893,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3912,7 +3908,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3927,7 +3923,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3942,7 +3938,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3971,10 +3967,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4000,7 +3996,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:30.697453\n", + " 2022-11-09T16:06:29.397091\n", " image/svg+xml\n", " \n", " \n", @@ -4031,8 +4027,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -4041,10 +4037,10 @@ " \n", " \n", + "\" id=\"m6e548b85aa\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4080,7 +4076,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4111,7 +4107,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4152,7 +4148,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4201,7 +4197,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4237,7 +4233,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4283,10 +4279,10 @@ " \n", " \n", + "\" id=\"m9bb5998d0f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4299,7 +4295,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4314,7 +4310,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4329,7 +4325,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4344,7 +4340,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4359,7 +4355,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4403,7 +4399,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -4424,10 +4420,10 @@ " \n", " \n", + "\" id=\"mc3a367a5af\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4489,7 +4485,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4505,7 +4501,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4521,7 +4517,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4536,7 +4532,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4551,7 +4547,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4566,7 +4562,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4595,10 +4591,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4634,7 +4630,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "id": "e3d066a0", "metadata": {}, "outputs": [ @@ -4642,15 +4638,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/CLMM_testing/modelling.py:190: RuntimeWarning: invalid value encountered in true_divide\n", - " kappa_radial = _K/_N\n", - "/home/cdavies/CLMM_testing/modelling.py:191: RuntimeWarning: invalid value encountered in true_divide\n", - " gammat_radial = _GT/_N\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:200: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:201: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], "source": [ - "kappa_radial, gammat_radial = getRadial(radius_map,r_bins,\n", + "kappa_radial, gammat_radial = u.getRadial(radius_map,r_bins,\n", " angle_map,phi_bins,kappa_map,et_map)" ] }, @@ -4664,7 +4658,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 17, "id": "080ff2f4", "metadata": {}, "outputs": [ @@ -4679,7 +4673,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:52.160349\n", + " 2022-11-09T16:07:00.137737\n", " image/svg+xml\n", " \n", " \n", @@ -4710,8 +4704,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -4720,10 +4714,10 @@ " \n", " \n", + "\" id=\"m36ec70c6e0\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4759,7 +4753,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4799,7 +4793,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4829,7 +4823,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4843,7 +4837,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4887,10 +4881,10 @@ " \n", " \n", + "\" id=\"mda4d5824dd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4903,7 +4897,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4916,7 +4910,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4930,7 +4924,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4944,7 +4938,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4958,7 +4952,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4993,7 +4987,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5019,7 +5013,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:52.273201\n", + " 2022-11-09T16:07:00.279754\n", " image/svg+xml\n", " \n", " \n", @@ -5050,8 +5044,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -5060,10 +5054,10 @@ " \n", " \n", + "\" id=\"ma1e3dfc76b\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5099,7 +5093,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5139,7 +5133,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5169,7 +5163,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5183,7 +5177,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5227,10 +5221,10 @@ " \n", " \n", + "\" id=\"mb7e9f1e8c2\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5243,7 +5237,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5256,7 +5250,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5270,7 +5264,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5284,7 +5278,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5298,7 +5292,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5333,7 +5327,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5367,7 +5361,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "id": "5c6174be", "metadata": {}, "outputs": [], @@ -5386,7 +5380,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "id": "29a26710", "metadata": {}, "outputs": [ @@ -5401,7 +5395,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:35:52.431149\n", + " 2022-11-09T16:07:06.672827\n", " image/svg+xml\n", " \n", " \n", @@ -5438,10 +5432,10 @@ " \n", " \n", + "\" id=\"mad8a61676f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5477,7 +5471,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5506,7 +5500,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5545,7 +5539,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5592,7 +5586,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5626,7 +5620,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5787,10 +5781,10 @@ " \n", " \n", + "\" id=\"meebc6a2b42\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5814,7 +5808,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5829,7 +5823,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5844,7 +5838,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5859,7 +5853,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5874,7 +5868,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5889,7 +5883,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6229,7 +6223,7 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6478,7 +6472,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 21, "id": "13660944", "metadata": {}, "outputs": [ @@ -6486,10 +6480,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/CLMM_testing/modelling.py:190: RuntimeWarning: invalid value encountered in true_divide\n", - " kappa_radial = _K/_N\n", - "/home/cdavies/CLMM_testing/modelling.py:191: RuntimeWarning: invalid value encountered in true_divide\n", - " gammat_radial = _GT/_N\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:200: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:201: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -6504,9 +6496,9 @@ "center_1 = R_mis*np.cos(_phi_Rmis)\n", "center_2 = R_mis*np.sin(_phi_Rmis)\n", "\n", - "et_map, ex_map, radius_map, angle_map = getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "et_map, ex_map, radius_map, angle_map = u.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", "\n", - "kappa_radial, gammat_radial = getRadial(radius_map,r_bins,\n", + "kappa_radial, gammat_radial = u.getRadial(radius_map,r_bins,\n", " angle_map,phi_bins,kappa_map,et_map)" ] }, @@ -6520,7 +6512,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 23, "id": "32772d61", "metadata": {}, "outputs": [ @@ -6535,7 +6527,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:36:14.789394\n", + " 2022-11-09T16:07:37.643290\n", " image/svg+xml\n", " \n", " \n", @@ -6566,8 +6558,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -6576,10 +6568,10 @@ " \n", " \n", + "\" id=\"mf430b381ad\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6615,7 +6607,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6656,7 +6648,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6696,10 +6688,10 @@ " \n", " \n", + "\" id=\"m5d9a19782f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6712,7 +6704,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6743,7 +6735,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6758,7 +6750,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6807,7 +6799,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6822,7 +6814,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6915,15 +6907,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6936,7 +6928,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6951,7 +6943,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6968,7 +6960,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6981,7 +6973,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6996,7 +6988,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7011,7 +7003,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7026,7 +7018,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7041,7 +7033,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7125,15 +7117,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7146,7 +7138,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7161,7 +7153,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7178,7 +7170,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7191,7 +7183,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7206,7 +7198,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7221,7 +7213,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7236,7 +7228,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7251,7 +7243,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7301,15 +7293,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7322,7 +7314,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7337,7 +7329,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7354,7 +7346,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7367,7 +7359,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7382,7 +7374,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7397,7 +7389,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7412,7 +7404,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7427,7 +7419,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7504,15 +7496,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7525,7 +7517,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7540,7 +7532,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7557,7 +7549,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7570,7 +7562,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7585,7 +7577,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7600,7 +7592,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7615,7 +7607,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7630,7 +7622,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7701,7 +7693,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7714,7 +7706,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7727,7 +7719,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7742,12 +7734,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7781,12 +7773,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7796,12 +7788,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7811,12 +7803,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7826,12 +7818,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7841,12 +7833,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -8056,22 +8048,22 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8097,7 +8089,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:36:15.214004\n", + " 2022-11-09T16:07:38.157133\n", " image/svg+xml\n", " \n", " \n", @@ -8128,9 +8120,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -8138,10 +8130,10 @@ " \n", " \n", + "\" id=\"m7e40f6817d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8177,7 +8169,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8217,7 +8209,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8247,7 +8239,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8261,7 +8253,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8344,10 +8336,10 @@ " \n", " \n", + "\" id=\"md69d22a350\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8360,7 +8352,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8373,7 +8365,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8387,7 +8379,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8401,7 +8393,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8415,7 +8407,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8505,15 +8497,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8526,7 +8518,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8539,7 +8531,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8553,7 +8545,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8567,7 +8559,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8589,7 +8581,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8602,7 +8594,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8615,7 +8607,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8629,7 +8621,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8643,7 +8635,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8657,7 +8649,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8748,10 +8740,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8768,7 +8760,7 @@ } ], "source": [ - "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", + "u.plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", " kappa_radial,gammat_radial,r_bins)" ] }, @@ -8790,7 +8782,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 24, "id": "38b199f1", "metadata": {}, "outputs": [], @@ -8803,7 +8795,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 25, "id": "c17883c2", "metadata": {}, "outputs": [ @@ -8811,12 +8803,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/CLMM_testing/modelling.py:165: RuntimeWarning: invalid value encountered in true_divide\n", - " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n", - "/home/cdavies/CLMM_testing/modelling.py:190: RuntimeWarning: invalid value encountered in true_divide\n", - " kappa_radial = _K/_N\n", - "/home/cdavies/CLMM_testing/modelling.py:191: RuntimeWarning: invalid value encountered in true_divide\n", - " gammat_radial = _GT/_N\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:174: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:200: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:201: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -8837,15 +8826,15 @@ " center_1 = R_mis_arr[j]*np.cos(_phi_Rmis)\n", " center_2 = R_mis_arr[j]*np.sin(_phi_Rmis)\n", "\n", - " et_map[j], ex_map[j], radius_map[j], angle_map[j] = getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + " et_map[j], ex_map[j], radius_map[j], angle_map[j] = u.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", "\n", - " kappa_radial[j], gammat_radial[j] = getRadial(radius_map[j],r_bins,\n", + " kappa_radial[j], gammat_radial[j] = u.getRadial(radius_map[j],r_bins,\n", " angle_map[j],phi_bins,kappa_map,et_map[j])" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 26, "id": "22ba0469", "metadata": {}, "outputs": [ @@ -8860,7 +8849,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:48:49.844858\n", + " 2022-11-09T16:11:39.719159\n", " image/svg+xml\n", " \n", " \n", @@ -8891,8 +8880,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -8901,10 +8890,10 @@ " \n", " \n", + "\" id=\"m9124cecd13\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8940,7 +8929,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8981,7 +8970,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9021,10 +9010,10 @@ " \n", " \n", + "\" id=\"m1b5f838c68\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9037,7 +9026,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9068,7 +9057,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9083,7 +9072,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9132,7 +9121,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9147,7 +9136,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9240,15 +9229,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9261,7 +9250,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9276,7 +9265,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9293,7 +9282,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9306,7 +9295,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9321,7 +9310,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9336,7 +9325,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9351,7 +9340,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9366,7 +9355,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9450,15 +9439,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9471,7 +9460,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9486,7 +9475,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9503,7 +9492,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9516,7 +9505,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9531,7 +9520,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9546,7 +9535,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9561,7 +9550,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9576,7 +9565,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9626,15 +9615,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9647,7 +9636,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9662,7 +9651,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9679,7 +9668,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9692,7 +9681,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9707,7 +9696,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9722,7 +9711,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9737,7 +9726,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9752,7 +9741,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9829,15 +9818,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9850,7 +9839,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9865,7 +9854,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9882,7 +9871,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9895,7 +9884,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9910,7 +9899,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9925,7 +9914,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9940,7 +9929,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9955,7 +9944,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10026,12 +10015,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10039,12 +10028,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10052,12 +10041,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10067,12 +10056,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10106,12 +10095,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10121,12 +10110,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -10338,22 +10327,22 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10379,7 +10368,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:48:50.345602\n", + " 2022-11-09T16:11:40.114385\n", " image/svg+xml\n", " \n", " \n", @@ -10410,9 +10399,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -10420,10 +10409,10 @@ " \n", " \n", + "\" id=\"m1502e261cf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10459,7 +10448,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10499,7 +10488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10529,7 +10518,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10543,7 +10532,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10626,10 +10615,10 @@ " \n", " \n", + "\" id=\"ma033c20fd0\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10642,7 +10631,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10655,7 +10644,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10669,7 +10658,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10683,7 +10672,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10697,7 +10686,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10787,15 +10776,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10808,7 +10797,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10821,7 +10810,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10835,7 +10824,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10849,7 +10838,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10871,7 +10860,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10884,7 +10873,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10897,7 +10886,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10911,7 +10900,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10925,7 +10914,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10939,7 +10928,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11030,10 +11019,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11051,7 +11040,7 @@ ], "source": [ "R_mis_ind = 10\n", - "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", + "u.plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", " kappa_radial[R_mis_ind],gammat_radial[R_mis_ind],r_bins)" ] }, @@ -11065,7 +11054,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "id": "7e458c10", "metadata": {}, "outputs": [ @@ -11080,7 +11069,7 @@ " \n", " \n", " \n", - " 2022-10-06T15:54:06.893343\n", + " 2022-11-09T16:11:40.345236\n", " image/svg+xml\n", " \n", " \n", @@ -11117,15 +11106,15 @@ " \n", " \n", + "\" id=\"me6a171ce56\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" id=\"mff676c5544\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11498,12 +11487,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11514,12 +11503,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11530,12 +11519,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11545,309 +11534,307 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -11873,7 +11860,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11897,7 +11884,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "id": "2864956a", "metadata": {}, "outputs": [ @@ -11907,12 +11894,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-10-06T15:55:11.196804\n", + " 2022-11-09T16:11:40.527305\n", " image/svg+xml\n", " \n", " \n", @@ -11928,8 +11915,8 @@ " \n", " \n", " \n", @@ -11949,15 +11936,15 @@ " \n", " \n", + "\" id=\"mb7a91d9bda\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" id=\"m786807ee86\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12233,12 +12220,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12249,12 +12236,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12265,12 +12252,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12278,311 +12265,341 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -12608,7 +12625,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", From d9a7cd435707459cf9a0aaa439a2bff5f67c4744 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Thu, 10 Nov 2022 14:27:55 +0100 Subject: [PATCH 05/14] updated functions to use clmm constants rather than astropy constants --- clmm/utils.py | 63 +++++++-------------------------------------------- 1 file changed, 8 insertions(+), 55 deletions(-) diff --git a/clmm/utils.py b/clmm/utils.py index a9e774fe1..da0579d69 100644 --- a/clmm/utils.py +++ b/clmm/utils.py @@ -10,7 +10,6 @@ import matplotlib.pyplot as plt from astropy.cosmology import LambdaCDM #update -from astropy import constants as astconst #update class profiles: '''A class to generate 2D covnergence profiles on a regular grid @@ -80,15 +79,20 @@ def kappa_NFW(self,r_vals=None): if np.all(r_vals.value) == None: r_vals = self.r_vals + G = const.GNEWT.value * u.N * u.m**2 /u.kg**2 + c = const.CLIGHT.value * u.m / u.s + Msol = const.SOLAR_MASS.value * u.kg + cosmo = LambdaCDM(H0=self.H_0, Om0=self.Omega_m, Ode0=self.Omega_Lambda, Tcmb0=self.Tcmb0) - r_200 = ( (astconst.G * self.M)/(100. * cosmo.H(self.z_l)**2) )**(1./3.) + r_200 = ( (G * self.M)/(100. * cosmo.H(self.z_l)**2) )**(1./3.) r_s = r_200 * self.c delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) x = r_vals/r_s + x = x.value - Sigma_crit_coeff = astconst.c**2 / (4. * np.pi * astconst.G) + Sigma_crit_coeff = c**2 / (4. * np.pi * G) D_s = cosmo.angular_diameter_distance(self.z_s) D_d = cosmo.angular_diameter_distance(self.z_l) @@ -105,7 +109,7 @@ def kappa_NFW(self,r_vals=None): nfw = coeff * f_internal if self.sig: - return nfw.to(astconst.M_sun / u.Mpc**2).real + return nfw.to(Msol / u.Mpc**2).real if not self.sig: return (nfw.real / Sigma_crit).decompose() @@ -203,57 +207,6 @@ def getRadial(radius_map,r_bins,angle_map,phi_bins,kappa_map,et_map): return kappa_radial,gammat_radial -def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map, - kappa_radial,gammat_radial,r_bins): - '''quickly plot the convergence, e1,e2, ex,et and radial profiles - ''' - fig, ax = plt.subplots(2,3,figsize=[9,6]) - ax.ravel() - - ax[0,0].imshow(kappa_map,origin = 'lower') - ax[0,0].set_title(r'$\kappa$') - - - ax[0,1].imshow(e1_map,origin = 'lower') - ax[0,1].set_title(r'$e_1$') - - - ax[0,2].imshow(e2_map,origin = 'lower') - ax[0,2].set_title(r'$e_2$') - - - ax[1,0].imshow(et_map,origin = 'lower') - ax[1,0].set_title(r'$e_t$') - - - ax[1,1].imshow(ex_map,origin = 'lower') - ax[1,1].set_title(r'$e_x$') - - - - r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1]) - - ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\kappa(r)$') - ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\gamma_t(r)$') - - plt.legend() - plt.show() - - fig,ax = plt.subplots(1,2) - - ax[0].imshow(kappa_radial,origin='lower') - ax[1].imshow(gammat_radial,origin='lower') - - ax[0].set_ylabel('r') - ax[0].set_xlabel('$\phi$') - - ax[1].set_ylabel('r') - ax[1].set_xlabel('$\phi$') - - ax[0].set_title(r'$\kappa$') - ax[1].set_title(r'$\gamma_t$') - - plt.show() def compute_nfw_boost(rvals, rs=1000, b0=0.1) : """ Given a list of rvals, and optional rs and b0, return the corresponding boost factor at each rval From ef26cbd0a2c41607c8eae5fcad15c4eace4b4afe Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Thu, 10 Nov 2022 14:29:31 +0100 Subject: [PATCH 06/14] moved plotting function from utils to demo_modelling since it is not a general function --- examples/demo_modelling.ipynb | 3419 ++++++++++++++++++--------------- 1 file changed, 1880 insertions(+), 1539 deletions(-) diff --git a/examples/demo_modelling.ipynb b/examples/demo_modelling.ipynb index 19bdc323e..cf4b70c94 100644 --- a/examples/demo_modelling.ipynb +++ b/examples/demo_modelling.ipynb @@ -13,7 +13,6 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import sys\n", - "#sys.path.append('/home/cdavies/CLMM/')\n", "import clmm\n", "from clmm import Cosmology\n", "from clmm.support import mock_data as mock\n", @@ -118,15 +117,7 @@ "execution_count": 5, "id": "5b51bbc8", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" - ] - } - ], + "outputs": [], "source": [ "#lensing_map has the option to return either Sigma map or the convergence map.\n", "lensing_map = u.profiles(Mass, c, z_l, z_s, sig=False) \n", @@ -151,7 +142,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:03:52.275177\n", + " 2022-11-10T14:23:26.732168\n", " image/svg+xml\n", " \n", " \n", @@ -182,8 +173,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -192,10 +183,10 @@ " \n", " \n", + "\" id=\"mf266ea4cda\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -264,7 +255,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -295,7 +286,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -308,7 +299,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -322,7 +313,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -473,10 +464,10 @@ " \n", " \n", + "\" id=\"m505508a37d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -491,7 +482,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -533,7 +524,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -548,7 +539,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -562,7 +553,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -575,7 +566,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -588,7 +579,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -602,7 +593,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -616,7 +607,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -690,7 +681,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -711,15 +702,15 @@ " \n", " \n", + "\" id=\"me7abb02058\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -832,15 +804,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -849,15 +821,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -866,15 +838,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -883,15 +855,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -900,6 +872,23 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -940,10 +929,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -978,7 +967,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "2aaf9cb0", "metadata": {}, "outputs": [], @@ -991,7 +980,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "72993065", "metadata": {}, "outputs": [ @@ -1006,7 +995,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:06:03.757461\n", + " 2022-11-10T14:23:27.062237\n", " image/svg+xml\n", " \n", " \n", @@ -1037,8 +1026,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -1047,10 +1036,10 @@ " \n", " \n", + "\" id=\"mc99c4511e6\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1119,7 +1108,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1150,7 +1139,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1163,7 +1152,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1177,7 +1166,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1328,10 +1317,10 @@ " \n", " \n", + "\" id=\"mb6c8200076\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1346,7 +1335,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1388,7 +1377,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1403,7 +1392,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1417,7 +1406,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1430,7 +1419,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1443,7 +1432,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1457,7 +1446,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1471,7 +1460,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1545,7 +1534,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -1566,15 +1555,15 @@ " \n", " \n", + "\" id=\"m8206e762cd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1687,15 +1657,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1704,15 +1674,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1721,15 +1691,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1738,15 +1708,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1755,6 +1725,23 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1942,10 +1929,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1980,7 +1967,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "id": "eec34ea3", "metadata": {}, "outputs": [ @@ -1988,10 +1975,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:145: RuntimeWarning: divide by zero encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:145: RuntimeWarning: invalid value encountered in multiply\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:146: RuntimeWarning: divide by zero encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:146: RuntimeWarning: invalid value encountered in multiply\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:149: RuntimeWarning: divide by zero encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:149: RuntimeWarning: invalid value encountered in multiply\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:150: RuntimeWarning: divide by zero encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:150: RuntimeWarning: invalid value encountered in multiply\n" ] } ], @@ -2009,7 +1996,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "id": "2ba6da86", "metadata": {}, "outputs": [ @@ -2024,7 +2011,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:06:13.336586\n", + " 2022-11-10T14:23:27.368725\n", " image/svg+xml\n", " \n", " \n", @@ -2055,9 +2042,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2065,10 +2052,10 @@ " \n", " \n", + "\" id=\"mf974cb2325\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2104,7 +2091,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2135,7 +2122,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2176,7 +2163,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2225,7 +2212,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2261,7 +2248,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2307,10 +2294,10 @@ " \n", " \n", + "\" id=\"m30d378b164\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2323,7 +2310,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2338,7 +2325,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2353,7 +2340,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2368,7 +2355,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2383,7 +2370,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2427,7 +2414,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -2448,15 +2435,15 @@ " \n", " \n", + "\" id=\"mb7b8af6925\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2598,57 +2668,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -2666,10 +2685,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2695,7 +2714,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:06:13.625422\n", + " 2022-11-10T14:23:27.615280\n", " image/svg+xml\n", " \n", " \n", @@ -2726,8 +2745,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -2736,10 +2755,10 @@ " \n", " \n", + "\" id=\"mb72df415e3\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2775,7 +2794,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2806,7 +2825,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2847,7 +2866,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2896,7 +2915,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2932,7 +2951,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2978,10 +2997,10 @@ " \n", " \n", + "\" id=\"mfb03386250\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2994,7 +3013,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3009,7 +3028,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3024,7 +3043,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3039,7 +3058,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3054,7 +3073,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3098,7 +3117,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -3119,15 +3138,15 @@ " \n", " \n", + "\" id=\"me109ec95cd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3290,10 +3394,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3339,7 +3443,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "6b8c1825", "metadata": {}, "outputs": [ @@ -3347,7 +3451,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:174: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:178: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -3357,7 +3461,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "e743f1b8", "metadata": {}, "outputs": [ @@ -3372,7 +3476,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:06:29.108396\n", + " 2022-11-10T14:23:28.046848\n", " image/svg+xml\n", " \n", " \n", @@ -3403,9 +3507,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3413,10 +3517,10 @@ " \n", " \n", + "\" id=\"mf5297eb053\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3452,7 +3556,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3483,7 +3587,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3524,7 +3628,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3573,7 +3677,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3609,7 +3713,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3655,10 +3759,10 @@ " \n", " \n", + "\" id=\"m9cd6245da0\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3671,7 +3775,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3686,7 +3790,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3701,7 +3805,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3716,7 +3820,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3731,7 +3835,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3775,7 +3879,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -3796,15 +3900,15 @@ " \n", " \n", + "\" id=\"m97de392bc1\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3874,15 +4035,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3890,66 +4051,81 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3967,10 +4143,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3996,7 +4172,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:06:29.397091\n", + " 2022-11-10T14:23:28.294992\n", " image/svg+xml\n", " \n", " \n", @@ -4027,9 +4203,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4037,10 +4213,10 @@ " \n", " \n", + "\" id=\"m3628116860\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4076,7 +4252,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4107,7 +4283,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4148,7 +4324,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4197,7 +4373,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4233,7 +4409,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4279,10 +4455,10 @@ " \n", " \n", + "\" id=\"m28de52a5a7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4295,7 +4471,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4310,7 +4486,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4325,7 +4501,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4340,7 +4516,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4355,7 +4531,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4399,7 +4575,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -4420,15 +4596,15 @@ " \n", " \n", + "\" id=\"mfe8e1df864\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4498,15 +4731,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4514,63 +4747,78 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4591,10 +4839,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4630,7 +4878,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "id": "e3d066a0", "metadata": {}, "outputs": [ @@ -4638,8 +4886,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:200: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:201: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:204: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:205: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -4658,7 +4906,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "id": "080ff2f4", "metadata": {}, "outputs": [ @@ -4673,7 +4921,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:07:00.137737\n", + " 2022-11-10T14:23:50.025981\n", " image/svg+xml\n", " \n", " \n", @@ -4704,8 +4952,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -4714,10 +4962,10 @@ " \n", " \n", + "\" id=\"m7e5c233694\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4753,7 +5001,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4793,7 +5041,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4823,7 +5071,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4837,7 +5085,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4881,10 +5129,10 @@ " \n", " \n", + "\" id=\"m70863f3ec9\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4897,7 +5145,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4910,7 +5158,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4924,7 +5172,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4938,7 +5186,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4952,7 +5200,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4987,7 +5235,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5013,7 +5261,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:07:00.279754\n", + " 2022-11-10T14:23:50.135653\n", " image/svg+xml\n", " \n", " \n", @@ -5044,9 +5292,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5054,10 +5302,10 @@ " \n", " \n", + "\" id=\"m5d568179b9\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5093,7 +5341,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5133,7 +5381,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5163,7 +5411,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5177,7 +5425,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5221,10 +5469,10 @@ " \n", " \n", + "\" id=\"md378364b3d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5237,7 +5485,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5250,7 +5498,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5264,7 +5512,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5278,7 +5526,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5292,7 +5540,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5327,7 +5575,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5361,7 +5609,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "id": "5c6174be", "metadata": {}, "outputs": [], @@ -5380,7 +5628,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "id": "29a26710", "metadata": {}, "outputs": [ @@ -5395,7 +5643,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:07:06.672827\n", + " 2022-11-10T14:23:50.295823\n", " image/svg+xml\n", " \n", " \n", @@ -5432,10 +5680,10 @@ " \n", " \n", + "\" id=\"m333ce2bb61\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5471,7 +5719,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5500,7 +5748,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5539,7 +5787,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5586,7 +5834,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5620,7 +5868,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5781,15 +6029,15 @@ " \n", " \n", + "\" id=\"m4968efc281\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5823,12 +6071,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5838,12 +6086,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5853,12 +6101,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5868,12 +6116,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5883,12 +6131,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -6222,46 +6497,46 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -6298,13 +6573,13 @@ "z\n", "\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -6373,13 +6648,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -6436,7 +6711,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6472,7 +6747,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 17, "id": "13660944", "metadata": {}, "outputs": [ @@ -6480,8 +6755,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:200: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:201: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:204: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:205: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -6502,6 +6777,66 @@ " angle_map,phi_bins,kappa_map,et_map)" ] }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5e96e118", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", + " kappa_radial,gammat_radial,r_bins):\n", + " '''quickly plot the convergence, e1,e2, ex,et and radial profiles\n", + " '''\n", + " fig, ax = plt.subplots(2,3,figsize=[9,6])\n", + " ax.ravel()\n", + "\n", + " ax[0,0].imshow(kappa_map,origin = 'lower')\n", + " ax[0,0].set_title(r'$\\kappa$')\n", + "\n", + "\n", + " ax[0,1].imshow(e1_map,origin = 'lower')\n", + " ax[0,1].set_title(r'$e_1$')\n", + "\n", + "\n", + " ax[0,2].imshow(e2_map,origin = 'lower')\n", + " ax[0,2].set_title(r'$e_2$')\n", + "\n", + "\n", + " ax[1,0].imshow(et_map,origin = 'lower')\n", + " ax[1,0].set_title(r'$e_t$')\n", + "\n", + "\n", + " ax[1,1].imshow(ex_map,origin = 'lower')\n", + " ax[1,1].set_title(r'$e_x$')\n", + "\n", + "\n", + "\n", + " r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + "\n", + " ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\\kappa(r)$')\n", + " ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\\gamma_t(r)$')\n", + "\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " fig,ax = plt.subplots(1,2)\n", + "\n", + " ax[0].imshow(kappa_radial,origin='lower')\n", + " ax[1].imshow(gammat_radial,origin='lower')\n", + "\n", + " ax[0].set_ylabel('r')\n", + " ax[0].set_xlabel('$\\phi$')\n", + "\n", + " ax[1].set_ylabel('r')\n", + " ax[1].set_xlabel('$\\phi$')\n", + "\n", + " ax[0].set_title(r'$\\kappa$')\n", + " ax[1].set_title(r'$\\gamma_t$')\n", + "\n", + " plt.show()" + ] + }, { "cell_type": "markdown", "id": "e9720a7d", @@ -6512,7 +6847,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 19, "id": "32772d61", "metadata": {}, "outputs": [ @@ -6527,7 +6862,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:07:37.643290\n", + " 2022-11-10T14:24:12.551857\n", " image/svg+xml\n", " \n", " \n", @@ -6558,8 +6893,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -6568,10 +6903,10 @@ " \n", " \n", + "\" id=\"m2fa700b9ed\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6607,7 +6942,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6648,7 +6983,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6688,10 +7023,10 @@ " \n", " \n", + "\" id=\"m4dde90a54f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6704,7 +7039,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6735,7 +7070,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6750,7 +7085,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6799,7 +7134,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6814,7 +7149,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6907,15 +7242,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6928,7 +7263,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6943,7 +7278,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6960,7 +7295,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6973,7 +7308,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6988,7 +7323,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7003,7 +7338,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7018,7 +7353,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7033,7 +7368,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7117,15 +7452,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7138,7 +7473,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7153,7 +7488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7170,7 +7505,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7183,7 +7518,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7198,7 +7533,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7213,7 +7548,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7228,7 +7563,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7243,7 +7578,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7293,15 +7628,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7314,7 +7649,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7329,7 +7664,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7346,7 +7681,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7359,7 +7694,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7374,7 +7709,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7389,7 +7724,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7404,7 +7739,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7419,7 +7754,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7496,15 +7831,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7517,7 +7852,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7532,7 +7867,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7549,7 +7884,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7562,7 +7897,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7577,7 +7912,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7592,7 +7927,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7607,7 +7942,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7622,7 +7957,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7693,12 +8028,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7706,12 +8041,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7719,12 +8054,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7734,12 +8069,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7773,12 +8108,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7788,12 +8123,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7803,12 +8138,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7818,12 +8153,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7833,12 +8168,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -8048,22 +8385,22 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8089,7 +8426,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:07:38.157133\n", + " 2022-11-10T14:24:12.951111\n", " image/svg+xml\n", " \n", " \n", @@ -8120,9 +8457,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -8130,10 +8467,10 @@ " \n", " \n", + "\" id=\"mb02d7e6078\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8169,7 +8506,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8209,7 +8546,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8239,7 +8576,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8253,7 +8590,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8336,10 +8673,10 @@ " \n", " \n", + "\" id=\"m8cc670f65c\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8352,7 +8689,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8365,7 +8702,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8379,7 +8716,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8393,7 +8730,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8407,7 +8744,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8497,15 +8834,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8518,7 +8855,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8531,7 +8868,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8545,7 +8882,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8559,7 +8896,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8581,7 +8918,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8594,7 +8931,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8607,7 +8944,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8621,7 +8958,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8635,7 +8972,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8649,7 +8986,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8740,10 +9077,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8760,7 +9097,7 @@ } ], "source": [ - "u.plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", + "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", " kappa_radial,gammat_radial,r_bins)" ] }, @@ -8782,7 +9119,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 20, "id": "38b199f1", "metadata": {}, "outputs": [], @@ -8795,7 +9132,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 21, "id": "c17883c2", "metadata": {}, "outputs": [ @@ -8803,9 +9140,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:174: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:200: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:201: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:178: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:204: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:205: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -8834,7 +9171,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 22, "id": "22ba0469", "metadata": {}, "outputs": [ @@ -8849,7 +9186,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:11:39.719159\n", + " 2022-11-10T14:27:07.045933\n", " image/svg+xml\n", " \n", " \n", @@ -8880,8 +9217,8 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -8890,10 +9227,10 @@ " \n", " \n", + "\" id=\"m72ce32f50b\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8929,7 +9266,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8970,7 +9307,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9010,10 +9347,10 @@ " \n", " \n", + "\" id=\"m5f1f9375ae\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9026,7 +9363,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9057,7 +9394,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9072,7 +9409,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9121,7 +9458,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9136,7 +9473,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9229,15 +9566,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9250,7 +9587,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9265,7 +9602,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9282,7 +9619,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9295,7 +9632,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9310,7 +9647,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9325,7 +9662,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9340,7 +9677,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9355,7 +9692,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9439,15 +9776,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9460,7 +9797,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9475,7 +9812,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9492,7 +9829,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9505,7 +9842,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9520,7 +9857,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9535,7 +9872,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9550,7 +9887,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9565,7 +9902,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9615,15 +9952,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9636,7 +9973,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9651,7 +9988,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9668,7 +10005,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9681,7 +10018,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9696,7 +10033,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9711,7 +10048,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9726,7 +10063,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9741,7 +10078,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9818,15 +10155,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9839,7 +10176,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9854,7 +10191,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9871,7 +10208,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9884,7 +10221,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9899,7 +10236,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9914,7 +10251,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9929,7 +10266,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9944,7 +10281,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10015,7 +10352,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10028,7 +10365,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10041,7 +10378,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10056,12 +10393,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10095,12 +10432,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10110,12 +10447,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -10327,22 +10664,22 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10368,7 +10705,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:11:40.114385\n", + " 2022-11-10T14:27:07.440720\n", " image/svg+xml\n", " \n", " \n", @@ -10399,9 +10736,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -10409,10 +10746,10 @@ " \n", " \n", + "\" id=\"mce3ac5229e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10448,7 +10785,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10488,7 +10825,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10518,7 +10855,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10532,7 +10869,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10615,10 +10952,10 @@ " \n", " \n", + "\" id=\"m83c753ef4d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10631,7 +10968,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10644,7 +10981,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10658,7 +10995,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10672,7 +11009,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10686,7 +11023,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10776,15 +11113,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10797,7 +11134,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10810,7 +11147,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10824,7 +11161,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10838,7 +11175,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10860,7 +11197,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10873,7 +11210,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10886,7 +11223,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10900,7 +11237,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10914,7 +11251,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10928,7 +11265,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11019,10 +11356,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11040,7 +11377,7 @@ ], "source": [ "R_mis_ind = 10\n", - "u.plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", + "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", " kappa_radial[R_mis_ind],gammat_radial[R_mis_ind],r_bins)" ] }, @@ -11054,7 +11391,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 23, "id": "7e458c10", "metadata": {}, "outputs": [ @@ -11069,7 +11406,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:11:40.345236\n", + " 2022-11-10T14:27:07.619307\n", " image/svg+xml\n", " \n", " \n", @@ -11106,10 +11443,10 @@ " \n", " \n", + "\" id=\"m70450c8666\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11145,7 +11482,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11174,7 +11511,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11213,7 +11550,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11260,7 +11597,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11294,7 +11631,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11338,15 +11675,15 @@ " \n", " \n", + "\" id=\"m4e85880d18\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -11860,7 +12212,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11884,7 +12236,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 24, "id": "2864956a", "metadata": {}, "outputs": [ @@ -11899,7 +12251,7 @@ " \n", " \n", " \n", - " 2022-11-09T16:11:40.527305\n", + " 2022-11-10T14:27:07.758031\n", " image/svg+xml\n", " \n", " \n", @@ -11936,15 +12288,15 @@ " \n", " \n", + "\" id=\"me429d8f025\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" id=\"m33fc61d87d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12220,12 +12572,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12236,12 +12588,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12252,12 +12604,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12268,12 +12620,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12281,325 +12633,314 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -12625,7 +12966,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", From 2a696808205db42edcfda6c50a68639a186f4db4 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Fri, 11 Nov 2022 12:26:06 +0100 Subject: [PATCH 07/14] updated new function string descriptions from modelling to be consistent with the rest of utils.py functions --- clmm/utils.py | 182 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 154 insertions(+), 28 deletions(-) diff --git a/clmm/utils.py b/clmm/utils.py index da0579d69..5df9df822 100644 --- a/clmm/utils.py +++ b/clmm/utils.py @@ -12,10 +12,27 @@ from astropy.cosmology import LambdaCDM #update class profiles: - '''A class to generate 2D covnergence profiles on a regular grid - ''' + """A class to generate 2D covnergence profiles on a regular grid + """ + def __init__(self,M,c,z_l,z_s,sig=False): + """Initialise the halo and lensing geometry + + Parameters + ---------- + M: float + halo mass + c: float + halo concentration + z_l: float + lens redshift + z_s: flaot + source redshift + delta_sig: bool (optional) + If False, return convergence profile, if True, return delta Sigma profile + """ + self.M = M self.c = c self.z_l = z_l @@ -28,6 +45,21 @@ def __init__(self,M,c,z_l,z_s,sig=False): def cosmology(self, H_0 = 70., Omega_m = 0.3, Omega_Lambda = 0.7, Tcmb0=2.725): + """ Set the cosmology of the object + + Parameters + ---------- + H_0: float + Hubble parameter + Omega_m: float + Mass density parameter (baryon + dark matter) + Omega_Lambda: float + Effective mass density of dark energy + Tcmb0: float + cmb temperature at z=0 + + """ + self.H_0 = H_0 self.Omega_m = Omega_m self.Tcmb0 = Tcmb0 @@ -37,12 +69,24 @@ def cosmology(self, H_0 = 70., Omega_m = 0.3, Omega_Lambda = 0.7, Tcmb0=2.725): def get_r_vals(self,nbins,lower_r,upper_r,log=False): - '''create radial bins for profiles - nbins: number of bins - lower_r: lowest bin value - upper_r: highest bin value - returns bin edges in units provided, or kpc if none are provided - ''' + """Create radial bins for profiles + + Parameters + ---------- + nbins: int + number of bins + lower_r: float + lowest bin value + upper_r: float + highest bin value + log: bool (optional) + return bins with linear (False) or log (True) separation + + Returns + ------- + r_vals: np.ndarray + bin edges in units provided, or kpc if none are provided + """ #create r values self.nbins = nbins self.lower_r = lower_r @@ -68,13 +112,18 @@ def get_r_vals(self,nbins,lower_r,upper_r,log=False): return self.r_vals def kappa_NFW(self,r_vals=None): - '''r_vals: radial bin values for halo lensing profile - M: halo mass - c: concentration - z_l: lens redshift - z_s: source redshift - delta_sig: If False, return convergence profile, if True, return delta Sigma profile - ''' + """Produce a 1D NFW lensing profile + + Parameters + ---------- + r_vals: np.ndarray (optional) + radial bin values for halo lensing profile + + Returns + ------- + nfw: np.ndarray + 1D NFW lensing profile + """ if np.all(r_vals.value) == None: r_vals = self.r_vals @@ -114,10 +163,20 @@ def kappa_NFW(self,r_vals=None): return (nfw.real / Sigma_crit).decompose() def make_grid(self,npix,r_max): - '''make 2D grid centered on origin - npix: resolution of grid - r_max: width of grid is 2*r_max - ''' + """make 2D grid centered on origin + + Parameters + ---------- + npix: int + resolution of grid + r_max: float + width of grid is 2*r_max + + Returns + ------- + r_2D: np.ndarray + 2D grid centered on origin + """ npix *= 1j #imaginary so that ogrid knows to interpret npix as array size y,x = np.ogrid[-r_max:r_max:npix,-r_max:r_max:npix] @@ -126,9 +185,20 @@ def make_grid(self,npix,r_max): return r_2D def kappa_NFW_2D(self,npix,r_max): + """Create 2D NFW profile on grid - '''create 2D NFW profile on grid - ''' + Parameters + ---------- + npix: int + resolution of grid + r_max: float + set width of grid (2*r_max) + + Returns + ------- + kappa_NFW: np.ndarray + 2D NFW map + """ self.npix = npix self.r_max = r_max @@ -139,9 +209,21 @@ def kappa_NFW_2D(self,npix,r_max): def KaiserSquires(Sigma): - '''Apply the Kaiser Squires algorithm to a 2D convergence field - Returns the complex shear as e1 and e2 - ''' + """Apply the Kaiser Squires algorithm to a 2D convergence field + + Parameters + ---------- + Sigma: np.ndarray + convergence map + + Returns + ------- + e1: np.ndarray + real component of complex shear map + e2: np.ndarray + imaginary component of complex shear map + """ + kappa_tilde = np.fft.fft2(Sigma) k = np.fft.fftfreq(kappa_tilde.shape[0]) @@ -161,9 +243,30 @@ def KaiserSquires(Sigma): return e1, e2 def getTangetial(e1, e2, center, dx=10./1000.): - '''Measure the tangential and cross shear maps from the e1 and e2 maps + """Measure the tangential and cross shear maps from the e1 and e2 maps Requires a center as an input, about which the tangential and cross maps are calculated - ''' + + Parameters + ---------- + e1: np.ndarray + real component of complex shear map + e2: np.ndarray + imaginary component of complex shear map + center: list + x and y coordinates of the center of the map as numpy array indices [center 1, center 2] + + Returns + ------- + et: np.ndarray + tangentail shear map + ex: np.ndarray + cross shear map + radius: np.ndarray + radius map + anlge: np.ndarray + angle map + """ + n = e1.shape[0] xx = np.arange(-n/2, n/2)*dx @@ -186,8 +289,31 @@ def getTangetial(e1, e2, center, dx=10./1000.): return et, ex, radius, angle def getRadial(radius_map,r_bins,angle_map,phi_bins,kappa_map,et_map): - '''Bin a map into radial and angular bins as a 2d histogram - ''' + """Bin a map into radial and angular bins as a 2d histogram + + Parameters + ---------- + radius_map: np.ndarray + 2d radius map + r_bins: np.ndarray + 1d radial bins + angle_map: np.ndarray + 2d angle map + phi_bins: np.ndarray + 1d angular bins + kappa_map: np.ndarray + 2d convergence map + et_map: np.ndarray + 2d tangential shear map + + Returns + ------- + kappa_radial: np.ndarray + 1d convergence radial profile + gammat_radial: np.ndarray + 1d tangential shear radial profile + + """ _N = np.zeros((len(r_bins)-1, len(phi_bins)-1)) _K = np.zeros((len(r_bins)-1, len(phi_bins)-1)) _GT = np.zeros((len(r_bins)-1, len(phi_bins)-1)) From 5e843fad9a0b953af3bf337e255201f9ff068082 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Fri, 24 Feb 2023 15:03:18 +0100 Subject: [PATCH 08/14] removed bug leading to strange tangential shear profiles --- clmm/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clmm/utils.py b/clmm/utils.py index 5df9df822..809b1e390 100644 --- a/clmm/utils.py +++ b/clmm/utils.py @@ -11,6 +11,9 @@ from astropy.cosmology import LambdaCDM #update +def hello_world(): + print('hello world') + class profiles: """A class to generate 2D covnergence profiles on a regular grid """ @@ -139,7 +142,7 @@ def kappa_NFW(self,r_vals=None): delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) x = r_vals/r_s - x = x.value + print(x) Sigma_crit_coeff = c**2 / (4. * np.pi * G) From 22eff54d78816bb858d6a0458c642d929d030c58 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Fri, 24 Feb 2023 16:24:13 +0100 Subject: [PATCH 09/14] removed spurious test function --- clmm/utils.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/clmm/utils.py b/clmm/utils.py index 809b1e390..1b06129d2 100644 --- a/clmm/utils.py +++ b/clmm/utils.py @@ -11,8 +11,6 @@ from astropy.cosmology import LambdaCDM #update -def hello_world(): - print('hello world') class profiles: """A class to generate 2D covnergence profiles on a regular grid @@ -142,7 +140,6 @@ def kappa_NFW(self,r_vals=None): delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) x = r_vals/r_s - print(x) Sigma_crit_coeff = c**2 / (4. * np.pi * G) From ff4383af9cc793a9d6decb75e22e2c61f93c7326 Mon Sep 17 00:00:00 2001 From: Chris Davies Date: Fri, 24 Feb 2023 16:24:45 +0100 Subject: [PATCH 10/14] fixed bug leading to incorrect lensing maps and tangential shear profiles --- examples/demo_modelling.ipynb | 5636 ++++++++++++++------------------- 1 file changed, 2346 insertions(+), 3290 deletions(-) diff --git a/examples/demo_modelling.ipynb b/examples/demo_modelling.ipynb index cf4b70c94..364a1f502 100644 --- a/examples/demo_modelling.ipynb +++ b/examples/demo_modelling.ipynb @@ -19,7 +19,8 @@ "from clmm.galaxycluster import GalaxyCluster\n", "import matplotlib.pyplot as plt\n", "\n", - "import clmm.utils as u" + "import clmm.utils as u\n", + "from clmm.constants import Constants as const" ] }, { @@ -62,46 +63,38 @@ { "cell_type": "code", "execution_count": 3, - "id": "8aea13a2", - "metadata": {}, - "outputs": [], - "source": [ - "#Define the center of the map (in Mpc)\n", - "center_1 = 0\n", - "center_2 = 0\n", - "\n", - "#define radial and angular bins\n", - "N_r_bins = 30\n", - "N_phi_bins = 25\n", - "r_bins = np.insert(np.logspace(-2, 1, N_r_bins), 0, 0)\n", - "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, "id": "909edd57", "metadata": {}, "outputs": [], "source": [ - "from astropy import constants as const #update\n", "from astropy import units as un\n", "\n", "#specify parameters for NFW halo\n", - "c = 1 #concentration\n", - "z_l = 1.0 #lens redshift\n", - "z_s = 2.0 #source redshift\n", - "Mass = 1E13 * const.M_sun\n", + "c = 10 #concentration\n", + "z_l = 0.5 #lens redshift\n", + "z_s = 1.0 #source redshift\n", + "Mass = 1E14 * const.SOLAR_MASS.value * un.kg\n", "\n", "#define physical size of grid\n", - "units = un.mpc\n", - "r_max = 10 * units\n", + "units = un.Mpc\n", + "r_min = 0 * units\n", + "r_max = 50 * units\n", "\n", "#number of pixels in grid\n", "npix = 512\n", "\n", "#define physcial size of a pixel\n", - "dx = r_max/npix" + "dx = r_max/npix\n", + "\n", + "#Define the center of the map (in Mpc)\n", + "center_1 = 0\n", + "center_2 = 0\n", + "\n", + "#define radial and angular bins\n", + "N_r_bins = 30\n", + "N_phi_bins = 25\n", + "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * units\n", + "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" ] }, { @@ -114,20 +107,28 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "5b51bbc8", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" + ] + } + ], "source": [ "#lensing_map has the option to return either Sigma map or the convergence map.\n", "lensing_map = u.profiles(Mass, c, z_l, z_s, sig=False) \n", "#make map\n", - "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max)" + "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max) " ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "b0dc4b6c", "metadata": {}, "outputs": [ @@ -137,12 +138,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:26.732168\n", + " 2023-02-24T16:18:02.711480\n", " image/svg+xml\n", " \n", " \n", @@ -158,24 +159,24 @@ " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -183,15 +184,15 @@ " \n", " \n", + "\" id=\"m546011bb77\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + "\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -286,12 +289,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -299,13 +302,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -313,20 +316,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + "\" id=\"DejaVuSans-4d\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -464,59 +454,45 @@ " \n", " \n", + "\" id=\"m527df05736\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "\" id=\"DejaVuSans-37\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -524,14 +500,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -539,26 +515,53 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -566,26 +569,27 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -593,13 +597,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -607,20 +611,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -702,196 +707,126 @@ " \n", " \n", + "\" id=\"m39ab0d02ce\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -967,7 +902,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "2aaf9cb0", "metadata": {}, "outputs": [], @@ -980,7 +915,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "72993065", "metadata": {}, "outputs": [ @@ -990,12 +925,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:27.062237\n", + " 2023-02-24T16:18:03.115009\n", " image/svg+xml\n", " \n", " \n", @@ -1010,25 +945,25 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1036,15 +971,15 @@ " \n", " \n", + "\" id=\"m39f30c791f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + "\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1139,12 +1076,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1152,13 +1089,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1166,20 +1103,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + "\" id=\"DejaVuSans-4d\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1317,59 +1241,45 @@ " \n", " \n", + "\" id=\"m66ca02ccfe\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "\" id=\"DejaVuSans-37\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1377,14 +1287,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1392,26 +1302,53 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1419,26 +1356,27 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1446,13 +1384,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1460,20 +1398,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1555,196 +1494,174 @@ " \n", " \n", + "\" id=\"m0203b7ec8d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -1950,7 +1903,7 @@ ], "source": [ "axlim = 2*r_max.value\n", - "plt.imshow(kappa_map,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.imshow(Sigma_map,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", "plt.xlabel('x ({0})'.format(r_max.unit))\n", "plt.ylabel('y ({0})'.format(r_max.unit))\n", "plt.colorbar().set_label('$\\\\Sigma [M_\\odot\\; Mpc^{-2}]$',rotation=90)\n", @@ -1967,7 +1920,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "eec34ea3", "metadata": {}, "outputs": [ @@ -1975,10 +1928,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:149: RuntimeWarning: divide by zero encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:149: RuntimeWarning: invalid value encountered in multiply\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:150: RuntimeWarning: divide by zero encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:150: RuntimeWarning: invalid value encountered in multiply\n" + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:231: RuntimeWarning: divide by zero encountered in true_divide\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:231: RuntimeWarning: invalid value encountered in multiply\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:232: RuntimeWarning: divide by zero encountered in true_divide\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:232: RuntimeWarning: invalid value encountered in multiply\n" ] } ], @@ -1996,7 +1949,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "2ba6da86", "metadata": {}, "outputs": [ @@ -2006,12 +1959,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:27.368725\n", + " 2023-02-24T16:18:03.473953\n", " image/svg+xml\n", " \n", " \n", @@ -2027,8 +1980,8 @@ " \n", " \n", " \n", @@ -2042,9 +1995,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2052,10 +2005,10 @@ " \n", " \n", + "\" id=\"m560f94d717\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2091,7 +2044,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2122,7 +2075,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2163,7 +2116,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2212,7 +2165,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2248,7 +2201,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2294,10 +2247,10 @@ " \n", " \n", + "\" id=\"m24ee43be06\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2310,7 +2263,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2325,7 +2278,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2340,7 +2293,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2355,7 +2308,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2370,7 +2323,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2414,7 +2367,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -2435,15 +2388,15 @@ " \n", " \n", + "\" id=\"m0419e92117\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2685,10 +2485,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2709,12 +2509,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:27.615280\n", + " 2023-02-24T16:18:03.750433\n", " image/svg+xml\n", " \n", " \n", @@ -2730,8 +2530,8 @@ " \n", " \n", " \n", @@ -2745,9 +2545,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2755,10 +2555,10 @@ " \n", " \n", + "\" id=\"m85548a1409\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2794,7 +2594,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2825,7 +2625,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2866,7 +2666,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2915,7 +2715,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2951,7 +2751,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2997,10 +2797,10 @@ " \n", " \n", + "\" id=\"m22f4bab593\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3013,7 +2813,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3028,7 +2828,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3043,7 +2843,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3058,7 +2858,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3073,7 +2873,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3117,7 +2917,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -3138,15 +2938,15 @@ " \n", " \n", + "\" id=\"m5f1465ad00\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3394,10 +3035,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3443,7 +3084,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "6b8c1825", "metadata": {}, "outputs": [ @@ -3451,7 +3092,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:178: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:281: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -3461,7 +3102,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "e743f1b8", "metadata": {}, "outputs": [ @@ -3471,12 +3112,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:28.046848\n", + " 2023-02-24T16:18:04.110129\n", " image/svg+xml\n", " \n", " \n", @@ -3492,8 +3133,8 @@ " \n", " \n", " \n", @@ -3507,9 +3148,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3517,10 +3158,10 @@ " \n", " \n", + "\" id=\"m92f6455bb7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3556,7 +3197,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3587,7 +3228,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3628,7 +3269,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3677,7 +3318,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3713,7 +3354,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3759,10 +3400,10 @@ " \n", " \n", + "\" id=\"ma5fac9a529\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3775,7 +3416,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3790,7 +3431,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3805,7 +3446,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3820,7 +3461,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3835,7 +3476,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3879,7 +3520,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -3900,229 +3541,85 @@ " \n", " \n", + "\" id=\"m3659cb97fd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4143,10 +3640,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4167,12 +3664,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:28.294992\n", + " 2023-02-24T16:18:04.492171\n", " image/svg+xml\n", " \n", " \n", @@ -4188,8 +3685,8 @@ " \n", " \n", " \n", @@ -4203,9 +3700,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4213,10 +3710,10 @@ " \n", " \n", + "\" id=\"m7cc8c38bdd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4252,7 +3749,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4283,7 +3780,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4324,7 +3821,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4373,7 +3870,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4409,7 +3906,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4455,10 +3952,10 @@ " \n", " \n", + "\" id=\"m2fd7e40a53\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4471,7 +3968,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4486,7 +3983,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4501,7 +3998,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4516,7 +4013,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4531,7 +4028,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4575,7 +4072,7 @@ "\" style=\"fill:#ffffff;\"/>\n", " \n", " \n", - " \n", " \n", - " \n", " \n", " \n", @@ -4596,15 +4093,15 @@ " \n", " \n", + "\" id=\"m9b6b661a5e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4839,10 +4232,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4878,7 +4271,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "e3d066a0", "metadata": {}, "outputs": [ @@ -4886,13 +4279,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:204: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:205: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:330: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:331: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], "source": [ - "kappa_radial, gammat_radial = u.getRadial(radius_map,r_bins,\n", + "kappa_radial, gammat_radial = u.getRadial(radius_map,r_bins.value,\n", " angle_map,phi_bins,kappa_map,et_map)" ] }, @@ -4906,7 +4299,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "080ff2f4", "metadata": {}, "outputs": [ @@ -4921,7 +4314,7 @@ " \n", " \n", " \n", - " 2022-11-10T14:23:50.025981\n", + " 2023-02-24T16:18:27.896782\n", " image/svg+xml\n", " \n", " \n", @@ -4952,9 +4345,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4962,10 +4355,10 @@ " \n", " \n", + "\" id=\"mca9dba84da\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5001,7 +4394,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5041,7 +4434,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5071,7 +4464,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5085,7 +4478,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5129,10 +4522,10 @@ " \n", " \n", + "\" id=\"mc24da96827\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5145,7 +4538,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5158,7 +4551,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5172,7 +4565,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5186,7 +4579,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5200,7 +4593,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5235,7 +4628,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5261,7 +4654,7 @@ " \n", " \n", " \n", - " 2022-11-10T14:23:50.135653\n", + " 2023-02-24T16:18:28.040127\n", " image/svg+xml\n", " \n", " \n", @@ -5292,9 +4685,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5302,10 +4695,10 @@ " \n", " \n", + "\" id=\"mceb6b8803d\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5341,7 +4734,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5381,7 +4774,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5411,7 +4804,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5425,7 +4818,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5469,10 +4862,10 @@ " \n", " \n", + "\" id=\"m24fbe63169\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5485,7 +4878,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5498,7 +4891,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5512,7 +4905,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5526,7 +4919,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5540,7 +4933,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5575,7 +4968,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5609,7 +5002,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "5c6174be", "metadata": {}, "outputs": [], @@ -5628,7 +5021,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "29a26710", "metadata": {}, "outputs": [ @@ -5638,12 +5031,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:23:50.295823\n", + " 2023-02-24T16:18:28.231147\n", " image/svg+xml\n", " \n", " \n", @@ -5659,18 +5052,18 @@ " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", @@ -5680,15 +5073,15 @@ " \n", " \n", + "\" id=\"m18652810cf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" id=\"mdffdca114b\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + "M 1403 2484 \n", + "Q 997 2584 770 2862 \n", + "Q 544 3141 544 3541 \n", + "Q 544 4100 942 4425 \n", + "Q 1341 4750 2034 4750 \n", + "Q 2731 4750 3128 4425 \n", + "Q 3525 4100 3525 3541 \n", + "Q 3525 3141 3298 2862 \n", + "Q 3072 2584 2669 2484 \n", + "Q 3125 2378 3379 2068 \n", + "Q 3634 1759 3634 1313 \n", + "Q 3634 634 3220 271 \n", + "Q 2806 -91 2034 -91 \n", + "Q 1263 -91 848 271 \n", + "Q 434 634 434 1313 \n", + "Q 434 1759 690 2068 \n", + "Q 947 2378 1403 2484 \n", + "z\n", + "M 1172 3481 \n", + "Q 1172 3119 1398 2916 \n", + "Q 1625 2713 2034 2713 \n", + "Q 2441 2713 2670 2916 \n", + "Q 2900 3119 2900 3481 \n", + "Q 2900 3844 2670 4047 \n", + "Q 2441 4250 2034 4250 \n", + "Q 1625 4250 1398 4047 \n", + "Q 1172 3844 1172 3481 \n", + "z\n", + "\" id=\"DejaVuSans-38\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6497,91 +5829,83 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -6747,7 +6071,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "13660944", "metadata": {}, "outputs": [ @@ -6755,8 +6079,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:204: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:205: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:330: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:331: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -6773,14 +6097,14 @@ "\n", "et_map, ex_map, radius_map, angle_map = u.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", "\n", - "kappa_radial, gammat_radial = u.getRadial(radius_map,r_bins,\n", + "kappa_radial, gammat_radial = u.getRadial(radius_map,r_bins.value,\n", " angle_map,phi_bins,kappa_map,et_map)" ] }, { "cell_type": "code", - "execution_count": 18, - "id": "5e96e118", + "execution_count": 17, + "id": "1cb19534", "metadata": {}, "outputs": [], "source": [ @@ -6847,7 +6171,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "32772d61", "metadata": {}, "outputs": [ @@ -6862,7 +6186,7 @@ " \n", " \n", " \n", - " 2022-11-10T14:24:12.551857\n", + " 2023-02-24T16:18:51.257589\n", " image/svg+xml\n", " \n", " \n", @@ -6893,9 +6217,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -6903,10 +6227,10 @@ " \n", " \n", + "\" id=\"mbcf4f58d91\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6942,7 +6266,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6983,7 +6307,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7023,10 +6347,10 @@ " \n", " \n", + "\" id=\"mf9dc0e7446\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7039,7 +6363,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7070,7 +6394,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7085,7 +6409,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7134,7 +6458,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7149,7 +6473,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7242,15 +6566,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7263,7 +6587,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7278,7 +6602,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7295,7 +6619,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7308,7 +6632,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7323,7 +6647,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7338,7 +6662,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7353,7 +6677,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7368,7 +6692,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7452,15 +6776,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7473,7 +6797,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7488,7 +6812,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7505,7 +6829,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7518,7 +6842,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7533,7 +6857,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7548,7 +6872,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7563,7 +6887,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7578,7 +6902,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7628,15 +6952,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7649,7 +6973,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7664,7 +6988,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7681,7 +7005,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7694,7 +7018,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7709,7 +7033,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7724,7 +7048,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7739,7 +7063,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7754,7 +7078,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7831,15 +7155,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7852,7 +7176,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7867,7 +7191,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7884,7 +7208,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7897,7 +7221,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7912,7 +7236,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7927,7 +7251,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7942,7 +7266,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7957,7 +7281,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8028,12 +7352,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8041,26 +7365,28 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -8069,111 +7395,53 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -8275,27 +7536,27 @@ " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8426,7 +7687,7 @@ " \n", " \n", " \n", - " 2022-11-10T14:24:12.951111\n", + " 2023-02-24T16:18:51.703970\n", " image/svg+xml\n", " \n", " \n", @@ -8457,9 +7718,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -8467,10 +7728,10 @@ " \n", " \n", + "\" id=\"m4a0b084f34\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8506,7 +7767,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8546,7 +7807,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8576,7 +7837,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8590,7 +7851,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8673,10 +7934,10 @@ " \n", " \n", + "\" id=\"m5c847e3152\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8689,7 +7950,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8702,7 +7963,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8716,7 +7977,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8730,7 +7991,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8744,7 +8005,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8834,15 +8095,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8855,7 +8116,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8868,7 +8129,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8882,7 +8143,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8896,7 +8157,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8918,7 +8179,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8931,7 +8192,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8944,7 +8205,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8958,7 +8219,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8972,7 +8233,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8986,7 +8247,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9077,10 +8338,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9119,7 +8380,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "38b199f1", "metadata": {}, "outputs": [], @@ -9132,7 +8393,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "id": "c17883c2", "metadata": {}, "outputs": [ @@ -9140,9 +8401,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:178: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:204: RuntimeWarning: invalid value encountered in true_divide\n", - "/home/cdavies/.local/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:205: RuntimeWarning: invalid value encountered in true_divide\n" + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:281: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:330: RuntimeWarning: invalid value encountered in true_divide\n", + "/home/cdavies/miniconda3/envs/clmm/lib/python3.9/site-packages/clmm-1.4.0-py3.9.egg/clmm/utils.py:331: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -9165,13 +8426,13 @@ "\n", " et_map[j], ex_map[j], radius_map[j], angle_map[j] = u.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", "\n", - " kappa_radial[j], gammat_radial[j] = u.getRadial(radius_map[j],r_bins,\n", + " kappa_radial[j], gammat_radial[j] = u.getRadial(radius_map[j],r_bins.value,\n", " angle_map[j],phi_bins,kappa_map,et_map[j])" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "22ba0469", "metadata": {}, "outputs": [ @@ -9186,7 +8447,7 @@ " \n", " \n", " \n", - " 2022-11-10T14:27:07.045933\n", + " 2023-02-24T16:21:49.746011\n", " image/svg+xml\n", " \n", " \n", @@ -9217,9 +8478,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -9227,10 +8488,10 @@ " \n", " \n", + "\" id=\"m1b912daf8f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9266,7 +8527,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9307,7 +8568,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9347,10 +8608,10 @@ " \n", " \n", + "\" id=\"m8a762b09fe\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9363,7 +8624,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9394,7 +8655,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9409,7 +8670,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9458,7 +8719,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9473,7 +8734,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9566,15 +8827,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9587,7 +8848,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9602,7 +8863,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9619,7 +8880,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9632,7 +8893,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9647,7 +8908,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9662,7 +8923,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9677,7 +8938,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9692,7 +8953,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9776,15 +9037,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9797,7 +9058,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9812,7 +9073,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9829,7 +9090,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9842,7 +9103,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9857,7 +9118,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9872,7 +9133,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9887,7 +9148,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9902,7 +9163,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9952,15 +9213,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9973,7 +9234,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9988,7 +9249,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10005,7 +9266,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10018,7 +9279,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10033,7 +9294,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10048,7 +9309,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10063,7 +9324,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10078,7 +9339,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10155,15 +9416,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10176,7 +9437,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10191,7 +9452,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10208,7 +9469,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10221,7 +9482,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10236,7 +9497,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10251,7 +9512,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10266,7 +9527,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10281,7 +9542,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10352,12 +9613,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10365,26 +9626,28 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -10393,66 +9656,53 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", @@ -10554,27 +9867,27 @@ " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10705,7 +10018,7 @@ " \n", " \n", " \n", - " 2022-11-10T14:27:07.440720\n", + " 2023-02-24T16:21:50.152253\n", " image/svg+xml\n", " \n", " \n", @@ -10736,9 +10049,9 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -10746,10 +10059,10 @@ " \n", " \n", + "\" id=\"m0f34b7a5ad\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10785,7 +10098,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10825,7 +10138,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10855,7 +10168,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10869,7 +10182,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10952,10 +10265,10 @@ " \n", " \n", + "\" id=\"m60cd72affd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10968,7 +10281,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10981,7 +10294,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10995,7 +10308,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11009,7 +10322,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11023,7 +10336,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11113,15 +10426,15 @@ "z\n", "\" style=\"fill:#ffffff;\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11134,7 +10447,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11147,7 +10460,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11161,7 +10474,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11175,7 +10488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11197,7 +10510,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11210,7 +10523,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11223,7 +10536,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11237,7 +10550,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11251,7 +10564,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11265,7 +10578,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11356,10 +10669,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11391,7 +10704,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "id": "7e458c10", "metadata": {}, "outputs": [ @@ -11401,12 +10714,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:27:07.619307\n", + " 2023-02-24T16:21:50.329535\n", " image/svg+xml\n", " \n", " \n", @@ -11422,18 +10735,18 @@ " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", @@ -11443,15 +10756,15 @@ " \n", " \n", + "\" id=\"m5f188eb863\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + "M 3366 4563 \n", + "L 3366 3988 \n", + "Q 3128 4100 2886 4159 \n", + "Q 2644 4219 2406 4219 \n", + "Q 1781 4219 1451 3797 \n", + "Q 1122 3375 1075 2522 \n", + "Q 1259 2794 1537 2939 \n", + "Q 1816 3084 2150 3084 \n", + "Q 2853 3084 3261 2657 \n", + "Q 3669 2231 3669 1497 \n", + "Q 3669 778 3244 343 \n", + "Q 2819 -91 2113 -91 \n", + "Q 1303 -91 875 529 \n", + "Q 447 1150 447 2328 \n", + "Q 447 3434 972 4092 \n", + "Q 1497 4750 2381 4750 \n", + "Q 2619 4750 2861 4703 \n", + "Q 3103 4656 3366 4563 \n", + "z\n", + "\" id=\"DejaVuSans-36\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -12236,7 +11423,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "id": "2864956a", "metadata": {}, "outputs": [ @@ -12246,12 +11433,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2022-11-10T14:27:07.758031\n", + " 2023-02-24T16:21:50.473737\n", " image/svg+xml\n", " \n", " \n", @@ -12266,19 +11453,19 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", @@ -12288,15 +11475,15 @@ " \n", " \n", + "\" id=\"m811ffac553\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -12520,454 +11656,374 @@ " \n", " \n", + "\" id=\"m8561ab0302\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" From 63a3f52fb6c0adb9cab3939d2692c47ebdad7413 Mon Sep 17 00:00:00 2001 From: AlessandraFumagalli Date: Thu, 6 Feb 2025 13:27:13 +0100 Subject: [PATCH 11/14] Modifed "model_profile.py" (previous "modelling.py") to compute cosmological quantities with pyccl instead of astropy. Updated example notebook. --- clmm/model_profile.py | 302 +++++ examples/demo_modelling.ipynb | 2306 ++++++++++++++++----------------- 2 files changed, 1446 insertions(+), 1162 deletions(-) create mode 100644 clmm/model_profile.py diff --git a/clmm/model_profile.py b/clmm/model_profile.py new file mode 100644 index 000000000..ebbf37047 --- /dev/null +++ b/clmm/model_profile.py @@ -0,0 +1,302 @@ +import numpy as np +import pyccl as ccl +from pyccl import physical_constants as const +from astropy import units as un + + +class profiles: + ''' + Class for computing shear profiles + + Attributes + ---------- + M: float + mass (units: M_sun) + c: float + concentration + z_l: float + lens redshift + z_s: float + source redshift + compute_sigma: bool + True for computing Sigma (surface density) profiles, + False for computing kappa (convergence) profiles + ''' + + def __init__(self,cosmo,M,c,z_l,z_s,compute_sigma=False): + + self.M = M # M_sun + self.c = c + self.a_l = 1./(1.+z_l) # ccl works with scale factor instead of redshift + self.a_s = 1./(1.+z_s) + self.compute_sigma = compute_sigma + + # physical constants with units (cosmological) + self.const_G = const.GNEWT * (un.Mpc/const.MPC_TO_METER)**3 /(un.M_sun/const.SOLAR_MASS) / un.s**2. # Mpc^3/Msun/s^2 + self.const_c = const.CLIGHT * (un.Mpc/const.MPC_TO_METER)/ un.s # Mpc/s + + # cosmology + self.cosmo = cosmo + return + + + def get_r_vals(self,nbins,lower_r,upper_r,log=False): + ''' + Create radial bins for profiles + + Attributes + ---------- + nbins: int + number of bins + lower_r: float + lowest bin value + upper_r: float + highest bin value + + Returns + ---------- + r_vals: float or array + bin edges in units provided, or kpc if none are provided + ''' + + #create r values + self.nbins = nbins + self.lower_r = lower_r + self.upper_r = upper_r + self.log_r_vals = log + + if self.log_r_vals: + if self.lower_r == 0: + raise ValueError('log(lower_r) cannot be evaluated for lower_r = 0') + + r_vals = np.geomspace(self.lower_r,self.upper_r,self.nbins+1) + + else: + r_vals = np.linspace(self.lower_r,self.upper_r,self.nbins+1) + + #if no units are provided, set units to kpc, otherwise keep input units + r_vals *= un.dimensionless_unscaled + if r_vals.unit == un.dimensionless_unscaled: + r_vals *= un.kpc + + self.r_vals = r_vals + return self.r_vals + + def kappa_NFW(self,r_vals=None): + ''' + Create radial bins for profiles + + Attributes + ---------- + r_vals: float or array + radial bin values for halo lensing profile + cosmo : clmm.Cosmology object + CLMM Cosmology object + + Returns + ---------- + nfw: float or array + If compute_sigma is True, returns the surface density (Sigma) profile, + else, returns kappa profiles + ''' + + if np.all(r_vals.value) == None: + r_vals = self.r_vals + + + Hz = self.cosmo.h_over_h0(self.a_l) * self.cosmo.cosmo.params.h * 100 * 1/(const.MPC_TO_METER*1e-3) / un.s # units: 1/s + r_200 = (((self.const_G * self.M)/(100. * Hz**2) )**(1./3.)) # units: Mpc + r_s = r_200 * self.c + delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) + + x = r_vals/r_s + + Sigma_crit_coeff = self.const_c**2 / (4. * np.pi * self.const_G) # units: Msun/Mpc + + D_s = self.cosmo.angular_diameter_distance(self.a_s) *un.Mpc + D_d = self.cosmo.angular_diameter_distance(self.a_l) *un.Mpc + D_ds = self.cosmo.angular_diameter_distance(self.a_l,self.a_s) *un.Mpc + + Sigma_crit = Sigma_crit_coeff * D_s / (D_d * D_ds) + critical_density = self.cosmo.rho_x(self.a_l, 'critical', is_comoving=False) * un.M_sun/un.Mpc**3 + k_s = critical_density * delta_c * r_s + + coeff = 2.*k_s / (x**2 - 1.) + f_internal = 1. - (2./np.lib.scimath.sqrt(1.-x**2)) * np.arctanh(np.lib.scimath.sqrt((1.-x)/(1.+x))) + + nfw = coeff * f_internal.real + + if self.compute_sigma: + return nfw # units: Msun/Mpc^2 + else: + return nfw / Sigma_crit # units: adimensional + + def make_grid(self,npix,r_max): + ''' + Make 2D grid centered on origin + + Attributes + ---------- + npix: int + resolution of grid + r_max: float + width of grid is 2*r_max + + Returns + --------- + r_2D: array + 2D grid (side=npix) + ''' + + npix *= 1j #imaginary so that ogrid knows to interpret npix as array size + y,x = np.ogrid[-r_max:r_max:npix,-r_max:r_max:npix] + r_2D = np.hypot(y,x) + + return r_2D + + def kappa_NFW_2D(self,npix,r_max): + ''' + Create 2D NFW profile on a grid + + Attributes + ---------- + npix: int + resolution of grid + r_max: float + width of grid is 2*r_max + + Returns + --------- + kappa_nfw: array + NFW profile (Sigma or kappa) for each point of the 2D grid + + ''' + + self.npix = npix + self.r_max = r_max + r_2D = self.make_grid(self.npix,self.r_max) + + return self.kappa_NFW(r_2D) + + + +def KaiserSquires(Sigma): + ''' + Kaiser & Squires method for computing shear components + + Attributes + ---------- + Sigma: array + Sigma map + + Returns + --------- + e1,e2: arrays + shear maps + ''' + + kappa_tilde = np.fft.fft2(Sigma) + + k = np.fft.fftfreq(kappa_tilde.shape[0]) + + oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2) + oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :] + + oper_1[0, 0] = -1 + oper_2[0, 0] = -1 + + e1_tilde = oper_1*kappa_tilde + e2_tilde = oper_2*kappa_tilde + + e1 = np.fft.ifft2(e1_tilde).real + e2 = np.fft.ifft2(e2_tilde).real + + return e1, e2 + +def getTangential(e1, e2, center, dx=10./1000.): + ''' + Compute tangential shear profiles + + Attributes + ---------- + e1,e2: arrays + shear maps + center: array + center of the maps + dx: float + physcial size of a pixel + + Returns + --------- + et,ex: arrays + tangential and cross shear maps aroud the given center + radius, angle: arrays + radius and angle maps, used for computing the radial profile + ''' + + n = e1.shape[0] + + xx = np.arange(-n/2, n/2)*dx + + XX, YY = np.meshgrid(xx, xx) + + center_1, center_2 = center + + from_cent_1 = XX - center_1 + from_cent_2 = YY - center_2 + + angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2)) + radius = np.sqrt(from_cent_1**2+from_cent_2**2) + + angle[np.isnan(angle)] = 0 + + et = - e1*np.cos(2*angle) - e2*np.sin(2*angle) + ex = + e1*np.sin(2*angle) - e2*np.cos(2*angle) + + return et, ex, radius, angle + +def getRadial(radius_map,angle_map,r_bins,phi_bins,kappa_map,et_map): + ''' + Calculate the radial convergence profile from the kappa map + and the radial tangential shear profile from the e_tangential map + + Attributes + ---------- + radius_map: array + radius map + angle_map: + angle map + r_bins: array + radial bins + phi_bins: array + angular bins + kappa_map: array + convergence map + et_map: array + tangential shear map + + Returns + --------- + kappa_radial: array + radial convergence profile + gammat_radial: array + radial tangential shear profile + ''' + + _N = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + _K = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + _GT = np.zeros((len(r_bins)-1, len(phi_bins)-1)) + + ii_r = np.digitize(radius_map, r_bins) - 1 + ii_phi = np.digitize(angle_map, phi_bins) - 1 + + for i_r, i_phi, kk, gg in zip(ii_r.flatten(), ii_phi.flatten(), kappa_map.flatten(), et_map.flatten()): + + _N[i_r, i_phi] += 1 + _K[i_r, i_phi] += kk + _GT[i_r, i_phi] += gg + + kappa_radial = _K/_N + gammat_radial = _GT/_N + + return kappa_radial,gammat_radial diff --git a/examples/demo_modelling.ipynb b/examples/demo_modelling.ipynb index 2035956a2..d7bdc6e2c 100644 --- a/examples/demo_modelling.ipynb +++ b/examples/demo_modelling.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 36, "id": "45308159", "metadata": {}, "outputs": [], @@ -14,6 +14,7 @@ "import matplotlib.pyplot as plt\n", "import sys\n", "from astropy import units as un\n", + "import pyccl as ccl\n", "import clmm\n", "from clmm import Cosmology\n", "from clmm.support import mock_data as mock\n", @@ -21,7 +22,7 @@ "from clmm.constants import Constants as const\n", "\n", "# profile modelling package\n", - "import clmm.modelling as mod" + "import clmm.model_profile as mod" ] }, { @@ -72,12 +73,11 @@ "c = 10 #concentration\n", "z_l = 0.5 #lens redshift\n", "z_s = 1.0 #source redshift\n", - "Mass = 1E14 * const.SOLAR_MASS.value * un.kg\n", + "Mass = 1e14 * un.M_sun\n", "\n", "# define physical size of grid\n", - "units = un.Mpc\n", - "r_min = 0 * units\n", - "r_max = 50 * units\n", + "r_min = 0 * un.Mpc\n", + "r_max = 50 * un.Mpc\n", "\n", "# number of pixels in grid\n", "npix = 512\n", @@ -92,7 +92,7 @@ "# define radial and angular bins\n", "N_r_bins = 30\n", "N_phi_bins = 25\n", - "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * units\n", + "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * un.Mpc\n", "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" ] }, @@ -119,8 +119,11 @@ } ], "source": [ + "# set cosmology\n", + "cosmo = ccl.Cosmology(Omega_c=0.25, Omega_b = 0.05, h=0.7, sigma8=0.8, n_s=0.96)\n", + "\n", "# lensing_map has the option to return either Sigma map or the convergence map\n", - "lensing_map = mod.profiles(Mass, c, z_l, z_s, sig=False) \n", + "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=False) \n", "\n", "# make map\n", "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max) " @@ -143,7 +146,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:01.954245\n", + " 2025-02-06T12:27:04.266890\n", " image/svg+xml\n", " \n", " \n", @@ -174,20 +177,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image052511c7d8\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"55.345313\" y=\"-10.711219\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -247,7 +250,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -299,7 +302,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -314,7 +317,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -355,7 +358,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -368,7 +371,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -382,7 +385,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -396,7 +399,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -410,7 +413,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -546,12 +549,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -567,7 +570,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -582,7 +585,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -597,7 +600,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -612,7 +615,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -625,7 +628,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -639,7 +642,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -653,7 +656,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -667,7 +670,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -742,23 +745,23 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABMAAAFyCAYAAAAXj+GHAAAB9ElEQVR4nO2dgQ3CQAwD8/0fjRHYfxSeGYJO4iQnA1h1HDvfgtr1Wu9bUD0UUFXVqcXhnfUsDoy8MrZnITSLpcmB0WqCDvDSLCtNdM7g0SDD0UuTVXMc0K0QNXMcMBu9WWo1tTStap4r7hkJ5qWZ4QByztDRCFFzjN4vswM4LLMDbobRL6im2AHk0KbkmZgmqyYHlmN0Dkx8u2MeDRDMTHPU7IKFbPSQPCOPoWaaM7RtMG1qhITj0OxXzI2YVU3xDtD2bGj2a2j+GyykZ9g/JktN0xvbIdtJS3N61i+x0VNiO4Pm9Kxd6JVNnvVrhvYHsJjR4M7bKaPhVTNmaFGwBAd4BVA7gBsNrwBiNb1G9/ZsHNAHA392Mp/PvEPLGr0ierYyRiOGJgiGpgYpgLhnXprwqrPSBFmqabLexLDqPCk989IEwULUfMDDXoiaYgcMzR/AxA4gaYaoaQWDe0beo4tphqiZkWewmh8STNuzFKODam4vTVZNrmdio+/pWRvM7ICI2N4hNNElTBqdvDLzqhMf9oZmF4xMDfN2IsNRbPSQPGPVtBod3uhWNWFvos81tD0L2QEZecbeb2rVhIc24ikVG47iM6308Y3Z6Np/xsF5xtXZ4p6B79kjL43eAShN68uHYDW1NFk1wc++mHuG0pR+wuQL9NSN5oKR0h0AAAAASUVORK5CYII=\" id=\"image42941777f6\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"339.12\" y=\"-10.8\" width=\"13.68\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -767,12 +770,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -781,12 +784,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -795,12 +798,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -810,12 +813,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -825,12 +828,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -840,12 +843,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -855,12 +858,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -906,7 +909,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -945,7 +948,7 @@ "outputs": [], "source": [ "# lensing_map has the option to return either Sigma map or the convergence map.\n", - "lensing_map = mod.profiles(Mass, c, z_l, z_s, sig=True) \n", + "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=True) \n", "\n", "# make map\n", "Sigma_map = lensing_map.kappa_NFW_2D(npix,r_max)" @@ -968,7 +971,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:02.115053\n", + " 2025-02-06T12:27:04.570164\n", " image/svg+xml\n", " \n", " \n", @@ -999,20 +1002,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image203d6ee01d\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"55.345313\" y=\"-17.510437\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1072,7 +1075,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1124,7 +1127,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1139,7 +1142,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1180,7 +1183,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1193,7 +1196,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1207,7 +1210,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1221,7 +1224,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1235,7 +1238,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1371,12 +1374,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1392,7 +1395,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1407,7 +1410,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1422,7 +1425,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1437,7 +1440,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1450,7 +1453,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1464,7 +1467,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1478,7 +1481,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1492,7 +1495,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1567,23 +1570,23 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABMAAAFyCAYAAAAXj+GHAAAB9ElEQVR4nO2dgQ3CQAwD8/0fjRHYfxSeGYJO4iQnA1h1HDvfgtr1Wu9bUD0UUFXVqcXhnfUsDoy8MrZnITSLpcmB0WqCDvDSLCtNdM7g0SDD0UuTVXMc0K0QNXMcMBu9WWo1tTStap4r7hkJ5qWZ4QByztDRCFFzjN4vswM4LLMDbobRL6im2AHk0KbkmZgmqyYHlmN0Dkx8u2MeDRDMTHPU7IKFbPSQPCOPoWaaM7RtMG1qhITj0OxXzI2YVU3xDtD2bGj2a2j+GyykZ9g/JktN0xvbIdtJS3N61i+x0VNiO4Pm9Kxd6JVNnvVrhvYHsJjR4M7bKaPhVTNmaFGwBAd4BVA7gBsNrwBiNb1G9/ZsHNAHA392Mp/PvEPLGr0ierYyRiOGJgiGpgYpgLhnXprwqrPSBFmqabLexLDqPCk989IEwULUfMDDXoiaYgcMzR/AxA4gaYaoaQWDe0beo4tphqiZkWewmh8STNuzFKODam4vTVZNrmdio+/pWRvM7ICI2N4hNNElTBqdvDLzqhMf9oZmF4xMDfN2IsNRbPSQPGPVtBod3uhWNWFvos81tD0L2QEZecbeb2rVhIc24ikVG47iM6308Y3Z6Np/xsF5xtXZ4p6B79kjL43eAShN68uHYDW1NFk1wc++mHuG0pR+wuQL9NSN5oKR0h0AAAAASUVORK5CYII=\" id=\"imageb8ba322a23\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"339.12\" y=\"-17.28\" width=\"13.68\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1591,12 +1594,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1604,12 +1607,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1698,12 +1701,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2003,13 +2006,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:138: RuntimeWarning: divide by zero encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:202: RuntimeWarning: divide by zero encountered in divide\n", " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:138: RuntimeWarning: invalid value encountered in multiply\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:202: RuntimeWarning: invalid value encountered in multiply\n", " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:139: RuntimeWarning: divide by zero encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:203: RuntimeWarning: divide by zero encountered in divide\n", " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:139: RuntimeWarning: invalid value encountered in multiply\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:203: RuntimeWarning: invalid value encountered in multiply\n", " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n" ] } @@ -2043,7 +2046,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:02.227020\n", + " 2025-02-06T12:27:05.245877\n", " image/svg+xml\n", " \n", " \n", @@ -2074,20 +2077,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imageeb27f97ea0\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"33.2875\" y=\"-10.451344\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2123,7 +2126,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2154,7 +2157,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2195,7 +2198,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2244,7 +2247,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2280,7 +2283,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2324,12 +2327,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2342,7 +2345,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2357,7 +2360,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2372,7 +2375,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2387,7 +2390,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2402,7 +2405,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2446,23 +2449,23 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABIAAAFyCAYAAAD4TYq5AAAB70lEQVR4nO2d0Q0CMQxD02tHYwT2H4UyQvh4Qk9WMoBVx47bHqdjvdb7FlAPAVJVdWoxWGc9iwGiVsT1KJhacdQYIFI1yNk+amWjhvkIlJ8KNh81TrVxdlfBqmU7e3bappSq6ajZVDtX2CMKyEct19mUjzD5g1Wboe3L6GwGx+jsmzu0F1JN6GzKkMl5JKTGqcYAZQ8tAyS8Qhjlh4CM1Ea1Dih4pw3OI+roZ6Q2hmyBdNMfHGxDra/oS41NNWFm63o01Poaav8ECu4R8jZcKan5ojZ4F9FRmx71JRza5KjNpTY9agtb0eRRX2PIH4Ci5WfOtcny+1SLNiQGlOpsX7OVzmbk9zVbqJpvaH09Gmf3QNDPIsbzkc+Q3NBWbI9WrvzR1CAgX9RiqmE9olYkDDYfNYiZkprO2U9yj3zUIKBg1R7ooBWsmtDZQ+0HIKGzKWrBqtmAwB5Rd1ohtWDVcvMIVO1DAel6lDy0kGrbR41TjemRcGj39KgFMjo7Nmp3MDVsg6SGllqRcTsSHrSGWgdETb9xF6GCTTi0wXnEqWYbWnCntakGzhp279f1KDizc/OIu6/pVAMNGfu0hgs24RlS9kjDOLS6N6LAPGLqbGGPoO9oUUsiMxujZvtwCaiajhqnGvRXBcYeYdRkn+H/AmwfjeY0lt0cAAAAAElFTkSuQmCC\" id=\"image13aae17757\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"317.52\" y=\"-10.08\" width=\"12.96\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2496,12 +2499,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2509,12 +2512,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2523,12 +2526,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2550,7 +2553,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2574,7 +2577,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:02.317451\n", + " 2025-02-06T12:27:05.365230\n", " image/svg+xml\n", " \n", " \n", @@ -2605,20 +2608,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image533cf10b85\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"33.2875\" y=\"-10.451344\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2654,7 +2657,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2685,7 +2688,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2726,7 +2729,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2775,7 +2778,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2811,7 +2814,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2855,12 +2858,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2873,7 +2876,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2888,7 +2891,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2903,7 +2906,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2918,7 +2921,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2933,7 +2936,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2977,23 +2980,23 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABIAAAFyCAYAAAD4TYq5AAAB70lEQVR4nO2d0Q0CMQxD02tHYwT2H4UyQvh4Qk9WMoBVx47bHqdjvdb7FlAPAVJVdWoxWGc9iwGiVsT1KJhacdQYIFI1yNk+amWjhvkIlJ8KNh81TrVxdlfBqmU7e3bappSq6ajZVDtX2CMKyEct19mUjzD5g1Wboe3L6GwGx+jsmzu0F1JN6GzKkMl5JKTGqcYAZQ8tAyS8Qhjlh4CM1Ea1Dih4pw3OI+roZ6Q2hmyBdNMfHGxDra/oS41NNWFm63o01Poaav8ECu4R8jZcKan5ojZ4F9FRmx71JRza5KjNpTY9agtb0eRRX2PIH4Ci5WfOtcny+1SLNiQGlOpsX7OVzmbk9zVbqJpvaH09Gmf3QNDPIsbzkc+Q3NBWbI9WrvzR1CAgX9RiqmE9olYkDDYfNYiZkprO2U9yj3zUIKBg1R7ooBWsmtDZQ+0HIKGzKWrBqtmAwB5Rd1ohtWDVcvMIVO1DAel6lDy0kGrbR41TjemRcGj39KgFMjo7Nmp3MDVsg6SGllqRcTsSHrSGWgdETb9xF6GCTTi0wXnEqWYbWnCntakGzhp279f1KDizc/OIu6/pVAMNGfu0hgs24RlS9kjDOLS6N6LAPGLqbGGPoO9oUUsiMxujZvtwCaiajhqnGvRXBcYeYdRkn+H/AmwfjeY0lt0cAAAAAElFTkSuQmCC\" id=\"image4f042c3e96\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"317.52\" y=\"-10.08\" width=\"12.96\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3027,12 +3030,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3040,12 +3043,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3054,12 +3057,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3081,7 +3084,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3133,13 +3136,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:165: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:248: RuntimeWarning: invalid value encountered in divide\n", " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n" ] } ], "source": [ - "et_map, ex_map, radius_map, angle_map = mod.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)" + "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)" ] }, { @@ -3159,7 +3162,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:02.463586\n", + " 2025-02-06T12:27:05.909916\n", " image/svg+xml\n", " \n", " \n", @@ -3190,20 +3193,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagebb5a4c16b3\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"33.2875\" y=\"-10.451344\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3239,7 +3242,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3270,7 +3273,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3311,7 +3314,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3360,7 +3363,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3396,7 +3399,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3440,12 +3443,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3458,7 +3461,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3473,7 +3476,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3488,7 +3491,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3503,7 +3506,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3518,7 +3521,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3562,23 +3565,23 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABIAAAFyCAYAAAD4TYq5AAAB70lEQVR4nO2d0Q0CMQxD02tHYwT2H4UyQvh4Qk9WMoBVx47bHqdjvdb7FlAPAVJVdWoxWGc9iwGiVsT1KJhacdQYIFI1yNk+amWjhvkIlJ8KNh81TrVxdlfBqmU7e3bappSq6ajZVDtX2CMKyEct19mUjzD5g1Wboe3L6GwGx+jsmzu0F1JN6GzKkMl5JKTGqcYAZQ8tAyS8Qhjlh4CM1Ea1Dih4pw3OI+roZ6Q2hmyBdNMfHGxDra/oS41NNWFm63o01Poaav8ECu4R8jZcKan5ojZ4F9FRmx71JRza5KjNpTY9agtb0eRRX2PIH4Ci5WfOtcny+1SLNiQGlOpsX7OVzmbk9zVbqJpvaH09Gmf3QNDPIsbzkc+Q3NBWbI9WrvzR1CAgX9RiqmE9olYkDDYfNYiZkprO2U9yj3zUIKBg1R7ooBWsmtDZQ+0HIKGzKWrBqtmAwB5Rd1ohtWDVcvMIVO1DAel6lDy0kGrbR41TjemRcGj39KgFMjo7Nmp3MDVsg6SGllqRcTsSHrSGWgdETb9xF6GCTTi0wXnEqWYbWnCntakGzhp279f1KDizc/OIu6/pVAMNGfu0hgs24RlS9kjDOLS6N6LAPGLqbGGPoO9oUUsiMxujZvtwCaiajhqnGvRXBcYeYdRkn+H/AmwfjeY0lt0cAAAAAElFTkSuQmCC\" id=\"imageea4f72be38\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"317.52\" y=\"-10.08\" width=\"12.96\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3586,12 +3589,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3599,12 +3602,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3613,12 +3616,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3627,12 +3630,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3641,12 +3644,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3668,7 +3671,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3692,7 +3695,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:02.553874\n", + " 2025-02-06T12:27:06.007722\n", " image/svg+xml\n", " \n", " \n", @@ -3723,20 +3726,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image737f6a0ed4\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"33.2875\" y=\"-10.451344\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3772,7 +3775,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3803,7 +3806,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3844,7 +3847,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3893,7 +3896,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3929,7 +3932,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3973,12 +3976,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3991,7 +3994,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4006,7 +4009,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4021,7 +4024,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4036,7 +4039,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4051,7 +4054,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4095,23 +4098,23 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABIAAAFyCAYAAAD4TYq5AAAB70lEQVR4nO2d0Q0CMQxD02tHYwT2H4UyQvh4Qk9WMoBVx47bHqdjvdb7FlAPAVJVdWoxWGc9iwGiVsT1KJhacdQYIFI1yNk+amWjhvkIlJ8KNh81TrVxdlfBqmU7e3bappSq6ajZVDtX2CMKyEct19mUjzD5g1Wboe3L6GwGx+jsmzu0F1JN6GzKkMl5JKTGqcYAZQ8tAyS8Qhjlh4CM1Ea1Dih4pw3OI+roZ6Q2hmyBdNMfHGxDra/oS41NNWFm63o01Poaav8ECu4R8jZcKan5ojZ4F9FRmx71JRza5KjNpTY9agtb0eRRX2PIH4Ci5WfOtcny+1SLNiQGlOpsX7OVzmbk9zVbqJpvaH09Gmf3QNDPIsbzkc+Q3NBWbI9WrvzR1CAgX9RiqmE9olYkDDYfNYiZkprO2U9yj3zUIKBg1R7ooBWsmtDZQ+0HIKGzKWrBqtmAwB5Rd1ohtWDVcvMIVO1DAel6lDy0kGrbR41TjemRcGj39KgFMjo7Nmp3MDVsg6SGllqRcTsSHrSGWgdETb9xF6GCTTi0wXnEqWYbWnCntakGzhp279f1KDizc/OIu6/pVAMNGfu0hgs24RlS9kjDOLS6N6LAPGLqbGGPoO9oUUsiMxujZvtwCaiajhqnGvRXBcYeYdRkn+H/AmwfjeY0lt0cAAAAAElFTkSuQmCC\" id=\"image05bd03f793\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"317.52\" y=\"-10.08\" width=\"12.96\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4145,12 +4148,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4160,12 +4163,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4174,12 +4177,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4187,12 +4190,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4200,12 +4203,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4214,12 +4217,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4241,7 +4244,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4283,16 +4286,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n" ] } ], "source": [ - "kappa_radial, gammat_radial = mod.getRadial(radius_map,r_bins.value,\n", - " angle_map,phi_bins,kappa_map,et_map)" + "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map)" ] }, { @@ -4320,7 +4324,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:06.673694\n", + " 2025-02-06T12:27:10.231896\n", " image/svg+xml\n", " \n", " \n", @@ -4351,20 +4355,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagee77f6c549a\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"26.925\" y=\"-6.912\" width=\"222.48\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4400,7 +4404,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4440,7 +4444,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4470,7 +4474,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4484,7 +4488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4526,12 +4530,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4544,7 +4548,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4557,7 +4561,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4571,7 +4575,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4585,7 +4589,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4599,7 +4603,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4634,7 +4638,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4658,7 +4662,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:06.718096\n", + " 2025-02-06T12:27:10.276872\n", " image/svg+xml\n", " \n", " \n", @@ -4689,20 +4693,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image79efeed674\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"26.925\" y=\"-6.912\" width=\"222.48\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4738,7 +4742,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4778,7 +4782,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4808,7 +4812,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4822,7 +4826,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4864,12 +4868,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4882,7 +4886,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4895,7 +4899,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4909,7 +4913,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4923,7 +4927,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4937,7 +4941,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4972,7 +4976,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5009,7 +5013,7 @@ "metadata": {}, "outputs": [], "source": [ - "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", + "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", "gammat_1D_radial = gammat_radial.mean(axis=-1)" ] }, @@ -5038,7 +5042,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:06.777632\n", + " 2025-02-06T12:27:10.336359\n", " image/svg+xml\n", " \n", " \n", @@ -5073,12 +5077,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5114,7 +5118,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5154,7 +5158,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5184,7 +5188,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5198,7 +5202,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5238,7 +5242,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5371,17 +5375,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5389,12 +5393,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5403,12 +5407,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + "\" clip-path=\"url(#p293963b791)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6064,7 +6068,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5589d279-b20a-4fd6-ae7d-f9ff3ccd6da5", + "id": "085bd120-6283-4d8f-adeb-bf4e2c781ba2", "metadata": {}, "outputs": [], "source": [] @@ -6081,7 +6085,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 28, "id": "13660944", "metadata": {}, "outputs": [ @@ -6089,9 +6093,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n" ] } @@ -6108,13 +6112,15 @@ "center_2 = R_mis*np.sin(_phi_Rmis)\n", "\n", "# get tangential and radial profiles\n", - "et_map, ex_map, radius_map, angle_map = mod.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", - "kappa_radial, gammat_radial = mod.getRadial(radius_map,r_bins.value,angle_map,phi_bins,kappa_map,et_map)" + "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map)" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 29, "id": "1cb19534", "metadata": {}, "outputs": [], @@ -6182,7 +6188,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 30, "id": "32772d61", "metadata": {}, "outputs": [ @@ -6197,7 +6203,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:11.163150\n", + " 2025-02-06T12:32:37.435264\n", " image/svg+xml\n", " \n", " \n", @@ -6228,20 +6234,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image7ee643ddc8\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"33.2875\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6277,7 +6283,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6318,7 +6324,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6356,12 +6362,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6374,7 +6380,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6405,7 +6411,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6420,7 +6426,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6469,7 +6475,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6484,7 +6490,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6577,15 +6583,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagea81b59df13\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"210.534559\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6598,7 +6604,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6613,7 +6619,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6630,7 +6636,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6643,7 +6649,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6658,7 +6664,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6673,7 +6679,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6688,7 +6694,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6703,7 +6709,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6787,15 +6793,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagef7bab8e4fc\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"387.781618\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6808,7 +6814,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6823,7 +6829,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6840,7 +6846,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6853,7 +6859,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6868,7 +6874,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6883,7 +6889,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6898,7 +6904,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6913,7 +6919,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6963,15 +6969,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image1b641d4b55\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"33.2875\" y=\"-203.144007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6984,7 +6990,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6999,7 +7005,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7016,7 +7022,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7029,7 +7035,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7044,7 +7050,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7059,7 +7065,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7074,7 +7080,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7089,7 +7095,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7166,15 +7172,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imaged99be0992b\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"210.534559\" y=\"-203.144007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7187,7 +7193,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7202,7 +7208,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7219,7 +7225,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7232,7 +7238,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7247,7 +7253,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7262,7 +7268,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7277,7 +7283,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7292,7 +7298,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7363,7 +7369,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7376,7 +7382,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7390,7 +7396,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7406,12 +7412,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7419,12 +7425,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7433,12 +7439,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7447,12 +7453,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "L 396.906532 211.106521 \n", + "L 398.759334 233.425468 \n", + "L 401.244641 257.553992 \n", + "L 404.578372 278.691777 \n", + "L 409.05016 296.32789 \n", + "L 415.048512 310.485972 \n", + "L 423.094561 321.336388 \n", + "L 433.887341 329.289738 \n", + "L 448.364523 334.877394 \n", + "L 467.783874 338.644572 \n", + "L 493.832535 341.092294 \n", + "L 528.773596 342.540087 \n", + "\" clip-path=\"url(#p242ff76bfc)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "L 396.906532 344.047103 \n", + "L 398.759334 326.816101 \n", + "L 401.244641 316.66365 \n", + "L 404.578372 313.430862 \n", + "L 409.05016 314.208029 \n", + "L 415.048512 317.286032 \n", + "L 423.094561 321.470236 \n", + "L 433.887341 325.966772 \n", + "L 448.364523 330.23797 \n", + "L 467.783874 333.970777 \n", + "L 493.832535 337.023795 \n", + "L 528.773596 339.390917 \n", + "\" clip-path=\"url(#p242ff76bfc)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7696,7 +7702,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:11.339296\n", + " 2025-02-06T12:32:37.605789\n", " image/svg+xml\n", " \n", " \n", @@ -7727,20 +7733,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image485c6bfbba\" transform=\"scale(1 -1) translate(0 -195.12)\" x=\"40.603125\" y=\"-21.990852\" width=\"162.72\" height=\"195.12\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7776,7 +7782,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7816,7 +7822,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7846,7 +7852,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7860,7 +7866,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7941,12 +7947,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7959,7 +7965,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7972,7 +7978,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7986,7 +7992,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8000,7 +8006,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8014,7 +8020,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8104,15 +8110,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagecc7d636987\" transform=\"scale(1 -1) translate(0 -195.12)\" x=\"235.395852\" y=\"-21.990852\" width=\"162.72\" height=\"195.12\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8125,7 +8131,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8138,7 +8144,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8152,7 +8158,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8166,7 +8172,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8188,7 +8194,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8201,7 +8207,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8214,7 +8220,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8228,7 +8234,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8242,7 +8248,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8256,7 +8262,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8347,10 +8353,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8387,88 +8393,90 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 31, "id": "38b199f1", "metadata": {}, "outputs": [], "source": [ "# define miscentring distribution\n", "R_mis_max = 1 \n", - "N_R_mis = 15\n", + "N_R_mis = 15\n", "R_mis_arr = np.insert(np.logspace(-2, np.log10(R_mis_max), N_R_mis-1), 0, 0)" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 32, "id": "c17883c2", - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:165: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:248: RuntimeWarning: invalid value encountered in divide\n", " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:190: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling.py:191: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", " gammat_radial = _GT/_N\n" ] } @@ -8477,9 +8485,9 @@ "et_map = np.zeros((N_R_mis,kappa_map.shape[0],kappa_map.shape[1]))\n", "ex_map = np.zeros(et_map.shape)\n", "radius_map = np.zeros(et_map.shape)\n", - "angle_map = np.zeros(et_map.shape)\n", + "angle_map = np.zeros(et_map.shape)\n", "\n", - "kappa_radial = np.zeros((N_R_mis,N_r_bins,N_phi_bins))\n", + "kappa_radial = np.zeros((N_R_mis,N_r_bins,N_phi_bins))\n", "gammat_radial = np.zeros(kappa_radial.shape)\n", "\n", "for j in range(len(R_mis_arr)):\n", @@ -8490,15 +8498,16 @@ " center_1 = R_mis_arr[j]*np.cos(_phi_Rmis)\n", " center_2 = R_mis_arr[j]*np.sin(_phi_Rmis)\n", "\n", - " et_map[j], ex_map[j], radius_map[j], angle_map[j] = mod.getTangetial(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + " et_map[j], ex_map[j], radius_map[j], angle_map[j] = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", "\n", - " kappa_radial[j], gammat_radial[j] = mod.getRadial(radius_map[j],r_bins.value,\n", - " angle_map[j],phi_bins,kappa_map,et_map[j])" + " kappa_radial[j], gammat_radial[j] = mod.getRadial(radius_map[j],angle_map[j],\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map[j])" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 33, "id": "22ba0469", "metadata": {}, "outputs": [ @@ -8513,7 +8522,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:43.718622\n", + " 2025-02-06T12:33:35.708320\n", " image/svg+xml\n", " \n", " \n", @@ -8544,20 +8553,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imaged91da5e33d\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"33.2875\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8593,7 +8602,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8634,7 +8643,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8672,12 +8681,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8690,7 +8699,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8721,7 +8730,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8736,7 +8745,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8785,7 +8794,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8800,7 +8809,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8893,15 +8902,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image5f64d4d286\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"210.534559\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8914,7 +8923,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8929,7 +8938,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8946,7 +8955,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8959,7 +8968,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8974,7 +8983,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8989,7 +8998,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9004,7 +9013,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9019,7 +9028,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9103,15 +9112,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image8395a1e639\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"387.781618\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9124,7 +9133,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9139,7 +9148,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9156,7 +9165,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9169,7 +9178,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9184,7 +9193,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9199,7 +9208,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9214,7 +9223,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9229,7 +9238,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9279,15 +9288,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image91ab87c939\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"33.2875\" y=\"-203.144007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9300,7 +9309,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9315,7 +9324,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9332,7 +9341,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9345,7 +9354,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9360,7 +9369,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9375,7 +9384,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9390,7 +9399,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9405,7 +9414,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9482,15 +9491,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imageee800d3e42\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"210.534559\" y=\"-203.144007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9503,7 +9512,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9518,7 +9527,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9535,7 +9544,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9548,7 +9557,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9563,7 +9572,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9578,7 +9587,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9593,7 +9602,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9608,7 +9617,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9679,7 +9688,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9692,7 +9701,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9706,7 +9715,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9722,12 +9731,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9735,12 +9744,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9749,12 +9758,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9763,12 +9772,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + "\" clip-path=\"url(#p56b5cbfa3d)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10005,13 +9999,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10043,22 +10037,22 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10082,7 +10076,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:43.888697\n", + " 2025-02-06T12:33:35.881892\n", " image/svg+xml\n", " \n", " \n", @@ -10113,20 +10107,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imageccffce3c87\" transform=\"scale(1 -1) translate(0 -195.12)\" x=\"40.603125\" y=\"-21.990852\" width=\"162.72\" height=\"195.12\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10162,7 +10156,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10202,7 +10196,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10232,7 +10226,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10246,7 +10240,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10327,12 +10321,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10345,7 +10339,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10358,7 +10352,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10372,7 +10366,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10386,7 +10380,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10400,7 +10394,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10490,15 +10484,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAOIAAAEPCAYAAABfvRg/AAAKq0lEQVR4nO3dS4xkVR3H8VN1qx/0TM/A8BpmCAPCDOIDjAvDBpQJ+IgbV5q4M8YFGqNBAppIjGJQEIiGIBvXJmNIjBJjRGJ8LYwxgEYJAR/M4LxfPd10ddW9t265YGv4/RZFz4/w/az/ua9Tv7qL/znnlgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwGz0zvcF4M3xrnsfnaqaFx68i/EP0T/fFwCAIAIRCCIQgCACAQgiEIAgAgEIIhCAIAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAtgi3XgTfZrR/9rvz8AXvWAAEIIhCAIAIBCCIQgCACAQgiEIAgAgEIIhDgbd3Q/9jvvigbrb/84GNv62eEzcEbEQhAEIEABBEIQBCBAAQRCEAQgQAEEQhAEIEAm9qsPv7fK2QD/fIrj9JAfwMfft998hmWUsrTz98f9Rz/fnCXvO737Dkyk2u+Y/7T8ly/rn8c9Xx4IwIBCCIQgCACAQgiEIAgAgEIIhCAIAIBCCIQwGpq/uTl98sG6Sf3PhvVIH3ixVvlNd/5zt9v2jXvvf8ReT0v3/eVqGdYSik3f+phed1/OnB33HUnufoH+hnyRgQCEEQgAEEEAhBEIABBBAIQRCAAQQQCEEQgwKY2YtcOXyUbm02ZyOPs2H1406779t98WV7zM/u/P5Pr2fPY9+S5dvzV++987kd6csAtH39Qnu8Pv7hXHufddz8qj/OPh++Sx7nqiYfkcfZ9/s+qpDwzfXIm4/Gh278jr+e3z3xtJufijQgEIIhAAIIIBCCIQACCCAQgiEAAgggEIIhAgJmt0N9/wTF5nEuu1FuqD4/skec6PhnLcz073ilrnhvukTXfvvFn8ppv/tU9ehX7Rx6Sx7nhp9+Qx1k/taRKSimlHPqcbsQ7bvyCbtb/7XHdrL/x51+Xxxk9t0Nez2V/aWXNH5+6R17Pbbc9IK/n1dsX5LnarfoLCLtvOC5reCMCAQgiEIAgAgEIIhCAIAIBCCIQgCACAQgiEKD39L+vlx3Jm+ZX5YEuv/KobKLWR94hz7XajeS5julF/OVge5Gs+Vd9maw5NL5Y1qy3uvH7yrpuVi8NalmzWi/KmlJKOXhan89xxzUvypqXVvVzfPzaA7Lmh6dulTVPvfReWVP+oyc9tNs7WbO8W//ud2wZypoPXHJQ1vBGBAIQRCAAQQQCEEQgAEEEAhBEIABBBAIQRCDAYGf1miyqjIX8k6PXyWb9ZKqbqJOiVzw3pZI1ji19vdL/8jnd1B1W87Jm22BD1ixVuqHfTL17/8TO56065Zalf8qauUv1uC4Z+wXs3/6CrGn26vt/ZZeehHF0bZusuWJZj/31y3r1/b5FvXsFb0QgAEEEAhBEIABBBAIQRCAAQQQCEEQgAEEEAgwurXQzdmvfWxWutEUvrW+muqE/Mprao+mcrJlM9f/QQr+ZSc01CydlTVX0WOwcnJM1pZSy3Nc7HewyJhAs9fWzXuzpCQ2jqd4qf3el7+2mLa/Kmm0Dfe97t56QNRfN6dX3+xaPypqr507JGt6IQACCCAQgiEAAgggEIIhAAIIIBCCIQACCCAQgiECAwUJPZ7HvbJVhbIPhzK4Y6ok1Zdjpb02MOmNmjfE/5Mx2mevpGUPOthyXVnprhl2Vnu1RSik7Kj0jZmtPfyOiMn4f46meWTTs9DNan+pxdZ7jFfMrsqYzZlUtGefaZsxgWu7p58MbEQhAEIEABBEIQBCBAAQRCEAQgQAEEQhAEIEAg87YmmJcdCO+Mxrfa0ZTd6XT2y6sT40ao+k/NM7l6Pf0M+wbz2exp5/zovENiVJKmTO+D+I065upHrNhpxvWK50+l7O9SW1sk2JNwujr+1qu9PdKFo1mfWX9PgCcdwQRCEAQgQAEEQhAEIEABBEIQBCBAAQRCDBYM1bWN0U3LWtjYsC5TjdjV7oLZM3pdqusOTPZImvGxip+R1X0vVu7CkwHRo3+XkUppSwZ3xkZdvpYY2NXhZVO/4bOdHo3gNMTPa5rxu/DGdd+T1/zvDHBYmSs0B92elx5IwIBCCIQgCACAQgiEIAgAgEIIhCAIAIBCCIQYHBmopufC8aW8o2xIvzMRDd1j7UXyprj7XZZc6pZljUbxr07q+8bY9X4nNEc9laE6+O8TjfrK2NcR1O9JcBJY1wPtxfJmuPNhbLmTOtM1NANdGeFvsNZoe/U8EYEAhBEIABBBAIQRCAAQQQCEEQgAEEEAhBEIMDg2GSbLHKa0Y2xutxZgX3EaOoeG+uG/kqjm8yzaujXRgPZ4ZzLNZoOZY2zs4DzeYOTrf4NHWmchr4+zlq7KGvGEz0eC5Wx+n5GOzg4eCMCAQgiEIAgAgEIIhCAIAIBCCIQgCACAQgiEGBwqLlYFi329GrvkdH4PWusrj5R65X1x8e68btSG1uzG43fvrOdfqsbvxNjpbtzrs44TimlrFX6/h3rxqcCTrV6zI7Wxq4KYz3h47VGX09tfNph3lihv21e/6ad8XB2cOCNCAQgiEAAgggEIIhAAIIIBCCIQACCCAQgiECAweFar5yec7ZmN1Yzrxqrq0+MdXP47Eivvl+tjcZvazRajf75htHQb42mbjfV/4tOc7iUUs5V+hk5hp1uap+udSP+hNGsPzvW1zxs9LNuJsYnECrjN21M+GiNyQM09IG3CIIIBCCIQACCCAQgiEAAgggEIIhAAIIIBBgcM1a7V8ZW8M5q97VWN9lPj/Qq/tWRnhgwHBtNdqOh3zPufTSn791Zoe9ojaZ/KaUsD0ayxplA4HyW4KyxG8IZa1z172Pc6Gfddfq++v1O1tStM676XF1xdmcAcN4RRCAAQQQCEEQgAEEEAhBEIABBBAIQRCDA4ORIr5ye1Xfk14xV805Td2OsV43XRkO/a2bzP9TO69Xejtm0/F+33upn5HC2uF8d6wkW68aYDUe6pm30JIzpRD/JXl//pieTzXtP8UYEAhBEIABBBAIQRCAAQQQCEEQgAEEEAhBEIMDgnLG62mnoj43VzOu1brLPqlk/GRtb09ez+R+atLqBvGEcZ2CsGndqSillXBnbxRury50t7ofGmI2MMWvG+pqnzrgaDf2p0dCvO32cdeM4lTFmvBGBAAQRCEAQgQAEEQhAEIEABBEIQBCBAAQRCDAYGY34ztgufmQ0652apja2OXca8Y2xStupcZrDA10zqYxJEfP63p3t/UsppTW2na+Nb81vGGM2NhrxE2dl/czG1TiOMUllqktKbYzH2KjhjQgEIIhAAIIIBCCIQACCCAQgiEAAgggEIIhAgMHEaPw63y3fcFZgG816axt8Y+V0MSYhOA39fm009PWtl8lAN7TbRV3jjJdb5zTra6NZ39bONvjGdTtjZkywqMbOxwuMSRjGUboFY8yWjN+ZcS4AbzKCCAQgiEAAgggEIIhAAIIIBCCIQACCCASwPtu+78lvyrXKjbECu3Mav8b29Yc++9VZfm7+DV33wCPy3qfOLvCLern3K1+6e9Puq5RSrj3wLXlRzsr6zqg59JmwMTOupnMmamzRbf9Dd94jz8YbEQhAEIEABBEIQBCBAAQRCEAQgQAEEQhAEAEAAAAAAAAAAAAAAID/539lCdI8fTSUKwAAAABJRU5ErkJggg==\" id=\"imagecf7763af8e\" transform=\"scale(1 -1) translate(0 -195.12)\" x=\"235.395852\" y=\"-21.990852\" width=\"162.72\" height=\"195.12\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10511,7 +10505,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10524,7 +10518,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10538,7 +10532,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10552,7 +10546,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10574,7 +10568,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10587,7 +10581,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10600,7 +10594,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10614,7 +10608,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10628,7 +10622,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10642,7 +10636,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10733,10 +10727,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10766,7 +10760,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 34, "id": "7e458c10", "metadata": {}, "outputs": [ @@ -10781,7 +10775,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:43.959018\n", + " 2025-02-06T12:33:35.955605\n", " image/svg+xml\n", " \n", " \n", @@ -10816,12 +10810,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10857,7 +10851,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10897,7 +10891,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10927,7 +10921,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10941,7 +10935,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10981,7 +10975,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10997,17 +10991,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11015,12 +11009,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11029,12 +11023,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11179,263 +11173,261 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p63e28eff67)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11482,7 +11474,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 35, "id": "2864956a", "metadata": {}, "outputs": [ @@ -11497,7 +11489,7 @@ " \n", " \n", " \n", - " 2025-02-04T16:11:44.008324\n", + " 2025-02-06T12:33:36.006858\n", " image/svg+xml\n", " \n", " \n", @@ -11532,12 +11524,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11573,7 +11565,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11613,7 +11605,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11643,7 +11635,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11657,7 +11649,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11697,7 +11689,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11713,17 +11705,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11731,12 +11723,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11744,12 +11736,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11758,12 +11750,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11772,12 +11764,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11786,12 +11778,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11799,263 +11791,261 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12107,14 +12097,6 @@ "metadata": {}, "outputs": [], "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4c5b4083-bf5c-4bc3-b98c-26fd07408d85", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 5f6f3dc608bddef62cd94151cabd3365e513e5a5 Mon Sep 17 00:00:00 2001 From: AlessandraFumagalli Date: Fri, 4 Apr 2025 13:35:38 +0200 Subject: [PATCH 12/14] Adapt model_profile.py to work with existing functions --- clmm/model_profile.py | 42 +- examples/demo_model_profile.ipynb | 14716 ++++++++++++++++++++++++++++ 2 files changed, 14735 insertions(+), 23 deletions(-) create mode 100644 examples/demo_model_profile.ipynb diff --git a/clmm/model_profile.py b/clmm/model_profile.py index ebbf37047..3ffbfd50d 100644 --- a/clmm/model_profile.py +++ b/clmm/model_profile.py @@ -1,8 +1,7 @@ import numpy as np -import pyccl as ccl -from pyccl import physical_constants as const +from clmm.utils.constants import Constants as const from astropy import units as un - +from clmm.dataops import _compute_tangential_shear, _compute_cross_shear class profiles: ''' @@ -10,6 +9,8 @@ class profiles: Attributes ---------- + cosmo : CLMM.Cosmology + CLMM Cosmology object M: float mass (units: M_sun) c: float @@ -27,13 +28,13 @@ def __init__(self,cosmo,M,c,z_l,z_s,compute_sigma=False): self.M = M # M_sun self.c = c - self.a_l = 1./(1.+z_l) # ccl works with scale factor instead of redshift - self.a_s = 1./(1.+z_s) + self.z_l = z_l + self.z_s = z_s self.compute_sigma = compute_sigma # physical constants with units (cosmological) - self.const_G = const.GNEWT * (un.Mpc/const.MPC_TO_METER)**3 /(un.M_sun/const.SOLAR_MASS) / un.s**2. # Mpc^3/Msun/s^2 - self.const_c = const.CLIGHT * (un.Mpc/const.MPC_TO_METER)/ un.s # Mpc/s + self.const_G = const.GNEWT_SOLAR_MASS* (un.Mpc/const.PC_TO_METER/1e6)**3 /un.M_sun / un.s**2. # Mpc^3/Msun/s^2 + self.const_c = const.CLIGHT * (un.Mpc/const.PC_TO_METER/1e6)/ un.s # Mpc/s # cosmology self.cosmo = cosmo @@ -84,14 +85,12 @@ def get_r_vals(self,nbins,lower_r,upper_r,log=False): def kappa_NFW(self,r_vals=None): ''' - Create radial bins for profiles + Compute kappa or surface density profiles Attributes ---------- r_vals: float or array radial bin values for halo lensing profile - cosmo : clmm.Cosmology object - CLMM Cosmology object Returns ---------- @@ -104,7 +103,7 @@ def kappa_NFW(self,r_vals=None): r_vals = self.r_vals - Hz = self.cosmo.h_over_h0(self.a_l) * self.cosmo.cosmo.params.h * 100 * 1/(const.MPC_TO_METER*1e-3) / un.s # units: 1/s + Hz = self.cosmo.get_E2(self.z_l)**0.5 * self.cosmo['H0'] * 1/(const.PC_TO_METER.value*1e3) / un.s # units: 1/s r_200 = (((self.const_G * self.M)/(100. * Hz**2) )**(1./3.)) # units: Mpc r_s = r_200 * self.c delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) @@ -113,12 +112,12 @@ def kappa_NFW(self,r_vals=None): Sigma_crit_coeff = self.const_c**2 / (4. * np.pi * self.const_G) # units: Msun/Mpc - D_s = self.cosmo.angular_diameter_distance(self.a_s) *un.Mpc - D_d = self.cosmo.angular_diameter_distance(self.a_l) *un.Mpc - D_ds = self.cosmo.angular_diameter_distance(self.a_l,self.a_s) *un.Mpc + D_s = self.cosmo.eval_da(self.z_s) *un.Mpc + D_d = self.cosmo.eval_da(self.z_l) *un.Mpc + D_ds = self.cosmo.eval_da_z1z2(self.z_l,self.z_s) *un.Mpc Sigma_crit = Sigma_crit_coeff * D_s / (D_d * D_ds) - critical_density = self.cosmo.rho_x(self.a_l, 'critical', is_comoving=False) * un.M_sun/un.Mpc**3 + critical_density = self.cosmo.get_rho_c(self.z_l) * un.M_sun/un.Mpc**3 k_s = critical_density * delta_c * r_s coeff = 2.*k_s / (x**2 - 1.) @@ -234,24 +233,21 @@ def getTangential(e1, e2, center, dx=10./1000.): radius and angle maps, used for computing the radial profile ''' - n = e1.shape[0] - + n = e1.shape[0] xx = np.arange(-n/2, n/2)*dx - XX, YY = np.meshgrid(xx, xx) center_1, center_2 = center - from_cent_1 = XX - center_1 from_cent_2 = YY - center_2 - angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2)) - radius = np.sqrt(from_cent_1**2+from_cent_2**2) + angle = -np.sign(from_cent_2) * np.arccos(from_cent_1/np.sqrt(from_cent_1**2 + from_cent_2**2)) + radius = np.sqrt(from_cent_1**2 + from_cent_2**2) angle[np.isnan(angle)] = 0 - et = - e1*np.cos(2*angle) - e2*np.sin(2*angle) - ex = + e1*np.sin(2*angle) - e2*np.cos(2*angle) + et = _compute_tangential_shear(e1, e2, angle) + ex = _compute_cross_shear(e1, e2, angle) return et, ex, radius, angle diff --git a/examples/demo_model_profile.ipynb b/examples/demo_model_profile.ipynb new file mode 100644 index 000000000..0740abaa2 --- /dev/null +++ b/examples/demo_model_profile.ipynb @@ -0,0 +1,14716 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 16, + "id": "45308159", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%config InlineBackend.figure_format = 'svg'\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import sys\n", + "from astropy import units as un\n", + "import clmm\n", + "from clmm import Cosmology\n", + "from clmm.support import mock_data as mock\n", + "from clmm.galaxycluster import GalaxyCluster\n", + "\n", + "# profile modelling package\n", + "import clmm.model_profile as mod" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "65ddbc40-cfa4-41b5-855d-4418b867f9c3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" + ] + } + ], + "source": [ + "# r_2D = lensing_map.make_grid(npix,r_max)\n", + "c = 4\n", + "lensing_map.c = c\n", + "rbins = np.linspace(1e-3,50,npix)*un.Mpc\n", + "lensing_map.compute_sigma = False\n", + "kappa1 = lensing_map.kappa_NFW(r_vals=rbins)" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "7a41267c-0d79-40b8-b906-d9a7e7f3f2c2", + "metadata": {}, + "outputs": [], + "source": [ + "kappa2 = clmm.compute_convergence(rbins.value,Mass.value,c,z_l,z_s,cosmo,200,'nfw','mean')" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "f0554ee2-7c65-4385-a04e-773bbce666da", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T17:26:00.461220\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.loglog(rbins,kappa1.value)\n", + "plt.loglog(rbins,kappa2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "id": "e13b25c6-2783-4d6c-8294-05287caa8af7", + "metadata": {}, + "outputs": [], + "source": [ + "lensing_map.compute_sigma = True\n", + "Sigma1 = lensing_map.kappa_NFW(r_vals=rbins)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "916b3198-cb1d-4d20-99af-1727f43647bd", + "metadata": {}, + "outputs": [], + "source": [ + "Sigma2 = clmm.compute_surface_density(rbins.value,Mass.value,c,z_l,cosmo,200,'nfw','mean')" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "78515bf8-d17e-42f0-ba8a-8491e9790da3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T17:22:40.150197\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.loglog(rbins,Sigma1.value)\n", + "plt.loglog(rbins,Sigma2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd3eb025-713a-4b7e-90ec-148503994a6d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "7ba07a0d", + "metadata": {}, + "source": [ + "Make sure we know which version we're using" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bbd94d3a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.16.0'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clmm.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "66c330d7", + "metadata": {}, + "source": [ + "The modelling module can be used to create 2D lensing maps. This allows us to forward model systematics, starting at the map level. In this notebook, we use miscentering as an example systematic." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "909edd57", + "metadata": {}, + "outputs": [], + "source": [ + "# specify parameters for NFW halo\n", + "c = 10 #concentration\n", + "z_l = 0.5 #lens redshift\n", + "z_s = 1.0 #source redshift\n", + "Mass = 1e14 * un.M_sun\n", + "\n", + "# define physical size of grid\n", + "r_min = 0 * un.Mpc\n", + "r_max = 50 * un.Mpc\n", + "\n", + "# number of pixels in grid\n", + "npix = 512\n", + "\n", + "# define physcial size of a pixel\n", + "dx = r_max/npix\n", + "\n", + "# define the center of the map (in Mpc)\n", + "center_1 = 0\n", + "center_2 = 0\n", + "\n", + "# define radial and angular bins\n", + "N_r_bins = 30\n", + "N_phi_bins = 25\n", + "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * un.Mpc\n", + "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" + ] + }, + { + "cell_type": "markdown", + "id": "de3d76d6", + "metadata": {}, + "source": [ + "Now we can create the convergence maps" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "5b51bbc8", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" + ] + } + ], + "source": [ + "# set cosmology\n", + "cosmo = Cosmology(H0=70.0, Omega_dm0=0.25, Omega_b0=0.05, Omega_k0=0.0)\n", + "\n", + "# lensing_map has the option to return either Sigma map or the convergence map\n", + "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=False) \n", + "\n", + "# make map\n", + "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max) " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b0dc4b6c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:30.784001\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "axlim = 2*r_max.value\n", + "plt.imshow(kappa_map.value,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$\\\\kappa$',rotation=0)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e073090a", + "metadata": {}, + "source": [ + "Repeat the procedure for a Sigma map" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "2aaf9cb0", + "metadata": {}, + "outputs": [], + "source": [ + "# lensing_map has the option to return either Sigma map or the convergence map.\n", + "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=True) \n", + "\n", + "# make map\n", + "Sigma_map = lensing_map.kappa_NFW_2D(npix,r_max)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "72993065", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:33.256664\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "axlim = 2*r_max.value\n", + "plt.imshow(Sigma_map.value,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$\\\\Sigma [M_\\odot\\; Mpc^{-2}]$',rotation=90)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4b28b017", + "metadata": {}, + "source": [ + "We can transform from the convergence to the shear with the Kaiser Squires algorithm, returning the e1 and e2 shear maps." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "eec34ea3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:201: RuntimeWarning: divide by zero encountered in divide\n", + " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:201: RuntimeWarning: invalid value encountered in multiply\n", + " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:202: RuntimeWarning: divide by zero encountered in divide\n", + " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:202: RuntimeWarning: invalid value encountered in multiply\n", + " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n" + ] + } + ], + "source": [ + "e1_map, e2_map = mod.KaiserSquires(kappa_map)" + ] + }, + { + "cell_type": "markdown", + "id": "25f42de1", + "metadata": {}, + "source": [ + "Plot the e1 and e2 maps" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2ba6da86", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:35.301309\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:35.392141\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(e1_map)\n", + "plt.colorbar()\n", + "plt.show()\n", + "\n", + "plt.imshow(e2_map)\n", + "plt.colorbar()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "12c04b61", + "metadata": {}, + "source": [ + "from the convergence map we can compute the convergence profile, and from the e1 and e2 maps we can compute the tangential shear profile." + ] + }, + { + "cell_type": "markdown", + "id": "f6af6b7e", + "metadata": {}, + "source": [ + "The getTangential function uses the e1 and e2 maps as an input, along with a map center, and returns e_tangential and e_cross maps about a given center. \n", + "\n", + "The function also returns a radius map and an angle map, which is used when computing radial profile with getRadial" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "6b8c1825", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:247: RuntimeWarning: invalid value encountered in divide\n", + " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n" + ] + } + ], + "source": [ + "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e743f1b8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:37.443943\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:37.536550\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(et_map)\n", + "plt.colorbar()\n", + "plt.show()\n", + "\n", + "plt.imshow(ex_map)\n", + "plt.colorbar()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "cde1c95f", + "metadata": {}, + "source": [ + "With the radius_map and angle_map, we can calculate the radial convergence profile from the kappa map and the radial tangential shear profile from the e_tangential map, using the getRadial function" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e3d066a0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:298: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:299: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n" + ] + } + ], + "source": [ + "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map)" + ] + }, + { + "cell_type": "markdown", + "id": "f89da817", + "metadata": {}, + "source": [ + "plot the radial convergence and tangential shear profiles. Note that these profiles are not averaged over all angles yet, meaning that these profiles are 2D (radial and angular). This is useful for miscentering which leaves anisotropic signatures on the resulting lensing profiles" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "080ff2f4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:43.457030\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:43.502733\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(kappa_radial)\n", + "plt.show()\n", + "\n", + "plt.imshow(gammat_radial)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "1086e4de", + "metadata": {}, + "source": [ + "We can recover the 1D radial convergence and tangential shear profiles as follows" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5c6174be", + "metadata": {}, + "outputs": [], + "source": [ + "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", + "gammat_1D_radial = gammat_radial.mean(axis=-1)" + ] + }, + { + "cell_type": "markdown", + "id": "ebb41586", + "metadata": {}, + "source": [ + "Plot the 1D radial profiles" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "29a26710", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-04-01T10:55:47.800761\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + "plt.plot(r_bins_mid,kappa_1D_radial,label='$\\\\kappa(r)$')\n", + "plt.plot(r_bins_mid,gammat_1D_radial,label='$\\gamma_t(r)$')\n", + "plt.legend()\n", + "plt.xlabel('r [Mpc]')\n", + "plt.ylabel('Lensing amplitude')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "085bd120-6283-4d8f-adeb-bf4e2c781ba2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "81e0ceb4", + "metadata": {}, + "source": [ + "## Miscentering\n", + "\n", + "We now repeat the above procedure, but this time we use an incorrect center (relative to the true hale center) when performing the calculations, the exemplify the impact of miscentering" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "13660944", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n" + ] + } + ], + "source": [ + "# First we define a miscentring parameter\n", + "R_mis = 1 # Mpc\n", + "\n", + "# find new center based on R_mis\n", + "_phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", + "\n", + "# mis-centered coordinates\n", + "center_1 = R_mis*np.cos(_phi_Rmis)\n", + "center_2 = R_mis*np.sin(_phi_Rmis)\n", + "\n", + "# get tangential and radial profiles\n", + "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "1cb19534", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", + " kappa_radial,gammat_radial,r_bins):\n", + " '''quickly plot the convergence, e1,e2, ex,et and radial profiles\n", + " '''\n", + " fig, ax = plt.subplots(2,3,figsize=[9,6])\n", + " ax.ravel()\n", + "\n", + " ax[0,0].imshow(kappa_map,origin = 'lower')\n", + " ax[0,0].set_title(r'$\\kappa$')\n", + "\n", + "\n", + " ax[0,1].imshow(e1_map,origin = 'lower')\n", + " ax[0,1].set_title(r'$e_1$')\n", + "\n", + "\n", + " ax[0,2].imshow(e2_map,origin = 'lower')\n", + " ax[0,2].set_title(r'$e_2$')\n", + "\n", + "\n", + " ax[1,0].imshow(et_map,origin = 'lower')\n", + " ax[1,0].set_title(r'$e_t$')\n", + "\n", + "\n", + " ax[1,1].imshow(ex_map,origin = 'lower')\n", + " ax[1,1].set_title(r'$e_x$')\n", + "\n", + "\n", + "\n", + " r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + "\n", + " ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\\kappa(r)$')\n", + " ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\\gamma_t(r)$')\n", + "\n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " fig,ax = plt.subplots(1,2)\n", + "\n", + " ax[0].imshow(kappa_radial,origin='lower')\n", + " ax[1].imshow(gammat_radial,origin='lower')\n", + "\n", + " ax[0].set_ylabel('r')\n", + " ax[0].set_xlabel('$\\phi$')\n", + "\n", + " ax[1].set_ylabel('r')\n", + " ax[1].set_xlabel('$\\phi$')\n", + "\n", + " ax[0].set_title(r'$\\kappa$')\n", + " ax[1].set_title(r'$\\gamma_t$')\n", + "\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e9720a7d", + "metadata": {}, + "source": [ + "we can plot all of the results at once using the plot_maps_and_profiles function" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "32772d61", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-02-06T12:32:37.435264\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-02-06T12:32:37.605789\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", + " kappa_radial,gammat_radial,r_bins)" + ] + }, + { + "cell_type": "markdown", + "id": "510b4c9c", + "metadata": {}, + "source": [ + "We can also investigate how the 1D radial lensing profiles change as a function of miscentering" + ] + }, + { + "cell_type": "markdown", + "id": "53fa70dd", + "metadata": {}, + "source": [ + "Now define a miscentering distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "38b199f1", + "metadata": {}, + "outputs": [], + "source": [ + "# define miscentring distribution\n", + "R_mis_max = 1 \n", + "N_R_mis = 15\n", + "R_mis_arr = np.insert(np.logspace(-2, np.log10(R_mis_max), N_R_mis-1), 0, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "c17883c2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:248: RuntimeWarning: invalid value encountered in divide\n", + " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", + " kappa_radial = _K/_N\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", + " gammat_radial = _GT/_N\n" + ] + } + ], + "source": [ + "et_map = np.zeros((N_R_mis,kappa_map.shape[0],kappa_map.shape[1]))\n", + "ex_map = np.zeros(et_map.shape)\n", + "radius_map = np.zeros(et_map.shape)\n", + "angle_map = np.zeros(et_map.shape)\n", + "\n", + "kappa_radial = np.zeros((N_R_mis,N_r_bins,N_phi_bins))\n", + "gammat_radial = np.zeros(kappa_radial.shape)\n", + "\n", + "for j in range(len(R_mis_arr)):\n", + "\n", + " _phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", + "\n", + " # mis-centered coordinates\n", + " center_1 = R_mis_arr[j]*np.cos(_phi_Rmis)\n", + " center_2 = R_mis_arr[j]*np.sin(_phi_Rmis)\n", + "\n", + " et_map[j], ex_map[j], radius_map[j], angle_map[j] = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "\n", + " kappa_radial[j], gammat_radial[j] = mod.getRadial(radius_map[j],angle_map[j],\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map[j])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "22ba0469", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-02-06T12:33:35.708320\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-02-06T12:33:35.881892\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "R_mis_ind = 10\n", + "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", + " kappa_radial[R_mis_ind],gammat_radial[R_mis_ind],r_bins)" + ] + }, + { + "cell_type": "markdown", + "id": "2dbde4d3", + "metadata": {}, + "source": [ + "Finally we can plot the lensing profiles for the whole miscentering distrubtion" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "7e458c10", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-02-06T12:33:35.955605\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(N_R_mis):\n", + " plt.plot(r_bins_mid,kappa_radial[i].mean(axis=-1))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "2864956a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-02-06T12:33:36.006858\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(N_R_mis):\n", + " plt.plot(r_bins_mid,gammat_radial[i].mean(axis=-1))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea9ce0dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From d1c664415530dfa7d5c135669fe47e7702ff14fc Mon Sep 17 00:00:00 2001 From: AlessandraFumagalli Date: Fri, 4 Jul 2025 11:16:46 +0200 Subject: [PATCH 13/14] Updated model_profile by replacing function with existing ones in clmm Updated example notebook --- clmm/model_profile.py | 93 +- clmm/modelling.py | 245 - examples/demo_model_profile.ipynb | 20599 ++++++++++++++++------------ examples/demo_modelling.ipynb | 12123 ---------------- 4 files changed, 11777 insertions(+), 21283 deletions(-) delete mode 100644 clmm/modelling.py delete mode 100644 examples/demo_modelling.ipynb diff --git a/clmm/model_profile.py b/clmm/model_profile.py index 3ffbfd50d..0e4cfb10e 100644 --- a/clmm/model_profile.py +++ b/clmm/model_profile.py @@ -2,6 +2,7 @@ from clmm.utils.constants import Constants as const from astropy import units as un from clmm.dataops import _compute_tangential_shear, _compute_cross_shear +import clmm class profiles: ''' @@ -9,31 +10,47 @@ class profiles: Attributes ---------- - cosmo : CLMM.Cosmology - CLMM Cosmology object - M: float - mass (units: M_sun) - c: float - concentration + + cosmo : clmm.cosmology.Cosmology object + CLMM Cosmology object + mdelta : float + Galaxy cluster mass in :math:`M_\odot`. + cdelta : float + Galaxy cluster concentration z_l: float - lens redshift + Redshift of the lens z_s: float - source redshift + Redshift of the source + halo_profile_model : str, optional + Profile model parameterization (letter case independent): + * 'nfw' (default) + * 'einasto' - not in cluster_toolkit + * 'hernquist' - not in cluster_toolkit + delta_mdef : int, optional + Mass overdensity definition; defaults to 200. + massdef : str, optional + Profile mass definition, with the following supported options (letter case independent): + * 'mean' (default) + * 'critical' + * 'virial' compute_sigma: bool True for computing Sigma (surface density) profiles, False for computing kappa (convergence) profiles ''' - def __init__(self,cosmo,M,c,z_l,z_s,compute_sigma=False): + def __init__(self,cosmo,mdelta,cdelta,z_l,z_s,halo_profile_model='nfw',delta_mdef=200,massdef='mean',compute_sigma=False): - self.M = M # M_sun - self.c = c + self.mdelta = mdelta # M_sun + self.cdelta = cdelta self.z_l = z_l self.z_s = z_s + self.halo_profile_model = halo_profile_model + self.delta_mdef = delta_mdef + self.massdef = massdef self.compute_sigma = compute_sigma # physical constants with units (cosmological) - self.const_G = const.GNEWT_SOLAR_MASS* (un.Mpc/const.PC_TO_METER/1e6)**3 /un.M_sun / un.s**2. # Mpc^3/Msun/s^2 + self.const_G = const.GNEWT_SOLAR_MASS* (un.Mpc/const.PC_TO_METER/1e6)**3 /un.M_sun / un.s**2 # Mpc^3/Msun/s^2 self.const_c = const.CLIGHT * (un.Mpc/const.PC_TO_METER/1e6)/ un.s # Mpc/s # cosmology @@ -83,7 +100,7 @@ def get_r_vals(self,nbins,lower_r,upper_r,log=False): self.r_vals = r_vals return self.r_vals - def kappa_NFW(self,r_vals=None): + def kappa_or_profile(self,r_vals=None): ''' Compute kappa or surface density profiles @@ -102,33 +119,16 @@ def kappa_NFW(self,r_vals=None): if np.all(r_vals.value) == None: r_vals = self.r_vals - - Hz = self.cosmo.get_E2(self.z_l)**0.5 * self.cosmo['H0'] * 1/(const.PC_TO_METER.value*1e3) / un.s # units: 1/s - r_200 = (((self.const_G * self.M)/(100. * Hz**2) )**(1./3.)) # units: Mpc - r_s = r_200 * self.c - delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) - - x = r_vals/r_s - - Sigma_crit_coeff = self.const_c**2 / (4. * np.pi * self.const_G) # units: Msun/Mpc - - D_s = self.cosmo.eval_da(self.z_s) *un.Mpc - D_d = self.cosmo.eval_da(self.z_l) *un.Mpc - D_ds = self.cosmo.eval_da_z1z2(self.z_l,self.z_s) *un.Mpc - - Sigma_crit = Sigma_crit_coeff * D_s / (D_d * D_ds) - critical_density = self.cosmo.get_rho_c(self.z_l) * un.M_sun/un.Mpc**3 - k_s = critical_density * delta_c * r_s - - coeff = 2.*k_s / (x**2 - 1.) - f_internal = 1. - (2./np.lib.scimath.sqrt(1.-x**2)) * np.arctanh(np.lib.scimath.sqrt((1.-x)/(1.+x))) - - nfw = coeff * f_internal.real - if self.compute_sigma: - return nfw # units: Msun/Mpc^2 + return clmm.compute_surface_density(r_vals.value,self.mdelta.value,self.cdelta, + self.z_l,self.cosmo,self.delta_mdef, + self.halo_profile_model,self.massdef) * un.M_sun/un.Mpc**2 else: - return nfw / Sigma_crit # units: adimensional + return clmm.compute_convergence(r_vals.value,self.mdelta.value,self.cdelta, + self.z_l,self.z_s,self.cosmo,self.delta_mdef, + self.halo_profile_model,self.massdef) * un.dimensionless_unscaled + + def make_grid(self,npix,r_max): ''' @@ -150,10 +150,10 @@ def make_grid(self,npix,r_max): npix *= 1j #imaginary so that ogrid knows to interpret npix as array size y,x = np.ogrid[-r_max:r_max:npix,-r_max:r_max:npix] r_2D = np.hypot(y,x) - + return r_2D - def kappa_NFW_2D(self,npix,r_max): + def kappa_or_profile_2D(self,npix,r_max): ''' Create 2D NFW profile on a grid @@ -166,16 +166,17 @@ def kappa_NFW_2D(self,npix,r_max): Returns --------- - kappa_nfw: array + kappa_or_profile: array NFW profile (Sigma or kappa) for each point of the 2D grid ''' self.npix = npix - self.r_max = r_max + self.r_max = r_max r_2D = self.make_grid(self.npix,self.r_max) - - return self.kappa_NFW(r_2D) + + kappa = np.array([self.kappa_or_profile(r_2D[i]) for i in range(self.npix)]) + return kappa @@ -212,7 +213,7 @@ def KaiserSquires(Sigma): return e1, e2 -def getTangential(e1, e2, center, dx=10./1000.): +def get_Tangential_and_Cross(e1, e2, center, dx=10./1000.): ''' Compute tangential shear profiles @@ -251,7 +252,7 @@ def getTangential(e1, e2, center, dx=10./1000.): return et, ex, radius, angle -def getRadial(radius_map,angle_map,r_bins,phi_bins,kappa_map,et_map): +def get_Radial(radius_map,angle_map,r_bins,phi_bins,kappa_map,et_map): ''' Calculate the radial convergence profile from the kappa map and the radial tangential shear profile from the e_tangential map diff --git a/clmm/modelling.py b/clmm/modelling.py deleted file mode 100644 index a257f6c47..000000000 --- a/clmm/modelling.py +++ /dev/null @@ -1,245 +0,0 @@ -from astropy.cosmology import LambdaCDM -from astropy import constants as const -from astropy import units as u -import numpy as np -import matplotlib.pyplot as plt - -class profiles: - - def __init__(self,M,c,z_l,z_s,sig=False): - import numpy as np - from astropy.cosmology import FlatLambdaCDM - from astropy import constants as const - from astropy import units as u - - self.M = M - self.c = c - self.z_l = z_l - self.z_s = z_s - self.sig = sig - - self.cosmology() - - return - - def cosmology(self, H_0 = 70., Omega_m = 0.3, Omega_Lambda = 0.7, Tcmb0=2.725): - - self.H_0 = H_0 - self.Omega_m = Omega_m - self.Tcmb0 = Tcmb0 - self.Omega_Lambda = Omega_Lambda - - return - - - def get_r_vals(self,nbins,lower_r,upper_r,log=False): - '''create radial bins for profiles - nbins: number of bins - lower_r: lowest bin value - upper_r: highest bin value - returns bin edges in units provided, or kpc if none are provided - ''' - #create r values - self.nbins = nbins - self.lower_r = lower_r - self.upper_r = upper_r - self.log_r_vals = log - - - if self.log_r_vals: - if self.lower_r == 0: - raise ValueError('log(lower_r) cannot be evaluated for lower_r = 0') - - r_vals = np.logspace(np.log10(self.lower_r),np.log10(self.upper_r),self.nbins+1) - - if not self.log_r_vals: - r_vals = np.linspace(self.lower_r,self.upper_r,self.nbins+1) - - #if no units are provided, set units to kpc, otherwise keep input units - r_vals *= u.dimensionless_unscaled - if r_vals.unit == u.dimensionless_unscaled: - r_vals *= u.kpc - - self.r_vals = r_vals - return self.r_vals - - def kappa_NFW(self,r_vals=None): - '''r_vals: radial bin values for halo lensing profile - M: halo mass - c: concentration - z_l: lens redshift - z_s: source redshift - delta_sig: If False, return convergence profile, if True, return delta Sigma profile - ''' - - if np.all(r_vals.value) == None: - r_vals = self.r_vals - - cosmo = LambdaCDM(H0=self.H_0, Om0=self.Omega_m, Ode0=self.Omega_Lambda, Tcmb0=self.Tcmb0) - - r_200 = ( (const.G * self.M)/(100. * cosmo.H(self.z_l)**2) )**(1./3.) - r_s = r_200 * self.c - delta_c = (200./3.) * ( self.c**3 / ( np.log(1+self.c) - ( self.c/(1+self.c) ) ) ) - - x = r_vals/r_s - - Sigma_crit_coeff = const.c**2 / (4. * np.pi * const.G) - - D_s = cosmo.angular_diameter_distance(self.z_s) - D_d = cosmo.angular_diameter_distance(self.z_l) - D_ds = cosmo.angular_diameter_distance_z1z2(self.z_l,self.z_s) - - Sigma_crit = Sigma_crit_coeff * D_s / (D_d * D_ds) - - k_s = cosmo.critical_density(self.z_l) * delta_c * r_s - - coeff = 2.*k_s / (x**2 - 1.) - - f_internal = 1. - (2./np.lib.scimath.sqrt(1.-x**2)) * np.arctanh(np.lib.scimath.sqrt((1.-x)/(1.+x))) - - nfw = coeff * f_internal - - if self.sig: - return nfw.to(const.M_sun / u.Mpc**2).real - if not self.sig: - return (nfw.real / Sigma_crit).decompose() - - def make_grid(self,npix,r_max): - '''make 2D grid centered on origin - npix: resolution of grid - r_max: width of grid is 2*r_max - ''' - - npix *= 1j #imaginary so that ogrid knows to interpret npix as array size - y,x = np.ogrid[-r_max:r_max:npix,-r_max:r_max:npix] - r_2D = np.hypot(y,x) - - return r_2D - - def kappa_NFW_2D(self,npix,r_max): - - '''create 2D NFW profile on grid - ''' - - self.npix = npix - self.r_max = r_max - r_2D = self.make_grid(self.npix,self.r_max) - - return self.kappa_NFW(r_2D) - - - -def KaiserSquires(Sigma): - - kappa_tilde = np.fft.fft2(Sigma) - - k = np.fft.fftfreq(kappa_tilde.shape[0]) - - oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2) - oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :] - - oper_1[0, 0] = -1 - oper_2[0, 0] = -1 - - e1_tilde = oper_1*kappa_tilde - e2_tilde = oper_2*kappa_tilde - - e1 = np.fft.ifft2(e1_tilde).real - e2 = np.fft.ifft2(e2_tilde).real - - return e1, e2 - -def getTangetial(e1, e2, center, dx=10./1000.): - - n = e1.shape[0] - - xx = np.arange(-n/2, n/2)*dx - - XX, YY = np.meshgrid(xx, xx) - - center_1, center_2 = center - - from_cent_1 = XX - center_1 - from_cent_2 = YY - center_2 - - angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2)) - radius = np.sqrt(from_cent_1**2+from_cent_2**2) - - angle[np.isnan(angle)] = 0 - - et = - e1*np.cos(2*angle) - e2*np.sin(2*angle) - ex = + e1*np.sin(2*angle) - e2*np.cos(2*angle) - - return et, ex, radius, angle - -def getRadial(radius_map,r_bins,angle_map,phi_bins,kappa_map,et_map): - - _N = np.zeros((len(r_bins)-1, len(phi_bins)-1)) - _K = np.zeros((len(r_bins)-1, len(phi_bins)-1)) - _GT = np.zeros((len(r_bins)-1, len(phi_bins)-1)) - - ii_r = np.digitize(radius_map, r_bins) - 1 - ii_phi = np.digitize(angle_map, phi_bins) - 1 - - for i_r, i_phi, kk, gg in zip(ii_r.flatten(), ii_phi.flatten(), kappa_map.flatten(), et_map.flatten()): - - _N[i_r, i_phi] += 1 - _K[i_r, i_phi] += kk - _GT[i_r, i_phi] += gg - - kappa_radial = _K/_N - gammat_radial = _GT/_N - - return kappa_radial,gammat_radial - - -def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map, - kappa_radial,gammat_radial,r_bins): - - fig, ax = plt.subplots(2,3,figsize=[9,6]) - ax.ravel() - - ax[0,0].imshow(kappa_map,origin = 'lower') - ax[0,0].set_title(r'$\kappa$') - - - ax[0,1].imshow(e1_map,origin = 'lower') - ax[0,1].set_title(r'$e_1$') - - - ax[0,2].imshow(e2_map,origin = 'lower') - ax[0,2].set_title(r'$e_2$') - - - ax[1,0].imshow(et_map,origin = 'lower') - ax[1,0].set_title(r'$e_t$') - - - ax[1,1].imshow(ex_map,origin = 'lower') - ax[1,1].set_title(r'$e_x$') - - - - r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1]) - - ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\kappa(r)$') - ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\gamma_t(r)$') - - plt.legend() - plt.show() - - fig,ax = plt.subplots(1,2) - - ax[0].imshow(kappa_radial,origin='lower') - ax[1].imshow(gammat_radial,origin='lower') - - ax[0].set_ylabel('r') - ax[0].set_xlabel('$\phi$') - - ax[1].set_ylabel('r') - ax[1].set_xlabel('$\phi$') - - ax[0].set_title(r'$\kappa$') - ax[1].set_title(r'$\gamma_t$') - - plt.show() diff --git a/examples/demo_model_profile.ipynb b/examples/demo_model_profile.ipynb index 0740abaa2..c37bdae21 100644 --- a/examples/demo_model_profile.ipynb +++ b/examples/demo_model_profile.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 16, + "execution_count": 1, "id": "45308159", "metadata": {}, "outputs": [], @@ -14,76 +14,147 @@ "import matplotlib.pyplot as plt\n", "import sys\n", "from astropy import units as un\n", + "import os\n", + "\n", + "os.environ[\n", + " \"CLMM_MODELING_BACKEND\"\n", + "] = \"ccl\" # here you may choose ccl, nc (NumCosmo) or ct (cluster_toolkit)\n", + "\n", "import clmm\n", + "\n", "from clmm import Cosmology\n", "from clmm.support import mock_data as mock\n", "from clmm.galaxycluster import GalaxyCluster\n", + "from clmm import dataops\n", "\n", "# profile modelling package\n", "import clmm.model_profile as mod" ] }, + { + "cell_type": "markdown", + "id": "7ba07a0d", + "metadata": {}, + "source": [ + "Make sure we know which version we're using" + ] + }, { "cell_type": "code", - "execution_count": 151, - "id": "65ddbc40-cfa4-41b5-855d-4418b867f9c3", + "execution_count": 9, + "id": "bbd94d3a", "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" - ] + "data": { + "text/plain": [ + "'0.16.0'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# r_2D = lensing_map.make_grid(npix,r_max)\n", - "c = 4\n", - "lensing_map.c = c\n", - "rbins = np.linspace(1e-3,50,npix)*un.Mpc\n", - "lensing_map.compute_sigma = False\n", - "kappa1 = lensing_map.kappa_NFW(r_vals=rbins)" + "clmm.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "66c330d7", + "metadata": {}, + "source": [ + "The modelling module can be used to create 2D lensing maps. This allows us to forward model systematics, starting at the map level. In this notebook, we use miscentering as an example systematic." + ] + }, + { + "cell_type": "code", + "execution_count": 249, + "id": "909edd57", + "metadata": {}, + "outputs": [], + "source": [ + "# specify parameters for NFW halo\n", + "c = 3.5 #concentration\n", + "z_l = 0.5 #lens redshift\n", + "z_s = 1.0 #source redshift\n", + "Mass = 1e14 * un.M_sun\n", + "\n", + "# define physical size of grid\n", + "r_min = 1e-3 * un.Mpc\n", + "r_max = 3 * un.Mpc\n", + "\n", + "# number of pixels in grid\n", + "npix = 512\n", + "\n", + "# define physcial size of a pixel\n", + "dx = r_max/npix\n", + "\n", + "# define the center of the map (in Mpc)\n", + "center_1 = 0\n", + "center_2 = 0\n", + "\n", + "# define radial and angular bins\n", + "N_r_bins = 30\n", + "N_phi_bins = 25\n", + "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * r_max.unit\n", + "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e244831-d6ea-4e45-a0cf-1eb80979cb6b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "de3d76d6", + "metadata": {}, + "source": [ + "Now we can create the convergence maps" ] }, { "cell_type": "code", - "execution_count": 152, - "id": "7a41267c-0d79-40b8-b906-d9a7e7f3f2c2", + "execution_count": 250, + "id": "5b51bbc8", "metadata": {}, "outputs": [], "source": [ - "kappa2 = clmm.compute_convergence(rbins.value,Mass.value,c,z_l,z_s,cosmo,200,'nfw','mean')" + "# set cosmology\n", + "cosmo = Cosmology(H0=70.0, Omega_dm0=0.25, Omega_b0=0.05, Omega_k0=0.0)\n", + "\n", + "# lensing_map has the option to return either Sigma map or the convergence map\n", + "lensing_map = mod.profiles(cosmo,mdelta=Mass,cdelta=c,z_l=z_l,z_s=z_s,\n", + " halo_profile_model='nfw',delta_mdef=200,\n", + " massdef='critical',compute_sigma=False)\n", + "\n", + "# make map\n", + "kappa_map = lensing_map.kappa_or_profile_2D(npix,r_max) " ] }, { "cell_type": "code", - "execution_count": 173, - "id": "f0554ee2-7c65-4385-a04e-773bbce666da", + "execution_count": 265, + "id": "4dff16b1-28de-453f-bdbd-e5972eb434f8", "metadata": {}, "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 173, - "metadata": {}, - "output_type": "execute_result" - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-04-01T17:26:00.461220\n", + " 2025-06-10T13:55:35.853838\n", " image/svg+xml\n", " \n", " \n", @@ -98,73 +169,42 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "axlim = r_max.value\n", + "plt.imshow(kappa_map,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$\\\\kappa$',rotation=0,fontsize=14)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e073090a", + "metadata": {}, + "source": [ + "Repeat the procedure for a Sigma map" + ] + }, + { + "cell_type": "code", + "execution_count": 252, + "id": "2aaf9cb0", + "metadata": {}, + "outputs": [], + "source": [ + "# lensing_map has the option to return either Sigma map or the convergence map.\n", + "lensing_map = mod.profiles(cosmo,mdelta=Mass,cdelta=c,z_l=z_l,z_s=z_s,\n", + " halo_profile_model='nfw',delta_mdef=200,\n", + " massdef='critical',compute_sigma=True)\n", + "\n", + "# make map\n", + "Sigma_map = lensing_map.kappa_or_profile_2D(npix,r_max)" + ] + }, + { + "cell_type": "code", + "execution_count": 253, + "id": "72993065", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-06-10T13:51:54.268588\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.loglog(rbins,kappa1.value)\n", - "plt.loglog(rbins,kappa2)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "id": "e13b25c6-2783-4d6c-8294-05287caa8af7", - "metadata": {}, - "outputs": [], - "source": [ - "lensing_map.compute_sigma = True\n", - "Sigma1 = lensing_map.kappa_NFW(r_vals=rbins)" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "id": "916b3198-cb1d-4d20-99af-1727f43647bd", - "metadata": {}, - "outputs": [], - "source": [ - "Sigma2 = clmm.compute_surface_density(rbins.value,Mass.value,c,z_l,cosmo,200,'nfw','mean')" - ] - }, - { - "cell_type": "code", - "execution_count": 169, - "id": "78515bf8-d17e-42f0-ba8a-8491e9790da3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 169, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-04-01T17:22:40.150197\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "axlim = r_max.value\n", + "plt.imshow(Sigma_map,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$\\\\Sigma [M_\\odot\\; Mpc^{-2}]$',rotation=90)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4b28b017", + "metadata": {}, + "source": [ + "We can transform from the convergence to the shear with the Kaiser Squires algorithm, returning the e1 and e2 shear maps." + ] + }, + { + "cell_type": "code", + "execution_count": 254, + "id": "eec34ea3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:230: RuntimeWarning: divide by zero encountered in divide\n", + " ---------\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:230: RuntimeWarning: invalid value encountered in multiply\n", + " ---------\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:231: RuntimeWarning: divide by zero encountered in divide\n", + " et,ex: arrays\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:231: RuntimeWarning: invalid value encountered in multiply\n", + " et,ex: arrays\n" + ] + } + ], + "source": [ + "e1_map, e2_map = mod.KaiserSquires(kappa_map)" + ] + }, + { + "cell_type": "markdown", + "id": "25f42de1", + "metadata": {}, + "source": [ + "Plot the e1 and e2 maps" + ] + }, + { + "cell_type": "code", + "execution_count": 255, + "id": "2ba6da86", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-06-10T13:51:55.318970\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-06-10T13:51:55.412375\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -2606,126 +3606,60 @@ } ], "source": [ - "plt.loglog(rbins,Sigma1.value)\n", - "plt.loglog(rbins,Sigma2)\n" + "plt.imshow(e1_map)\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$e_1$',rotation=90)\n", + "plt.show()\n", + "\n", + "plt.imshow(e2_map)\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$e_2$',rotation=90)\n", + "plt.show()" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "bd3eb025-713a-4b7e-90ec-148503994a6d", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", - "id": "7ba07a0d", - "metadata": {}, - "source": [ - "Make sure we know which version we're using" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "bbd94d3a", + "id": "12c04b61", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.16.0'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "clmm.__version__" + "from the convergence map we can compute the convergence profile, and from the e1 and e2 maps we can compute the tangential shear profile." ] }, { "cell_type": "markdown", - "id": "66c330d7", - "metadata": {}, - "source": [ - "The modelling module can be used to create 2D lensing maps. This allows us to forward model systematics, starting at the map level. In this notebook, we use miscentering as an example systematic." - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "909edd57", + "id": "f6af6b7e", "metadata": {}, - "outputs": [], "source": [ - "# specify parameters for NFW halo\n", - "c = 10 #concentration\n", - "z_l = 0.5 #lens redshift\n", - "z_s = 1.0 #source redshift\n", - "Mass = 1e14 * un.M_sun\n", - "\n", - "# define physical size of grid\n", - "r_min = 0 * un.Mpc\n", - "r_max = 50 * un.Mpc\n", - "\n", - "# number of pixels in grid\n", - "npix = 512\n", - "\n", - "# define physcial size of a pixel\n", - "dx = r_max/npix\n", - "\n", - "# define the center of the map (in Mpc)\n", - "center_1 = 0\n", - "center_2 = 0\n", + "The getTangential function uses the e1 and e2 maps as an input, along with a map center, and returns e_tangential and e_cross maps about a given center. \n", "\n", - "# define radial and angular bins\n", - "N_r_bins = 30\n", - "N_phi_bins = 25\n", - "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * un.Mpc\n", - "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" - ] - }, - { - "cell_type": "markdown", - "id": "de3d76d6", - "metadata": {}, - "source": [ - "Now we can create the convergence maps" + "The function also returns a radius map and an angle map, which is used when computing radial profile with getRadial" ] }, { "cell_type": "code", - "execution_count": 85, - "id": "5b51bbc8", + "execution_count": 256, + "id": "6b8c1825", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:273: RuntimeWarning: invalid value encountered in divide\n", + " tangential shear map\n" ] } ], "source": [ - "# set cosmology\n", - "cosmo = Cosmology(H0=70.0, Omega_dm0=0.25, Omega_b0=0.05, Omega_k0=0.0)\n", - "\n", - "# lensing_map has the option to return either Sigma map or the convergence map\n", - "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=False) \n", - "\n", - "# make map\n", - "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max) " + "et_map, ex_map, radius_map, angle_map = mod.get_Tangential_and_Cross(e1_map, e2_map, [center_1, center_2], dx=dx.value)" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "b0dc4b6c", + "execution_count": 257, + "id": "e743f1b8", "metadata": {}, "outputs": [ { @@ -2734,12 +3668,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-04-01T10:55:30.784001\n", + " 2025-06-10T13:51:56.500193\n", " image/svg+xml\n", " \n", " \n", @@ -2754,63 +3688,42 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imaged0a96d7022\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"46.965625\" y=\"-10.451344\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABIAAAFyCAYAAAD4TYq5AAAB8UlEQVR4nO2d2w0CMQwEnUtKowT6L4VQgvkYodHKLmCVfdhJjtOxXut9C6iHAKmqOrUYrLOexQBRK+I0CqZWHDUGiHQNSraPWtmoYTkC7acGm48a59oku6tg17KTPTttU0rXdNRsrp0r1IgC8lHLTTaVI8z+YNemafsyJpvBMSb75jbthVwTJpsKZPI8ElLjXGOAspuWARJeIYz2Q0BGauNaBxS80wbPI+roZ6Q2gWyBdN0fPNiGWl/Rlxqba8KZrdNoqPU11P4JFKwR8jZcKan5Rm3wLqKjNhr1JWza5FGbS200agtb0cyjviaQPwBF28+ca5Pt97kWHUgMKDXZPrGVyWbs94ktdM3XtD6NJtk9EPSziPF85Ask17QVq9HKtT+aGgSEdT8ltlAjHzVwO7JRg5gpqXG9huDUeZI18lGDgIJde6CDVrBrwmQPtR+AhMmmqAW7ZgMCNaLutEJqwa7lziPQtQ8FpNMouWkh17aPGucao5Gwafdo1AIZkx07ancwNWyDpJqWWpFxOxIetIZaB0R1v3EXoQabsGmD5xHnmq1pwZ3W5hrYa9i9X6dR8MzOnUfcfU3nGhjI2Kc13GATniFljzSMTat7IwqcR0ydLdQI+o4WtSRyZmPUbB8uAV3TUeNcg/6qwKgRRk32Gf4vtfqN5qlVmUMAAAAASUVORK5CYII=\" id=\"imagebe00fe4650\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"331.2\" y=\"-10.08\" width=\"12.96\" height=\"266.4\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -3514,57 +4481,19 @@ }, "metadata": {}, "output_type": "display_data" - } - ], - "source": [ - "axlim = 2*r_max.value\n", - "plt.imshow(kappa_map.value,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", - "plt.xlabel('x ({0})'.format(r_max.unit))\n", - "plt.ylabel('y ({0})'.format(r_max.unit))\n", - "plt.colorbar().set_label('$\\\\kappa$',rotation=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "e073090a", - "metadata": {}, - "source": [ - "Repeat the procedure for a Sigma map" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "2aaf9cb0", - "metadata": {}, - "outputs": [], - "source": [ - "# lensing_map has the option to return either Sigma map or the convergence map.\n", - "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=True) \n", - "\n", - "# make map\n", - "Sigma_map = lensing_map.kappa_NFW_2D(npix,r_max)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "72993065", - "metadata": {}, - "outputs": [ + }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-04-01T10:55:33.256664\n", + " 2025-06-10T13:51:56.594370\n", " image/svg+xml\n", " \n", " \n", @@ -3579,63 +4508,42 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image1a7c7c5477\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"46.965625\" y=\"-10.451344\" width=\"266.4\" height=\"266.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABIAAAFyCAYAAAD4TYq5AAAB8UlEQVR4nO2d2w0CMQwEnUtKowT6L4VQgvkYodHKLmCVfdhJjtOxXut9C6iHAKmqOrUYrLOexQBRK+I0CqZWHDUGiHQNSraPWtmoYTkC7acGm48a59oku6tg17KTPTttU0rXdNRsrp0r1IgC8lHLTTaVI8z+YNemafsyJpvBMSb75jbthVwTJpsKZPI8ElLjXGOAspuWARJeIYz2Q0BGauNaBxS80wbPI+roZ6Q2gWyBdN0fPNiGWl/Rlxqba8KZrdNoqPU11P4JFKwR8jZcKan5Rm3wLqKjNhr1JWza5FGbS200agtb0cyjviaQPwBF28+ca5Pt97kWHUgMKDXZPrGVyWbs94ktdM3XtD6NJtk9EPSziPF85Ask17QVq9HKtT+aGgSEdT8ltlAjHzVwO7JRg5gpqXG9huDUeZI18lGDgIJde6CDVrBrwmQPtR+AhMmmqAW7ZgMCNaLutEJqwa7lziPQtQ8FpNMouWkh17aPGucao5Gwafdo1AIZkx07ancwNWyDpJqWWpFxOxIetIZaB0R1v3EXoQabsGmD5xHnmq1pwZ3W5hrYa9i9X6dR8MzOnUfcfU3nGhjI2Kc13GATniFljzSMTat7IwqcR0ydLdQI+o4WtSRyZmPUbB8uAV3TUeNcg/6qwKgRRk32Gf4vtfqN5qlVmUMAAAAASUVORK5CYII=\" id=\"image8bcf0c96cc\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"331.2\" y=\"-10.08\" width=\"12.96\" height=\"266.4\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(et_map)\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$e_t$',rotation=90)\n", + "plt.show()\n", + "\n", + "plt.imshow(ex_map)\n", + "plt.xlabel('x ({0})'.format(r_max.unit))\n", + "plt.ylabel('y ({0})'.format(r_max.unit))\n", + "plt.colorbar().set_label('$e_x$',rotation=90)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "cde1c95f", + "metadata": {}, + "source": [ + "With the radius_map and angle_map, we can calculate the radial convergence profile from the kappa map and the radial tangential shear profile from the e_tangential map, using the getRadial function" + ] + }, + { + "cell_type": "code", + "execution_count": 258, + "id": "e3d066a0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n" + ] + } + ], + "source": [ + "kappa_radial, gammat_radial = mod.get_Radial(radius_map,angle_map,\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map)" + ] + }, + { + "cell_type": "markdown", + "id": "f89da817", + "metadata": {}, + "source": [ + "plot the radial convergence and tangential shear profiles. Note that these profiles are not averaged over all angles yet, meaning that these profiles are 2D (radial and angular). This is useful for miscentering which leaves anisotropic signatures on the resulting lensing profiles" + ] + }, + { + "cell_type": "code", + "execution_count": 259, + "id": "080ff2f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, '$\\\\gamma_t$')" + ] + }, + "execution_count": 259, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-06-10T13:51:57.575804\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "axlim = 2*r_max.value\n", - "plt.imshow(Sigma_map.value,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", - "plt.xlabel('x ({0})'.format(r_max.unit))\n", - "plt.ylabel('y ({0})'.format(r_max.unit))\n", - "plt.colorbar().set_label('$\\\\Sigma [M_\\odot\\; Mpc^{-2}]$',rotation=90)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "4b28b017", - "metadata": {}, - "source": [ - "We can transform from the convergence to the shear with the Kaiser Squires algorithm, returning the e1 and e2 shear maps." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "eec34ea3", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:201: RuntimeWarning: divide by zero encountered in divide\n", - " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:201: RuntimeWarning: invalid value encountered in multiply\n", - " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:202: RuntimeWarning: divide by zero encountered in divide\n", - " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:202: RuntimeWarning: invalid value encountered in multiply\n", - " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n" - ] - } - ], - "source": [ - "e1_map, e2_map = mod.KaiserSquires(kappa_map)" - ] - }, - { - "cell_type": "markdown", - "id": "25f42de1", - "metadata": {}, - "source": [ - "Plot the e1 and e2 maps" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2ba6da86", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-04-01T10:55:35.301309\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "fig,ax = plt.subplots(1,2,figsize=(9,4))\n", + "\n", + "ax[0].imshow(kappa_radial,origin='lower')\n", + "ax[1].imshow(gammat_radial,origin='lower')\n", + "\n", + "ax[0].set_ylabel('r')\n", + "ax[0].set_xlabel('$\\phi$')\n", + "\n", + "ax[1].set_ylabel('r')\n", + "ax[1].set_xlabel('$\\phi$')\n", + "\n", + "ax[0].set_title(r'$\\kappa$')\n", + "ax[1].set_title(r'$\\gamma_t$')" + ] + }, + { + "cell_type": "markdown", + "id": "1086e4de", + "metadata": {}, + "source": [ + "We can recover the 1D radial convergence and tangential shear profiles as follows" + ] + }, + { + "cell_type": "code", + "execution_count": 260, + "id": "5c6174be", + "metadata": {}, + "outputs": [], + "source": [ + "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", + "gammat_1D_radial = gammat_radial.mean(axis=-1)" + ] + }, + { + "cell_type": "markdown", + "id": "ebb41586", + "metadata": {}, + "source": [ + "Plot the 1D radial profiles" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "id": "29a26710", + "metadata": {}, + "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-04-01T10:55:35.392141\n", + " 2025-06-10T13:41:17.808347\n", " image/svg+xml\n", " \n", " \n", @@ -5185,41 +6059,37 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(e1_map)\n", - "plt.colorbar()\n", - "plt.show()\n", - "\n", - "plt.imshow(e2_map)\n", - "plt.colorbar()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "12c04b61", - "metadata": {}, - "source": [ - "from the convergence map we can compute the convergence profile, and from the e1 and e2 maps we can compute the tangential shear profile." - ] - }, - { - "cell_type": "markdown", - "id": "f6af6b7e", - "metadata": {}, - "source": [ - "The getTangential function uses the e1 and e2 maps as an input, along with a map center, and returns e_tangential and e_cross maps about a given center. \n", - "\n", - "The function also returns a radius map and an angle map, which is used when computing radial profile with getRadial" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6b8c1825", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:247: RuntimeWarning: invalid value encountered in divide\n", - " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n" - ] - } - ], - "source": [ - "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e743f1b8", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-04-01T10:55:37.443943\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + "plt.plot(r_bins_mid,kappa_1D_radial,label='$\\\\kappa(r)$')\n", + "plt.plot(r_bins_mid,gammat_1D_radial,label='$\\gamma_t(r)$')\n", + "plt.legend()\n", + "plt.xlabel('r [Mpc]')\n", + "plt.ylabel('Lensing amplitude')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "085bd120-6283-4d8f-adeb-bf4e2c781ba2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "81e0ceb4", + "metadata": {}, + "source": [ + "## Miscentering\n", + "\n", + "We now repeat the above procedure, but this time we use an incorrect center (relative to the true hale center) when performing the calculations, the exemplify the impact of miscentering" + ] + }, + { + "cell_type": "code", + "execution_count": 241, + "id": "13660944", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n" + ] + } + ], + "source": [ + "# First we define a miscentring parameter\n", + "R_mis = 0.05 # Mpc\n", + "\n", + "# find new center based on R_mis\n", + "_phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", + "\n", + "# mis-centered coordinates\n", + "center_1 = R_mis*np.cos(_phi_Rmis)\n", + "center_2 = R_mis*np.sin(_phi_Rmis)\n", + "\n", + "# get tangential and radial profiles\n", + "et_map, ex_map, radius_map, angle_map = mod.get_Tangential_and_Cross(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + "kappa_radial, gammat_radial = mod.get_Radial(radius_map,angle_map,\n", + " r_bins.value,phi_bins,\n", + " kappa_map,et_map)" + ] + }, + { + "cell_type": "code", + "execution_count": 305, + "id": "1cb19534", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_maps_and_profiles(kappa_map,Sigma_map,e1_map,e2_map,et_map,ex_map,\n", + " kappa_radial,gammat_radial,r_bins):\n", + " '''quickly plot the convergence, e1,e2, ex,et and radial profiles\n", + " '''\n", + " fig, ax1 = plt.subplots(3,2,figsize=(10,18))\n", + " ax = ax1.flatten()\n", + "\n", + " plt.sca(ax[0])\n", + " plt.imshow(kappa_map,origin = 'lower')\n", + " plt.xlabel('x ({0})'.format(r_max.unit))\n", + " plt.ylabel('y ({0})'.format(r_max.unit))\n", + " plt.colorbar()\n", + " plt.title(r'$\\kappa$')\n", + "\n", + " plt.sca(ax[1])\n", + " plt.imshow(Sigma_map,origin = 'lower')\n", + " plt.xlabel('x ({0})'.format(r_max.unit))\n", + " plt.ylabel('y ({0})'.format(r_max.unit))\n", + " plt.colorbar()\n", + " plt.title(r'$\\Sigma [M_\\odot\\; Mpc^{-2}]$')\n", + "\n", + "\n", + " plt.sca(ax[2])\n", + " plt.imshow(e1_map)\n", + " plt.xlabel('x ({0})'.format(r_max.unit))\n", + " plt.ylabel('y ({0})'.format(r_max.unit))\n", + " plt.colorbar()\n", + " plt.title('$e_1$')\n", + " \n", + " plt.sca(ax[3])\n", + " plt.imshow(e2_map)\n", + " plt.xlabel('x ({0})'.format(r_max.unit))\n", + " plt.ylabel('y ({0})'.format(r_max.unit))\n", + " plt.colorbar()\n", + " plt.title('$e_2$')\n", + " \n", + " \n", + " plt.sca(ax[4])\n", + " plt.imshow(et_map)\n", + " plt.xlabel('x ({0})'.format(r_max.unit))\n", + " plt.ylabel('y ({0})'.format(r_max.unit))\n", + " plt.colorbar()\n", + " plt.title('$e_t$')\n", + " \n", + " plt.sca(ax[5])\n", + " plt.imshow(ex_map)\n", + " plt.xlabel('x ({0})'.format(r_max.unit))\n", + " plt.ylabel('y ({0})'.format(r_max.unit))\n", + " plt.colorbar()\n", + " plt.title('$e_x$')\n", + "\n", + " plt.subplots_adjust(bottom=0.3)\n", + " plt.show()\n", + "\n", + "\n", + " r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + "\n", + " fig,ax = plt.subplots(1,2,figsize=(10,4))\n", + " \n", + " ax[0].imshow(kappa_radial,origin='lower')\n", + " ax[1].imshow(gammat_radial,origin='lower')\n", + " \n", + " ax[0].set_ylabel('r')\n", + " ax[0].set_xlabel('$\\phi$')\n", + " \n", + " ax[1].set_ylabel('r')\n", + " ax[1].set_xlabel('$\\phi$')\n", + " \n", + " ax[0].set_title(r'$\\kappa$')\n", + " ax[1].set_title(r'$\\gamma_t$') \n", + " plt.show()\n", + "\n", + "\n", + " plt.figure()\n", + " r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", + " plt.plot(r_bins_mid,kappa_1D_radial,label='$\\\\kappa(r)$')\n", + " plt.plot(r_bins_mid,gammat_1D_radial,label='$\\gamma_t(r)$')\n", + " plt.legend()\n", + " plt.xlabel('r [Mpc]')\n", + " plt.ylabel('Lensing amplitude')\n", + "\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e9720a7d", + "metadata": {}, + "source": [ + "we can plot all of the results at once using the plot_maps_and_profiles function" + ] + }, + { + "cell_type": "code", + "execution_count": 306, + "id": "32772d61", + "metadata": {}, + "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-04-01T10:55:37.536550\n", + " 2025-06-10T14:06:52.522140\n", " image/svg+xml\n", " \n", " \n", @@ -6303,41 +7268,41 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imaged6a2fecbf7\" transform=\"scale(1 -1) translate(0 -203.04)\" x=\"46.965625\" y=\"-26.754159\" width=\"203.04\" height=\"203.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(et_map)\n", - "plt.colorbar()\n", - "plt.show()\n", - "\n", - "plt.imshow(ex_map)\n", - "plt.colorbar()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "cde1c95f", - "metadata": {}, - "source": [ - "With the radius_map and angle_map, we can calculate the radial convergence profile from the kappa map and the radial tangential shear profile from the e_tangential map, using the getRadial function" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e3d066a0", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:298: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:299: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n" - ] - } - ], - "source": [ - "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", - " r_bins.value,phi_bins,\n", - " kappa_map,et_map)" - ] - }, - { - "cell_type": "markdown", - "id": "f89da817", - "metadata": {}, - "source": [ - "plot the radial convergence and tangential shear profiles. Note that these profiles are not averaged over all angles yet, meaning that these profiles are 2D (radial and angular). This is useful for miscentering which leaves anisotropic signatures on the resulting lensing profiles" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "080ff2f4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-04-01T10:55:43.457030\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAARoAAAEaCAYAAADOs5i6AAATF0lEQVR4nO3dT47juBWA8Ue6qmcGSHYBcpEguUCOkF3OF+QsAZKTZNmLyXTZZBaSbFqi/vOJpPT9gEYmXWWVu8r6+pG21eav5m9eAECRzX0HAJwfoQGgjtAAUEdoAKgjNADUERoA6ggNAHWEBoA6QgNAHaEBoI7QAFBHaACoIzQA1BEaAOoIDQB1hAaAOkIDQB2hAaCO0ABQR2gAqCM0ANQRGgDqCA0AdYQGgDpCA0AdoQGgjtAAUEdoAKgjNADUERoA6ggNAHWEBoA6QgNAHaEBoI7QAFBHaACoIzQA1BEaAOoIDQB1hAaAOkIDQB2hAaCO0ABQR2gAqCM0ANQRGgDqCA0AdYQGgDpCA0AdoQGgjtAAUEdoAKgjNADUERoA6ggNAHWEBoA6QgNAHaEBoI7QAFD3kfsOoEDG7Lu992nuB06D0FzV3phsPTYRuiRCcwWaUVkrdl+Iz+kRmrMqKS5zwvtKdE6J0JxJTXEZQ3ROidDU7gxxGUN0ToPQ1OjMcRlDdKpGaGpyxcDEdN8HglMNQlMDAhNHcKpBaEpGYJYhOMUjNCUiMNsQnGLxXqfSEJn9+B4Wh4mmFJwcaTHdFIXQ5EZgdBGcIrB0yonIHIfvdVaEJhce+Mfje54NS6ej8WDPi6VUFkw0RyIy5eBncShCcxQe2OXhZ3IYlk7aeDCXjaXUIZhoNBGZevCzUkVotPDArQ8/MzWERgMP2Hrxs1PBHk1qZ3mgmo1/B3mX9n7kYAx7NokRmpRqjMzWoKw9Xm0BIjZJEZpUaolM6rBs/bo1hIfYJENoUig9MrniMiW8TyVHh9gkQWj2KjkyJQYmprufpQaH2OxGaPYoNTK1BKav5OAQm10IzVnUGpeYWpZVWOxEj86DlTTNnCkyfSX92Ur6mVeGiWaLUh5wJZ2EmkpaUrGE2oTQrFVCZK4SmL5SgkNsVrvoI7ZiV41MiO9BdZho1sg5zWQ6uYxd9mf27uC/4XNPN0w1qxCapU4emaVBWXt79QAZS2wqQGiWOGlk9sZl7ddQiw6xKR6hKZlCZI6Iy5KvnTw6OWODWeyqzck1zSSOjLEma2T6VO5PtjeMlvN9LRUTTYkSnTAlhWVM8imHyaZITDRTcvxNdaHI9CW7zzkmG6aaSUw0YyqNTLblSKIporv/u6ebHJMNG8OjCE0pdkYmSWD23IfYbXec6EmCwzKqGCydYo6eZnJGxtjXr9QSHHt3QI9eRrGEimKiyS1HZLLsYWy/9IOxhsmmckw0fUf+jXR0ZLQml7U23I+qJhummgEmmlyOXE5s/Vprv87aqWPl+5V279sw2WRDaEIV/E20KjJrA7N3aujffmkQNgTn8DdxrsUzUG8KmKMvaOOEoRIZa16/Ult77BXfl81LqRKWjhfEd71z1DRTSmS04rL36xGbU2LpdCZLAzN3mJ3R9VNLhu7rTy19cl9rJhWWT0+E5kia08zcsWeOsTcuY8cajc7S4MzEZvN+DRvDhyI0IkVvAmtHZnFg7MjXcDMhaI8/GZxcsTkCU42IEJrjbJhmdkdma2DGorL0cyPxmQzO3HSjFRummsMQmiMUFJnRwKyJy5zwWL3ozAaH2JwSoSl42TQpVWTGArPl+xKNR3v8SHA0YlMklk+ERp3WNDMmctvFgdkb3f7tw5MrEpzR6WZu32bqLpS8X3NhhKZGY/HaGpk1k86ccHLpjtsPzpLpZiw2GlNNrZNSRa4dmgKXTbPTzJ7IbAzM3DNTfmZyGQRnZLpJFZsip5qLL5+uHRptqd+hrBWZ3sfWvqam//ne+/iGcP9k6003WWPDVKOK0JzQZGQmPja83bZ3bw/2XsKgbIkNqnfd0Ggvm1K/n2bhNLM4MmOB6cdlzTWDw9s6/x6ccLkUW0pNxeao/RrtqebCy6frhqYwm55pmrvNmsiExwrjsvR+ud4V9IIX4b2FY2y6iWwSv/9Z1j8TVeRezUURmhosnCrM2L5L5PejU0z3dd6is/QtCsF/d9HpghObbmZis3gJxd5KFQiNhiMuUzm3ZHp9ILhNLzJjgTEj0034OYNJITjZu5t0wbHueZtnQOYmGFmxhJo6BpvCRSA0pduy1xN7DcyayEQmm0HIbv0X292CCLhmSunC0J28wXTzFps1S6gY4lC8a4amwNfPrDI1zcSWTEsiY4Lfaz/+/PzY8YMlThcJ/zbJtCe+lV2xSTHVFOWiG8LXDE1B1P7p2tE3Tw6D8pxiwsAY84rK21IqEp/2xDGumWSa4HQTjntfSgWxid5nhZOQTeH8CE1qKZ/Wjh1r6TTT+z0ztu8SRCYaGGPiezciryg43y6V2q8VBqebbrrPDZY5k/s1a6ealMsnlmLJEZozmloy9ZdLsciEgTHBrxjvRUwbmjA4zokReY9NuIyybn4JhdMgNBntXTbNTjOh8GtNRcbat8D4m40vl0ReQfBezMO9B0dkOjbd/Zha0mx5unsEy6e8CE2pFiyb4rebWFqF+zLt8aKRaaeaZ2RisQkiIw8n3pgmNr7dl+k2ZsLYPII/h7PDJVT4Z5iLivbyCUkRmrMKJ5zB2wqCJVQkMv7W/v82MN7a5uns2ETz8M9nnrwxz7D0Y9MssXr7Nd19e044G57aRhWuF5ran9puLVk2RaeZ/pKp25OJRMbfbiK3V2h8+G8zOS/GeRHrRZxpgtN+KS/yio1vjmv6m8Pdf49NNeGfLdHyqRgX3Ie6Xmg05f6HyXqbwIs/P9zwDSPzYcV3v262DU17WydiXLs3czdijAsCI+2mr3mdVEtPrlKmGpZhSRGaWmzdOI7dLjbNdHsyYWQ+b+I+rfhPK+7DivtopxppImPvXuzdiLFGrDHNXow0sfHei+leHexfr89526sJ7+Ngv2XjPg2KRGgymXzGSeMSE+Gy6e1jvWeXjGmWSR9W3KcV9+0mj5+suG9W3KcRd2tuZh8i9ocX+2Xk1k5GtouL6z0t3kXt8Qj+fMPlU7I/68jxeOYpH0JzUrNXyYu9VuZmxdv210czyTx+svL4xcr9Zyv3n4249hFjv0Q+fvPy8b/2cN43J/Gj2bcxNz+camamlNPswWCA0NRuw0XEBxEK92pu7URza5dL35rI/Pidka/fG7n/0nzqx68i7ruIiBVzF3F3L+buxdxcM9G4+GtvjDHihZhcDaG5uv7rY0yzD+OtEfdhxH0auf/cRObXP3r5+sOXiIh8/vdTRIzYL5HbDyPuy4htbzd4M+beZ/pK2SDGZoTmarq9oW4jOBS+VcFKE5ubiPsQuf8i8vWHL/n7n/4lIiL/+Pdf5PP7N/n8FHE3eT0jNfa+qHCfxprhhjBOjdBgFefP8TokHIvQXI3zzT5MeJHwTvhu7PZ1MvbRbvz+2iyX/vmfP4tI898fvzYfs4/mc8XJ6+nm/qau96/lD8/8XA6huTrvB/9r2lf92rsX+8PLx2++3fg18vn9m4i04fnefMz+aD63u13smLuwP1M9QlM751Y/8+S9f3/m6e0Nku3T0w8n9m7Efpn2KWwr9kvk87P51NfT207slxN7d82rhB/tMUYiw9PX10RoTmoQk+EnvC7p0F3e4eGa2zjTvK3Avl6MZ+7ts0uDF+w5uf3mxHw5MXcnxjW/5OFe7+buppyZyBCh8yI0mXjnx18d7F3aVwd717wC14o0Gym34GP+eT0Z372g7uHFGCe2i4z34u5e3FfsLQhNZGwbmuc00/8VLn98GKDEy6KJ4/Gq4HwITS2cn3+/U/fmxbnbuead1KZbdrVTTReb8D1Ltn3Fr7l7sSNvqjT3NjJ3J+bxiE8z0k4ssZM99ntLphvCUQ1Ck1LqSWSrpfs24T5Kb/J4xqabcG4ufpmIh2+XSv4Zmef1Z8Ll0tJlUSkbv7xzO6nrhSb2t36F3vZgRsLy9jn95ZOzw6lG3DMwIu0lH5x5XnNmsOfjg9C0ezzi2mmm3afp4uXDpVJk2TS6P+MWfE5tzvLnWOF6obmKMD795dPzcpu33v5J865q097Gt1E2Nz9871LvUp7P6wZ3x3PBhPT8XDc8ycLlTynTDJIjNKWKLcM27NPEp5rX8sfbbnJ5j40Y0yybwndUj7zA7xmY7lcYHO+HezNz08zW/RmWO8UiNBlNPvO05PYLlk9PYaScHy6humOIvC7p0F5CwvTi1bsT70+Vex+PTLhkCu/TlITLJp5xyovQnFEXhjY+zyA53/x7SsZOx8baNhhBcESm37IQbvzORca753/78DbhMXEqhCa1lM88LVg+zU41/dj0j9vt17Sxke5iVeH1h8M3Uvb3aLr/DkLh3wLU25eJLZliezNT04z2soklWHKEJrO9y6fxA48sd7pQdfs1Iq/J5iEiJgiOMc1lHWL/4sLbC/D600mwB9OfZLqPj91nBSyb8rtmaGp/invpVDO5hDKvyea5jBLpphsRaYLTHud5/Mf7hWTepo0wKGF0ut8L/v/kkmntNFOTiy4NrxmammxZim2OTXdN3/ZEbyccEXldfjPcUO7fz+d/p4nMYix1ikdoNKyMw6bl09RUM3qbSGxEmg1ikd5S6nmj92OMXRlvbLIJ/7/M7MsMDrl/mlm9bCJaKghNDRaGa3YJFfx+dxIPphuRV3BEetGZEJ7Q4cnan2K6+/C609HfX/x0NmGoAqEpRIqpZvjx6dg0v92fbkwvFAtL0z/hY1NM97VfH4j/fswR0wzUXDc02hvCGpd6iB1vbgnVj43Ia89GJD7ddPrRmdM7sRcFpv+x/u0ix3194nGXmEhz/OuG77qhObHJ2DSfMDrdiAT/7tPGiWAYih2RwSkQGk2pN4UXTjUiG2LTCSacztwmczQOsaXQlshsnGbYBC7LtUNT4Otp1GMjEl9KjX2OrJwyNgRm9GscFZkjXHxSu3ZojqBxMaw9sRGJTzci8eDsup/LJp2UkdmEaUYdoSnQrrcljMRGRKanm+YT34+1dtqb+lt7aWBEdr36t8hpBoSmxOXTIlOT0sjT3qPTjUj8EhMpxv2RyWhTZGqdPC6+bBIhNMfYsHxaNNVsjI1IZIO3tyG8y8Sya3K/Z2dkNk0ztcarMoTmKLliI7IuOCLjoYhdgmKhzYERITInQGhEil4+7Y6NyOQriCeDMzjO+hNz9hmrXJE5CssmESE0x9r4DFSy2IjMBkdkYXSm7srWa/4ODqQYGaaZQxGaM+lOnh3BEVF+dW6iwFSBaeapgH/trBBHPSg2nkSr/uZe8jWcP/YiUku/3orvD9NMPQhNDqXERuQVAI3orD02kTktlk6hgjeFO6tezLdkKRXqn7xbLluxxcqTv+jN3w7LpjeEJpcdb03oTjS14HS0T+ijA8M0kw1Lp74j/yba+cDf9A7lEk62DfejqsgwzQww0eS2802Xm94XFZ50qd/wueRrrr5pRZFBFBNNzNF/Ix092fS/ttakk+DY1UWGaSaKiaYUCSYbkRX7NmP3oW/pfUp8QifZ8GWSKQahGZPjGagE165JEpz3A6Y5zuIvl2giyBEZpplRLJ2m5HjgJDpBqngKuIfInBcTTYkSXZUvPHFV/n3vBJIHkeVSkZho5uT6m0phz6OkKUfl/uSKDNPMLCaakilcbzjnlKMaOiaZohGaJXK+NUHj4ubPQ+tH55ApKmdkmGYWITRLnTQ2ry8RP2GWBijbsozIVIHQrJE7NiLHvZL3+WULPZlyL5WIzCpsBtcm9wlWAr4H1WGiWauES0lkmm6yKyUwTDOrEZotSoiNyHWCU0pgRIjMRid/hCoq6QFX0omYWkl/tpJ+5pVhojmLHJd+0FJSXJAEodmjlCVUX61LqpIDwzSzC6HZq9TYiNQTnJIDI0JkEiA0KZQcG5Eyl1Wlx6VDZJIgNKmUHptO/wSv4FKe2RCZZAhNSrXEJjQWgK0BqjEoMUQmKUKTWo2xiTlLMLYgMskVsmA/GR6o9eJnp4LQaOEBWx9+ZmoIjSYeuPXgZ6WKPRpt3QP4DPs2Z0RgDsFEcxQe0OXhZ3IYQnMkHtjl4GdxKJZOR2MplReByYKJJhce8Mfje54NocmJB/5x+F5nxdIpN5ZSughMEQhNKQhOWgSmKCydSsMJsh/fw+Iw0ZSI6WYbAlMsQlMygrMMgSkeoakBwYkjMNUgNDUJT6yrRoe4VInQ1OpqUw6BqRqhqd2ZpxzichqE5kzOEB3ickqE5qxqig5xOT1CcwWxEzlXfIjKJRGaq5o64fdGiJigh9BgiFAgMd7rBEAdoQGgjtAAUEdoAKgjNADUERoA6ggNAHWEBoA6QgNAHaEBoI7QAFBHaACoIzQA1BEaAOoIDQB1hAaAOkIDQB2hAaCO0ABQR2gAqCM0ANQRGgDqCA0AdYQGgDpCA0AdoQGgjtAAUEdoAKgjNADUERoA6ggNAHWEBoA6QgNAHaEBoI7QAFBHaACoIzQA1BEaAOoIDQB1hAaAOkIDQB2hAaCO0ABQR2gAqCM0ANQRGgDqCA0AdYQGgDpCA0AdoQGgjtAAUEdoAKgjNADUERoA6ggNAHWEBoA6QgNAHaEBoI7QAFD3fwj+7TR6p9DXAAAAAElFTkSuQmCC\" id=\"image9e320806b7\" transform=\"scale(1 -1) translate(0 -203.04)\" x=\"351.329261\" y=\"-26.754159\" width=\"203.04\" height=\"203.04\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-04-01T10:55:43.502733\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(kappa_radial)\n", - "plt.show()\n", - "\n", - "plt.imshow(gammat_radial)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "1086e4de", - "metadata": {}, - "source": [ - "We can recover the 1D radial convergence and tangential shear profiles as follows" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "5c6174be", - "metadata": {}, - "outputs": [], - "source": [ - "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", - "gammat_1D_radial = gammat_radial.mean(axis=-1)" - ] - }, - { - "cell_type": "markdown", - "id": "ebb41586", - "metadata": {}, - "source": [ - "Plot the 1D radial profiles" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "29a26710", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-04-01T10:55:47.800761\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", - "plt.plot(r_bins_mid,kappa_1D_radial,label='$\\\\kappa(r)$')\n", - "plt.plot(r_bins_mid,gammat_1D_radial,label='$\\gamma_t(r)$')\n", - "plt.legend()\n", - "plt.xlabel('r [Mpc]')\n", - "plt.ylabel('Lensing amplitude')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "085bd120-6283-4d8f-adeb-bf4e2c781ba2", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "81e0ceb4", - "metadata": {}, - "source": [ - "## Miscentering\n", - "\n", - "We now repeat the above procedure, but this time we use an incorrect center (relative to the true hale center) when performing the calculations, the exemplify the impact of miscentering" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "13660944", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n" - ] - } - ], - "source": [ - "# First we define a miscentring parameter\n", - "R_mis = 1 # Mpc\n", - "\n", - "# find new center based on R_mis\n", - "_phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", - "\n", - "# mis-centered coordinates\n", - "center_1 = R_mis*np.cos(_phi_Rmis)\n", - "center_2 = R_mis*np.sin(_phi_Rmis)\n", - "\n", - "# get tangential and radial profiles\n", - "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", - "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", - " r_bins.value,phi_bins,\n", - " kappa_map,et_map)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "1cb19534", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", - " kappa_radial,gammat_radial,r_bins):\n", - " '''quickly plot the convergence, e1,e2, ex,et and radial profiles\n", - " '''\n", - " fig, ax = plt.subplots(2,3,figsize=[9,6])\n", - " ax.ravel()\n", - "\n", - " ax[0,0].imshow(kappa_map,origin = 'lower')\n", - " ax[0,0].set_title(r'$\\kappa$')\n", - "\n", - "\n", - " ax[0,1].imshow(e1_map,origin = 'lower')\n", - " ax[0,1].set_title(r'$e_1$')\n", - "\n", - "\n", - " ax[0,2].imshow(e2_map,origin = 'lower')\n", - " ax[0,2].set_title(r'$e_2$')\n", - "\n", - "\n", - " ax[1,0].imshow(et_map,origin = 'lower')\n", - " ax[1,0].set_title(r'$e_t$')\n", - "\n", - "\n", - " ax[1,1].imshow(ex_map,origin = 'lower')\n", - " ax[1,1].set_title(r'$e_x$')\n", - "\n", - "\n", - "\n", - " r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", - "\n", - " ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\\kappa(r)$')\n", - " ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\\gamma_t(r)$')\n", - "\n", - " plt.legend()\n", - " plt.show()\n", - "\n", - " fig,ax = plt.subplots(1,2)\n", - "\n", - " ax[0].imshow(kappa_radial,origin='lower')\n", - " ax[1].imshow(gammat_radial,origin='lower')\n", - "\n", - " ax[0].set_ylabel('r')\n", - " ax[0].set_xlabel('$\\phi$')\n", - "\n", - " ax[1].set_ylabel('r')\n", - " ax[1].set_xlabel('$\\phi$')\n", - "\n", - " ax[0].set_title(r'$\\kappa$')\n", - " ax[1].set_title(r'$\\gamma_t$')\n", - "\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "e9720a7d", - "metadata": {}, - "source": [ - "we can plot all of the results at once using the plot_maps_and_profiles function" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "32772d61", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:32:37.435264\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imageb181eb1b19\" transform=\"scale(1 -1) translate(0 -203.04)\" x=\"351.329261\" y=\"-557.351806\" width=\"203.04\" height=\"203.04\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-06-10T14:06:52.771396\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.2, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image6c26e63f75\" transform=\"scale(1 -1) translate(0 -221.76)\" x=\"40.603125\" y=\"-22.318125\" width=\"185.04\" height=\"221.76\"/>\n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -10290,12 +10917,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-02-06T12:32:37.605789\n", + " 2025-06-10T14:06:52.845892\n", " image/svg+xml\n", " \n", " \n", @@ -10310,41 +10937,37 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "M 947 1747 \n", + "Q 947 1113 1208 752 \n", + "Q 1469 391 1925 391 \n", + "Q 2381 391 2643 752 \n", + "Q 2906 1113 2906 1747 \n", + "Q 2906 2381 2643 2742 \n", + "Q 2381 3103 1925 3103 \n", + "Q 1469 3103 1208 2742 \n", + "Q 947 2381 947 1747 \n", + "z\n", + "\" transform=\"scale(0.015625)\"/>\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -10964,8 +12025,8 @@ } ], "source": [ - "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", - " kappa_radial,gammat_radial,r_bins)" + "plot_maps_and_profiles(kappa_map,Sigma_map,e1_map,e2_map,et_map,ex_map,\n", + " kappa_radial,gammat_radial,r_bins) " ] }, { @@ -10986,20 +12047,20 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 244, "id": "38b199f1", "metadata": {}, "outputs": [], "source": [ "# define miscentring distribution\n", - "R_mis_max = 1 \n", + "R_mis_max = 0.5\n", "N_R_mis = 15\n", "R_mis_arr = np.insert(np.logspace(-2, np.log10(R_mis_max), N_R_mis-1), 0, 0)" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 245, "id": "c17883c2", "metadata": { "scrolled": true @@ -11009,68 +12070,38 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:248: RuntimeWarning: invalid value encountered in divide\n", - " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n" + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:273: RuntimeWarning: invalid value encountered in divide\n", + " tangential shear map\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:324: RuntimeWarning: invalid value encountered in divide\n", + "/Users/alessandrafumagalli/DESC/CLMM/clmm/model_profile.py:325: RuntimeWarning: invalid value encountered in divide\n" ] } ], @@ -11091,16 +12122,16 @@ " center_1 = R_mis_arr[j]*np.cos(_phi_Rmis)\n", " center_2 = R_mis_arr[j]*np.sin(_phi_Rmis)\n", "\n", - " et_map[j], ex_map[j], radius_map[j], angle_map[j] = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", + " et_map[j], ex_map[j], radius_map[j], angle_map[j] = mod.get_Tangential_and_Cross(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", "\n", - " kappa_radial[j], gammat_radial[j] = mod.getRadial(radius_map[j],angle_map[j],\n", + " kappa_radial[j], gammat_radial[j] = mod.get_Radial(radius_map[j],angle_map[j],\n", " r_bins.value,phi_bins,\n", " kappa_map,et_map[j])" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 246, "id": "22ba0469", "metadata": {}, "outputs": [ @@ -11115,7 +12146,7 @@ " \n", " \n", " \n", - " 2025-02-06T12:33:35.708320\n", + " 2025-06-10T13:41:25.339216\n", " image/svg+xml\n", " \n", " \n", @@ -11146,20 +12177,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAM4AAADOCAYAAAB2Hz3EAAAJvUlEQVR4nO3dS47jRhZG4T+CyrSRqFm3vR1PvITecHs5Bc9sVJWRIsODYEgkxedlkHrwfICRLpeeAE9eRoiZdr+7/wUBWMTf+wUAz4hwAAPCAQwIBzAgHMCAcAADwgEMCAcwIBzAgHAAA8IBDAgHMCAcwIBwAAPCAQwIBzAgHMCAcAADwgEMCAcwIBzAgHAAA8IBDAgHMCAcwIBwAAPCAQwIBzAgHMCAcAADwgEMCAcwIBzAgHAAA8IBDAgHMCAcwIBwAAPCAQwIBzAgHMCAcAADwgEMCAcwIBzAgHAAA8IBDAgHMCAcwIBwAAPCAQwIBzAgHMCAcAADwgEMCAcwIBzAgHAAA8IBDAgHMDjd+wWgh3PtP4dwn9eBQYRzL904rLclqrsgnL0sCWXN4xLSLghnS1vFMvc5iWgzhLOFewTTJ70OAsqOcHJ6lGC6CCg7wsnhUYPpIqBs+BxnrWeJpukZX/ODYeJYPfvBx/RZhYlj8ezRNL3Se9kR4Sz1igfaK76njRHOEq98gL3ye9sA4cx1hAPrCO8xEzYH5tj6gHILv3+FapvXIcX3yobBJMKZskU0S0OZun/ukIhnEuGMyR3N2mCmHjdnQMQzinCG5Ixmq2CGnidXQMQziHD65Ipmr2CGnjdHQMTTi121rdwrmkd7DS+KidOVY9osPGCdX/acoVowAZxfP3mYOjcIp2ltNAuCWRrL0H1nRZTj1I14Wggnl5nRrAlm7PFmB7TlZ0AHQjjJmmkzI5pZwUw9zshBPzugNfEwdS4IZwej0SxZDzVvO3DwO++WrYFgwraLtOm0GYzG+XW7XiP3n5xuq56X69kkJs46lmj67rN03dOcKAML/8nJw3pnFSaO9Ttojmi8643GOdf650bf/Xpez2aTh6nDxNnCzQHbF0zzrycOxO7fh7RAT4+TJkvP9GHNsw3CsRj5Tr0kmptg/MQEqKrW/VoBdU/f5sbDKZvJscPJfMoxeWrUF00zlqnX07xtVck5NxxPz2vLOnkOvjV97HAsrNvHdTStKZNC6IuoTz1xFEK8bR1P/E+hHc+SScLUWYxwMhk9RetGMxDM9e87j1XHENL9UkCNP1+mz0g8rHfyIZwlLLtQ3Qia0TSDSbdLz9Fc+BeSQiWnGEUroMb0aT0ngWzquOFkXN9Mbgioc4pWR9OaMM7XX11nWilOjVDH4Cu5dMaWgqnXGq01T/O1zJk6ltO1A69zjhvOHvpO0ZrRdIMpiuttW79p08cgyjIG5EKcQFUjnsaa5+aUDdkRTm5Dp3N9C/8UjS/kCn+JR81TtypIIciVpeScQllJKqXKx6/d56h6pgaL/+wIZ66l14X17aJ1p00zmqKQToXkvUKKSKqjqaTCS+dSTlKcI3H6tKZO95RtYOpkPV07KMK5h3SK5tw1mreTwqn+WhRSUYdT1qdon+dLhE5SCFU9sap4G+yKcHIaO03r2xBIp2WnIkbz/qbqpzdVP58UTvWO27mS/3GWd05BkgshTpeiiBOmrCdMZ63T+9qYJtkQzj2kaZPWNN5LbydVP72p/PKuzy8nnT+8XJCK75Xe/o4R+RCkMkbjQlC47MCV48+H7I4Zzk5X9w5e2Sxdp5NzCoVXKApVP5/0+eWk77+c9O3XeLuPr9fJ4z5LqfBy5+ZjVPExO6drvVvTWzjolvQxw7m3SzyusRXtFE5e5w+vb786vf/2pyTp2///q/e/vcJf8Tat+6THYuDsjnAejKu/eYfAz7w8MsK5hyrUVwSEy+c0KoPcuVLxvdLHV69vf/xHkvTxNaj4XsmV8Tat+6THwu6OGU4Iu6xzQgi365zGtWeSv35OU5byP86XjYD3+mvcHDjL/zjLlWW8bYom7ZL1xLPL+iY+0T7P82COGc691deehXRFQOGlz7jlLMWNgPBX/e9liNvR/3xKn+e41VyWMYwQ5m8xsxWdFeHklD6U7Gp8vhK8v1zlrPoyGp3LuAumuOUcd8+uH4C69AHouZTOZX1qV15/3CB9tpO+YnOEcw/1Vc4K8dqzdDLnLp/T9FxyU1UxmrKM16ulacMa5y4IZ66BaRKq0H+9WhWvFWutc+qJELyPPxrggqQyXhEgXa4IcOfbizzjldEhRlPV06YK7WmTXtPExsHgD7NxOjcb4eQ2dbrWvW19lXMI1ysCJHV+rECNHytIu2o9B/nQaRpBZEc4W+pOne5ap5LSVc7xWrLmZTQNoWoHM7K2mZo2yOO44Vi2pOeervXcbuiUTVIMyFfxCoDmZTTSNYDG1vM1joFTtO5r7rzWwfe21EG3oqUjh7OXeupc/1xPneaU8D7unjknqby9jKY5YdJjxP/Q/nPn9tgO4WQyOnX6Ttmk1m+pkRq/xWbo52tGguk9RZs7bbAY4Sw1tPifum0jHkntNc/Q5Lh5vMaB313TpOdoPvdcbB4sduxwMl9607s13RNPfOrO9JHm/0LC9NALosk+bQ68vpGOHo7VyNQZ/Fwn6cQjNX5uZ+an/jebAGuiYdqYEM4Getc7UnvySDcBJYP/d4KubhB7TBpI4v+PYz/lmPhO3XvAdu9Tf/p/+5JC658bffezRGOdNgc/TZOYOOtMbBQMrnmk9v3WTIWBg3+zaCCJiROt+Q5qmTzpfmsO3pH7bxoN00YSE2cXoxsGzYN4bJt75sHOmmYfhJOs2Zqe8dlOOqBHd9xWTILZwTBtsiCcXGZ+MDoroEVPu+BgZl2TDeE0rf1AtG/hP3jT6wG/NKLFp2M5gmHatBBOV46rCZZclqON1yVEswl21bbyCKdFj/AaXhQTp0+ua9gWnLpllTMYpk0vwhmS8wLQvQLKPWGIZhDhjMn9iwvnfmZjfcyciGYU4UzZ6rd+rolo67UL0UwinDm2/pW5j7SIJ5pZ2FWb6wgH1BHeYyaEs8QrH1iv/N42QDhLveIB9orvaWOEY/FKB9orvZcdsTlg1f1Vtc+GYFZh4qz1jAfgM77mB8PEyeFZpg/BZEM4OT1qQASTHeFs4VECIpjNEM6WmgfuXhERyy4IZy/dAzrbldeEcg+Ecy9jB3w3KuJ4OITziAjl4fE5DmBAOIAB4QAGhAMYEA5gQDiAAeEABoQDGBAOYEA4gAHhAAaEAxgQDmBAOIAB4QAGhAMYEA5gQDiAAeEABoQDGBAOYEA4gAHhAAaEAxgQDmBAOIAB4QAGhAMYEA5gQDiAAeEABoQDGBAOYEA4gAHhAAaEAxgQDmBAOIAB4QAGhAMYEA5gQDiAAeEABoQDGBAOYEA4gAHhAAaEAxgQDmBAOIAB4QAGhAMYEA5gQDiAAeEABoQDGBAOYEA4gAHhAAaEAxj8C/1bNwpQqtTLAAAAAElFTkSuQmCC\" id=\"image0e2a064d23\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"33.2875\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11195,7 +12226,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11236,7 +12267,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11274,12 +12305,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11292,7 +12323,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11323,7 +12354,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11338,7 +12369,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11387,7 +12418,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11402,7 +12433,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11495,15 +12526,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image1f6603d4c3\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"210.534559\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11516,7 +12547,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11531,7 +12562,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11548,7 +12579,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11561,7 +12592,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11576,7 +12607,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11591,7 +12622,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11606,7 +12637,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11621,7 +12652,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11705,15 +12736,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image42183a63c3\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"387.781618\" y=\"-21.704007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11726,7 +12757,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11741,7 +12772,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11758,7 +12789,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11771,7 +12802,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11786,7 +12817,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11801,7 +12832,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11816,7 +12847,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11831,7 +12862,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11881,15 +12912,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image753545e292\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"33.2875\" y=\"-203.144007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11902,7 +12933,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11917,7 +12948,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11934,7 +12965,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11947,7 +12978,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11962,7 +12993,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11977,7 +13008,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11992,7 +13023,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12007,7 +13038,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12084,15 +13115,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagef9971d3144\" transform=\"scale(1 -1) translate(0 -148.32)\" x=\"210.534559\" y=\"-203.144007\" width=\"148.32\" height=\"148.32\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12105,7 +13136,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12120,7 +13151,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12137,7 +13168,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12150,7 +13181,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12165,7 +13196,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12180,7 +13211,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12195,7 +13226,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12210,7 +13241,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12281,12 +13312,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12294,28 +13325,26 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", " \n", @@ -12324,179 +13353,136 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12669,7 +13655,7 @@ " \n", " \n", " \n", - " 2025-02-06T12:33:35.881892\n", + " 2025-06-10T13:41:25.512864\n", " image/svg+xml\n", " \n", " \n", @@ -12700,20 +13686,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image9ba4313421\" transform=\"scale(1 -1) translate(0 -195.12)\" x=\"40.603125\" y=\"-21.990852\" width=\"162.72\" height=\"195.12\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12749,7 +13735,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12789,7 +13775,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12819,7 +13805,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12833,7 +13819,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12914,12 +13900,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12932,7 +13918,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12945,7 +13931,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12959,7 +13945,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12973,7 +13959,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12987,7 +13973,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13077,15 +14063,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image03507c2eb7\" transform=\"scale(1 -1) translate(0 -195.12)\" x=\"235.395852\" y=\"-21.990852\" width=\"162.72\" height=\"195.12\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13098,7 +14084,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13111,7 +14097,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13125,7 +14111,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13139,7 +14125,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13161,7 +14147,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13174,7 +14160,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13187,7 +14173,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13201,7 +14187,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13215,7 +14201,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13229,7 +14215,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13320,10 +14306,10 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13353,7 +14339,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 247, "id": "7e458c10", "metadata": {}, "outputs": [ @@ -13363,12 +14349,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-02-06T12:33:35.955605\n", + " 2025-06-10T13:41:25.607953\n", " image/svg+xml\n", " \n", " \n", @@ -13383,19 +14369,19 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", @@ -13403,17 +14389,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -14061,13 +15943,16 @@ ], "source": [ "for i in range(N_R_mis):\n", - " plt.plot(r_bins_mid,kappa_radial[i].mean(axis=-1))\n", + " plt.plot(r_bins_mid,kappa_radial[i].mean(axis=-1),label='misc=%1.2f' %R_mis_arr[i])\n", + "plt.xlabel('r [Mpc]')\n", + "plt.ylabel('Convergence radial profile')\n", + "plt.legend(ncol=3)\n", "plt.show()" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 248, "id": "2864956a", "metadata": {}, "outputs": [ @@ -14077,12 +15962,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-02-06T12:33:36.006858\n", + " 2025-06-10T13:41:25.699260\n", " image/svg+xml\n", " \n", " \n", @@ -14097,19 +15982,19 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", @@ -14117,17 +16002,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -14679,7 +17521,10 @@ ], "source": [ "for i in range(N_R_mis):\n", - " plt.plot(r_bins_mid,gammat_radial[i].mean(axis=-1))\n", + " plt.plot(r_bins_mid,gammat_radial[i].mean(axis=-1),label='misc=%1.2f' %R_mis_arr[i])\n", + "plt.xlabel('r [Mpc]')\n", + "plt.ylabel('Gamma_t radial profile')\n", + "plt.legend(ncol=3)\n", "plt.show()" ] }, @@ -14690,6 +17535,22 @@ "metadata": {}, "outputs": [], "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "032de18c-3014-4bdb-a99f-713a22857d33", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ae1b92d-bc33-4c4d-99b4-8266f38c4709", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/examples/demo_modelling.ipynb b/examples/demo_modelling.ipynb deleted file mode 100644 index d7bdc6e2c..000000000 --- a/examples/demo_modelling.ipynb +++ /dev/null @@ -1,12123 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 36, - "id": "45308159", - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "%config InlineBackend.figure_format = 'svg'\n", - "\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import sys\n", - "from astropy import units as un\n", - "import pyccl as ccl\n", - "import clmm\n", - "from clmm import Cosmology\n", - "from clmm.support import mock_data as mock\n", - "from clmm.galaxycluster import GalaxyCluster\n", - "from clmm.constants import Constants as const\n", - "\n", - "# profile modelling package\n", - "import clmm.model_profile as mod" - ] - }, - { - "cell_type": "markdown", - "id": "7ba07a0d", - "metadata": {}, - "source": [ - "Make sure we know which version we're using" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "bbd94d3a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'1.15.0'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clmm.__version__" - ] - }, - { - "cell_type": "markdown", - "id": "66c330d7", - "metadata": {}, - "source": [ - "The modelling module can be used to create 2D lensing maps. This allows us to forward model systematics, starting at the map level. In this notebook, we use miscentering as an example systematic." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "909edd57", - "metadata": {}, - "outputs": [], - "source": [ - "# specify parameters for NFW halo\n", - "c = 10 #concentration\n", - "z_l = 0.5 #lens redshift\n", - "z_s = 1.0 #source redshift\n", - "Mass = 1e14 * un.M_sun\n", - "\n", - "# define physical size of grid\n", - "r_min = 0 * un.Mpc\n", - "r_max = 50 * un.Mpc\n", - "\n", - "# number of pixels in grid\n", - "npix = 512\n", - "\n", - "# define physcial size of a pixel\n", - "dx = r_max/npix\n", - "\n", - "# define the center of the map (in Mpc)\n", - "center_1 = 0\n", - "center_2 = 0\n", - "\n", - "# define radial and angular bins\n", - "N_r_bins = 30\n", - "N_phi_bins = 25\n", - "r_bins = np.insert(np.logspace(-2, np.log10(r_max.value), N_r_bins), 0, r_min.value) * un.Mpc\n", - "phi_bins = np.linspace(-np.pi, np.pi+0.01, num=N_phi_bins+1)" - ] - }, - { - "cell_type": "markdown", - "id": "de3d76d6", - "metadata": {}, - "source": [ - "Now we can create the convergence maps" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "5b51bbc8", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING: function 'sqrt' is not known to astropy's Quantity. Will run it anyway, hoping it will treat ndarray subclasses correctly. Please raise an issue at https://github.com/astropy/astropy/issues. [astropy.units.quantity]\n" - ] - } - ], - "source": [ - "# set cosmology\n", - "cosmo = ccl.Cosmology(Omega_c=0.25, Omega_b = 0.05, h=0.7, sigma8=0.8, n_s=0.96)\n", - "\n", - "# lensing_map has the option to return either Sigma map or the convergence map\n", - "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=False) \n", - "\n", - "# make map\n", - "kappa_map = lensing_map.kappa_NFW_2D(npix,r_max) " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b0dc4b6c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:04.266890\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "axlim = 2*r_max.value\n", - "plt.imshow(kappa_map.value,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", - "plt.xlabel('x ({0})'.format(r_max.unit))\n", - "plt.ylabel('y ({0})'.format(r_max.unit))\n", - "plt.colorbar().set_label('$\\\\kappa$',rotation=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "e073090a", - "metadata": {}, - "source": [ - "Repeat the procedure for a Sigma map" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2aaf9cb0", - "metadata": {}, - "outputs": [], - "source": [ - "# lensing_map has the option to return either Sigma map or the convergence map.\n", - "lensing_map = mod.profiles(cosmo, Mass, c, z_l, z_s, compute_sigma=True) \n", - "\n", - "# make map\n", - "Sigma_map = lensing_map.kappa_NFW_2D(npix,r_max)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "72993065", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:04.570164\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "axlim = 2*r_max.value\n", - "plt.imshow(Sigma_map.value,extent=[-axlim,axlim,-axlim,axlim],origin='lower')\n", - "plt.xlabel('x ({0})'.format(r_max.unit))\n", - "plt.ylabel('y ({0})'.format(r_max.unit))\n", - "plt.colorbar().set_label('$\\\\Sigma [M_\\odot\\; Mpc^{-2}]$',rotation=90)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "4b28b017", - "metadata": {}, - "source": [ - "We can transform from the convergence to the shear with the Kaiser Squires algorithm, returning the e1 and e2 shear maps." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "eec34ea3", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:202: RuntimeWarning: divide by zero encountered in divide\n", - " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:202: RuntimeWarning: invalid value encountered in multiply\n", - " oper_1 = - 1./(k[:, None]**2 + k[None, :]**2) * (k[:, None]**2 - k[None, :]**2)\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:203: RuntimeWarning: divide by zero encountered in divide\n", - " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:203: RuntimeWarning: invalid value encountered in multiply\n", - " oper_2 = - 2./(k[:, None]**2 + k[None, :]**2) * k[:, None]*k[None, :]\n" - ] - } - ], - "source": [ - "e1_map, e2_map = mod.KaiserSquires(kappa_map)" - ] - }, - { - "cell_type": "markdown", - "id": "25f42de1", - "metadata": {}, - "source": [ - "Plot the e1 and e2 maps" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2ba6da86", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:05.245877\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:05.365230\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(e1_map)\n", - "plt.colorbar()\n", - "plt.show()\n", - "\n", - "plt.imshow(e2_map)\n", - "plt.colorbar()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "12c04b61", - "metadata": {}, - "source": [ - "from the convergence map we can compute the convergence profile, and from the e1 and e2 maps we can compute the tangential shear profile." - ] - }, - { - "cell_type": "markdown", - "id": "f6af6b7e", - "metadata": {}, - "source": [ - "The getTangential function uses the e1 and e2 maps as an input, along with a map center, and returns e_tangential and e_cross maps about a given center. \n", - "\n", - "The function also returns a radius map and an angle map, which is used when computing radial profile with getRadial" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "6b8c1825", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:248: RuntimeWarning: invalid value encountered in divide\n", - " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n" - ] - } - ], - "source": [ - "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e743f1b8", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:05.909916\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:06.007722\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(et_map)\n", - "plt.colorbar()\n", - "plt.show()\n", - "\n", - "plt.imshow(ex_map)\n", - "plt.colorbar()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "cde1c95f", - "metadata": {}, - "source": [ - "With the radius_map and angle_map, we can calculate the radial convergence profile from the kappa map and the radial tangential shear profile from the e_tangential map, using the getRadial function" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e3d066a0", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n" - ] - } - ], - "source": [ - "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", - " r_bins.value,phi_bins,\n", - " kappa_map,et_map)" - ] - }, - { - "cell_type": "markdown", - "id": "f89da817", - "metadata": {}, - "source": [ - "plot the radial convergence and tangential shear profiles. Note that these profiles are not averaged over all angles yet, meaning that these profiles are 2D (radial and angular). This is useful for miscentering which leaves anisotropic signatures on the resulting lensing profiles" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "080ff2f4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:10.231896\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:10.276872\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(kappa_radial)\n", - "plt.show()\n", - "\n", - "plt.imshow(gammat_radial)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "1086e4de", - "metadata": {}, - "source": [ - "We can recover the 1D radial convergence and tangential shear profiles as follows" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "5c6174be", - "metadata": {}, - "outputs": [], - "source": [ - "kappa_1D_radial = kappa_radial.mean(axis=-1)\n", - "gammat_1D_radial = gammat_radial.mean(axis=-1)" - ] - }, - { - "cell_type": "markdown", - "id": "ebb41586", - "metadata": {}, - "source": [ - "Plot the 1D radial profiles" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "29a26710", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:27:10.336359\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", - "plt.plot(r_bins_mid,kappa_1D_radial,label='$\\\\kappa(r)$')\n", - "plt.plot(r_bins_mid,gammat_1D_radial,label='$\\gamma_t(r)$')\n", - "plt.legend()\n", - "plt.xlabel('r [Mpc]')\n", - "plt.ylabel('Lensing amplitude')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "085bd120-6283-4d8f-adeb-bf4e2c781ba2", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "81e0ceb4", - "metadata": {}, - "source": [ - "## Miscentering\n", - "\n", - "We now repeat the above procedure, but this time we use an incorrect center (relative to the true hale center) when performing the calculations, the exemplify the impact of miscentering" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "13660944", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n" - ] - } - ], - "source": [ - "# First we define a miscentring parameter\n", - "R_mis = 1 # Mpc\n", - "\n", - "# find new center based on R_mis\n", - "_phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", - "\n", - "# mis-centered coordinates\n", - "center_1 = R_mis*np.cos(_phi_Rmis)\n", - "center_2 = R_mis*np.sin(_phi_Rmis)\n", - "\n", - "# get tangential and radial profiles\n", - "et_map, ex_map, radius_map, angle_map = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", - "kappa_radial, gammat_radial = mod.getRadial(radius_map,angle_map,\n", - " r_bins.value,phi_bins,\n", - " kappa_map,et_map)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "1cb19534", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", - " kappa_radial,gammat_radial,r_bins):\n", - " '''quickly plot the convergence, e1,e2, ex,et and radial profiles\n", - " '''\n", - " fig, ax = plt.subplots(2,3,figsize=[9,6])\n", - " ax.ravel()\n", - "\n", - " ax[0,0].imshow(kappa_map,origin = 'lower')\n", - " ax[0,0].set_title(r'$\\kappa$')\n", - "\n", - "\n", - " ax[0,1].imshow(e1_map,origin = 'lower')\n", - " ax[0,1].set_title(r'$e_1$')\n", - "\n", - "\n", - " ax[0,2].imshow(e2_map,origin = 'lower')\n", - " ax[0,2].set_title(r'$e_2$')\n", - "\n", - "\n", - " ax[1,0].imshow(et_map,origin = 'lower')\n", - " ax[1,0].set_title(r'$e_t$')\n", - "\n", - "\n", - " ax[1,1].imshow(ex_map,origin = 'lower')\n", - " ax[1,1].set_title(r'$e_x$')\n", - "\n", - "\n", - "\n", - " r_bins_mid = 0.5 * (r_bins[1:] + r_bins[:-1])\n", - "\n", - " ax[1,2].plot(r_bins_mid, kappa_radial.mean(axis=-1), label=r'$\\kappa(r)$')\n", - " ax[1,2].plot(r_bins_mid, gammat_radial.mean(axis=-1), label=r'$\\gamma_t(r)$')\n", - "\n", - " plt.legend()\n", - " plt.show()\n", - "\n", - " fig,ax = plt.subplots(1,2)\n", - "\n", - " ax[0].imshow(kappa_radial,origin='lower')\n", - " ax[1].imshow(gammat_radial,origin='lower')\n", - "\n", - " ax[0].set_ylabel('r')\n", - " ax[0].set_xlabel('$\\phi$')\n", - "\n", - " ax[1].set_ylabel('r')\n", - " ax[1].set_xlabel('$\\phi$')\n", - "\n", - " ax[0].set_title(r'$\\kappa$')\n", - " ax[1].set_title(r'$\\gamma_t$')\n", - "\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "e9720a7d", - "metadata": {}, - "source": [ - "we can plot all of the results at once using the plot_maps_and_profiles function" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "32772d61", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:32:37.435264\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:32:37.605789\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map,ex_map,\n", - " kappa_radial,gammat_radial,r_bins)" - ] - }, - { - "cell_type": "markdown", - "id": "510b4c9c", - "metadata": {}, - "source": [ - "We can also investigate how the 1D radial lensing profiles change as a function of miscentering" - ] - }, - { - "cell_type": "markdown", - "id": "53fa70dd", - "metadata": {}, - "source": [ - "Now define a miscentering distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "38b199f1", - "metadata": {}, - "outputs": [], - "source": [ - "# define miscentring distribution\n", - "R_mis_max = 1 \n", - "N_R_mis = 15\n", - "R_mis_arr = np.insert(np.logspace(-2, np.log10(R_mis_max), N_R_mis-1), 0, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "c17883c2", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:248: RuntimeWarning: invalid value encountered in divide\n", - " angle = -np.sign(from_cent_2)*np.arccos(from_cent_1/np.sqrt(from_cent_1**2+from_cent_2**2))\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:299: RuntimeWarning: invalid value encountered in divide\n", - " kappa_radial = _K/_N\n", - "/Users/alessandrafumagalli/DESC/CLMM/clmm/modelling_ccl.py:300: RuntimeWarning: invalid value encountered in divide\n", - " gammat_radial = _GT/_N\n" - ] - } - ], - "source": [ - "et_map = np.zeros((N_R_mis,kappa_map.shape[0],kappa_map.shape[1]))\n", - "ex_map = np.zeros(et_map.shape)\n", - "radius_map = np.zeros(et_map.shape)\n", - "angle_map = np.zeros(et_map.shape)\n", - "\n", - "kappa_radial = np.zeros((N_R_mis,N_r_bins,N_phi_bins))\n", - "gammat_radial = np.zeros(kappa_radial.shape)\n", - "\n", - "for j in range(len(R_mis_arr)):\n", - "\n", - " _phi_Rmis = 2*np.pi*np.random.random() # isotropic angle for mis-centering\n", - "\n", - " # mis-centered coordinates\n", - " center_1 = R_mis_arr[j]*np.cos(_phi_Rmis)\n", - " center_2 = R_mis_arr[j]*np.sin(_phi_Rmis)\n", - "\n", - " et_map[j], ex_map[j], radius_map[j], angle_map[j] = mod.getTangential(e1_map, e2_map, [center_1, center_2], dx=dx.value)\n", - "\n", - " kappa_radial[j], gammat_radial[j] = mod.getRadial(radius_map[j],angle_map[j],\n", - " r_bins.value,phi_bins,\n", - " kappa_map,et_map[j])" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "22ba0469", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:33:35.708320\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:33:35.881892\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "R_mis_ind = 10\n", - "plot_maps_and_profiles(kappa_map,e1_map,e2_map,et_map[R_mis_ind],ex_map[R_mis_ind],\n", - " kappa_radial[R_mis_ind],gammat_radial[R_mis_ind],r_bins)" - ] - }, - { - "cell_type": "markdown", - "id": "2dbde4d3", - "metadata": {}, - "source": [ - "Finally we can plot the lensing profiles for the whole miscentering distrubtion" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "7e458c10", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:33:35.955605\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for i in range(N_R_mis):\n", - " plt.plot(r_bins_mid,kappa_radial[i].mean(axis=-1))\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "2864956a", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2025-02-06T12:33:36.006858\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.7.2, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for i in range(N_R_mis):\n", - " plt.plot(r_bins_mid,gammat_radial[i].mean(axis=-1))\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ea9ce0dc", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 9725e5497574e2dfb3a7b844403a74a941c9a1b0 Mon Sep 17 00:00:00 2001 From: AlessandraFumagalli Date: Fri, 4 Jul 2025 14:06:05 +0200 Subject: [PATCH 14/14] fix import bugs --- clmm/model_profile.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clmm/model_profile.py b/clmm/model_profile.py index 0e4cfb10e..7ce24a1dc 100644 --- a/clmm/model_profile.py +++ b/clmm/model_profile.py @@ -1,8 +1,9 @@ import numpy as np -from clmm.utils.constants import Constants as const from astropy import units as un -from clmm.dataops import _compute_tangential_shear, _compute_cross_shear import clmm +from clmm.utils.constants import Constants as const +from clmm.dataops import _compute_tangential_shear, _compute_cross_shear + class profiles: '''