diff --git a/bin/fpfs_sim.py b/bin/fpfs_sim.py index 9f126be..3ee1080 100755 --- a/bin/fpfs_sim.py +++ b/bin/fpfs_sim.py @@ -15,10 +15,12 @@ # import os import gc +import glob import fpfs import json import galsim import schwimmbad +import numpy as np from argparse import ArgumentParser from configparser import ConfigParser @@ -27,138 +29,130 @@ class Worker(object): def __init__(self, config_name): cparser = ConfigParser() cparser.read(config_name) - self.simname = cparser.get("simulation", "sim_name") + self.sim_method = cparser.get("simulation", "sim_method") + self.gal_type = cparser.get("simulation", "gal_type").lower() self.imgdir = cparser.get("simulation", "img_dir") - self.infname = cparser.get("simulation", "input_name") + self.nrot = cparser.getint("simulation", "nrot") + self.band_name = cparser.get("simulation", "band") self.scale = cparser.getfloat("survey", "pixel_scale") self.image_nx = cparser.getint("survey", "image_nx") self.image_ny = cparser.getint("survey", "image_ny") assert self.image_ny == self.image_nx, "'image_nx' must equals 'image_ny'!" - if "basic" in self.simname or "small" in self.simname: - assert self.image_nx % 256 == 0, "'image_nx' must be divisible by 256 ." - self.psfInt = None - self.outdir = os.path.join(self.imgdir, self.simname) + self.psf_obj = None + self.outdir = os.path.join(self.imgdir, self.sim_method) if not os.path.exists(self.outdir): os.makedirs(self.outdir, exist_ok=True) - if "galaxy" in self.simname: - assert ( - "basic" in self.simname - or "small" in self.simname - or "cosmo" in self.simname - ) - if cparser.has_option("survey", "psf_fwhm"): - seeing = cparser.getfloat("survey", "psf_fwhm") - self.prepare_psf(seeing, psf_type="moffat") - print("Using modelled Moffat PSF with seeing %.2f arcsec. " % seeing) - else: - if not cparser.has_option("survey", "psf_filename"): - raise ValueError("Do not have survey-psf_file option") - else: - self.psffname = cparser.get("survey", "psf_filename") - print("Using PSF from input file. ") - glist = [] - if cparser.getboolean("distortion", "test_g1"): - glist.append("g1") - if cparser.getboolean("distortion", "test_g2"): - glist.append("g2") - if len(glist) > 0: - zlist = json.loads(cparser.get("distortion", "shear_z_list")) - self.pendList = ["%s-%s" % (i1, i2) for i1 in glist for i2 in zlist] + assert ( + self.sim_method in ["fft", "mc"] + ) + assert ( + self.gal_type in ["mixed", "sersic", "bulgedisk"] + ) + if cparser.has_option("survey", "psf_fwhm"): + seeing = cparser.getfloat("survey", "psf_fwhm") + self.prepare_psf(seeing, psf_type="moffat") + print("Using modelled Moffat PSF with seeing %.2f arcsec. " % seeing) + else: + if not cparser.has_option("survey", "psf_filename"): + raise ValueError("Do not have survey-psf_file option") else: - # this is for non-distorted image simulation - self.pendList = ["g1-1111"] - print( - "We will test the following constant shear distortion setups %s. " - % self.pendList - ) - self.add_halo = cparser.getboolean("distortion", "add_halo") - self.shear_value = cparser.getfloat("distortion", "shear_value") - if self.add_halo: - assert self.pendList == [ - "g1-1111" - ], "Do not support adding both \ - shear from halo and constant shear." - elif "noise" in self.simname: - self.pendList = [0] + self.psffname = cparser.get("survey", "psf_filename") + print("Using PSF from input file. ") + glist = [] + if cparser.getboolean("distortion", "test_g1"): + glist.append("g1") + if cparser.getboolean("distortion", "test_g2"): + glist.append("g2") + if len(glist) > 0: + zlist = json.loads(cparser.get("distortion", "shear_z_list")) + self.pendList = ["%s-%s" % (i1, i2) for i1 in glist for i2 in zlist] else: - raise ValueError( - "Cannot setup the task for sim_name=%s!!\\ \ - Must contain 'galaxy' or 'noise'" - % self.simname - ) + # this is for non-distorted image simulation + self.pendList = ["g1-2"] + print( + "We will test the following constant shear distortion setups %s. " + % self.pendList + ) + self.shear_value = cparser.getfloat("distortion", "shear_value") + self.rot_list = [np.pi / self.nrot * i for i in range(self.nrot)] return def prepare_psf(self, seeing, psf_type): psffname = os.path.join(self.outdir, "psf-%d.fits" % (seeing * 100)) if psf_type.lower() == "moffat": - self.psfInt = galsim.Moffat( + self.psf_obj = galsim.Moffat( beta=3.5, fwhm=seeing, trunc=seeing * 4.0 ).shear(e1=0.02, e2=-0.02) else: raise ValueError("Only support moffat PSF.") - psf_image = self.psfInt.drawImage(nx=45, ny=45, scale=self.scale) + psf_image = self.psf_obj.shift( + 0.5 * self.scale, 0.5 * self.scale + ).drawImage(nx=64, ny=64, scale=self.scale) psf_image.write(psffname) return - def run(self, Id): - if "noise" in self.simname: - # do pure noise image simulation - fpfs.simutil.make_noise_sim(self.outdir, self.infname, Id, scale=self.scale) - else: - if self.psfInt is None: - if "%" in self.psffname: - psffname = self.psffname % Id - else: - psffname = self.psffname - assert os.path.isfile(psffname), "Cannot find input PSF file" - psf_image = galsim.fits.read(psffname) - self.psfInt = galsim.InterpolatedImage( - psf_image, scale=self.scale, flux=1.0 + def run(self, ifield): + print("start ID: %d" % (ifield)) + if self.psf_obj is None: + if "%" in self.psffname: + psffname = self.psffname % ifield + else: + psffname = self.psffname + assert os.path.isfile(psffname), "Cannot find input PSF file" + psf_image = galsim.fits.read(psffname) + self.psf_obj = galsim.InterpolatedImage( + psf_image, scale=self.scale, flux=1.0 + ) + del psf_image + for pp in self.pendList: + # do basic stamp-like image simulation + nfiles = len(glob.glob("%s/image-%05d_%s_rot*_%s.fits" % ( + self.outdir, + ifield, + pp, + self.band_name, + ))) + if nfiles == self.nrot: + print("We already have all the output files for %s" % pp) + continue + sim_img = fpfs.simutil.make_isolate_sim( + sim_method="fft", + psf_obj=self.psf_obj, + gname=pp, + seed=ifield, + ny=self.image_ny, + nx=self.image_nx, + scale=self.scale, + do_shift=False, + shear_value=self.shear_value, + nrot=1, + rot2=self.rot_list, + gal_type=self.gal_type, + ) + for irot in range(self.nrot): + gal_fname = "%s/image-%05d_%s_rot%d_%s.fits" % ( + self.outdir, + ifield, + pp, + irot, + self.band_name, ) - del psf_image - for pp in self.pendList: - if "basic" in self.simname or "small" in self.simname: - # do basic stamp-like image simulation - fpfs.simutil.make_basic_sim( - self.outdir, - self.psfInt, - pp, - Id, - catname=self.infname, - ny=self.image_ny, - nx=self.image_nx, - scale=self.scale, - shear_value=self.shear_value, - ) - elif "cosmo" in self.simname: - # do blended cosmo-like image simulation - fpfs.simutil.make_cosmo_sim( - self.outdir, - self.psfInt, - pp, - Id, - catname=self.infname, - ny=self.image_ny, - nx=self.image_nx, - scale=self.scale, - shear_value=self.shear_value, - ) - gc.collect() - print("finish ID: %d" % (Id)) + fpfs.io.save_image(gal_fname, sim_img[irot]) + gc.collect() + print("finish ID: %d" % (ifield)) return - def __call__(self, Id): - print("start ID: %d" % (Id)) - return self.run(Id) + def __call__(self, ifield): + return self.run(ifield) if __name__ == "__main__": parser = ArgumentParser(description="fpfs simulation") parser.add_argument( - "--minId", required=True, type=int, help="minimum id number, e.g. 0" + "--min_id", required=True, type=int, help="minimum id number, e.g. 0" ) parser.add_argument( - "--maxId", required=True, type=int, help="maximum id number, e.g. 4000" + "--max_id", required=True, type=int, help="maximum id number, e.g. 4000" ) parser.add_argument("--config", required=True, type=str, help="configure file name") group = parser.add_mutually_exclusive_group() @@ -177,7 +171,7 @@ def __call__(self, Id): pool = schwimmbad.choose_pool(mpi=args.mpi, processes=args.n_cores) worker = Worker(args.config) - refs = list(range(args.minId, args.maxId)) + refs = list(range(args.min_id, args.max_id)) # worker(1) for r in pool.map(worker, refs): pass diff --git a/bin/tests/cat_n0/det-00000_g1-0_rot0_i.fits b/bin/tests/cat_n0/det-00000_g1-0_rot0_i.fits new file mode 100644 index 0000000..2ab8bb3 Binary files /dev/null and b/bin/tests/cat_n0/det-00000_g1-0_rot0_i.fits differ diff --git a/bin/tests/cat_n0/det-00000_g1-0_rot1_i.fits b/bin/tests/cat_n0/det-00000_g1-0_rot1_i.fits new file mode 100644 index 0000000..2ab8bb3 Binary files /dev/null and b/bin/tests/cat_n0/det-00000_g1-0_rot1_i.fits differ diff --git a/bin/tests/cat_n0/det-00000_g1-1_rot0_i.fits b/bin/tests/cat_n0/det-00000_g1-1_rot0_i.fits new file mode 100644 index 0000000..2ab8bb3 Binary files /dev/null and b/bin/tests/cat_n0/det-00000_g1-1_rot0_i.fits differ diff --git a/bin/tests/cat_n0/det-00000_g1-1_rot1_i.fits b/bin/tests/cat_n0/det-00000_g1-1_rot1_i.fits new file mode 100644 index 0000000..2ab8bb3 Binary files /dev/null and b/bin/tests/cat_n0/det-00000_g1-1_rot1_i.fits differ diff --git a/bin/tests/cat_n0/src-00000_g1-0_rot0_i.fits b/bin/tests/cat_n0/src-00000_g1-0_rot0_i.fits new file mode 100644 index 0000000..c40d138 Binary files /dev/null and b/bin/tests/cat_n0/src-00000_g1-0_rot0_i.fits differ diff --git a/bin/tests/cat_n0/src-00000_g1-0_rot1_i.fits b/bin/tests/cat_n0/src-00000_g1-0_rot1_i.fits new file mode 100644 index 0000000..1cfe88d Binary files /dev/null and b/bin/tests/cat_n0/src-00000_g1-0_rot1_i.fits differ diff --git a/bin/tests/cat_n0/src-00000_g1-1_rot0_i.fits b/bin/tests/cat_n0/src-00000_g1-1_rot0_i.fits new file mode 100644 index 0000000..bd873d2 Binary files /dev/null and b/bin/tests/cat_n0/src-00000_g1-1_rot0_i.fits differ diff --git a/bin/tests/cat_n0/src-00000_g1-1_rot1_i.fits b/bin/tests/cat_n0/src-00000_g1-1_rot1_i.fits new file mode 100644 index 0000000..6ccf649 Binary files /dev/null and b/bin/tests/cat_n0/src-00000_g1-1_rot1_i.fits differ diff --git a/bin/tests/cat_n1/cov_matrix.fits b/bin/tests/cat_n1/cov_matrix.fits new file mode 100644 index 0000000..f2b45e4 Binary files /dev/null and b/bin/tests/cat_n1/cov_matrix.fits differ diff --git a/bin/tests/cat_n1/det-00000_g1-0_rot0_i.fits b/bin/tests/cat_n1/det-00000_g1-0_rot0_i.fits new file mode 100644 index 0000000..c01c7c4 Binary files /dev/null and b/bin/tests/cat_n1/det-00000_g1-0_rot0_i.fits differ diff --git a/bin/tests/cat_n1/det-00000_g1-0_rot1_i.fits b/bin/tests/cat_n1/det-00000_g1-0_rot1_i.fits new file mode 100644 index 0000000..2ab8bb3 Binary files /dev/null and b/bin/tests/cat_n1/det-00000_g1-0_rot1_i.fits differ diff --git a/bin/tests/cat_n1/det-00000_g1-1_rot0_i.fits b/bin/tests/cat_n1/det-00000_g1-1_rot0_i.fits new file mode 100644 index 0000000..66013a3 Binary files /dev/null and b/bin/tests/cat_n1/det-00000_g1-1_rot0_i.fits differ diff --git a/bin/tests/cat_n1/det-00000_g1-1_rot1_i.fits b/bin/tests/cat_n1/det-00000_g1-1_rot1_i.fits new file mode 100644 index 0000000..2ab8bb3 Binary files /dev/null and b/bin/tests/cat_n1/det-00000_g1-1_rot1_i.fits differ diff --git a/bin/tests/cat_n1/src-00000_g1-0_rot0_i.fits b/bin/tests/cat_n1/src-00000_g1-0_rot0_i.fits new file mode 100644 index 0000000..5bd56c6 Binary files /dev/null and b/bin/tests/cat_n1/src-00000_g1-0_rot0_i.fits differ diff --git a/bin/tests/cat_n1/src-00000_g1-0_rot1_i.fits b/bin/tests/cat_n1/src-00000_g1-0_rot1_i.fits new file mode 100644 index 0000000..487f135 Binary files /dev/null and b/bin/tests/cat_n1/src-00000_g1-0_rot1_i.fits differ diff --git a/bin/tests/cat_n1/src-00000_g1-1_rot0_i.fits b/bin/tests/cat_n1/src-00000_g1-1_rot0_i.fits new file mode 100644 index 0000000..bade778 Binary files /dev/null and b/bin/tests/cat_n1/src-00000_g1-1_rot0_i.fits differ diff --git a/bin/tests/cat_n1/src-00000_g1-1_rot1_i.fits b/bin/tests/cat_n1/src-00000_g1-1_rot1_i.fits new file mode 100644 index 0000000..e10cb7e Binary files /dev/null and b/bin/tests/cat_n1/src-00000_g1-1_rot1_i.fits differ diff --git a/bin/configure_files/desc_sim_noise1.ini b/bin/tests/config_n0.ini similarity index 52% rename from bin/configure_files/desc_sim_noise1.ini rename to bin/tests/config_n0.ini index a933196..4dd182d 100644 --- a/bin/configure_files/desc_sim_noise1.ini +++ b/bin/tests/config_n0.ini @@ -1,8 +1,9 @@ [procsim] -img_dir = /lustre/work/xiangchong.li/work/FPFS2/sim_desc/basic -psf_fname = /lustre/work/xiangchong.li/work/FPFS2/sim_desc/PSF_basic_32.fits -cat_dir = cat_n1_p1 -sum_dir = sum_n1_p1 +img_dir = ./fft +psf_fname = ./fft/psf-60.fits +cat_dir = cat_n0 +sum_dir = sum_n0 + [FPFS] @@ -15,6 +16,8 @@ alpha = 0.35 beta = 0.92 sigma_as = 0.52 sigma_det = 0.53 +ncov_fname = cat_n1/cov_matrix.fits +noise_rev = False [distortion] @@ -24,7 +27,8 @@ shear_value = 0.02 [survey] -band = a -mag_zero = 30. -noise_ratio = 1 -pixel_scale = 0.2 +band = i +mag_zero = 27. +noise_std = 0. +pixel_scale = 0.168 + diff --git a/bin/tests/config_n1.ini b/bin/tests/config_n1.ini new file mode 100644 index 0000000..2ef2cdd --- /dev/null +++ b/bin/tests/config_n1.ini @@ -0,0 +1,33 @@ +[procsim] +img_dir = ./fft +psf_fname = ./fft/psf-60.fits +cat_dir = cat_n1 +sum_dir = sum_n1 + + + +[FPFS] +nnord = 4 +rcut = 32 +ratio = 1.596 +c0 = 2.46 +c2 = 22.74 +alpha = 0.35 +beta = 0.92 +sigma_as = 0.52 +sigma_det = 0.53 +noise_rev = True + + +[distortion] +test_g1 = True +test_g2 = False +shear_value = 0.02 + + +[survey] +band = i +mag_zero = 27. +noise_std = 3e-3 +pixel_scale = 0.168 + diff --git a/bin/tests/config_sim_gal.ini b/bin/tests/config_sim_gal.ini new file mode 100644 index 0000000..07a1159 --- /dev/null +++ b/bin/tests/config_sim_gal.ini @@ -0,0 +1,27 @@ +[simulation] +; type of simulation +; stamp-based simulation +sim_method = fft +gal_type = Mixed +img_dir = ./ +nrot = 2 +band = i + + +[distortion] +add_halo = False +test_g1 = True +test_g2 = False +; 0000 for negative distortion; 1111 for no distortion; and 2222 for positive +; distortion +shear_z_list= ["0", "1"] +shear_value = 0.02 + + +[survey] +; survey info for HSC coadds +pixel_scale = 0.168 +psf_fwhm = 0.60 +mag_zero = 27 +image_nx = 1024 +image_ny = 1024 diff --git a/bin/tests/fft/image-00000_g1-0_rot0_i.fits b/bin/tests/fft/image-00000_g1-0_rot0_i.fits new file mode 100644 index 0000000..dfca228 Binary files /dev/null and b/bin/tests/fft/image-00000_g1-0_rot0_i.fits differ diff --git a/bin/tests/fft/image-00000_g1-0_rot1_i.fits b/bin/tests/fft/image-00000_g1-0_rot1_i.fits new file mode 100644 index 0000000..b671ea4 Binary files /dev/null and b/bin/tests/fft/image-00000_g1-0_rot1_i.fits differ diff --git a/bin/tests/fft/image-00000_g1-1_rot0_i.fits b/bin/tests/fft/image-00000_g1-1_rot0_i.fits new file mode 100644 index 0000000..55ffe29 Binary files /dev/null and b/bin/tests/fft/image-00000_g1-1_rot0_i.fits differ diff --git a/bin/tests/fft/image-00000_g1-1_rot1_i.fits b/bin/tests/fft/image-00000_g1-1_rot1_i.fits new file mode 100644 index 0000000..9d4b9f5 Binary files /dev/null and b/bin/tests/fft/image-00000_g1-1_rot1_i.fits differ diff --git a/bin/tests/fft/psf-60.fits b/bin/tests/fft/psf-60.fits new file mode 100644 index 0000000..a95308a Binary files /dev/null and b/bin/tests/fft/psf-60.fits differ diff --git a/bin/tests/sum_n0/bin_25.0.fits b/bin/tests/sum_n0/bin_25.0.fits new file mode 100644 index 0000000..c9e480d Binary files /dev/null and b/bin/tests/sum_n0/bin_25.0.fits differ diff --git a/bin/tests/sum_n1/bin_25.0.fits b/bin/tests/sum_n1/bin_25.0.fits new file mode 100644 index 0000000..3e5c672 Binary files /dev/null and b/bin/tests/sum_n1/bin_25.0.fits differ diff --git a/docs/examples/notebooks/1_simulate_noise_image.ipynb b/docs/examples/1_simulate_noise_image.ipynb similarity index 97% rename from docs/examples/notebooks/1_simulate_noise_image.ipynb rename to docs/examples/1_simulate_noise_image.ipynb index cfa0c91..713448b 100644 --- a/docs/examples/notebooks/1_simulate_noise_image.ipynb +++ b/docs/examples/1_simulate_noise_image.ipynb @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "51c95e6d-238c-4dd8-ba70-8123fbf44e9b", "metadata": {}, "outputs": [ @@ -40,7 +40,7 @@ " 0.0438892 , -0.1618046 ]], dtype=float32), wcs=galsim.OffsetWCS(0.168, galsim.PositionI(x=-1, y=-1), galsim.PositionD(x=0.0, y=0.0)))" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -84,7 +84,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/docs/examples/2_simulate_galaxy_basic.ipynb b/docs/examples/2_simulate_galaxy_basic.ipynb new file mode 100644 index 0000000..06e9440 --- /dev/null +++ b/docs/examples/2_simulate_galaxy_basic.ipynb @@ -0,0 +1,272 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "b1d79f65-5e9f-4af9-8bde-0447b8152c9b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%reload_ext autoreload\n", + "%autoreload 2\n", + "import os\n", + "import json\n", + "import fpfs\n", + "import galsim\n", + "import matplotlib.pylab as plt\n", + "import astropy.io.fits as pyfits\n", + "from configparser import ConfigParser\n", + "from astropy.visualization import simple_norm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6889d99a-0f64-46e9-9811-633bb77edb4f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def prepare_psf(pscale, seeing, psf_type, outdir):\n", + " psffname = os.path.join(outdir, \"psf-%d.fits\" % (seeing * 100))\n", + " if psf_type.lower() == \"moffat\":\n", + " psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=seeing, trunc=seeing * 4.0\n", + " ).shear(e1=0.02, e2=-0.02)\n", + " else:\n", + " raise ValueError(\"Only support moffat PSF.\")\n", + " psfImg = psfInt.drawImage(nx=45, ny=45, scale=pscale)\n", + " psfImg.write(psffname)\n", + " return psfInt" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "51c95e6d-238c-4dd8-ba70-8123fbf44e9b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "Id = 1\n", + "config_name = 'config_sim_gal.ini'\n", + "cparser = ConfigParser()\n", + "cparser.read(config_name)\n", + "simname = cparser.get(\"simulation\", \"sim_name\")\n", + "imgdir = cparser.get(\"simulation\", \"img_dir\")\n", + "infname = cparser.get(\"simulation\", \"input_name\")\n", + "scale = cparser.getfloat(\"survey\", \"pixel_scale\")\n", + "image_nx = cparser.getint(\"survey\", \"image_nx\")\n", + "image_ny = cparser.getint(\"survey\", \"image_ny\")\n", + "assert image_ny == image_nx, \"'image_nx' must equals 'image_ny'!\"\n", + "if \"basic\" in simname or \"small\" in simname:\n", + " assert image_nx % 256 == 0, \"'image_nx' must be divisible by 256 .\"\n", + "outdir = os.path.join(imgdir, simname)\n", + "if not os.path.exists(outdir):\n", + " os.makedirs(outdir, exist_ok=True)\n", + "\n", + "seeing = cparser.getfloat(\"survey\", \"psf_fwhm\")\n", + "psfInt = prepare_psf(scale, seeing, psf_type=\"moffat\", outdir=outdir)\n", + "\n", + "glist = []\n", + "if cparser.getboolean(\"distortion\", \"test_g1\"):\n", + " glist.append(\"g1\")\n", + "if cparser.getboolean(\"distortion\", \"test_g2\"):\n", + " glist.append(\"g2\")\n", + "if len(glist) > 0:\n", + " zlist = json.loads(cparser.get(\"distortion\", \"shear_z_list\"))\n", + " pendList = [\"%s-%s\" % (i1, i2) for i1 in glist for i2 in zlist]\n", + "else:\n", + " # this is for non-distorted image simulation\n", + " pendList = [\"g1-1111\"]\n", + "shear_value = cparser.getfloat(\"distortion\", \"shear_value\")\n", + "\n", + "\n", + "\n", + "p2List = [\"0000\", \"2222\"]\n", + "p1List = [\"g1\"]\n", + "pendList = [\"%s-%s\" % (i1, i2) for i1 in p1List for i2 in p2List]\n", + "pp = pendList[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "da680449-6634-479c-8bab-0734364d4df5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 01:58:31 --- Creating Mixed galaxy profiles\n", + "2023/09/20 01:58:31 --- Processing for g1-0000, and shear is -0.03.\n", + "2023/09/20 01:58:31 --- Making Basic Simulation. ID: 1\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_img = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=pp,\n", + " seed=Id,\n", + " ny=image_ny//2,\n", + " nx=image_nx,\n", + " scale=scale,\n", + " do_shift=False,\n", + " shear_value=shear_value,\n", + " nrot=2,\n", + ")[0]\n", + "plt.imshow(sim_img,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(sim_img,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ac36e1fe-e467-430f-b853-80df3e0dfff8", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 01:58:54 --- Creating Mixed galaxy profiles\n", + "2023/09/20 01:58:54 --- Processing for g1-0000, and shear is -0.03.\n", + "2023/09/20 01:58:54 --- Making galaxies with Random Knots.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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vPPOO3ted5jnLjY6HJcvX+bGjRtcv36dUqnEhQsX9rSF2OHRUKlUuHz5Mtvb293XpVKJP/3TPx3qDRY7PB7effddzp8/P3RCKzZ4uLz++utMTU3x5ptvdldJPvjgAy5dujS0HRzp8w9GiCtXrgSvvfbarvcuXLhwoGuvXr069Fphf956663gtddeC955551gcXExeOONN/a89jDPXWx0ON56663gxo0b3dflcjm4cOFCUCgUgnK53Het2OHRUC6Xg7feemvo8waCq1ev7npf7PDoKZfLARBcuXJl12dig4fPhQsXAsId0d2fQqGwq/4HwdE//5ESMUEQFuitt94KLl26FLzzzjvBO++8s+uacrk8tGMPgiA4f/58cOnSpcdwp+PJ+fPn9xQxh3nuYqPDceXKleDDDz/c9X7Uefc2crHDo+PSpUtBoVDoE5MRhUIhOH/+fPe12OHx8c477wwVMWKDR8Nbb70VXL16tTsGDxOPQTAaz39kYmIiIvf5G2+8wVtvvTXUzfRFT7wWHozDPHex0eF4//33hy5VFAoF3njjDa5du9Z1vYodHh3RUvZ+h81GiB0eD9euXdszJlJs8Oi4cOFCdwweDOWIGIXnP3Ii5iB80ROvhQfjMM9dbHQ4Ll++zMWLF4d+9vLLLwPhIakgdniUXLhwgXK5PFRQVioVXnnlle5rscPj4fr163vuTBUbHC2j8PxjKWLkxOuj4TDPXWx0OHoHx0EGM1aLHR4/7777LgBvv/129z2xw6Pn8uXL+wZ9ig2OllF4/rEUMXLi9dFwmOcuNjocV69e5erVq0M/u3HjBrCTJ0ns8HipVCpcunSJK1eu9HXCYodHy9LS0p4z9wixwaNjaWmJy5cvd3/efvvtXZ6SUXj+I5Ox92EhJ14fDYd57mKjw3H58mXeeOONA10rdng4RNusb9y4QalU4urVq3vOIochdvjivPfee19o663Y4MFZWlri+vXrff3O9evXefnll/nwww/vK0bg8T3/sRMxgjBOvP322ywuLu6bt0d4+BQKhe4Aeu3aNd58803efPPNPQMchYfLe++9J8/6CLly5cqu986fP8/58+f5kz/5k6GfHxWxXE7aj/1OvBYeHYd57mKjg3H9+nUuX77M1atXDzTzAbHDo+DChQtcuXKF119/ncuXLx/od8QOD06UXPAwnq+9vgfEBg+Tixcv8t577x3o2sf1/MdOxAjCuPD666/zV3/1V1+4Mxe+OIVCgddee40333xTdrA8Yg6zfCo8XiKRcf369SO+kx1iKWIe9MRr4YtxmOcuNvpiXLx4kUuXLg3dWip2OBq+8Y1vAOHyEogdHgX7bacehtjg4fPmm2/27cLrZTB2ZRSefyxjYuTE66PhMM9dbPTgRJ3IXgm+xA6PjmKx2F0+GiTqwHufm9jh4bK0tMQPfvCDXYnPomf3Z3/2Z/zgBz9gamqqK/LFBg+XH/7wh3v2PdFzilJCjMLzj6UnRk68PhoO89zFRg/Gu+++y+uvv77r+SwtLXU9AGKHR0OlUtl3qSja6h7NFsUOD5/XXnuNK1euDP0B+NM//VOuXLnSFTlig4fPG2+8sWfgbrRLLxL0I/H8H+iwgiMmOoNh2Pkmi4uLe57zINyfg5yddJDnLjY6PFeuXBl6wFr0WfQsxQ6Pjv0OPz1//nxQKBS6r8UOj4+9DoAUGzx87neO24M+00f1/GMpYoLgcCdeCwdncXFx13Pt5YueNC42Gs6HH34YXLhwIbh06VLfT3QAW+/Bg0EgdnhU3LhxI3jjjTd2HVJ36dKlANjVuYsdHg8ffvhhAAw9JFBs8PB54403dtX1vSa4R/38lSAIggfz4Rw9165d4+rVq5w7d67rBv4iyZGeVN59913ef//9boIjCLeVFgoFvve97+3K13CY5y42OhjFYnHfpYzFxcXuckaE2OHREQU2Rtt9p6ameOedd4ZudRc7PDquX7/On/3Zn3X7pkKhwIULF7h48WLfDiaxwcPn3XffZXt7u9sGho0FEUf5/GMtYgRBEARBeHKJZWCvIAiCIAiCiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGKJiBhBEARBEGLJ/x9Hc3ug9PMSDAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_img2 = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=pp,\n", + " seed=Id,\n", + " ny=image_ny//2,\n", + " nx=image_nx,\n", + " scale=scale,\n", + " do_shift=False,\n", + " shear_value=shear_value,\n", + " nrot=2,\n", + " sim_method=\"mc\",\n", + ")[0]\n", + "plt.imshow(sim_img2,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(sim_img,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "07f4f498-8534-4c47-ba20-bc735a224276", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(sim_img*0.70+sim_img2*0.3,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(sim_img,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a2c77227-fcc1-4cd8-9f6c-1f299a3ba111", + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/3_measure_shear.ipynb b/docs/examples/3_measure_shear.ipynb new file mode 100644 index 0000000..670a3ee --- /dev/null +++ b/docs/examples/3_measure_shear.ipynb @@ -0,0 +1,401 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8a2f15a9-ecd6-4425-9d1a-7d9c798df4e1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/work/xiangchong.li/miniconda3/envs/image/lib/python3.11/site-packages/flax/struct.py:132: FutureWarning: jax.tree_util.register_keypaths is deprecated, and will be removed in a future release. Please use `register_pytree_with_keys()` instead.\n", + " jax.tree_util.register_keypaths(data_clz, keypaths)\n", + "/work/xiangchong.li/miniconda3/envs/image/lib/python3.11/site-packages/flax/struct.py:132: FutureWarning: jax.tree_util.register_keypaths is deprecated, and will be removed in a future release. Please use `register_pytree_with_keys()` instead.\n", + " jax.tree_util.register_keypaths(data_clz, keypaths)\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "%reload_ext autoreload\n", + "%autoreload 2\n", + "import galsim\n", + "import fpfs\n", + "import impt\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from astropy.visualization import simple_norm\n", + "from mpl_toolkits.axes_grid1 import ImageGrid" + ] + }, + { + "cell_type": "markdown", + "id": "48b40422-4b8c-4508-9d71-e5ecb020fc1a", + "metadata": {}, + "source": [ + "# HSC like simulation using parametric galaxies from COSMOS" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "50b377a0-a670-48a5-b722-862aaa286f30", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:03:58 --- Creating Mixed galaxy profiles\n", + "2023/09/20 02:03:58 --- Processing for g1-1, and shear is 0.02.\n", + "2023/09/20 02:03:58 --- Making Basic Simulation. ID: 212\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:04:00 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:04:00 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:04:00 --- Unable to initialize backend 'tpu': module 'jaxlib.xla_extension' has no attribute 'get_tpu_client'\n", + "2023/09/20 02:04:00 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", + "2023/09/20 02:04:00 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:04:00 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", + "2023/09/20 02:04:00 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input shear is: 0.020000\n", + "Estimated shear is: 0.019995\n" + ] + } + ], + "source": [ + "shear_value = 0.02\n", + "scale = 0.168\n", + "nx, ny = 64, 64\n", + "outDir='galaxy_basicCenter_psf60'\n", + "psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", + ").shear(e1=0.02, e2=-0.02)\n", + "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=nx, ny=ny, scale=scale).array\n", + "\n", + "# Four Galaxies to cancel spin-2 and spin-4 ansiotropies\n", + "# spin-2 is shape noise in diagnonal elements of shear response matrix\n", + "# spin-4 is shape noise in diagnonal and of-diagnoal elements of shear response matrix, \n", + "# but an order of magnitude smaller than spin-2\n", + "seed = 212\n", + "gname = \"g1-1\"\n", + "gal_data = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=gname,\n", + " seed=seed,\n", + " ny=ny,\n", + " nx=nx*4,\n", + " scale=scale,\n", + " do_shift=False,\n", + " nrot=4,\n", + ")[0]\n", + "\n", + "plt.close()\n", + "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))\n", + "plt.show()\n", + "# Now we measure shear\n", + "rcut = 32\n", + "\n", + "# Force detection at the stamp center point (ngrid//2, ngrid//2)\n", + "indX = np.arange(int(nx/2), nx*4, nx)\n", + "indY = np.arange(int(ny/2), ny, ny)\n", + "inds = np.meshgrid(indY, indX, indexing=\"ij\")\n", + "coords = np.vstack([np.ravel(_) for _ in inds]).T\n", + "\n", + "fpTask = fpfs.image.measure_source(psfData,pix_scale = scale, sigma_arcsec=0.7)\n", + "mms = fpTask.measure(gal_data, coords)\n", + "mms = fpTask.get_results(mms)\n", + "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", + "resp=np.average(ells['fpfs_R1E'])\n", + "shear=np.average(ells['fpfs_e1'])/resp\n", + "\n", + "print('Input shear is: %.6f' %shear_value)\n", + "print('Estimated shear is: %.6f' %shear)" + ] + }, + { + "cell_type": "markdown", + "id": "07015e80-c7f7-40a7-ae27-a25c27b738d9", + "metadata": {}, + "source": [ + "# HSC like simulation using parametric + Knots galaxies" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "682d0d0a-8f2f-4bea-b3bc-32d92d05c5b3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:05:03 --- Creating Mixed galaxy profiles\n", + "2023/09/20 02:05:03 --- Processing for g1-1, and shear is 0.02.\n", + "2023/09/20 02:05:03 --- Making Basic Simulation. ID: 212\n", + "2023/09/20 02:05:03 --- Creating Mixed galaxy profiles\n", + "2023/09/20 02:05:03 --- Processing for g1-1, and shear is 0.02.\n", + "2023/09/20 02:05:03 --- Making galaxies with Random Knots.\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:05:04 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:05:04 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", + "2023/09/20 02:05:04 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input shear is: 0.020000\n", + "Estimated shear is: 0.019995\n" + ] + } + ], + "source": [ + "shear_value = 0.02\n", + "scale = 0.168\n", + "nx, ny = 64, 64\n", + "outDir='galaxy_basicCenter_psf60'\n", + "psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", + ").shear(e1=0.02, e2=-0.02)\n", + "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=nx, ny=ny, scale=scale).array\n", + "\n", + "# Four Galaxies to cancel spin-2 and spin-4 ansiotropies\n", + "# spin-2 is shape noise in diagnonal elements of shear response matrix\n", + "# spin-4 is shape noise in diagnonal and of-diagnoal elements of shear response matrix, \n", + "# but an order of magnitude smaller than spin-2\n", + "gname = \"g1-1\"\n", + "seed = 212\n", + "gal_data = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=gname,\n", + " seed=seed,\n", + " ny=ny,\n", + " nx=nx*4,\n", + " scale=scale,\n", + " do_shift=False,\n", + " nrot=4,\n", + ")[0]\n", + "\n", + "gal_data2 = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=gname,\n", + " seed=seed,\n", + " ny=ny,\n", + " nx=nx*4,\n", + " scale=scale,\n", + " do_shift=False,\n", + " nrot=4,\n", + " sim_method=\"mc\",\n", + ")[0]\n", + "\n", + "gal_data = gal_data * 0.7 + gal_data2 * 0.2\n", + "\n", + "plt.close()\n", + "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))\n", + "plt.show()\n", + "# Now we measure shear\n", + "rcut = 32\n", + "\n", + "# Force detection\n", + "indX = np.arange(int(nx//2), nx*4, nx)\n", + "indY = np.arange(int(ny//2), ny, ny)\n", + "inds = np.meshgrid(indY, indX, indexing=\"ij\")\n", + "coords = np.vstack(inds).T\n", + "\n", + "fpTask = fpfs.image.measure_source(psfData,pix_scale = scale, sigma_arcsec=0.7)\n", + "mms = fpTask.measure(gal_data, coords)\n", + "mms = fpTask.get_results(mms)\n", + "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", + "resp=np.average(ells['fpfs_R1E'])\n", + "shear=np.average(ells['fpfs_e1'])/resp\n", + "\n", + "print('Input shear is: %.6f' %shear_value)\n", + "print('Estimated shear is: %.6f' %shear)" + ] + }, + { + "cell_type": "markdown", + "id": "d1003ca1-c54e-4fa5-aa2b-3cd0772b6ccf", + "metadata": {}, + "source": [ + "# Simulation with extremely small pixel size" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "322971c4-a6c0-4cdc-8c1d-a245263b5fd6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:05:44 --- Creating Mixed galaxy profiles\n", + "2023/09/20 02:05:44 --- Processing for g1-1, and shear is 0.02.\n", + "2023/09/20 02:05:44 --- Making Basic Simulation. ID: 2\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:05:46 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:05:46 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", + "2023/09/20 02:05:46 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input shear is: 0.020000\n", + "Estimated shear is: 0.020001\n" + ] + } + ], + "source": [ + "shear_value = 0.02\n", + "scale = 0.168/4\n", + "nx, ny = 256, 256\n", + "psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", + ").shear(e1=0.02, e2=-0.02)\n", + "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=nx, ny=ny, scale=scale).array\n", + "\n", + "# Four Galaxies to cancel spin-2 and spin-4 ansiotropies\n", + "# spin-2 is shape noise in diagnonal elements of shear response matrix\n", + "# spin-4 is shape noise in diagnonal and of-diagnoal elements of shear response matrix, \n", + "# but an order of magnitude smaller than spin-2\n", + "\n", + "gname = \"g1-1\"\n", + "gal_data = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=gname,\n", + " seed=2,\n", + " ny=ny,\n", + " nx=nx*4,\n", + " scale=scale,\n", + " do_shift=False,\n", + " nrot=4,\n", + " ngrid=nx,\n", + ")[0]\n", + "plt.close()\n", + "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))\n", + "plt.show()\n", + "# Now we measure shear\n", + "rcut = 32\n", + "\n", + "# Force detection\n", + "indX = np.arange(int(nx//2), nx*4, nx)\n", + "indY = np.arange(int(ny//2), ny, ny)\n", + "inds = np.meshgrid(indY, indX, indexing=\"ij\")\n", + "coords = np.vstack([np.ravel(_) for _ in inds]).T\n", + "\n", + "fpTask = fpfs.image.measure_source(psfData,pix_scale = scale, sigma_arcsec=0.7)\n", + "mms = fpTask.measure(gal_data, coords)\n", + "mms = fpTask.get_results(mms)\n", + "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", + "resp=np.average(ells['fpfs_R1E'])\n", + "shear=np.average(ells['fpfs_e1'])/resp\n", + "\n", + "print('Input shear is: %.6f' %shear_value)\n", + "print('Estimated shear is: %.6f' %shear)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7840a229-1714-4eea-87fb-4cfcc9354ea1", + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/4_noise_bias_Hessian.ipynb b/docs/examples/4_noise_bias_Hessian.ipynb new file mode 100644 index 0000000..f7dab9b --- /dev/null +++ b/docs/examples/4_noise_bias_Hessian.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d03db39a-a790-4037-b03e-87635e2d1f36", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "%matplotlib inline\n", + "\n", + "\n", + "import os \n", + "import fpfs\n", + "import galsim\n", + "import numpy as np\n", + "import astropy.io.fits as pyfits\n", + "from astropy.visualization import simple_norm\n", + "\n", + "import matplotlib as mpl\n", + "import matplotlib.pylab as plt\n", + "from mpl_toolkits.axes_grid1 import ImageGrid\n", + "\n", + "mpl.rcParams['axes.linewidth'] = 2.0 #set the value globally" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "064170c1-b8a0-4cbe-870c-1f60222a39cc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "scale = 0.168\n", + "seeing = 0.6\n", + "rcut = 32\n", + "psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=seeing, trunc=seeing * 4.0\n", + ").shear(e1=0.02, e2=-0.02)\n", + "psf_data = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=64, ny=64, scale=scale).array" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a5648c95-75d4-439d-b084-2bdbe22111ba", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "noise_fname = os.path.join(fpfs.__data_dir__, 'noiPows3.npy')\n", + "noi_var = 7e-3\n", + "noise_pow = (\n", + " np.load(noise_fname, allow_pickle=True).item()[\"%s\" % rcut]\n", + " * noi_var\n", + " * 100\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f43bae67-1df0-4677-a735-a6be21c15907", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:08:36 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:08:36 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:08:36 --- Unable to initialize backend 'tpu': module 'jaxlib.xla_extension' has no attribute 'get_tpu_client'\n", + "2023/09/20 02:08:36 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", + "2023/09/20 02:08:36 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:08:36 --- Shapelet kernel in configuration space: sigma= 0.4500 arcsec\n", + "2023/09/20 02:08:36 --- Detection kernel in configuration space: sigma= 0.4500 arcsec\n" + ] + } + ], + "source": [ + "noise_task = fpfs.image.measure_noise_cov(\n", + " psf_data,\n", + " nnord=4,\n", + " sigma_arcsec=0.45,\n", + ")\n", + "cov_mat = noise_task.measure(noise_pow)\n", + "\n", + "mms = pyfits.getdata(os.path.join(fpfs.__data_dir__, \"fpfs-cut32-0000-g1-0000.fits\"))\n", + "cov_mat2 = fpfs.catalog.fpfscov_to_imptcov(mms)\n", + "for elem1, elem2 in zip(cov_mat.flatten(), cov_mat2.flatten()):\n", + " if elem2 != 0.0:\n", + " np.testing.assert_array_almost_equal(\n", + " elem1,\n", + " elem2,\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c968d36d-128a-42d3-9185-bc8b46de4e03", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.close()\n", + "plt.imshow(cov_mat,vmin=-1.5,vmax=1.5)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "42a08c77-6eb5-4fe6-b03c-c49ead7636ae", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.close()\n", + "plt.imshow(cov_mat2,vmin=-1.5,vmax=1.5)\n", + "plt.colorbar()" + ] + } + ], + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/5_measure_shear_extremely_blended.ipynb b/docs/examples/5_measure_shear_extremely_blended.ipynb new file mode 100644 index 0000000..0aaaf5b --- /dev/null +++ b/docs/examples/5_measure_shear_extremely_blended.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "26baf0fd-838c-424c-8904-6e1a29e317a8", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "%matplotlib inline\n", + "\n", + "\n", + "import os \n", + "import fpfs\n", + "import galsim\n", + "import numpy as np\n", + "import matplotlib.pylab as plt\n", + "from astropy.visualization import simple_norm\n", + "from mpl_toolkits.axes_grid1 import ImageGrid\n", + "import numpy.lib.recfunctions as rfn\n", + "\n", + "import matplotlib as mpl\n", + "mpl.rcParams['axes.linewidth'] = 2.0 #set the value globally" + ] + }, + { + "cell_type": "markdown", + "id": "a9b59ba8-fcc8-4345-bed6-72f3e6d4b91f", + "metadata": {}, + "source": [ + "# README\n", + "This notebook show the test on blended galaxies (center known)\n", + "+ we show a very extreme case --- shear estimation in extremely blended region!!\n", + "+ the center refers to the center of isotropy (at least free of spin-2 and spin-4)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "29f75a59-05c2-49b4-8db1-8b3ff74fe472", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:09:06 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:09:06 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:09:06 --- Unable to initialize backend 'tpu': module 'jaxlib.xla_extension' has no attribute 'get_tpu_client'\n", + "2023/09/20 02:09:06 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", + "2023/09/20 02:09:07 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:09:07 --- Shapelet kernel in configuration space: sigma= 0.4500 arcsec\n", + "2023/09/20 02:09:07 --- Detection kernel in configuration space: sigma= 0.4500 arcsec\n", + "2023/09/20 02:09:07 --- We have 16 galaxies in total, and each 4 are the same\n", + "2023/09/20 02:09:08 --- We have 16 galaxies in total, and each 4 are the same\n", + "2023/09/20 02:09:09 --- We have 16 galaxies in total, and each 4 are the same\n", + "2023/09/20 02:09:09 --- We have 16 galaxies in total, and each 4 are the same\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "multiplicative bias is: 0.0012\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAGgCAYAAAAD9NhnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9NElEQVR4nO3dzW8b+Zkn8C/fJOq9RNuy3U6/pDTu9E4mk1navbPYY0ICOeTQAWTrL5CUuQ2wgBif9uhIwB7nQOovkElg+xAgwJKdw2J3dhctcyc7M5mZzoid7rS727JNlSRLIkWRtYdesi3X88gsifSPpL4foJHopxJZZFF6XKwvnyfguq4LIiIiA4Kmd4CIiC4uFiEiIjKGRYiIiIxhESIiImNYhIiIyBgWISIiMoZFiIiIjAmb3gHJ2NgYKpUKQqEQZmZmTO8OERH5sLW1hXq9jmg0iv39/VO3DfTih1VDoRAajYbp3SAionMIBoOo1+unbtOTZ0LfFqEAwkMTOD7aRXhoEsFgyPSu0Tk0GnUeywHC4zk4On0sjyoOABeh0KtvqyeL0MzMDB49eoShqIXv/bu/xt//t/+Ef/Pv/yPGrHdM7xqdw77zBx7LAcLjOTg6fSyL//WvcVTZbutyCoMJRERkDIsQEREZwyJERETG9HwRikQt3Hj3A0SiluldoXPisRwsPJ6Dw+Sx7MlgwouGohbefO9npneDOoDHcrDweA4Ok8ey58+EiIhocLEIERGRMSxCRERkDIsQEREZ0/PBBKJ+FwgFTO/Ca+HWe64NJfWBMxehUqmEVCoFAIjFYrAsCysrK57tCoUC8vk8Zmdn4TgOAGB5efmsd0tERAPkTEUol8vh/v37yGazsG0bAOA4DlKp1IlClMvlsL6+jmw221orFApIJpPI5/Pn3HUiIup3vq8JFYtFLCws4KOPPmoVIABYWFhALpdrfe04DhYWFrC2tnbi5xOJBMrlMjKZzDl2m4iIBoHvIpRKpXDv3j1YlnViPZlMYmlpqfX1gwcPYNu2ZzsAmJ+fRzqd9r2zREQ0WHy9HVcsFlEoFE68vda0uLh44utsNotYLCbejm3bKBaLcBxHLFJEr9tFCQ90k9/nkEEGAnyeCaXTafXs5mUbGxsn3q57UXO9VCr5uXsiIhowvs6ECoVCq4Csrq4CACzLwubmpuctunbOckqlEuLxuL89JiKigeGrCDWLxurq6omYdalUwq1bt/Dw4cO2zpKa25TL5VO3c10Xx7XD1tfBYBjBUMTPLhMRUZc16jU0Gsetr123/bdafUe0i8Wi5/NAtm0jkUhgYWFBvF50VrWqg41f/7z19Y13P2DXXiKiHvPo97/Co08+PNPPnulzQtK1nlu3bmFpaamtt+GaH1rVggtNkWELP/zRL1tfB4Ns8EBE1Gtu3Pwprs/+pPX1b3/zC9SqTls/6/uv+qvCBhsbG0gkEn5vVhQIBBCOjHTktsisi5w+CwT787G7je6m16TXBBNz/SkYipy4VBIItP+a95WOaycZ10y82batpt+a14K0gkZERBeDryIUj8dfGau+fft2a9vm224va94Gk3FERBebryI0Pz+PYrEofu/FMyDgmw4KWsHa3Nzs2Ft2RETUv3wVobm5OViWdaJHXFM2m8Xi4mLr7bq7d++iXC6LhSiXy51o8UNERBeT795x2WwWqVTqxFttmUwGpVLpRHTbsiysra21xj005XI52LaNubm5s+81ERENBN/puEQigXQ6jYWFBcRiMZTLZdi2jc3NTc+2zTOnVCp1Yp4Qxzj0j4uSautmgq0fnkMpleb3OelEmk57rpiaG1xn+uBNIpFo+5qOn22JiOhi8f12HBERUaewCBERkTEsQkREZAyLEBERGcOOoBdQP6S1JD2VYAu2/+83v7ft53H6TaRpKbOA9HAaDV+37ZeffefU1sHFMyEiIjKGRYiIiIxhESIiImNYhIiIyBgGEwZYNwMIvTSozdfj9BEoOO22pcfvZ9uz7IsvSqhACwNIF/Ldhr8WOgEo96mGIYShdh0apMeBef2DZ0JERGQMixARERnDIkRERMawCBERkTEsQkREZAzTcQOgEym4TqXdOpLI61BqTNoX7XGqybZwSFwPRrz7KK0BAELyeieeczXtVquL641a+wk291i+DTco32ejJi6rqblOYOuf/sczISIiMoZFiIiIjGERIiIiY1iEiIjIGBYhIiIyhum4PtKpXnB+UlnqfXaoB5u4rc/UmK/+bhE57RYalte17SPC9kPD8q9TKCw/V0Gfj7MhJMHqx3Ly7Kh6LK7XqkriTUjT1atK7zgleafx04OuE/3n9P3wl3Zjmu714JkQEREZwyJERETGsAgREZExLEJERGQMixARERnDdFyP6mY/OPG2lbSb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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rcut=32\n", + "scale=0.168\n", + "ngrid=256\n", + "psfFWHM = 0.6\n", + "shear_value = 0.02\n", + "\n", + "beg = ngrid//2-rcut\n", + "end = beg+2*rcut\n", + "\n", + "psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", + ").shear(e1=0.02, e2=-0.02)\n", + "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=rcut*2, ny=rcut*2, scale=scale).array\n", + "\n", + "ig= 445\n", + "outDir='galaxy_cosmo250_psf60'\n", + "results=[]\n", + "fpTask = fpfs.image.measure_source(psfData, sigma_arcsec=0.45)\n", + "#print(fpTask.klim)\n", + "nrot=4\n", + "for _ in range(nrot):\n", + " rot2=np.pi/nrot*_\n", + " gal=fpfs.simutil.make_cosmo_sim(outDir,psf_obj = psfInt, gname='g1-2222',ind0=ig,ny=ngrid,nx=ngrid,\\\n", + " rfrac=0.2,do_write=False,return_array=True, rot2=rot2, shear_value=shear_value)\n", + " gal = gal[beg:end,beg:end]\n", + " modes= fpTask.measure(gal) \n", + " modes = fpTask.get_results(modes)\n", + " results.append(modes)\n", + " \n", + "plt.close()\n", + "plt.imshow(gal,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(gal,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))\n", + "mms = rfn.stack_arrays(results,usemask=False)\n", + "ells= fpfs.catalog.fpfs_m2e(mms,const=12)\n", + "resp=np.average(ells['fpfs_R1E'])\n", + "shear=np.average(ells['fpfs_e1'])/resp\n", + "print('multiplicative bias is: %.4f' %((shear-shear_value)/shear_value))" + ] + } + ], + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/6_detect_and_measure.ipynb b/docs/examples/6_detect_and_measure.ipynb new file mode 100644 index 0000000..8059746 --- /dev/null +++ b/docs/examples/6_detect_and_measure.ipynb @@ -0,0 +1,182 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d03db39a-a790-4037-b03e-87635e2d1f36", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "%matplotlib inline\n", + "import os \n", + "import fpfs\n", + "import galsim\n", + "import numpy as np\n", + "import matplotlib.pylab as plt\n", + "from astropy.visualization import simple_norm\n", + "from mpl_toolkits.axes_grid1 import ImageGrid\n", + "import numpy.lib.recfunctions as rfn\n", + "\n", + "import matplotlib as mpl\n", + "mpl.rcParams['axes.linewidth'] = 2.0 #set the value globally" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "367df615-c208-43fb-a9ee-131a7316d4ab", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:11:48 --- Creating Mixed galaxy profiles\n", + "2023/09/20 02:11:48 --- Processing for g1-1, and shear is 0.02.\n", + "2023/09/20 02:11:48 --- Making Basic Simulation. ID: 2\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ngrid = 256\n", + "shear_value = 0.02\n", + "scale = 0.168\n", + "outDir='galaxy_basicCenter_psf60'\n", + "psfInt = galsim.Moffat(\n", + " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", + ").shear(e1=0.02, e2=-0.02)\n", + "psf_data = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=ngrid, ny=ngrid, scale=scale).array\n", + "\n", + "seed = 2\n", + "gname = \"g1-1\"\n", + "gal_data = fpfs.simutil.make_isolate_sim(\n", + " gal_type=\"mixed\",\n", + " psf_obj=psfInt,\n", + " gname=gname,\n", + " seed=seed,\n", + " ny=ngrid,\n", + " nx=ngrid,\n", + " scale=scale,\n", + " do_shift=False,\n", + " nrot=4,\n", + " shear_value=shear_value,\n", + ")[0]\n", + "plt.close()\n", + "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", + " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "13a6fe6e-7db7-4375-8a29-64383d5d8f5e", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:12:09 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:12:09 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:12:09 --- Unable to initialize backend 'tpu': module 'jaxlib.xla_extension' has no attribute 'get_tpu_client'\n", + "2023/09/20 02:12:09 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", + "2023/09/20 02:12:09 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:12:09 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", + "2023/09/20 02:12:09 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(16, 2)\n", + "0.019996365035556872\n" + ] + } + ], + "source": [ + "rcut = 16\n", + "psf_data = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=rcut*2, ny=rcut*2, scale=scale).array\n", + "\n", + "p1 = ngrid //2 - rcut\n", + "p2 = ngrid //2 - rcut\n", + "psf_data2 = np.pad(psf_data, ((p1, p1), (p2, p2)))\n", + "\n", + "fpTask = fpfs.image.measure_source(psf_data, sigma_arcsec=0.7)\n", + "coords = fpfs.image.detect_sources(\n", + " gal_data,\n", + " psf_data2,\n", + " sigmaf=fpTask.sigmaf,\n", + " sigmaf_det=fpTask.sigmaf_det,\n", + " thres=0.01,\n", + " thres2=-0.00,\n", + ")\n", + "print(coords.shape)\n", + "\n", + "mms = fpTask.measure(gal_data, coords)\n", + "mms = fpTask.get_results(mms)\n", + "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", + "resp=np.average(ells['fpfs_R1E'])\n", + "shear=np.average(ells['fpfs_e1'])/resp\n", + "print(shear)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9173fe5d-3924-4bc6-9224-a452b370ef52", + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/7_simulate_beyond_affine.ipynb b/docs/examples/7_simulate_beyond_affine.ipynb new file mode 100644 index 0000000..5470d02 --- /dev/null +++ b/docs/examples/7_simulate_beyond_affine.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "b1d79f65-5e9f-4af9-8bde-0447b8152c9b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%reload_ext autoreload\n", + "%autoreload 2\n", + "import os\n", + "import fpfs\n", + "import galsim\n", + "import numpy as np\n", + "import matplotlib.pylab as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "862f266c-770e-45e5-bac8-9228d2e8473f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "class LensTransform1(object):\n", + " def __init__(self, gamma1, gamma2, kappa):\n", + " \"\"\"Initialize the transform object of 2D grids\n", + " Args:\n", + " gamma1 (float): the first component of lensing shear field\n", + " gamma2 (float): the second component of lensing shear field\n", + " kappa (float): the lensing convergence field\n", + " \"\"\"\n", + " self.s2l_mat = np.array(\n", + " [\n", + " [1 - kappa - gamma1, -gamma2], \n", + " [-gamma2, 1 - kappa + gamma1]\n", + " ]\n", + " )\n", + " return\n", + " \n", + " def transform(self, coords):\n", + " \"\"\"transform the center of pixels from lensed plane to pre-lensed plane\n", + " Args:\n", + " coords: coordinates (x, y) of the pixel centers [arcsec]\n", + " \"\"\"\n", + " return self.s2l_mat @ coords" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8e028b35-c6b8-4948-ba7f-a9aa524e26e1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "flux = 40\n", + "scale = 0.2\n", + "nn = 64\n", + "sersic_gal = galsim.Sersic(n=1.5, half_light_radius=1.5, flux=flux, trunc=4)\n", + "stamp = fpfs.simutil.Stamp(nn=nn, scale=scale)\n", + "gal_array = stamp.sample_galaxy(sersic_gal)\n", + "plt.close()\n", + "fpfs.pltutil.make_plot_image(gal_array)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "37172756-2c28-4267-acdb-7b27ee81ad09", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kappa = 0.0\n", + "gamma1 = 0.2\n", + "gamma2 = 0.0\n", + "lens = LensTransform1(gamma1=gamma1, gamma2=gamma2, kappa=kappa)\n", + "\n", + "stamp = fpfs.simutil.Stamp(nn=nn, scale=scale)\n", + "stamp.transform_grids(lens)\n", + "gal_array2 = stamp.sample_galaxy(sersic_gal)\n", + "plt.close()\n", + "fpfs.pltutil.make_plot_image(gal_array2)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "758ac343-e0d6-423d-9e09-d4d262eaf20a", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023/09/20 02:13:48 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:13:48 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", + "2023/09/20 02:13:48 --- Unable to initialize backend 'tpu': module 'jaxlib.xla_extension' has no attribute 'get_tpu_client'\n", + "2023/09/20 02:13:48 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", + "2023/09/20 02:13:48 --- Order of the shear estimator: nnord=4\n", + "2023/09/20 02:13:48 --- Shapelet kernel in configuration space: sigma= 0.5200 arcsec\n", + "2023/09/20 02:13:48 --- Detection kernel in configuration space: sigma= 0.5200 arcsec\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "input shear: 0.02000\n", + "measured shear: 0.02003\n" + ] + } + ], + "source": [ + "kappa = 0.0\n", + "gamma1 = 0.02\n", + "gamma2 = 0.0\n", + "lens = LensTransform1(gamma1=gamma1, gamma2=gamma2, kappa=kappa)\n", + "stamp = fpfs.simutil.Stamp(nn=64, scale=scale)\n", + "stamp.transform_grids(lens)\n", + "gal_array3 = stamp.sample_galaxy(sersic_gal)\n", + "psf_array = np.zeros(stamp.shape)\n", + "psf_array[nn // 2, nn // 2] = 1\n", + "\n", + "coords = np.array([nn//2, nn//2])\n", + "fpTask = fpfs.image.measure_source(psf_array, pix_scale = scale, sigma_arcsec=0.52)\n", + "mms = fpTask.measure(gal_array3, coords)\n", + "mms = fpTask.get_results(mms)\n", + "ells= fpfs.catalog.fpfs_m2e(mms,const=20)\n", + "resp=np.average(ells['fpfs_R1E'])\n", + "shear=np.average(ells['fpfs_e1'])/resp\n", + "print(\"input shear: %.5f\" % gamma1)\n", + "print(\"measured shear: %.5f\" % shear)" + ] + } + ], + "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.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/README.md b/docs/examples/README.md index 057cfc3..7630072 100644 --- a/docs/examples/README.md +++ b/docs/examples/README.md @@ -4,8 +4,20 @@ This directory gives some examples on simulating galaxy images with [Galsim](https://github.com/GalSim-developers/GalSim); and galaxy detection and shape estimation with [FPFS](https://github.com/mr-superonion/FPFS). -## Command line examples -See [here](./command_line/README.md) for command line examples; +## Isolated Galaxies ++ [example 1](./1_simulate_noise_image.ipynb) shows how to simulate pure noise + with Galsim. -## Jupyter notebook examples -See [here](./notebooks/README.md) for example notebooks. ++ [example 2](./2_simulate_galaxy_basic.ipynb) shows how to simulate galaxies + with Galsim. + ++ [example 3](./3_measure_shear.ipynb) shows how to measure shear from + noiseless galaxy images (fix center of isotropy). + ++ [example 4](./4_noise_bias_Hessian.ipynb) shows the Hessian matrix for + noise bias correction. + +## Blended Galaxies + ++ [example 5](./5_measure_shear_blended.ipynb) shows shear estimation on + blinded galaxies (fix center of isotropy). diff --git a/docs/examples/notebooks/config_sim_gal.ini b/docs/examples/config_sim_gal.ini similarity index 100% rename from docs/examples/notebooks/config_sim_gal.ini rename to docs/examples/config_sim_gal.ini diff --git a/docs/examples/notebooks/convert.sh b/docs/examples/convert.sh similarity index 100% rename from docs/examples/notebooks/convert.sh rename to docs/examples/convert.sh diff --git a/docs/examples/data b/docs/examples/data new file mode 120000 index 0000000..33f9328 --- /dev/null +++ b/docs/examples/data @@ -0,0 +1 @@ +../../fpfs/data \ No newline at end of file diff --git a/docs/examples/notebooks/2_simulate_galaxy_basic.ipynb b/docs/examples/notebooks/2_simulate_galaxy_basic.ipynb deleted file mode 100644 index 3f480ff..0000000 --- a/docs/examples/notebooks/2_simulate_galaxy_basic.ipynb +++ /dev/null @@ -1,261 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "b1d79f65-5e9f-4af9-8bde-0447b8152c9b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "%reload_ext autoreload\n", - "%autoreload 2\n", - "import os\n", - "import json\n", - "import fpfs\n", - "import galsim\n", - "import matplotlib.pylab as plt\n", - "import astropy.io.fits as pyfits\n", - "from configparser import ConfigParser\n", - "from astropy.visualization import simple_norm" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "6889d99a-0f64-46e9-9811-633bb77edb4f", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "def prepare_psf(pscale, seeing, psf_type, outdir):\n", - " psffname = os.path.join(outdir, \"psf-%d.fits\" % (seeing * 100))\n", - " if psf_type.lower() == \"moffat\":\n", - " psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=seeing, trunc=seeing * 4.0\n", - " ).shear(e1=0.02, e2=-0.02)\n", - " else:\n", - " raise ValueError(\"Only support moffat PSF.\")\n", - " psfImg = psfInt.drawImage(nx=45, ny=45, scale=pscale)\n", - " psfImg.write(psffname)\n", - " return psfInt" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "51c95e6d-238c-4dd8-ba70-8123fbf44e9b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "Id = 1\n", - "config_name = 'config_sim_gal.ini'\n", - "cparser = ConfigParser()\n", - "cparser.read(config_name)\n", - "simname = cparser.get(\"simulation\", \"sim_name\")\n", - "imgdir = cparser.get(\"simulation\", \"img_dir\")\n", - "infname = cparser.get(\"simulation\", \"input_name\")\n", - "scale = cparser.getfloat(\"survey\", \"pixel_scale\")\n", - "image_nx = cparser.getint(\"survey\", \"image_nx\")\n", - "image_ny = cparser.getint(\"survey\", \"image_ny\")\n", - "assert image_ny == image_nx, \"'image_nx' must equals 'image_ny'!\"\n", - "if \"basic\" in simname or \"small\" in simname:\n", - " assert image_nx % 256 == 0, \"'image_nx' must be divisible by 256 .\"\n", - "outdir = os.path.join(imgdir, simname)\n", - "if not os.path.exists(outdir):\n", - " os.makedirs(outdir, exist_ok=True)\n", - "\n", - "seeing = cparser.getfloat(\"survey\", \"psf_fwhm\")\n", - "psfInt = prepare_psf(scale, seeing, psf_type=\"moffat\", outdir=outdir)\n", - "\n", - "glist = []\n", - "if cparser.getboolean(\"distortion\", \"test_g1\"):\n", - " glist.append(\"g1\")\n", - "if cparser.getboolean(\"distortion\", \"test_g2\"):\n", - " glist.append(\"g2\")\n", - "if len(glist) > 0:\n", - " zlist = json.loads(cparser.get(\"distortion\", \"shear_z_list\"))\n", - " pendList = [\"%s-%s\" % (i1, i2) for i1 in glist for i2 in zlist]\n", - "else:\n", - " # this is for non-distorted image simulation\n", - " pendList = [\"g1-1111\"]\n", - "shear_value = cparser.getfloat(\"distortion\", \"shear_value\")\n", - "\n", - "\n", - "\n", - "p2List = [\"0000\", \"2222\"]\n", - "p1List = [\"g1\"]\n", - "pendList = [\"%s-%s\" % (i1, i2) for i1 in p1List for i2 in p2List]\n", - "pp = pendList[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "da680449-6634-479c-8bab-0734364d4df5", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/12 11:05:43 --- Processing for g1-0000, and shears for four redshift bins are [-0.03 -0.03 -0.03 -0.03].\n", - "2023/09/12 11:05:43 --- Making Basic Simulation. ID: 1\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sim_img = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"basic\",\n", - " psf_obj=psfInt,\n", - " gname=pp,\n", - " seed=Id,\n", - " ny=image_ny//2,\n", - " nx=image_nx,\n", - " scale=scale,\n", - " do_shift=False,\n", - " shear_value=shear_value,\n", - " nrot=2,\n", - ")\n", - "plt.imshow(sim_img,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(sim_img,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "ac36e1fe-e467-430f-b853-80df3e0dfff8", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/12 11:05:44 --- Processing for g1-0000, and shears for four redshift bins are [-0.03 -0.03 -0.03 -0.03].\n", - "2023/09/12 11:05:44 --- Making galaxies with Random Knots.\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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r36VBx98kLe//e3s27ePF198kVe+8pW8//3vXydcbNvmd37nd3j88ceZmJjg8OHDvOxlL+OXfumXMAxji0oRbYIg4NOf/jQPPPAAzz//PD/6oz/a9Trf9/nkJz/JZz/7Wfbs2cPRo0c5cOAADz74IJlMZt31Dz/8MB//+MfZv38/p06doq+vj9/8zd9kbGzschcpchw5coRf/dVf5ctf/jKlUom9e/fyYz/2Y7zvfe9D19deV7HB5WVmZoZf+7Vf4wtf+AJLS0tcd911vO997+OHf/iH264TO1x+XNflh3/4hymXy+vOyfO/vDz88MO89a1vXXf8k5/8ZFO8bJkNLio7zBZj23bw2te+Nrj77rsD0zSDIAiCSqUS3HbbbcHrX//6wHXdLb7DaPLtb387OHbsWPDHf/zHARD86I/+aNfr3vWudwV79+4NVlZWgiAIAs/zgje84Q3BbbfdFpRKpbZrf+3Xfi3o7+8PTp061Tz2kz/5k8E111wTzMzMXLayRJFTp04FuVwuuO+++4If+qEfCu68885mIqcf/uEfbrtWbHD5mJmZCW655ZbgF37hF4L/83/+T/DhD384mJycDIDgr/7qr9quFTtcft7//vcHt956awAEjzzySNs5ef6XlzvvvDN47WtfG3zP93xP8+cHf/AHm/1uEGydDSIpXj7wgQ8EQPCFL3yh7fjf/u3fBkDwP/7H/9iaG9smPPLIIxuKl0984hMBEHzsYx9rO/7ss88GQPDe9763eewrX/lKAAS/9Eu/1Hbt8vJyEIvFgre85S2X4e6jy/d93/cFn/3sZ9uO/fVf/3WgKEoABE8//XQQBGKDy8373ve+4MiRI23HHnvssQAI3v72tzePiR0uP1//+teDd7/73cGv/dqvrRMv8vwvL5///OeDN73pTZtes5U2iJx4MU0zGBgYCNLp9DoPi23bQTKZDCYnJwPP87boDqPPZuLl0KFDARDMzs6uO7d///4gkUgEq6urQRAEwetf//oACB577LF117761a8OgODw4cOX/P6jyNzcXNuL3spb3vKWAAj+8i//MggCscHl5tlnn113rFKpBEDw7/7dv2seEztcXorFYvDKV74yKBQKXcWLPP/Ly7333hu8+93vDr7whS+s86A02EobRG75TmMTxxtvvHHDTRynp6d54okntugOty/T09McPnyY0dFRxsfH152/9dZbMU2Tf/iHf8BxHL7yla8AcPPNN3e9FuAzn/nM5bzlyJBKpXjggQe6njt48CAAk5OTYoMrwI033rju2Ne+9jVGR0f5xV/8RUDehSvBe9/7Xh544AH6+vrWnZPnf3l55JFH+PrXv87HP/5xXve61zE0NMQP/MAPcPLkyeY1W22DyImX5557Dggb8m40jj/zzDNX7J6uFp599lng/J79iRMnqNVq5HI5UqnUptcKkM1m6e/v73pubm6OnTt3cs8994gNtoAnnniC//yf/zNf/OIX2bt3LyDvwuXmU5/6FOPj49x3331dz8vzv7xcd911/N3f/R2///u/zzve8Q4UReH//b//x6233srjjz8ObL0NIideZBPHreNCnr3Y6dLgOA5///d/z6//+q+j67rY4Ary6KOP8ta3vpW7776bw4cPc9999/Hwww8D8i5cTqampvjDP/zDDT2RIM//cjM5OcnrX/96fuqnfor/+3//LydOnOAtb3kLxWKRt771rZimueU2iJx4uZhNHIVLw4U8e7HTpeF3f/d3efWrX8073/lOQGxwJbnvvvv4sz/7Mx577DF+/Md/nEKhwI/8yI8wMzMjdrhM+L7PT/7kT/K//tf/2jTlhTz/K8uOHTv4m7/5G970pjcxMzPD5z73uS23QeTEy8Vs4ihcGi7k2YudvnOeeuopHnnkET7xiU80j4kNrhyqqpLNZrnzzjv54z/+Y/7jf/yPlEolvvjFL4odLhO/9Vu/xR133EEul2Nubq7508jxsrKywtzcXPNZyfO/cqiqyvvf/34ATpw4seXvQOTEi2ziuHU05vvP59mPjo6STqfJ5/PNbdA3ulZYz7Fjx/jwhz/MX/3VXxGLxZrHxQZbx4/8yI8A4XMTO1wePve5z/HBD36QiYmJtp/f+q3fAuD7v//7mZiY4C/+4i8Aef5XmptuugkIk8pu9TsQOfFyxx13MDIywnPPPUfQsbOB53k8++yzjIyM8NKXvnSL7nD7MjY2xm233cbs7GzXucmnnnoKXdd5zWteg6qqvO51ryMIgmZgV+e1AK9//esv921HjmPHjvHrv/7r/Mmf/Mm6zNJig62jMY1x8OBBscNl4sMf/jCf//zn1/3823/7bwH40Ic+xOc//3ne9773yfPfAqampgC48847t/4dOO9F1T3E+9///gAIHn300bbjX/jCFwIgeP/7379Fd7Y92CzPy//+3/87AIJPfvKTbcdfeOGFAAje+c53No99+ctfDoDggQceaLt2dXU1SCaTwf33339Z7j/KHDlyJHjnO98ZVKvVdee+/vWvBw899JDYYIv40Ic+FOzbty+wLCsIAnkXriTd8rzI87981Gq1wPf9dcd//ud/PnjFK17R/H0rbRBJ8VKtVoPbb789ePnLX95sSGq1WnDnnXcGt99+e9eGXzh//vIv/zIAgh/4gR9Yd873/eD7vu/7gmuvvbaZfMjzvOAtb3lLsHv37mBhYaHt+ve85z3B0NBQcObMmeaxn/mZnwlyudy6LKZXO4cPHw4mJiaCN7/5zcEP/uAPtv284Q1vCHbv3h3Yti02uIwUi8Vgx44dwV133RV8+ctfbh7/+7//++DQoUNtCezEDleObuJFnv/l4cSJE4FhGMHY2FjwsY99rJnw9U//9E+Du+66qy0h3VbaoGd2lb5QKpUKDz74IN/+9rebmzjefPPNvP/9799wOZawOSdPnuShhx7it3/7tzl9+jSJRIL/8l/+C/feey+vfe1rm9e5rstHPvIRHnnkEQ4ePMiZM2eYmJjgv/23/9Y14OpjH/sYn/70pzl06BALCwtomsYHP/jBZvySED77e+65h/n5+Q2v+eVf/mUefPBBQGxwuQiCgHe961185jOfoVwuc/vtt3PzzTdz88038xM/8RPr2haxw5XhAx/4AA888ACPPPJI267S8vwvPbZt8973vpeHHnqI5eVlXvKSl3DjjTfyqle9in/zb/5NWwwebJ0NIiteBEEQBEG4OolcwK4gCIIgCFc3Il4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgUIl4EQRAEQYgU/39YocG+oweOygAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sim_img2 = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"random\",\n", - " psf_obj=psfInt,\n", - " gname=pp,\n", - " seed=Id,\n", - " ny=image_ny//2,\n", - " nx=image_nx,\n", - " scale=scale,\n", - " do_shift=False,\n", - " shear_value=shear_value,\n", - " nrot=2,\n", - ")\n", - "plt.imshow(sim_img2,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(sim_img,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "07f4f498-8534-4c47-ba20-bc735a224276", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(sim_img*0.70+sim_img2*0.3,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(sim_img,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))" - ] - } - ], - "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.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/notebooks/3_measure_shear.ipynb b/docs/examples/notebooks/3_measure_shear.ipynb deleted file mode 100644 index 2d051be..0000000 --- a/docs/examples/notebooks/3_measure_shear.ipynb +++ /dev/null @@ -1,379 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "8a2f15a9-ecd6-4425-9d1a-7d9c798df4e1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "%reload_ext autoreload\n", - "%autoreload 2\n", - "import galsim\n", - "import fpfs\n", - "import impt\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from astropy.visualization import simple_norm\n", - "from mpl_toolkits.axes_grid1 import ImageGrid" - ] - }, - { - "cell_type": "markdown", - "id": "48b40422-4b8c-4508-9d71-e5ecb020fc1a", - "metadata": {}, - "source": [ - "# HSC like simulation using parametric galaxies from COSMOS" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "50b377a0-a670-48a5-b722-862aaa286f30", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 14:58:02 --- Processing for g1-2222, and shears for four redshift bins are [0.02 0.02 0.02 0.02].\n", - "2023/09/01 14:58:02 --- Making Basic Simulation. ID: 212\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 14:58:02 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/09/01 14:58:02 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/09/01 14:58:02 --- Unable to initialize backend 'tpu': INVALID_ARGUMENT: TpuPlatform is not available.\n", - "2023/09/01 14:58:02 --- Unable to initialize backend 'plugin': xla_extension has no attributes named get_plugin_device_client. Compile TensorFlow with //tensorflow/compiler/xla/python:enable_plugin_device set to true (defaults to false) to enable this.\n", - "2023/09/01 14:58:02 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", - "2023/09/01 14:58:03 --- Order of the shear estimator: nnord=4\n", - "2023/09/01 14:58:03 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", - "2023/09/01 14:58:03 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input shear is: 0.020000\n", - "Estimated shear is: 0.020003\n" - ] - } - ], - "source": [ - "shear_value = 0.02\n", - "scale = 0.168\n", - "nx, ny = 64, 64\n", - "outDir='galaxy_basicCenter_psf60'\n", - "psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", - ").shear(e1=0.02, e2=-0.02)\n", - "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=nx, ny=ny, scale=scale).array\n", - "\n", - "# Four Galaxies to cancel spin-2 and spin-4 ansiotropies\n", - "# spin-2 is shape noise in diagnonal elements of shear response matrix\n", - "# spin-4 is shape noise in diagnonal and of-diagnoal elements of shear response matrix, \n", - "# but an order of magnitude smaller than spin-2\n", - "seed = 212\n", - "gname = \"g1-2222\"\n", - "gal_data = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"basic\",\n", - " psf_obj=psfInt,\n", - " gname=gname,\n", - " seed=seed,\n", - " ny=ny,\n", - " nx=nx*4,\n", - " scale=scale,\n", - " do_shift=False,\n", - " nrot=4,\n", - ")\n", - "\n", - "plt.close()\n", - "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))\n", - "plt.show()\n", - "# Now we measure shear\n", - "rcut = 32\n", - "\n", - "# Force detection at the stamp center point (ngrid//2, ngrid//2)\n", - "indX = np.arange(int(nx/2), nx*4, nx)\n", - "indY = np.arange(int(ny/2), ny, ny)\n", - "inds = np.meshgrid(indY, indX, indexing=\"ij\")\n", - "coords = np.vstack([np.ravel(_) for _ in inds]).T\n", - "\n", - "fpTask = fpfs.image.measure_source(psfData,pix_scale = scale, sigma_arcsec=0.7)\n", - "mms = fpTask.measure(gal_data, coords)\n", - "mms = fpTask.get_results(mms)\n", - "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", - "resp=np.average(ells['fpfs_R1E'])\n", - "shear=np.average(ells['fpfs_e1'])/resp\n", - "\n", - "print('Input shear is: %.6f' %shear_value)\n", - "print('Estimated shear is: %.6f' %shear)" - ] - }, - { - "cell_type": "markdown", - "id": "07015e80-c7f7-40a7-ae27-a25c27b738d9", - "metadata": {}, - "source": [ - "# HSC like simulation using parametric + Knots galaxies" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "682d0d0a-8f2f-4bea-b3bc-32d92d05c5b3", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 14:58:04 --- Processing for g1-2222, and shears for four redshift bins are [0.02 0.02 0.02 0.02].\n", - "2023/09/01 14:58:04 --- Making Basic Simulation. ID: 212\n", - "2023/09/01 14:58:04 --- Processing for g1-2222, and shears for four redshift bins are [0.02 0.02 0.02 0.02].\n", - "2023/09/01 14:58:04 --- Making galaxies with Random Knots.\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAACoCAYAAAA/3J7EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAjlUlEQVR4nO3deZBU1d038G/f7unZN2ZjGBYBAZEdGdCoPEYFC5UMLwZISJ4EtVLR+LiUqTJVmpfEiLG0qCfGvClLEgtjzOMSNSKLWymKgccnxCeAEFBwBgnMDMPsS+/d5/3jnHNnuqd7mBl6uTP9/VSRtrtv3765vz53fud3zz3XJoQQICIiIkoxI9UbQERERAQwKSEiIiKLYFJCRERElsCkhIiIiCyBSQkRERFZApMSIiIisgRHqjegr1AohObmZgBATk4ObDZbireIiIiIzkcIAZfLBQAoLS2FYQyv5mGppKS5uRkVFRWp3gwiIiIaprNnz6K8vHxYn+XpGyIiIrIES1VKcnJywp4v/s4TyK+YmqKtSW9dZ7/E3/70AGOQQoxB6jEGqccYpNZg93/Q78GHv/kOgP5/y4fCUklJ5BgSe0YmHM6sFG1NerNnZJqPjEFqMAapxxikHmOQWsPZ/xcyHpSnb4iIiMgSmJQQERGRJTApISIiIkuwbFIy+fK1yMwbk+rNSFuZeWMw9cr1jEEKMQapxxikHmOQWsne/zYhhEjKNw1CT08P8vLyAADX3f8aBzURERGNAAGfB+//5y0AgO7ubuTm5g5rPZatlBAREVF6YVJCRERElsCkhIiIiCyBSQkRERFZApMSIiIisgQmJURERGQJTEqIiIjIEpiUEBERkSUwKSEiIiJLYFJCRERElsCkhIiIiCyBSQkRERFZQlyTEr/fj3379sVzlURERJQmhp2UbNu2DTabLeyf0+nEiRMnzGVCoRC2bt2K1atX4/7778fNN9+M++67D93d3XHZeCIiIho9HMP94KOPPoply5bBMHrzmqKiIqxbt858fvvtt+Ojjz7Cp59+iuLiYoRCIaxcuRJLly7Fnj17kJeXd2FbT0RERKPGsJKSt99+G2PHjsWbb74Zc5k//OEPeO6557BlyxYUFxcDAAzDwBNPPIHZs2fjpz/9KZ588slhbTQRERGNPsM6fbNp0yaUlpbivffei3kq5vHHHwcArFy5Muz1WbNmYerUqXjmmWfQ0dExnK8nIiKiUWjIScnu3buxd+9ebN26FcuXL0dJSQnWrFmDuro6c5kzZ87g6NGjKC8vx9ixY/utY/78+fB4PHjnnXcubOuJiIho1BhyUjJ9+nTs2rULTz/9NNauXQubzYZXX30V8+fPx/79+wEAhw8fBgBUVVVFXYd+/dChQzG/J+hzIeDt/RcK+Ie6qURERJQgoYDf/Bsd9Lniss4hjympqqoyk4o77rgD9fX1+NGPfoRt27Zh1apV+PLLL9Ha2goAyM3NjboO/XpLS0vM7/nw//172POpV67HxVd/Z6ibS0RERAlQ+9+v4Mu9/xXXdQ776htt3LhxeP3117Fq1Sps374dO3fuRFZW1oCfsdvtAOQlw7Fc8x9/hD2jdz2GPeNCN5WIiIjiZMoVa3HR4v8DAAj6Pf2KCcMRl8nTDMPAxo0bAQC1tbWorKwEALhc0cs5+vWysrKY67Q7c+DI7P1nOJiUEBERWYXhyDD/RtudOfFZZ1zWAmD27NkAgOzsbEyePBkA0NDQEHXZ+vp6AMDcuXPj9fVEREQ0wsUtKTl9+jQAoLq6GhUVFViwYAEaGhqijhs5cOAAHA4Hrr/++nh9PREREY1wQ05KPB4PhBD9Xn/mmWdwzTXXYMmSJQCAu+++GwCwc+fOsOW++OILHDt2DOvXr8eYMWOGs81EREQ0Cg0pKamrq0NBQQEqKyvxu9/9zhyo+sc//hF79uzBiy++aC67YcMG3HTTTdi0aZM5SVooFMIDDzyASZMmYfPmzXH8v0FEREQj3ZCSkqqqKtx+++2w2Wy46667sGTJEmzYsAFCCHz88cdhE6XZbDa88cYbuO2227B27Vrcc889WL16NSorK7F///4BB7kSERFR+rGJaOdiUqSnp8e8Sd91978Gh3PgS4uJiIgo9QI+D97/z1sAAN3d3THnKTufC56nhIiIiCTDsEV9PRSyTP/f0uJ29Q0RERHRhWClJIWYURONfrHaeSS2+5ElVlwZ7wvDSgkRERFZAislCTTYjHmon2OGPTIMN/6RGO+R4XzxHu7vgfG3hsj46eeGIfv2hv08x+2gjGOse74xzhIrJURERGQJrJTE0WDPMerM+nwiM2qdSUeujxm2NcTqSfVfLnr8Ge+R5XzxjhXnWD1q3ZM2n0fpUTP2yXe+Cok9Qz46nXYAgCPDHra8jqPPGwQABAPy87EqJ+keY1ZKiIiIyBJYKYmTvtl0rHONNvN1W7/P9KUz5VBIfl7o5xGZdd+edLpn16k02HPNkfGPxHiPDIONt91hDLh8LIGAjrf8fNAfQiAQDPss4594seKmKyE6vlnZGQCA3HwnACA71xm2vMcdAAC4e3xhjz6fjCn8+ht6KybpHF9WSoiIiMgSWCm5QNEqJDqTzjDPMRrquSNiufCeVG+FRD4G/DJz9vtkph15TjLgD5rLsweVfJEVr8hzzA7Vk4qMv36u6YpIUPWQda94MOegGe/kiRVvXRmJ1d6dmfaon9N0BU1XyHy+8J61BwFzWf3boOTp175Vu85RFZG8Qnk7lNLSHPlYlA0AcNjlch3dXgBAS7tbPm+Tr/d0ydfN+LJiAoCVEiIiIrIIVkrixDBsZoUkM0vuVn1uMbcgE0BvZp2lelSZ6tEZMVrbpyogXaqn1NkhM2qdWeselBbwB/tdqZGOGXYyGYYtZoUkKzsi/vky/nl56rk6B23Y5Of9QdkzcrllV0nHe+Bz0Byxn0zhFdHoV11EtvcC9ZifI1/X7VyvKxAMj6EeS9LlkvFua3Grd1xwh+RvwwjxSqxkiNa+M1TFS48h0RWS8nJ547mJY/MBAOOKZcXEoT7f6ZWVkHr1+6h3hv8OAI/6396KSSiUvmOIWCkhIiIiS2ClZJiinV/W55R1T6m4RGbMZWPUY7E81zhG9ZyLsmTGXawedWbtUpWSBnUu8mRjFwDgdFM3AKBFPfZ0es3t6Tu+hBKnb9wje8w5ZmVEPpZV5AEAxpfLHtT4UtmjKsuR8Xaqc85u1UNu6pHxPH2uRz6elXFva3EBAHq61BgDtx9+M/SsmCRStDFjkRWS/CLZYy4p0z3mAvlYLuNfmacqpapSEhIyRh2qB93t04+yDTeqeOtYetx+c3xR77giji1JhAErYqpSkq8qJGPHyvhOm1AEALikTD6vyJWxcRhqzEiwEABwSh0fcrLCxxaGIq6284aEWRFLx/bMSgkRERFZAislcWLPMODMDB9LUKJGYetzjVNUxeSiQtnjLc36p/xs57/kSnzqHHKuXN5VOgMAcLxwMgDgU9XDPqa+U2fWgUCoz2yQ7DknQrTZOiPHkOgKSYWK96ypJQCAhZWypzQp/wgAwOk6KVcSGe/yqQCAujFTAAAHVEXt84w2AMA5o6ffdrFikhx9x4zpq6p0RVRXxGZOHgMAWDS+GAAwpUC21EzXCbkSt6x8IUP2tFE5HgDQ5LkEAHCmSx4f9Bij5g75+3Bm2s87WzTjHV+GYTOvqjLjrdpjmRpDouN9eZVsvxNy/0d+uPmUfAyoxplbJD9XMR0AUJh5MYDeipnHE351Zd/jeTqOLWGlhIiIiCyBlZI40tmsPtesr7IoU+eUJxfJUdblgY8BAOK/9wMAAoe/AgAEW2XPyD5GVliyF8qMet68K+X6bVcDAFwqs/aoqzX8vt6rb0Le6HegpPgwx5TYbb1xVj0oPaZg2sQiAMAV6lzzROwCAIhPZE+qX7zV/AbZsy8CAMyadwUAIH/y8vDvNHpnhtX/7YKsuumKCccaJI6eT0RXRPXYgovGyUrY5RNlz3la1vsAALF/LwDA/48vAQDBZt2+5ecc8y4CAJTPPyeXz/s3AMDZHnncyDRnDrWH/e4ApPWYg2SJjLdu5xMrZWVkkaqAThA7AADiQxXvQ7LyLdQYMPs4WUnLqr4UADB7toyzyz8XANChltNjxrxuvzlnUTrGmZUSIiIisgRWSi6QOaujYet3bxM9o5++uqY86zMAgNgnKyTu1/8BAKjfdwYA0N0mKyB5xTIs4462AACy1SyOMxaXAQDOVMoxJk2tcpR+V7sHhjv8mvp0PBeZDH1ndcxUlbBCdVWVvsrmEvU4UZ1jFntkD8r92kEAwJlP6gEAXe0yRvlFskdcWX0WAJDrkRW1if8mKy9t5UsA9M5fYxg2NKrt0TN8RvasNMZ9eKKNIdKvZaoxREWqUnJxhRozVvC/AACx9yMAgPvPsn2fVu27s13GqKBI/obGf02OFcpWv6nyr1UAAIqzZA86W/XQDbst5p2FKT4Gire+qrJAVUouKpWVj4l5nwIAxEeyfXe/cgAAUP8/DQCAnm7Z9orK5HFiXF0HACBTrXf6xRMAACfVmKSGc+qqyi5v75xEaYiVEiIiIrIEVkqGaKBR8I6Ie544nfKxQPV40HYaABBUYwoaVY/58EF1rwt1MUZGhnwe8svlL5osz106Z3wOAJhQMBMAUKjGqpzNtJvfmc7nIhOh33w0fUbk63lJilWPeZwaGzIuX334XC0AwH9AxltXSA4ekL0gv7rXhd2uqh0+2aOeMrkIAOC8RI5FqCyaLVenZop0e4PodskPm/fPcPfeH4Xip297723Xsj3r9qfnIbG3yKtsfH+XcdcVkkOH1D2szHjL5zZD/h4mzyqV658je9h5zoX9vpuSzxwjqOcnUe29Qj3a208CAHwH5NU2ukJy8JC6l5UqdmSekoG32eVYk4kz5VVZxdPl8bwibzEAIE+tt8Vh9DnuhFe+0wErJURERGQJrJQMU7/R8Iat966w6jFDjSnRM7XCK8cKBDvkY3ebzKB1hUTTParWFtmjmtAgzzWiW44xKRgj16fPOWdkOnjOOckcGXbzXhg5asyQnrHTqecTUfOQ6FH4PZ3hFRJN96g6O9VzdVWO/nyGoearsMseucNhg8MeUcFhrzqh+rYvPXYsQ89foSqiaJPzkIRaZfvWY0hixVv/HvTxwNE76Yz8nKp6Bv195yGiVNFjBLMc6l5lbtnOdbw72sMrJJpXhbWnVf5H8Jy6Csstx5jk6rvKO3rvOp3O89KwUkJERESWwErJEEVmqH17MPo9fbdPt5qhT98lErlypkdHpRxtXVAuxyLknpKZdo/qYNtVIl4kh5LAUPMa6JkgBXqv+On7SKlh3qNExd0bVINKcmQA7RXyKprCclnpyD2t7vqs4p0pX0ZxqZoxVM1rgJwiAIA7IB/176irxw+XGlOixxCN5p6TVel97varuYGyZNztFXLsT1GZmuG5PnzMWLa8WMv8PejjgT4+dLTK5V0eGeNAINjv/iiUPOZxXc206wnowSKyXRulMqBFY+RxObNeHQf0hK656nGMGntUqBq8Qx7P/RFtN92P50xK4iQQCMGrBht2d8tyfYuaJvpfnTLpmFI4CwCQt0gOcBqrLhGzGXIAVFeTXD4rX4Zl7EJ5iaBzgbx0DGOq5HLd/W++pwdE2dL8B50soVAIfpV0dqgbJzapeJ/RA+LKpwEAHAvlY+UpeX7GnikHOLrOyUu6s9QN3Sour5TLL5G3FwiWyMnzGs7JZKWxXX7+XJvLHODqU4mKYFKSNHpfe9Ul2i1qEkNUXgQAcFwm41Z1Wp7OcWTKAZAuVebPVX/EKq6W08wbC+XA9Q5Dxr1R/Z66euRxxOcN9u8MMd5xpfdn34TATEZU0qnjoW+UOnOivB1ExiJ5e4jx6nhuxrtD/i7ySsPbtzFHLu92TgTQ29nws4MBgKdviIiIyCJYKblAoZAajBawmdO+29rDT6scVwMhx2SPBQAsmr4MAJD5HdmjnjDrsFyHGtBq5MnXjWmyJ2W7dD4AoA2y0tLmCR85l+7lvkSKdbrO5w3CpXpO7R0RN2oz4z0HADBtnpo0KUuWbcfPl5eO6gFy+vSc7RLZw7bNvBwAcKJjAQDgWFM7AOD0Wfn7aGtxw90jfwN6kqXeG3iFP9KF6XvapPf0rNznbtXDbVXtvtEtL90eO1dOipbllL+DCbPkJcKhDtnD1rcVsM2TN+ILzVgKADh2thwAUFcvp53vVMv7fYE+p+l448VkCIVCCIVke/arNtauBiTXqnY4qXAeAGDGZWqSS1WtnjjrpFyHGW9ZGTNmyUkvbbPlZIj1PbIydq6rFUDv5IjpjpUSIiIisgRWSoYpsocSCMtyfWHv/Uv1oO2qouELynOKl46TY0XKp/wTAGD0yB4WDBmWQJacVr7VK89dNnTKEVPtahpyfU6777ZwbEFi9a2MeVUPuas9/BbnpzO7w557AvIGexMulnEvulROpmb45JgSOGXPudUr3/+yqQgA8M9G2YOqq5djSZqa5MjYrg6PWZUL+qP3oOnCDGaMgUdVSlq6VA86Ww50DRZeCwAomy8rnc5L5CSIdp8e6SqX02NIdIXkH6faAQBnzsqxKL3jhoIc4JoCum3pcVtd7TLOpxple/ybut0AJsh4T14sK+HOmbISqi/pR5Y8bvtzL5Kf75YV1CNqWvkmNQVA36pnrApYOlTGWCkhIiIiS2ClJE5CIRFRLQF0xaSlST7Tlwp3ueTrX5XLSwEri+QNuArVZGgOdW7S3abOZXpUpu6RPai2Tq96VBUTtz/Kd1M8RRtbons2hj18yvcWdQMv/Rkdr2MF6tLgTBlvp11XUuTvokWN6q9vljfmO9cme1Ad6saL+tbmHrffvPJHV0g4liSxoo0x6FRxbWyR8dFVlWaXHBNWkCkrX4WZsiKiJ93qbpftWV/F8WV9M4DeCklbs1yfW41ZCgZCjHOShO9XNfmdireOxzk1pkTTFeuGchnvSYVybFFmrjw+B4QcM3b6rIz3V23t8nmTXE9Lu2znun37fX0uAU/DCigrJURERGQJrJRcoL7nnnvPOUevmOgR9HosQovqCR/PkaP09VUbeiyC+Wm1Pq/K2D3qUZ/j7Onymb32QMQ4E/aoEiMUCgHqIiifoXtS+qoo2dPVE5ydbZZjQZzO8Kt0DJvsWZuTMqmKmF6PvrpH/150jIN+9pyTLRQS/cYY9KhKSYND9nj11Tj69g96WvJMFXenmk5ct+dWVelsVpUW3Z51j9zfp00zvskXOWGdbn+6Iqrp1ztUpaOhTFZE89Xx3BeUY1Ca1dU7jS3yeNCqjv863uYVdd6A+VtLR6yUEBERkSWwUhInoZDod7Mks2oRDJ9+Xr+uzyFm6B50RuT08fq21aGIz+tznbJn5vMG0zqzTqao55xVx8mlKmLmPBY94fPJ2GLcFkCvMxjx+9DxNueoCPaeZ2bPOTnCK6HhYwx0j9mcbl71eDNUpUTHWVfGdKVMx9XVEz4WKbJCEjn3TOR/U+KEH8/VsVU1Zw/kcdc8rusKmopbm7oaS1e+tR41v1S7rnCrSpvXoyskqhKa5mOIWCkhIiIiS2ClJI4i5zbozW7DM21vKPwcpeEe+Db0se570bcHnc6ZdSoMVDHRcbEZgbDPxJp5NzJWIuJcdmRso32GEqvv/o4cMxYKqR6vGvtj2MMrnXZVKdGVUB1XXRHRY1T8McaFRf43JUf/fR79OK6Xi6ygOZ3hf151BVXfI03PNWRWRPvMOZTOx3FWSoiIiMgSWClJgNiz8anKSCi8x6x7VINff+z7X6RjZp0q/StY0eOrxYpzrLkI0nlWRyuKNYuzrnzoCpkWOYYosoJqVjwjZuXlHYGt5XztPHLMoK6ARF5F2XvvJLmcroj2r7zFntE1HbBSQkRERJbASkkSxB5rot+/sNlY0zmrtoLB7v/hxpnxtZZEVchYIbG2WMdxHX8dTx1vPety//Uw7gNhpYSIiIgsgZWSJDpfBhzr6ozBfp6sgXFKD/GukPF3MzJExilW5WS460t3rJQQERGRJbBSYiHMmIlGLrbf9MS4xxcrJURERGQJTEqIiIjIEpiUEBERkSUwKSEiIiJLYFJCRERElsCkhIiIiCyBSQkRERFZApMSIiIisgQmJURERGQJTEqIiIjIEpiUEBERkSUwKSEiIiJLYFJCRERElsCkhIiIiCyBSQkRERFZApMSIiIisgQmJURERGQJTEqIiIjIEpiUEBERkSUwKSEiIiJLYFJCRERElsCkhIiIiCyBSQkRERFZApMSIiIisgQmJURERGQJTEqIiIjIEpiUEBERkSUwKSEiIiJLYFJCRERElsCkhIiIiCyBSQkRERFZApMSIiIisgQmJURERGQJjkR/gc/nw1NPPYX9+/ejsrISR48exde+9jU8+OCDyMjISPTXExER0QiR0EqJ3+/HzTffjFdffRXPP/88nnzySfzlL3/Btm3bUFNTg2AwGPOztftehre7NZGbRwPwdrfixMd/YgxSiDFIPcYg9RiD1Er2/k9oUvLLX/4S7733Hh555BFkZmYCAHJycvDII4/grbfewm9+85uYn6375BX+CFPI292KL/f+F2OQQoxB6jEGqccYpFay93/CkhKv14snn3wSubm5uPbaa8PeW758ObKzs7F582aEQqFEbQIRERGNIAlLSvbv34/29nbMmjULdrs97L2MjAxceumlOHPmDP7+978nahOIiIhoBEnYQNcjR44AAKqqqqK+X1VVhU8//RSHDh3C4sWLAQBCiLBlvK5Os2RkGBmwOTgwNlmCfq/5GPB5Urw16YkxSD3GIPUYg9QaaP+LgB+hkF+93/te5N/yoUhYUtLaKpOJ3NzcqO/r11taWszXXC5X2DL/+8r/TdDW0WD97U8PpHoT0h5jkHqMQeoxBqk1lP3vcrmQl5c3rO9J2OmbrKysAd/Xp3Q4poSIiIiABFZKKisrAfSvfmj69bKyMvO10tJSnD17FoC8SsdmsyVq84iIiChOhBDm3/XS0tJhrydhScmUKVMAAA0NDVHfr6+vBwDMnTvXfM0wDJSXlydqk4iIiChBhnvKpi+buJARKQMIBoOorKyE1+tFe3t7WNUjGAyiqKgI2dnZaGxshGFwtnsiIqJ0l7BswG63484770RnZyc+/vjjsPc++OADdHd3484772RCQkRERAASWCkBALfbjauuugo5OTl4//334XQ64fF4sHTpUgSDQfz1r39FdnZ2or6eiIiIRpCElimys7OxZ88eXHXVVVi9ejXuuecerF69Gl//+texZ88eJiQW5ff7sW/fvlRvxqgUCoXw0ksvYfPmzanelLQ13BjojhRRukpGG0j4uZPc3Fw89thj2LFjB5566ins2rULjz/+eNT5S3w+HzZv3ox169bhvvvuww033ICHH34Yfr8/0ZuZtrZt2wabzRb2z+l04sSJE+YyoVAIW7duxerVq3H//ffj5ptvxn333Yfu7u4UbvnIIoTAK6+8gjlz5uDb3/42Dh8+HHW5oe7rbdu2YdWqVfjxj3+MW265Bbfeeqt5BRuFG2wMAODgwYP92oXD4cAHH3zQb1nG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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 14:58:05 --- Order of the shear estimator: nnord=4\n", - "2023/09/01 14:58:05 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", - "2023/09/01 14:58:05 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input shear is: 0.020000\n", - "Estimated shear is: 0.020002\n" - ] - } - ], - "source": [ - "shear_value = 0.02\n", - "scale = 0.168\n", - "nx, ny = 64, 64\n", - "outDir='galaxy_basicCenter_psf60'\n", - "psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", - ").shear(e1=0.02, e2=-0.02)\n", - "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=nx, ny=ny, scale=scale).array\n", - "\n", - "# Four Galaxies to cancel spin-2 and spin-4 ansiotropies\n", - "# spin-2 is shape noise in diagnonal elements of shear response matrix\n", - "# spin-4 is shape noise in diagnonal and of-diagnoal elements of shear response matrix, \n", - "# but an order of magnitude smaller than spin-2\n", - "gname = \"g1-2222\"\n", - "seed = 212\n", - "gal_data = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"basic\",\n", - " psf_obj=psfInt,\n", - " gname=gname,\n", - " seed=seed,\n", - " ny=ny,\n", - " nx=nx*4,\n", - " scale=scale,\n", - " do_shift=False,\n", - " nrot=4,\n", - ")\n", - "\n", - "gal_data2 = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"random\",\n", - " psf_obj=psfInt,\n", - " gname=gname,\n", - " seed=seed,\n", - " ny=ny,\n", - " nx=nx*4,\n", - " scale=scale,\n", - " do_shift=False,\n", - " nrot=4,\n", - ")\n", - "\n", - "gal_data = gal_data * 0.7 + gal_data2 * 0.2\n", - "\n", - "plt.close()\n", - "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))\n", - "plt.show()\n", - "# Now we measure shear\n", - "rcut = 32\n", - "\n", - "# Force detection\n", - "indX = np.arange(int(nx//2), nx*4, nx)\n", - "indY = np.arange(int(ny//2), ny, ny)\n", - "inds = np.meshgrid(indY, indX, indexing=\"ij\")\n", - "coords = np.vstack(inds).T\n", - "\n", - "fpTask = fpfs.image.measure_source(psfData,pix_scale = scale, sigma_arcsec=0.7)\n", - "mms = fpTask.measure(gal_data, coords)\n", - "mms = fpTask.get_results(mms)\n", - "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", - "resp=np.average(ells['fpfs_R1E'])\n", - "shear=np.average(ells['fpfs_e1'])/resp\n", - "\n", - "print('Input shear is: %.6f' %shear_value)\n", - "print('Estimated shear is: %.6f' %shear)" - ] - }, - { - "cell_type": "markdown", - "id": "d1003ca1-c54e-4fa5-aa2b-3cd0772b6ccf", - "metadata": {}, - "source": [ - "# Simulation with extremely small pixel size" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "322971c4-a6c0-4cdc-8c1d-a245263b5fd6", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 14:58:06 --- Processing for g1-2222, and shears for four redshift bins are [0.02 0.02 0.02 0.02].\n", - "2023/09/01 14:58:06 --- Making Basic Simulation. ID: 2\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAACoCAYAAAAYch8sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAzklEQVR4nO29e5Dk1Hn+/+jo0reZnZllL+wPCCyLg8FgdsGQwgYKjCHGXIPLuAobHHBVMHEcOyb1jY1jYAM4BoNN4gDB2AEMNhSEMhi7uKTMshAHwuLituwuLARMDHsJ7O7sTE+3pKNzfn8cSS2ppb5N91y6309VV89IarVar3T0nPd9z3s0KaUEQRAEQRDEPIfN9gEQBEEQBEF0AxI1BEEQBEH0BSRqCIIgCILoC0jUEARBEATRF5CoIQiCIAiiLyBRQxAEQRBEX2DM9gF0ihAC7733HgCgWCxC07RZPiKCIAiCIJohpcTU1BQAYNGiRWCse/6VeStq3nvvPSxdunS2D4MgCIIgiA7Ztm0blixZ0rX9UfiJIAiCIIi+YN56aorFYvj3EZ+9CqN7HTSLRzO4TGx7A8/+7P/hqM9di+GlK2b7cAYSssHsQzaYfcgGs0+rNvDcKp744ecAxJ/l3WDeippoDo1uWDCs/CwezeCim7nwnWwwO5ANZh+ywexDNph9OrFBt/NhKfxEEARBEERfQKKGIAiCIIi+gEQNQRAEQRB9QV+ImtzQ2GwfwsCSG1qIFR87F7mhhbN9KAML2WD2IRvMPmSD2Wcu2ECTUspZ+/ZpUC6XMTQ0BAA48ev3U2IYQRAEQcwDuFPFb77/aQDA5OQkSqVS1/bdF54agiAIgiAIEjUEQRAEQfQFJGoIgiAIgugLSNQQBEEQBNEXzNuKwgRBEAQxX2EsXklXiHk5ZmfOQaKGIAiCIHpMUsQ0Wk8Cp3NI1BAEQRBEj2gmZhp9hsRN+1BODUEQBEH0gE4ETfLz093HoEGihiAIgiC6TDfFCAmb1iFRQxAEQRBdolfeFRI2rUGihiAIgiC6QK+FBwmb5pCoIQiCIIh5AgmbxtDoJ4IgCIKYBjMtNGh0VDYdeWo2bdqEz3zmM9hjjz1gWRYOPPBAXHPNNeCcx7YTQuC2227D2Wefja9//es47bTT8LWvfQ2Tk5Op+33wwQdx1lln4ZJLLsGnP/1pXHDBBdi2bVsnh0gQBEH4BHkeyRdB9Btte2p+//vf46Mf/SgOOeQQfPKTn8TmzZuxbt06fOMb38D69etx5513htt+8YtfxNq1a/G73/0OY2NjEELg9NNPx3HHHYcnn3wSQ0ND4bZXXHEFbrjhBrz44ovYd999AQBf+tKXcNRRR+GZZ57BsmXLuvBzCYIg+pt2xApVtZ0+06lDk6Td88+YRjZL0Lan5stf/jJ++tOf4sknn8TPfvYzPPvss7j//vuhaRruuusuvPTSSwCAO+64A7fffju++c1vYmxsTH0ZY7j22mvx/PPP4+///u/Dfa5duxarV6/Gl7/85VDQAMB3vvMdbN26FRdffPF0f2fPyeoJUa+IIIhe0612htqq3tGKjej8T5+2RM22bdtwwAEH4LTTTostP/vss3HGGWcAADZs2AAAuOaaawAAp59+emzbD33oQ1ixYgVuueUWjI+Px7YN9hGwcOFCHHvssXjwwQexadOmdg6153QiWEjkEATRLXrZllAb1RrttP3t7rdX++532hI1xWIRq1evTl134IEHAgD22msvvPPOO9i4cSOWLFmCPffcs27blStXolqt4tFHH4XrunjiiScAAIceemjqtgDwy1/+sp1D7RndvNlJ5BAE0Q4z3V5QuzQ9pmurVj9PdqrRVk7N8PBw5rqtW7di7733xtFHH43f/OY3AJTASSNY/tJLL+Gwww5DpVLB2NgYisViw22z8JwpQIrwf6abYIbZ/Ae1yUzWIKA4KUEQAbP50KK8jXTamaCyG981320guAvhuQAAz6327Hu6MqTbdV088sgj+N73vgfDMLBjxw4AQKlUSt0+WP7++++3tW0WT/zLebH/V3zsXBxw7Ofa+xFNoCF7BEHMNNQDn580FzzpQRIhROryYJ+NngdzXfj8z9P34o3f/rzn39MVUXPjjTfixBNPxPnnnw8AyOfzDbfXdR2AMmA722Zx/F/dCd2s7Yfp3fXSzHYvKWAuX7AEQXSPuSZm5voDc6Zpluybva5xxkd0fdozbz7bYf+jz8F+R/0ZAOWpSTojusW0Rc0LL7yANWvW4L777guXBcOvp6amUj8TLF+8eHFb22ahW0UYVmNx1ClzqXEh7w1B9D/dGMGUpBttxnx+oM42zcRM1mfaFTZz2UbMiKSFaL2bzGBaombz5s249tprcc8998CyrHD58uXLAQBbtmxJ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/9WvfiUByB/84Aezc2DznFNPPVU+9NBDsWX333+/1DRNApAvvviilFLK22+/XQKQP/rRj2Lbrl+/XgKQX/3qV8NlTzzxhAQgL7300ti277//vrQsS5555pk9+S39wG9/+1t5wQUXyMsvv7xO1JANeodt2/Lggw+WAORTTz2VuR3ZoHdceumlEkDdg/K5556TAOQvfvELKSXZoNusWbMmU9T06ly//vrr0jAMee6558a2dV1XLlu2TB5++OHS87y2fse8EjXValWOjo7KUqlU55FxHEcWCgW51157tX0SBp2tW7fGLsooZ555pgQg7777bimllAcddJAEILds2VK37YoVK2Q+n5e7du2SUkp5yimnSADymWeeqdv2xBNPlADkxo0bu/dD+oTdu3fLE044QY6Pj6eKGrJB77j55pslAHn88cc33I5s0Dv+6q/+SgKQTz/9dGz5s88+KwHIRx55REpJNug2jURNr871xRdfLAHIe+65p27bL37xizF7t8q8Gk4UTHz5oQ99KHPiy3feeQfPPffcLB3h/KRYLGL16tWp6w488EAAwF577YV33nkHGzduxJIlS7DnnnvWbbty5UpUq1U8+uijcF0XTzzxBADg0EMPTd0WAH75y19250f0EV/96lexevVqLFiwoG4d2aC33HrrrQDU+TrvvPOwzz77oFgs4iMf+Ug48ols0FtOPPFEAMBFF12E7du3h8tvuukmHHLIITjhhBPIBjNIL8/1Y489BiC9Bl2w7YMPPtjW8c4rUfPKK68AUA/YNILlL7300owdUz8wPDyMkZGR1HVbt27F3nvvjaOPPhrr168H0Nr5/5//+R9UKhWMjY2hWCw23Jaoce+992LPPffEsccem7qebNA7du7cieeffx6ASlT99re/jddffx2PPvooxsfHcc455+CWW24hG/SYs846CxdeeCFeeuklrFq1CnfddRcuvPBCAMCTTz4Jy7LIBjNIr861bdt44403MvfdqV3mzOinVqCJL2cW13XxyCOP4Hvf+x4Mw2jr/JOt2ucPf/gDbrnlFjzyyCOZ25ANesf//u//QkqJ0dFR3HnnneGIy2OPPRb//u//jpUrV+Kb3/wmbrzxRgBkg17y4x//GHvvvTeuvPJKnHfeeTjssMNw//33Y2xsDADdBzNJr851sG3W9p3aZV55ajqZ+JLonBtvvBEnnngizj//fADtnX+yVXsIIXDRRRfhX/7lXxqWJSAb9I7du3cDUCHXZE2sww47DAcffDB27txJNpgBbNvG9u3bcd5552HFihV48cUXsXLlSvziF78AQPfBTNKrc90ru8wrUdPJxJdEZ7zwwgtYs2YNbr/99nBZO+efbNUe119/PY444giMjY1h69at4SuoUbNjxw5s3bo1PF9kg+6TFYIN+OAHPwgA2LhxIwCyQa+YnJzECSecAMdxcMcdd2D9+vX4m7/5G0xOTuKcc87Bs88+S23RDNKrcz02NhYKm7TtO7XLvAo/0cSXM8PmzZtx7bXX4p577oFlWeHyoJpqK+d/yZIlKJVK2LlzJ2zbRi6Xy9yWAH79619j7dq1uPLKK1PXf/rTnwYAfOlLXwJANugFf/zHfwzTNLF169bU9UEDHBTiIxv0hh/84Ad45pln8NOf/hSAOu/f//73MTIygiuuuALXXHMNbrrpJgBkg5mgl+3+8uXLsXHjRmzZsgXDw8MNt22VeeWpOeKII7B48WK88sorkInZHTzPw/r167F48WJ85CMfmaUjnP9s3rwZV199NX7yk5/UueCXLl2KVatWYcuWLalxzhdeeAGGYeATn/gEGGM4+eSTIaUME82S2wLAKaec0pPfMd+49tpr8fDDD9e9Pve5zwEArrnmGjz88MO45JJLyAY9IpfL4YQTTsDbb7+dem6DkThHHHEE2aCHPP300wCAffbZJ7b8G9/4BvL5PDZs2EBt0QzSy3P9yU9+EgDw8ssvN922ZdoaAD4HuOyyyyQAuXbt2tjyxx57TAKQl1122Swd2fxn06ZN8vzzz5dTU1N1637729/KBx54QP7bv/2bBCDvuOOO2PpXX31VApDnn39+uOzxxx+XAOTq1atj2+7atUsWCgV53HHH9eaH9BFpdWrIBr0jKOJ58803x5Y7jiP32GMP+bGPfUxKSTboJRdccIEEINevX1+3bmRkRJ500klSSrJBt2lUp6ZX5/rVV1+VhmHICy64ILat53lyn332kcuXL297loB5J2qmpqbk4YcfLo855hhp27aUUspKpSKPPPJIefjhh6c+kInmbNy4US5btkyeccYZ8rOf/Wzs9alPfUruu+++0nEcKYSQp556qvzABz4QFlvyPE+eeeaZct99960rK3/xxRfLPfbYQ7799tvhsq985StybGxMbtq0aUZ/43wkTdSQDXrLeeedJ5cuXSrffPPNcNnNN98s99hjD7lhwwYpJdmgl2zYsEGOjIzIM844I5wKR0opf/7zn0vLsuSTTz4ppSQbdJu7775bApCf+cxn6tb18lxfc8010rIs+fzzz4fLrr/+epnP5+ucF60wZ2bpbodyuYyrrroKL7/8cjjx5aGHHorLLrsscygZkc2bb76Jo48+Gtu2bcvc5lvf+hauuuoqAGqixeuuuw5r1qzBgQceiLfffhvLli3DP/zDP6Qmdf3oRz/Cfffdh4MOOgjbt2+Hruu48sorwxwpIpsrrrgCq1evxpo1a2KzdJMNeocQAjfccAPuvfdefPCDHwRjDK7rYvXq1bHzRTboHW+99RauvvpqvPnmm9hvv/3AGMPk5CQuvfRSHHLIIeF2ZIPp8+abb+KBBx7AP/3TP+H3v/898vk8/u7v/g4f+9jHcNJJJ4Xb9fJc33///bjlllvwgQ98AJOTkxgfH8fll1+OVatWtf175qWoIQiCIAiCSDKvEoUJgiAIgiCyIFFDEARBEERfQKKGIAiCIIi+gEQNQRAEQRB9AYkagiAIgiD6AhI1BEEQBEH0BSRqCIIgCILoC0jUEARBEATRF5CoIQiCIAiiLyBRQxAEQRBEX0CihiAIgiCIvoBEDUEQBEEQfQGJGoIgCIIg+oL/HwBwImC3bnOcAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 14:58:06 --- Order of the shear estimator: nnord=4\n", - "2023/09/01 14:58:06 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", - "2023/09/01 14:58:06 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input shear is: 0.020000\n", - "Estimated shear is: 0.020001\n" - ] - } - ], - "source": [ - "shear_value = 0.02\n", - "scale = 0.168/4\n", - "nx, ny = 256, 256\n", - "outDir='galaxy_basicCenter_psf60'\n", - "psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", - ").shear(e1=0.02, e2=-0.02)\n", - "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=nx, ny=ny, scale=scale).array\n", - "\n", - "# Four Galaxies to cancel spin-2 and spin-4 ansiotropies\n", - "# spin-2 is shape noise in diagnonal elements of shear response matrix\n", - "# spin-4 is shape noise in diagnonal and of-diagnoal elements of shear response matrix, \n", - "# but an order of magnitude smaller than spin-2\n", - "\n", - "gname = \"g1-2222\"\n", - "gal_data = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"basic\",\n", - " psf_obj=psfInt,\n", - " gname=gname,\n", - " seed=2,\n", - " ny=ny,\n", - " nx=nx*4,\n", - " scale=scale,\n", - " do_shift=False,\n", - " nrot=4,\n", - " ngrid=nx,\n", - ")\n", - "plt.close()\n", - "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))\n", - "plt.show()\n", - "# Now we measure shear\n", - "rcut = 32\n", - "\n", - "# Force detection\n", - "indX = np.arange(int(nx//2), nx*4, nx)\n", - "indY = np.arange(int(ny//2), ny, ny)\n", - "inds = np.meshgrid(indY, indX, indexing=\"ij\")\n", - "coords = np.vstack([np.ravel(_) for _ in inds]).T\n", - "\n", - "fpTask = fpfs.image.measure_source(psfData,pix_scale = scale, sigma_arcsec=0.7)\n", - "mms = fpTask.measure(gal_data, coords)\n", - "mms = fpTask.get_results(mms)\n", - "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", - "resp=np.average(ells['fpfs_R1E'])\n", - "shear=np.average(ells['fpfs_e1'])/resp\n", - "\n", - "print('Input shear is: %.6f' %shear_value)\n", - "print('Estimated shear is: %.6f' %shear)" - ] - } - ], - "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.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/notebooks/4_noise_bias_Hessian.ipynb b/docs/examples/notebooks/4_noise_bias_Hessian.ipynb deleted file mode 100644 index 2a4267b..0000000 --- a/docs/examples/notebooks/4_noise_bias_Hessian.ipynb +++ /dev/null @@ -1,202 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "d03db39a-a790-4037-b03e-87635e2d1f36", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "%matplotlib inline\n", - "\n", - "\n", - "import os \n", - "import fpfs\n", - "import galsim\n", - "import numpy as np\n", - "import astropy.io.fits as pyfits\n", - "from astropy.visualization import simple_norm\n", - "\n", - "import matplotlib as mpl\n", - "import matplotlib.pylab as plt\n", - "from mpl_toolkits.axes_grid1 import ImageGrid\n", - "\n", - "mpl.rcParams['axes.linewidth'] = 2.0 #set the value globally" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "064170c1-b8a0-4cbe-870c-1f60222a39cc", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "scale = 0.168\n", - "seeing = 0.6\n", - "rcut = 32\n", - "psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=seeing, trunc=seeing * 4.0\n", - ").shear(e1=0.02, e2=-0.02)\n", - "psf_data = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=64, ny=64, scale=scale).array" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a5648c95-75d4-439d-b084-2bdbe22111ba", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "noise_fname = os.path.join(fpfs.__data_dir__, 'noiPows3.npy')\n", - "noi_var = 7e-3\n", - "noise_pow = (\n", - " np.load(noise_fname, allow_pickle=True).item()[\"%s\" % rcut]\n", - " * noi_var\n", - " * 100\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f43bae67-1df0-4677-a735-a6be21c15907", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/08/31 02:26:01 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/08/31 02:26:01 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/08/31 02:26:01 --- Unable to initialize backend 'tpu': INVALID_ARGUMENT: TpuPlatform is not available.\n", - "2023/08/31 02:26:01 --- Unable to initialize backend 'plugin': xla_extension has no attributes named get_plugin_device_client. Compile TensorFlow with //tensorflow/compiler/xla/python:enable_plugin_device set to true (defaults to false) to enable this.\n", - "2023/08/31 02:26:01 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", - "2023/08/31 02:26:01 --- Order of the shear estimator: nnord=4\n", - "2023/08/31 02:26:01 --- Shapelet kernel in configuration space: sigma= 0.4500 arcsec\n", - "2023/08/31 02:26:01 --- Detection kernel in configuration space: sigma= 0.4500 arcsec\n" - ] - } - ], - "source": [ - "noise_task = fpfs.image.measure_noise_cov(\n", - " psf_data,\n", - " nnord=4,\n", - " sigma_arcsec=0.45,\n", - ")\n", - "cov_mat = noise_task.measure(noise_pow)\n", - "\n", - "mms = pyfits.getdata(os.path.join(fpfs.__data_dir__, \"fpfs-cut32-0000-g1-0000.fits\"))\n", - "cov_mat2 = fpfs.catalog.fpfscov_to_imptcov(mms)\n", - "for elem1, elem2 in zip(cov_mat.flatten(), cov_mat2.flatten()):\n", - " if elem2 != 0.0:\n", - " np.testing.assert_array_almost_equal(\n", - " elem1,\n", - " elem2,\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c968d36d-128a-42d3-9185-bc8b46de4e03", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.close()\n", - "plt.imshow(cov_mat,vmin=-1.5,vmax=1.5)\n", - "plt.colorbar()\n", - "#fitsio.write('modes_cov_mat_paper3_045.fits')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "42a08c77-6eb5-4fe6-b03c-c49ead7636ae", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.close()\n", - "plt.imshow(cov_mat2,vmin=-1.5,vmax=1.5)\n", - "plt.colorbar()\n", - "#fitsio.write('modes_cov_mat_approx_paper3_045.fits')" - ] - } - ], - "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.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/notebooks/5_measure_shear_blended.ipynb b/docs/examples/notebooks/5_measure_shear_blended.ipynb deleted file mode 100644 index a59f3b9..0000000 --- a/docs/examples/notebooks/5_measure_shear_blended.ipynb +++ /dev/null @@ -1,147 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "26baf0fd-838c-424c-8904-6e1a29e317a8", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "%matplotlib inline\n", - "\n", - "\n", - "import os \n", - "import fpfs\n", - "import galsim\n", - "import numpy as np\n", - "import matplotlib.pylab as plt\n", - "from astropy.visualization import simple_norm\n", - "from mpl_toolkits.axes_grid1 import ImageGrid\n", - "import numpy.lib.recfunctions as rfn\n", - "\n", - "import matplotlib as mpl\n", - "mpl.rcParams['axes.linewidth'] = 2.0 #set the value globally" - ] - }, - { - "cell_type": "markdown", - "id": "a9b59ba8-fcc8-4345-bed6-72f3e6d4b91f", - "metadata": {}, - "source": [ - "# README\n", - "This notebook show the test on blended galaxies (center known)\n", - "+ we show a very extreme case --- shear estimation in extremely blended region!!\n", - "+ the center refers to the center of isotropy (at least free of spin-2 and spin-4)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "29f75a59-05c2-49b4-8db1-8b3ff74fe472", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/08/31 02:19:45 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/08/31 02:19:45 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/08/31 02:19:45 --- Unable to initialize backend 'tpu': INVALID_ARGUMENT: TpuPlatform is not available.\n", - "2023/08/31 02:19:45 --- Unable to initialize backend 'plugin': xla_extension has no attributes named get_plugin_device_client. Compile TensorFlow with //tensorflow/compiler/xla/python:enable_plugin_device set to true (defaults to false) to enable this.\n", - "2023/08/31 02:19:45 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", - "2023/08/31 02:19:46 --- Order of the shear estimator: nnord=4\n", - "2023/08/31 02:19:46 --- Shapelet kernel in configuration space: sigma= 0.4500 arcsec\n", - "2023/08/31 02:19:46 --- Detection kernel in configuration space: sigma= 0.4500 arcsec\n", - "2023/08/31 02:19:47 --- We have 16 galaxies in total, and each 4 are the same\n", - "2023/08/31 02:19:48 --- We have 16 galaxies in total, and each 4 are the same\n", - "2023/08/31 02:19:48 --- We have 16 galaxies in total, and each 4 are the same\n", - "2023/08/31 02:19:49 --- We have 16 galaxies in total, and each 4 are the same\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "multiplicative bias is: 0.0007\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "rcut=32\n", - "scale=0.168\n", - "ngrid=256\n", - "psfFWHM = 0.6\n", - "shear_value = 0.02\n", - "\n", - "beg = ngrid//2-rcut\n", - "end = beg+2*rcut\n", - "\n", - "psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", - ").shear(e1=0.02, e2=-0.02)\n", - "psfData = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=rcut*2, ny=rcut*2, scale=scale).array\n", - "\n", - "ig= 445\n", - "outDir='galaxy_cosmo250_psf60'\n", - "results=[]\n", - "fpTask = fpfs.image.measure_source(psfData, sigma_arcsec=0.45)\n", - "#print(fpTask.klim)\n", - "nrot=4\n", - "for _ in range(nrot):\n", - " rot2=np.pi/nrot*_\n", - " gal=fpfs.simutil.make_cosmo_sim(outDir,psf_obj = psfInt, gname='g1-2222',ind0=ig,ny=ngrid,nx=ngrid,\\\n", - " rfrac=0.2,do_write=False,return_array=True, rot2=rot2, shear_value=shear_value)\n", - " gal = gal[beg:end,beg:end]\n", - " modes= fpTask.measure(gal) \n", - " modes = fpTask.get_results(modes)\n", - " results.append(modes)\n", - " \n", - "plt.close()\n", - "plt.imshow(gal,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(gal,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.8))\n", - "mms = rfn.stack_arrays(results,usemask=False)\n", - "ells= fpfs.catalog.fpfs_m2e(mms,const=12)\n", - "resp=np.average(ells['fpfs_R1E'])\n", - "shear=np.average(ells['fpfs_e1'])/resp\n", - "print('multiplicative bias is: %.4f' %((shear-shear_value)/shear_value))" - ] - } - ], - "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.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/notebooks/6_detect_and_measure.ipynb b/docs/examples/notebooks/6_detect_and_measure.ipynb deleted file mode 100644 index 6433c2b..0000000 --- a/docs/examples/notebooks/6_detect_and_measure.ipynb +++ /dev/null @@ -1,177 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "d03db39a-a790-4037-b03e-87635e2d1f36", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "%matplotlib inline\n", - "\n", - "\n", - "import os \n", - "import fpfs\n", - "import galsim\n", - "import numpy as np\n", - "import matplotlib.pylab as plt\n", - "from astropy.visualization import simple_norm\n", - "from mpl_toolkits.axes_grid1 import ImageGrid\n", - "import numpy.lib.recfunctions as rfn\n", - "\n", - "import matplotlib as mpl\n", - "mpl.rcParams['axes.linewidth'] = 2.0 #set the value globally" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "367df615-c208-43fb-a9ee-131a7316d4ab", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/08/31 02:37:33 --- Processing for g1-2222, and shears for four redshift bins are [0.02 0.02 0.02 0.02].\n", - "2023/08/31 02:37:33 --- Making Basic Simulation. ID: 2\n" - ] - }, - { - "data": { - "text/plain": [ - "30" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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lk+RBI9RuSpnPng/rYSvoOLTVJbF5A1gisyjep9VG9QnmQchHW8tpOM+ZKyaTKUf3rLMYFlqRMPk+axIc0mltAmAqjKv/FuRzKtBOt56SMcpDUgQBEHMAyiymkV47yUYxte2D1E/4cmVJPPZhXS89SxUHSdj1SLOBWWZT5C8Ww/JvLUsNHlTGpAgCIKIPWSsCIIgiNhDxoogCIKIPWSsCIIgiNhDxoogCIKIPWSsCIIgiNhDxoogCIKIPWSsCIIgiNhDxoogCIKIPQ0Zq3379uGjH/0oenp6oCgK1q1bh3vuuQeGYQS2sywLjz76KD7ykY/gc5/7HD74wQ/iv/23/4bJycnI427btg0f+tCH8PnPfx5//Md/jE996lM4ffp0I5dIEARBnEPU3W7prbfewjvf+U5cfPHF+I//8T/iwIEDeOmll/ClL30Ju3fvxve//31v209/+tPYsWMHXnnlFXR1dcGyLNx444249tpr8fzzzyOXy3nb3nXXXbj//vuxa9curFixAgDwmc98BldccQVefPFFDAwMNOHrEgRBEPORuiOrz372s/je976H559/Hn/3d3+Hf/u3f8OPf/xjCIKAxx9/HK+++ioA4LHHHsN3v/td/M3f/A26urrYyUQR9957L373u9/hq1/9qnfMHTt2YPPmzfjsZz/rGSoA+PrXv45Tp05h06ZNM/2eBEEQxDymLmN1+vRprF27Fh/84AcD73/kIx/BTTfdBAB47bXXAAD33HMPAODGG28MbHvRRRdhzZo1eOihhzA+Ph7Y1j2GS3d3N6655hps27YN+/btq+dSCYIgiHOIuoxVJpPB5s2bIz9bt24dAGBwcBDHjx/H3r170d/fj8WLF0/ZdsOGDSiXy/j5z38OXdfx3HPPAQAuueSSyG0B4KmnnqrnUgmCIIhziLrGrNra2ip+durUKSxduhRXXnklfvGLXwBghisK9/1XX30Vb3vb21AqldDV1YVMJlN124rYNgy16L0UpQREOTHt9yEIgiBai2XosEzdf8OubamTpqxnpes6fvazn+Fv//ZvIcsyRkZGAADZbDZye/f94eHhurathDo5gl9886Pe6zVX3YK11/xJ/V+EIAiCmFUO/fZHOPibv697v6YYqwceeADvfe97ceuttwIAUqlU1e0lSQLAStvr2bYSyVw3rv7zh7zXokRRFUEQRBxZ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Zee3cWXuplw0bhFAQzcXtLwB0vFWQzoezawVWNx9991YunQpnn76aVx11VXo6uqK3O6ee+4BANx0002B97u7u3HNNddg27Zt2LdvHy644ILZutSGcH/QgHLoptexWHO2cWfkqyXDWwGUX2DNCimhYZjeXBPDsGDq0QOfcVWo2YRvTWNZtvdgE0XRSUz5Mledh6Eki4FFBK3QgxaAJ3N3XMbUowf3F5rMScdbD+l4ZWaldP2NN97AP/zDP2D79u248cYb0dfXhz/6oz/Crl27Atvpuo7nnnsOAHDJJZdMOY473vXUU0/NxmUSBEEQ84RZiay6urrw05/+FMeOHcOvfvUr/PjHP8YzzzyDZ599Fj/5yU/wwQ9+EABw6NAhlEoldHV1Bca1XAYHBwEAr776avUT2jYMtei9FKUERDnRvC9UhbAnxA+O2pZfRSWKZqBhJf+35wlZbEKgzXlG8837mW2ivH2+AMCVuSia3nYuYZnzcrc57588/CCk463lXNdxy9Bhmbr/hl3buWfFWPX09OD6668HANx222345je/iS9+8Yt4+OGH8fGPfxyHDh3CokWLMDLCml5ms9nI47jvDw8PVz2fOjmCX3zzo97rNVfdgrXX/EkzvkpNRCmXZZkQLX8hMxPwQvWKx+EUKXzs8N8LnfAD1F0ozpW5W0NVTeZ8uS7JvDqk463nXNXxQ7/9EQ7+5u/r3q8lk4I7OzuxdetWKIqCBx54AI8//jg+//nPI5VKVd1Pktig4XRdgJO5blz95w95r0WpNVEVQRAEUR+rr/wYVl7xYe/1rx/+S6iTI9Pu19IOFnfeeScefPBBHDp0CAC8kvRisRi5vft+X19f9QMLAuTk1DRiq+E9FNcD9bwhUUAtnffDXg55mpUJy9t9z7JM7nV9x4l6TfiQjreWc1HHRTk0TFOlWpynpcaqv78ffX19SKfT3utsNovR0VGoqopkMhnY/sQJ1s350ksvbeVlNgU+bcK/rmdfonaiHqKN7k/UBul4a1noOt7SRrblchlnz57Fxo0b2clFEddffz1s28bu3bunbL9z504AwA033NDKyyQIgiBixqwYK03TIseZHnnkEaxduxY333yz997tt98OAHj66acD246Pj2PHjh249tprI8va5wtuRU49/xEzg2TeWkjerWchyrxhY3Xq1CkAU8ebisUient70dXV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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "ngrid = 256\n", - "shear_value = 0.02\n", - "scale = 0.168\n", - "outDir='galaxy_basicCenter_psf60'\n", - "psfInt = galsim.Moffat(\n", - " beta=3.5, fwhm=0.6, trunc=0.6 * 4.0\n", - ").shear(e1=0.02, e2=-0.02)\n", - "psf_data = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=ngrid, ny=ngrid, scale=scale).array\n", - "\n", - "seed = 2\n", - "gname = \"g1-2222\"\n", - "gal_data = fpfs.simutil.make_isolate_sim(\n", - " gal_type=\"basic\",\n", - " psf_obj=psfInt,\n", - " gname=gname,\n", - " seed=seed,\n", - " ny=ngrid,\n", - " nx=ngrid,\n", - " scale=scale,\n", - " do_shift=False,\n", - " nrot=4,\n", - " shear_value=shear_value,\n", - ")\n", - "plt.close()\n", - "plt.imshow(gal_data,aspect='equal',cmap='RdYlBu_r',origin='lower',interpolation='None',\\\n", - " norm=simple_norm(gal_data,'asinh',asinh_a=0.1,min_cut=-0.01,max_cut=0.3))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "13a6fe6e-7db7-4375-8a29-64383d5d8f5e", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/08/31 02:37:34 --- Unable to initialize backend 'cuda': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/08/31 02:37:34 --- Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'\n", - "2023/08/31 02:37:34 --- Unable to initialize backend 'tpu': INVALID_ARGUMENT: TpuPlatform is not available.\n", - "2023/08/31 02:37:34 --- Unable to initialize backend 'plugin': xla_extension has no attributes named get_plugin_device_client. Compile TensorFlow with //tensorflow/compiler/xla/python:enable_plugin_device set to true (defaults to false) to enable this.\n", - "2023/08/31 02:37:34 --- No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n", - "2023/08/31 02:37:35 --- Order of the shear estimator: nnord=4\n", - "2023/08/31 02:37:35 --- Shapelet kernel in configuration space: sigma= 0.7000 arcsec\n", - "2023/08/31 02:37:35 --- Detection kernel in configuration space: sigma= 0.7000 arcsec\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(16, 2)\n", - "0.01999581389806102\n" - ] - } - ], - "source": [ - "rcut = 16\n", - "psf_data = psfInt.shift(0.5 * scale, 0.5 * scale).drawImage(nx=rcut*2, ny=rcut*2, scale=scale).array\n", - "\n", - "p1 = ngrid //2 - rcut\n", - "p2 = ngrid //2 - rcut\n", - "psf_data2 = np.pad(psf_data, ((p1, p1), (p2, p2)))\n", - "\n", - "fpTask = fpfs.image.measure_source(psf_data, sigma_arcsec=0.7)\n", - "coords = fpfs.image.detect_sources(\n", - " gal_data,\n", - " psf_data2,\n", - " sigmaf=fpTask.sigmaf,\n", - " sigmaf_det=fpTask.sigmaf_det,\n", - " thres=0.01,\n", - " thres2=-0.00,\n", - ")\n", - "print(coords.shape)\n", - "\n", - "\n", - "mms = fpTask.measure(gal_data, coords)\n", - "mms = fpTask.get_results(mms)\n", - "ells= fpfs.catalog.fpfs_m2e(mms,const=2000)\n", - "resp=np.average(ells['fpfs_R1E'])\n", - "shear=np.average(ells['fpfs_e1'])/resp\n", - "print(shear)" - ] - } - ], - "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.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/notebooks/7_simulate_beyond_affine.ipynb b/docs/examples/notebooks/7_simulate_beyond_affine.ipynb deleted file mode 100644 index edb27a6..0000000 --- a/docs/examples/notebooks/7_simulate_beyond_affine.ipynb +++ /dev/null @@ -1,215 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "b1d79f65-5e9f-4af9-8bde-0447b8152c9b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "%reload_ext autoreload\n", - "%autoreload 2\n", - "import os\n", - "import fpfs\n", - "import galsim\n", - "import numpy as np\n", - "import matplotlib.pylab as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "862f266c-770e-45e5-bac8-9228d2e8473f", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "class LensTransform1(object):\n", - " def __init__(self, gamma1, gamma2, kappa):\n", - " \"\"\"Initialize the transform object of 2D grids\n", - " Args:\n", - " gamma1 (float): the first component of lensing shear field\n", - " gamma2 (float): the second component of lensing shear field\n", - " kappa (float): the lensing convergence field\n", - " \"\"\"\n", - " self.s2l_mat = np.array(\n", - " [\n", - " [1 - kappa - gamma1, -gamma2], \n", - " [-gamma2, 1 - kappa + gamma1]\n", - " ]\n", - " )\n", - " return\n", - " \n", - " def transform(self, coords):\n", - " \"\"\"transform the center of pixels from lensed plane to pre-lensed plane\n", - " Args:\n", - " coords: coordinates (x, y) of the pixel centers [arcsec]\n", - " \"\"\"\n", - " return self.s2l_mat @ coords" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "8e028b35-c6b8-4948-ba7f-a9aa524e26e1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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PB7X9OnT0/3UAIA+pEe+B3TPPfdIkjZt2tQlvmfPHlVXV2vOnDkaMmRITzw1AKCP6HYCqqurk2Tf65k3b55KS0tVVlbW+YXTIAi0cOFCjRo1iglMAQCp3wP6+OOPtWHDBv385z+XJG3cuFEPPfSQrrzySl133XWSpEgkog0bNqi8vFyzZ8/W+PHjtW/fPhUXF2vt2rV/sgABAND/RcIwDH13okNDQ0PnJKWTLv0pRQgA0MckEs3auW2BJKm+vt75nVCJFVEBAJ6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF6QgAAAXpCAAABekIAAAF7Ee/oJWlpa9K//+q/aunWriouLVVVVpW984xv6x3/8R2VkZPT00wMAeqkeTUCtra268cYbdfToUVVWViorK0uNjY266qqr9Nvf/lYbN25ULBbryS4AAHqpHv0I7sc//rFef/11LVu2TFlZWZKk3NxcLVu2TL/85S/1b//2bz359ACAXqzHElBzc7NWrVqlvLw8XXPNNV22zZgxQzk5OSovL1cQBM59tLYcUe2nm9TacqSnuokzhLHsXxjP/sPnWPZYAtq6dasOHz6siy++OOljtoyMDF100UXav3+/fve73zn30dp6RHU1r6i1lZO8r2Ms+xfGs//wOZY9loDef/99SdLIkSPN7R3xnTt39lQXAAC9WI8VIRw6dEiSlJeXZ27viB88eNDcHiSOK5FoliQlEs0KglZFo1TNAUBvEwStCsO29n//4ff2qeixBJSdnX3S7R0fy514DygMw85/79rxQOe/P6xepcKiGSoa+e009xJnShC0dP4/kcIJit6J8ew/0jGWdftf1Wd1ryXFT/ydbumxBFRcXCxJamxsNLd3xIcNG5YUs3xW95r5AtG37K36me8uII0Yz/6jJ8aysbFR+fn5zu09dg/o/PPPlyTV1taa22tqaiRJkyZN6qkuAAB6sUj4p66RuimR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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "flux = 40\n", - "scale = 0.2\n", - "nn = 64\n", - "sersic_gal = galsim.Sersic(n=1.5, half_light_radius=1.5, flux=flux, trunc=4)\n", - "stamp = fpfs.simutil.Stamp(nn=nn, scale=scale)\n", - "gal_array = stamp.sample_galaxy(sersic_gal)\n", - "plt.close()\n", - "fpfs.pltutil.make_plot_image(gal_array)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "37172756-2c28-4267-acdb-7b27ee81ad09", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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6+qrr9btt9+upqamrOw8AGDwivf1G++9915dfvnlika/7GEjRozQ9ddf3/P1okWLtHXrVm3fvl3FxcUKgkCVlZWaOXOmtm3bpqKiohPbewDAoNWnBvTSSy+ptLRUzz//vHPMhg0btH79ej300EMqLi6WJEWjUa1atUpTpkzRsmXLtHr16j7tNABg8OvTW3BVVVU69dRT9corrzjfTlu5cqUkqbKysld98uTJmjBhgtauXatDhw715e4BAENAxg3otdde0xtvvKFHHnlEV1xxhUaNGqXrrrtOH330Uc+Y/fv3q6amRiUlJSotLU3bRnl5udra2rRly5YT23sAwKCVcQM666yz9OKLL2rNmjWaO3euIpGInnnmGZWXl+vtt9+WJO3evVuSNHbsWHMb3fVdu3b1db8BAINcxteAxo4d29NAbrnlFtXV1elv//Zv9dxzz+naa6/Vhx9+qMbGRklSYWGhuY3u+sGDB533E6RaJQU9X0cicUWjiUx3FwDQz4KgU2GY7Pp3qv24v6/PKbhup512mv793/9d1157rTZt2qTNmzcrLy/vmN8Ti8UkdcW0XXbvvLPX16WnXaWy0ytOdHcBAFl2oO5lNdS9mPH3nXADkrrSbXfffbc2bdqk//7v/9aMGTMkSS0tLeb47vro0aOd25xSfq+isdyeryORrOwqACDLxpx2hUrKLpPUdQb0f08gXLL2qj5lyhRJUn5+vsaPHy9Jqq+vN8fW1dVJkqZNm+bcXjSWr9hRDQgAMDB1XR7pvkRy/NGCrE3F88knn0iSLrjgAo0ZM0bTp09XfX29eZ1n586disfjmj17drbuHgAwyGTcgNra2hSGYVp97dq1mjVrli688EJJ0q233ipJ2rx5c69xe/bsUW1trebNm6eRI0f2ZZ8BAENARg3oo48+0imnnKKysjKtW7euJ0Tw6KOPatu2bXriiSd6xi5cuFAVFRWqqqrq+cBpEAS64447NG7cOFVXV2fxxwAADDYZNaCxY8dq0aJFikQi+tGPfqQLL7xQCxcuVBiGev3113t96DQSiWjjxo26+eabNXfuXP34xz/WnDlzVFZWprfffvuYAQQAwNAXCa330zxpbm7umaB02vk/I4QAAINMKtWuXdsXS5KampqcnweVspiCAwaSy5dcklaLx+0T/mgkYtejx1+POcb2p1Rg/+0YZFo3/gZN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hUrHfj/Le4mTJQg6ev6fyuABioGJ4zl0ZONYNux/SZ82vJxWP/o13dJvDaisrEyS1NLSYt7eXR89enRazfJpw8vmD4jBZW/Nz33vArKI4zl09MexbGlpUVFRkfP2frsGdOaZZ0qS6uvrzdvr6uokSdOmTeuvXQAADGCR8KvOkfoolUqprKxM7e3t+uKLLxSJRHrdNmLECOXn56uhoUHRaFcfDIJAn332maSuzwsd/T0AgIEvDMOed7NOPfXUntd3S7+9BReLxfQ3f/M3+sd//Ee9/vrrmjlzZs9tv/71r9XU1KTFixf32rloNKqSkpL+2iUAwElwrLfdjtZvZ0CS1NraqksuuUQFBQX6j//4D+Xk5KitrU0zZ85UKpXSb3/7W+Xn5/fX3QMABrB+bUCS1NzcrKqqKv3Xf/2XzjzzTH3wwQeaOnWq7r77bmdEGwDQv9577z298847isfjuu6667zsQ783IACD34cffqjy8nJt2rRJs2bN8r076KOWlhatXr1ajz76qK699lr99V//tcaPH+9tf/p9OYa+YAmHwam2tlZ33XWXfv3rX+vIkSMaP368br75Zv393/+94vEvH2pBEGjDhg3atGmTzjjjDO3Zs0cTJ05UVVXVcb93jJMnmUzqxhtvVFNTU9ptHMvBY8+ePaqoqFBubq5eeOEFTZgwIW3MST+e4QDT0dERXn755eGFF14YtrW1hWEYhs3NzeH06dPDK6+8Mkwmk573EJY//OEPYXFxcThjxoxw3rx54QUXXBBKCiWFN954Y6+xCxcuDMePHx82NjaGYRiGqVQqvOqqq8Lp06eHR44c8bH7OIa77747LC8vDyWFr732Wq/bOJaDw/vvvx+OHDkynDBhQvjpp586x53s4zngGtA999wTSgpffvnlXvUXXnghlBT+/Oc/97NjOKaKiopw06ZNvWrPPvtsGIlEQknhO++8E4ZhGK5fvz6UFD700EO9xu7evTuUFN52220na5dxHN54443wpptuCn/yk5+kNSCO5eDQ3t4ennvuuaGk8PXXX3eO83E8B1QDamtrC0eMGBEWFhamnel0dHSE+fn54dixY8NUKuVpD2FpaGhwPjivueaaUFL4xBNPhGEYhuecc04oKayvr08bO2HChDAvLy/84osv+nN3cZwOHz4cXnrppeGhQ4fMBsSxHBzWrFkTSgpnzZp1zHE+jme/LkiXqWws4YCTr6CgQMuXLzdvmzRpkqSu2c/379+vmpoalZSUqLS0NG1seXm52tratGXLln7dXxyf2267TcuXL9cpp5ySdhvHcvBYt26dJGnq1KmaP3++vvGNb6igoEDf+ta39PTTT0vydzwHVANiCYfBadiwYRo+fLh5W0NDg04//XRddNFF2r17tySO72Dw1FNPqbS0VDNmzDBv51gODp9//rl27NghqWv6s7vuuksffPCBtmzZokOHDmnu3Llau3att+M5oBrQiS7hgIGls7NTL730ku69917F43GO7yDxySefaO3atc6zWonn6mDx8ccfKwxDjRgxQo8++qjOOuss5ebmasaMGXrmmWckSUuXLvV2PAdUA+rLEg4YuB588EF997vf1YIFCyRxfAeDIAj0wx/+UA888MAxP/LAsRwcDh8+LKnrrfD/O+vMN7/5TZ177rn6/PPPvR3PAfU5oL4s4YCBaefOnXrttdd63mOWOL6Dwf3336/zzz9fxcXFamho6Kl3fwaosbFRDQ0NPceIYzmwud4a73b22WfrvffeU01NjaSTfzwHVANiCYehYe/evVq1apWefPJJ5eTk9NS7P3HN8R24Nm/erK1bt2rFihXm7T/4wQ8kSbfccoskjuVAd9ZZZymRSPT6Y+Jo3Wc+3R9KPdnHc0BNxdOXJRwwsOzdu1f33nuv1qxZY040e95552nHjh367LPPNGrUqF63nXPOOfrggw904MABjRw58mTtMo7y1ltv9VwPONpjjz2mxx9/XCtXrtS0adM0ceJEzZ07l2M5CHzve9/TK6+8ov/93/9NO06XX365Xn31Ve3du9fP8cxqqDsL7r777lBSuHXr1l71l19+OZQU3n333Z72DF+ltrY2XLBgQdjS0pJ22xtvvBFu3Lgx/OUvfxlKCjds2NDr9vfffz+UFC5YsOBk7S4yYH0OiGM5OHR/iH/NmjW96h0dHeGoUaPCiy++OAxDP8dzwDWglpaW8LzzzgsvueSSsL29PQzDMGxtbQ0vuOCC8LzzzjNf3OBfTU1NWFZWFv7Zn/1ZeP311/f676qrrgrHjRsXdnR0hEEQhBUVFeGf/Mmf9HyoLZVKhddcc004bty4Y04TAn+sBsSxHDzmz58fjhkzJvzoo496amvWrAlHjRoVvvfee2EY+jmeA+oakCTl5+dr27Ztqqqq0pw5c3qWcLj00kt19913s37QAPTRRx9p1qxZOnDggJ5//nlzzJ133tmTqtq4caOqq6s1d+5cTZo0Sfv27VNZWZnWrVvHRetBJBKJcCwHifXr12v16tW64YYbdPbZZysajaqzs1NvvfVWz7V3H8dzQF0DAgB8fXAlHwDgBQ0IAOAFDQgA4AUNCADgBQ0IAOAFDQgA4AUNCADgBQ0IAOAFDQgA4AUNCADgBQ0IAOAFDQgA4AUNCADgBQ0IAODF/w8YjkCd7U8IGgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "kappa = 0.0\n", - "gamma1 = 0.2\n", - "gamma2 = 0.0\n", - "lens = LensTransform1(gamma1=gamma1, gamma2=gamma2, kappa=kappa)\n", - "\n", - "stamp = fpfs.simutil.Stamp(nn=nn, scale=scale)\n", - "stamp.transform_grids(lens)\n", - "gal_array2 = stamp.sample_galaxy(sersic_gal)\n", - "plt.close()\n", - "fpfs.pltutil.make_plot_image(gal_array2)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "758ac343-e0d6-423d-9e09-d4d262eaf20a", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023/09/01 15:06:27 --- Order of the shear estimator: nnord=4\n", - "2023/09/01 15:06:27 --- Shapelet kernel in configuration space: sigma= 0.5200 arcsec\n", - "2023/09/01 15:06:27 --- Detection kernel in configuration space: sigma= 0.5200 arcsec\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "input shear: 0.02000\n", - "measured shear: 0.02003\n" - ] - } - ], - "source": [ - "kappa = 0.0\n", - "gamma1 = 0.02\n", - "gamma2 = 0.0\n", - "lens = LensTransform1(gamma1=gamma1, gamma2=gamma2, kappa=kappa)\n", - "stamp = fpfs.simutil.Stamp(nn=64, scale=scale)\n", - "stamp.transform_grids(lens)\n", - "gal_array3 = stamp.sample_galaxy(sersic_gal)\n", - "psf_array = np.zeros(stamp.shape)\n", - "psf_array[nn // 2, nn // 2] = 1\n", - "\n", - "coords = np.array([nn//2, nn//2])\n", - "fpTask = fpfs.image.measure_source(psf_array, pix_scale = scale, sigma_arcsec=0.52)\n", - "mms = fpTask.measure(gal_array3, coords)\n", - "mms = fpTask.get_results(mms)\n", - "ells= fpfs.catalog.fpfs_m2e(mms,const=20)\n", - "resp=np.average(ells['fpfs_R1E'])\n", - "shear=np.average(ells['fpfs_e1'])/resp\n", - "print(\"input shear: %.5f\" % gamma1)\n", - "print(\"measured shear: %.5f\" % shear)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abbeae0e-be3e-495b-834d-3e5a1fe31f1e", - "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.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/examples/notebooks/README.md b/docs/examples/notebooks/README.md deleted file mode 100644 index 94cedaf..0000000 --- a/docs/examples/notebooks/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Examples in Nobebook - -## Isolated Galaxies -+ [example 1](./1_simulate_noise_image.ipynb) shows how to simulate pure noise - with Galsim. - -+ [example 2](./2_simulate_galaxy_basic.ipynb) shows how to simulate galaxies - with Galsim. - -+ [example 3](./3_measure_shear.ipynb) shows how to measure shear from - noiseless galaxy images (fix center of isotropy). - -+ [example 4](./4_noise_bias_Hessian.ipynb) shows the Hessian matrix for - noise bias correction. - -## Blended Galaxies - -+ [example 5](./5_measure_shear_blended.ipynb) shows shear estimation on - blinded galaxies (fix center of isotropy). diff --git a/docs/examples/notebooks/data b/docs/examples/notebooks/data deleted file mode 120000 index 8b0e097..0000000 --- a/docs/examples/notebooks/data +++ /dev/null @@ -1 +0,0 @@ -../../../fpfs/data \ No newline at end of file diff --git a/fpfs/simutil.py b/fpfs/simutil.py index d62beed..99d6bd2 100644 --- a/fpfs/simutil.py +++ b/fpfs/simutil.py @@ -447,13 +447,11 @@ def _galsim_round_sersic(n, sersic_prec): return gal -def _basic_gals( +def _fft_gals( seed, - gal_image, magzero, psf_obj, scale, - bigfft, cat_input, ngalx, ngaly, @@ -465,29 +463,26 @@ def _basic_gals( shifts, ): ngal = ngalx * ngaly + bigfft = galsim.GSParams(maximum_fft_size=10240) logging.info("Making Basic Simulation. ID: %d" % (seed)) gal0 = None + gal_image_list = [] + for _ in range(len(rot2)): + gal_image = galsim.ImageF(ngalx * ngrid, ngaly * ngrid, scale=scale) + gal_image.setOrigin(0, 0) + gal_image_list.append(gal_image) for i in range(ngal): # boundary ix = i % ngalx iy = i // ngalx - b = galsim.BoundsI( - ix * ngrid, - (ix + 1) * ngrid - 1, - iy * ngrid, - (iy + 1) * ngrid - 1, - ) # each galaxy irot = i % nrot if irot == 0: del gal0 ig = i // nrot ss = cat_input[ig] - # gal0 = cosmos_cat.makeGalaxy(gal_type='parametric',\ - # index=ss['index'],gsparams=bigfft) gal0 = generate_cosmos_gal(ss, truncr=-1.0, gsparams=bigfft) - # accounting for zeropoint difference between COSMOS HST and HSC - # HSC's i-band coadds zero point is 27 + # E.g., HSC's i-band coadds zero point is 27 flux = 10 ** ((magzero - ss["mag_auto"]) / 2.5) # flux_scaling= 2.587 gal0 = gal0.withFlux(flux) @@ -496,35 +491,44 @@ def _basic_gals( rescale = np.random.uniform(0.95, 1.05) gal0 = gal0.expand(rescale) # rotate by 'ang' - ang = (np.random.uniform(0.0, np.pi * 2.0) + rot2) * galsim.radians + ang = (np.random.uniform(0.0, np.pi * 2.0)) * galsim.radians gal0 = gal0.rotate(ang) else: assert gal0 is not None ang = np.pi / nrot * galsim.radians # update gal0 gal0 = gal0.rotate(ang) - # shear distortion - gal = gal0.shear(g1=g1, g2=g2) - # shift to (ngrid//2,ngrid//2) - # the random shift is relative to this point - gal = galsim.Convolve([psf_obj, gal], gsparams=bigfft) - gal = gal.shift(0.5 * scale, 0.5 * scale) - if shifts is not None: - gal = gal.shift(shifts[i, 0], shifts[i, 1]) - # draw galaxy - sub_img = gal_image[b] - gal.drawImage(sub_img, add_to_image=True) - del gal, b, sub_img - return + for irot, rr in enumerate(rot2): + # base rotation + gal_tmp = gal0.rotate(rr * galsim.radians) + # shear distortion + gal = gal_tmp.shear(g1=g1, g2=g2) + del gal_tmp + # shift to (ngrid//2,ngrid//2) + # the random shift is relative to this point + gal = galsim.Convolve([psf_obj, gal], gsparams=bigfft) + gal = gal.shift(0.5 * scale, 0.5 * scale) + if shifts is not None: + gal = gal.shift(shifts[i, 0], shifts[i, 1]) + b = galsim.BoundsI( + ix * ngrid, + (ix + 1) * ngrid - 1, + iy * ngrid, + (iy + 1) * ngrid - 1, + ) + sub_img = gal_image_list[irot][b] + gal.drawImage(sub_img, add_to_image=True) + del gal, b, sub_img + gc.collect() + outcome = [img.array for img in gal_image_list] + return outcome -def _random_gals( +def _mc_gals( seed, - gal_image, magzero, psf_obj, scale, - bigfft, cat_input, ngalx, ngaly, @@ -536,22 +540,21 @@ def _random_gals( shifts, npoints=30, ): + bigfft = galsim.GSParams(maximum_fft_size=10240) ud = galsim.UniformDeviate(seed) # use galaxies with random knots # we only support three versions of small galaxies logging.info("Making galaxies with Random Knots.") gal0 = None + gal_image_list = [] + for _ in range(len(rot2)): + gal_image = galsim.ImageF(ngalx * ngrid, ngaly * ngrid, scale=scale) + gal_image.setOrigin(0, 0) + gal_image_list.append(gal_image) + for iy in range(ngaly): for ix in range(ngalx): - b = galsim.BoundsI( - ix * ngrid, - (ix + 1) * ngrid - 1, - iy * ngrid, - (iy + 1) * ngrid - 1, - ) - sub_img = gal_image[b] - # ii = iy * ngalx + ix irot = ii % nrot if irot == 0: @@ -568,7 +571,7 @@ def _random_gals( rescale = np.random.uniform(0.95, 1.05) galp = galp.expand(rescale) # rotate by 'ang' - ang = (np.random.uniform(0.0, np.pi * 2.0) + rot2) * galsim.radians + ang = (np.random.uniform(0.0, np.pi * 2.0)) * galsim.radians galp = galp.rotate(ang) gal0 = galsim.RandomKnots( npoints=npoints, @@ -581,21 +584,32 @@ def _random_gals( assert gal0 is not None ang = np.pi / nrot * galsim.radians gal0 = gal0.rotate(ang) - # Shear the galaxy - gal = gal0.shear(g1=g1, g2=g2) - gal = galsim.Convolve([psf_obj, gal], gsparams=bigfft) - gal = gal.shift(0.5 * scale, 0.5 * scale) - if shifts is not None: - gal = gal.shift(shifts[ii, 0], shifts[ii, 1]) - # Draw the galaxy image - gal.drawImage(sub_img, add_to_image=True) - del gal, b, sub_img - gc.collect() - return + for irot, rr in enumerate(rot2): + # base rotation + gal_tmp = gal0.rotate(rr * galsim.radians) + # shear distortion + gal = gal_tmp.shear(g1=g1, g2=g2) + del gal_tmp + gal = galsim.Convolve([psf_obj, gal], gsparams=bigfft) + gal = gal.shift(0.5 * scale, 0.5 * scale) + if shifts is not None: + gal = gal.shift(shifts[ii, 0], shifts[ii, 1]) + # Draw the galaxy image + b = galsim.BoundsI( + ix * ngrid, + (ix + 1) * ngrid - 1, + iy * ngrid, + (iy + 1) * ngrid - 1, + ) + sub_img = gal_image_list[irot][b] + gal.drawImage(sub_img, add_to_image=True) + del gal, b, sub_img + gc.collect() + outcome = [img.array for img in gal_image_list] + return outcome def make_isolate_sim( - gal_type, ny, nx, psf_obj, @@ -604,19 +618,19 @@ def make_isolate_sim( catname=None, scale=0.168, magzero=27.0, - rot2=0, + rot2=None, shear_value=0.02, ngrid=64, nrot=nrot_default, mag_cut=None, do_shift=None, - single=None, + gal_type="mixed", npoints=30, + sim_method="fft", ): """Makes basic **isolated** galaxy image simulation. Args: - gal_type (str): galaxy tpye ("random" or "basic") ny (int): number of pixels in y direction nx (int): number of pixels in y direction psf_obj (PSF): input PSF object of galsim @@ -625,12 +639,15 @@ def make_isolate_sim( catname (str): input catalog name scale (float): pixel scale magzero (float): magnitude zero point [27 for HSC] - rot2 (float): additional rotation angle + rot2 (list): additional rotation angle shear_value (float): shear distortion amplitude ngrid (int): stampe size nrot (int): number of rotations mag_cut (float): magnitude cut of the input catalog do_shift (bool): whether do shfits + gal_type (float): galaxy morphology (mixed, sersic, or bulgedisk) + npoints (int): number of random points when + sim_method (str): galaxy tpye ("fft" or "mc") """ np.random.seed(seed) @@ -648,12 +665,17 @@ def make_isolate_sim( cat_input = pyfits.getdata(catname) if mag_cut is not None: cat_input = cat_input[cat_input["mag_auto"] < mag_cut] - if single is True: + if gal_type == "mixed": + logging.info("Creating Mixed galaxy profiles") + elif gal_type == "sersic": logging.info("Creating single Sersic profiles") cat_input = cat_input[cat_input["use_bulgefit"] == 0] - if single is False: - logging.info("Creating double Sersic profiles") + elif gal_type == "bulgedisk": + logging.info("Creating Bulge + Disk profiles") cat_input = cat_input[cat_input["use_bulgefit"] != 0] + else: + raise ValueError("Do not support gal_type=%s" % gal_type) + ntrain = len(cat_input) if not ntrain > ngal: raise ValueError("mag_cut is too small") @@ -662,36 +684,33 @@ def make_isolate_sim( cat_input = cat_input[inds] # Get the shear information - shear_list = np.array([-shear_value, 0.0, shear_value]) - shear_list = shear_list[[eval(i) for i in gname.split("-")[-1]]] + shear_list = np.array([-shear_value, shear_value, 0.0]) + shear_const = shear_list[eval(gname.split("-")[-1])] if gname.split("-")[0] == "g1": - g1 = shear_list[0] + g1 = shear_const g2 = 0.0 elif gname.split("-")[0] == "g2": g1 = 0.0 - g2 = shear_list[0] + g2 = shear_const else: raise ValueError("cannot decide g1 or g2") logging.info( - "Processing for %s, and shears for four redshift bins are %s." - % (gname, shear_list) + "Processing for %s, and shear is %s." + % (gname, shear_const) ) - gal_image = galsim.ImageF(nx, ny, scale=scale) - gal_image.setOrigin(0, 0) - bigfft = galsim.GSParams(maximum_fft_size=10240) if do_shift: shifts = np.random.uniform(low=-0.5, high=0.5, size=(ngal, 2)) * scale else: shifts = None - if gal_type == "basic": - _basic_gals( + if rot2 is None: + rot2 = [0.0] + if sim_method == "fft": + return _fft_gals( seed, - gal_image, magzero, psf_obj, scale, - bigfft, cat_input, ngalx, ngaly, @@ -702,14 +721,12 @@ def make_isolate_sim( nrot, shifts, ) - elif gal_type == "random": - _random_gals( + elif sim_method == "mc": + return _mc_gals( seed, - gal_image, magzero, psf_obj, scale, - bigfft, cat_input, ngalx, ngaly, @@ -722,8 +739,7 @@ def make_isolate_sim( npoints, ) else: - raise ValueError("gal_type should cotain 'basic' or 'random'!!") - return gal_image.array + raise ValueError("sim_method should cotain 'basic' or 'random'!!") def make_noise_sim( diff --git a/fpfs/tests/test_0detection.py b/fpfs/tests/test_0detection.py index 7275c46..e6a550c 100644 --- a/fpfs/tests/test_0detection.py +++ b/fpfs/tests/test_0detection.py @@ -18,7 +18,8 @@ def simulate_gal_psf(scale, ind0, rcut): gname = "g1-0000" gal_data = fpfs.simutil.make_isolate_sim( - gal_type="basic", + gal_type="mixed", + sim_method="fft", psf_obj=psf_obj, gname=gname, seed=ind0, @@ -26,7 +27,7 @@ def simulate_gal_psf(scale, ind0, rcut): nx=256, scale=scale, do_shift=False, - ) + )[0] # force detection at center indx = np.arange(32, 256, 64) diff --git a/fpfs/tests/test_2nd_order_shearest.py b/fpfs/tests/test_2nd_order_shearest.py index 3182dc6..bd537d7 100644 --- a/fpfs/tests/test_2nd_order_shearest.py +++ b/fpfs/tests/test_2nd_order_shearest.py @@ -51,7 +51,8 @@ def simulate_gal_psf(scale, ind0, rcut): psf_data = psf_data[32 - rcut : 32 + rcut, 32 - rcut : 32 + rcut] gname = "g1-0000" gal_data = fpfs.simutil.make_isolate_sim( - gal_type="basic", + gal_type="mixed", + sim_method="fft", psf_obj=psf_obj, gname=gname, seed=ind0, @@ -59,7 +60,7 @@ def simulate_gal_psf(scale, ind0, rcut): nx=256, scale=scale, do_shift=False, - ) + )[0] # force detection at center indx = np.arange(32, 256, 64) diff --git a/fpfs/tests/test_4th_order_shearest.py b/fpfs/tests/test_4th_order_shearest.py index 94d1dbf..3b26c0b 100644 --- a/fpfs/tests/test_4th_order_shearest.py +++ b/fpfs/tests/test_4th_order_shearest.py @@ -53,7 +53,8 @@ def simulate_gal_psf(scale, ind0, rcut, gname): ) psf_data = psf_data[32 - rcut : 32 + rcut, 32 - rcut : 32 + rcut] gal_data = fpfs.simutil.make_isolate_sim( - gal_type="basic", + gal_type="mixed", + sim_method="fft", psf_obj=psf_obj, gname=gname, seed=ind0, @@ -61,7 +62,7 @@ def simulate_gal_psf(scale, ind0, rcut, gname): nx=256, scale=scale, do_shift=False, - ) + )[0] # force detection at center indx = np.arange(32, 256, 64) @@ -73,10 +74,10 @@ def simulate_gal_psf(scale, ind0, rcut, gname): def get_multiplicative_bias(scale, ind0, rcut): - gnames = ["g1-0000", "g1-2222"] + gnames = ["g1-0", "g1-1"] mm_names = { - "g1-2222": "p", - "g1-0000": "n", + "g1-1": "p", + "g1-0": "n", } mms = dict() for gname in gnames: