diff --git a/galflow/python/tfutils/transformer.py b/galflow/python/tfutils/transformer.py index 7f7bcb1..acf50a0 100644 --- a/galflow/python/tfutils/transformer.py +++ b/galflow/python/tfutils/transformer.py @@ -132,7 +132,8 @@ def generate(starts, stops, nums, name="grid_generate"): def sample(image, warp, - resampling_type = ResamplingType.BILINEAR, + # resampling_type = ResamplingType.BILINEAR, + resampling_type = "bernsteinquintic", border_type = BorderType.ZERO, pixel_type = PixelType.HALF_INTEGER, name = "sample"): @@ -189,14 +190,15 @@ def sample(image, warp_y = tf.clip_by_value(warp_y, 0.0, height - 1.0) warp = tf.stack((warp_x, warp_y), axis=-1) - return tfa_image.resampler(image, warp) + return tfa_image.resampler(image, warp, resampling_type) def perspective_transform( image, transform_matrix, output_shape = None, - resampling_type = ResamplingType.BILINEAR, + # resampling_type = ResamplingType.BILINEAR, + resampling_type = "bernsteinquintic", border_type = BorderType.ZERO, pixel_type = PixelType.HALF_INTEGER, name = "perspective_transform", diff --git a/notebooks/ConvExample.ipynb b/notebooks/ConvExample.ipynb new file mode 100644 index 0000000..2313a07 --- /dev/null +++ b/notebooks/ConvExample.ipynb @@ -0,0 +1,1210 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "32e96a1e", + "metadata": {}, + "source": [ + "# Implementation of GalFlow convolutions\n", + "\n", + "Through an example\n", + "\n", + "- Galaxy image, stamp size of 64 pixels\n", + "- PSF image, stamp size of ? pixels" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b0cf8c97", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "source": [ + "%pylab inline\n", + "import tensorflow as tf\n", + "import galflow\n", + "lp = galflow.lightprofiles\n", + "\n", + "import math\n", + "_pi = math.pi\n", + "\n", + "import galsim" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7228ee77", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(56, 56)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "scale = 0.03 # in arcsec\n", + "\n", + "#cosmos_cat = galsim.COSMOSCatalog()\n", + "gal = cosmos_cat.makeGalaxy(0, gal_type='parametric')\n", + "#gal = cosmos_cat.makeGalaxy(0)\n", + "gal_stepk = gal.stepk\n", + "gal_image = gal.drawImage(scale=scale)\n", + "print(gal_image.array.shape)\n", + "imshow(gal_image.array)\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29c37a85", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "eb42f4e5", + "metadata": {}, + "outputs": [], + "source": [ + "gal_tf = tf.convert_to_tensor(gal_image.array, tf.float32)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "247a9e1d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.1323142046204118\n", + "psf_image: (188, 188)\n", + "psf_kmage: (947, 947)\n" + ] + } + ], + "source": [ + "beta = 3.5\n", + "fwhm = .9\n", + "psf = galsim.Moffat(beta=beta, fwhm=.9)\n", + "\n", + "psf_q = 0.025\n", + "psf_shape = galsim.Shear(q=psf_q, beta=0.*galsim.degrees)\n", + "psf.shear(psf_shape)\n", + "\n", + "psf_stepk = psf.stepk\n", + "print(psf_stepk)\n", + "psf_image = psf.drawImage(scale=scale).array\n", + "psf_kimage = psf.drawKImage(scale=scale).array\n", + "print('psf_image:', psf_image.shape)\n", + "print('psf_kmage:', psf_kimage.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5b3dc5c5", + "metadata": {}, + "outputs": [], + "source": [ + "conv = galsim.Convolve([gal, psf])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0c231083", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "194\n", + "54\n", + "194\n" + ] + } + ], + "source": [ + "def get_good_image_size(pixel_scale, stepk):\n", + " \"\"\"\n", + " setpk is assumed to be known for a given profile\n", + " \"\"\"\n", + " Nd = 2. * math.pi / (pixel_scale * stepk)\n", + "\n", + " # Make it an integer\n", + " # (Some slop to keep from getting extra pixels due to roundoff errors in calculations.)\n", + " N = int(math.ceil(Nd*(1.-1.e-12)))\n", + "\n", + " # Round up to an even value\n", + " N = 2 * ((N+1) // 2)\n", + " return N \n", + "\n", + "conv_stepk = 1/tf.math.sqrt(1/tf.math.pow(gal_stepk, 2) + 1/tf.math.pow(psf_stepk, 2))\n", + "N = get_good_image_size(scale, conv_stepk)\n", + "print(get_good_image_size(scale, conv_stepk))\n", + "print(gal.getGoodImageSize(pixel_scale=scale))\n", + "\n", + "image_N = gal_image.array.shape[0]\n", + "N = max(N, image_N)\n", + "print(N)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "15379970", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tf.Tensor(256.0, shape=(), dtype=float32)\n", + "256\n" + ] + } + ], + "source": [ + "\"\"\"\n", + "int goodFFTSize(int input)\n", + "{\n", + "if (input<=2) return 2;\n", + "// Reduce slightly to eliminate potential rounding errors:\n", + "double insize = (1.-1.e-5)*input;\n", + "double log2n = std::log(2.)*std::ceil(std::log(insize)/std::log(2.));\n", + "double log2n3 = std::log(3.)\n", + " + std::log(2.)*std::ceil((std::log(insize)-std::log(3.))/std::log(2.));\n", + "log2n3 = std::max(log2n3, std::log(6.)); // must be even number\n", + "int Nk = int(std::ceil(std::exp(std::min(log2n, log2n3))-1.e-5));\n", + "return Nk;\n", + "\"\"\"\n", + "def good_fft_size(N):\n", + " N = tf.convert_to_tensor(N, tf.float32)\n", + " if N<=2:\n", + " return 2\n", + " else:\n", + " insize = (1.-1.e-5)*N\n", + " log2n = tf.math.log(2.) * tf.math.ceil(tf.math.log(N)/tf.math.log(2.))\n", + " log2n3 = tf.math.log(3.) + tf.math.log(2.) * tf.math.ceil((tf.math.log(N)-tf.math.log(3.))/tf.math.log(2.))\n", + " log2n3 = tf.reduce_max([log2n3, tf.math.log(6.)])\n", + " Nk = tf.math.ceil(tf.math.exp(tf.reduce_min([log2n, log2n3])-1.e-5))\n", + " return Nk\n", + "\n", + "N = good_fft_size(N)\n", + "print(good_fft_size(N))\n", + "print(gal_image.good_fft_size(N))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "de619fcf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "128\n", + "tf.Tensor(256.0, shape=(), dtype=float32)\n" + ] + } + ], + "source": [ + "print(gal.gsparams.minimum_fft_size) # minimum and none is specified\n", + "\n", + "N = tf.cast(tf.reduce_max([N, 128]), tf.float32)\n", + "print(N)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "79e1bfc2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tf.Tensor(0.8181231, shape=(), dtype=float32)\n" + ] + } + ], + "source": [ + "# Fourier scale of target image\n", + "\n", + "dk = 2.*_pi / (N * scale)\n", + "print(dk)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "8c118151", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "galsim\n", + "260.97069431559277\n", + "14.189052477454839\n", + "tf.Tensor(14.189053, shape=(), dtype=float32)\n" + ] + } + ], + "source": [ + "# get maxk for each inpout\n", + "print('galsim')\n", + "print(gal._maxk)\n", + "print(psf._maxk)\n", + "\n", + "gal_maxk = gal._maxk\n", + "psf_maxk = psf._maxk\n", + "\n", + "conv_maxk = tf.reduce_min([gal_maxk, psf_maxk])\n", + "print(conv_maxk)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "d7fe8ed3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tf.Tensor(256.0, shape=(), dtype=float32)\n" + ] + } + ], + "source": [ + "if N*dk/2 > conv_maxk:\n", + " Nk = N\n", + "else:\n", + " # There will be aliasing. Make a larger image and then wrap it.\n", + " Nk = int(np.ceil(conv_maxk/dk)) * 2\n", + " \n", + "print(Nk)\n", + "\n", + "assert Nk < gal.gsparams.maximum_fft_size" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "3f2bc150", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "galsim.BoundsI(0,128,-128,127)\n" + ] + } + ], + "source": [ + "from galsim.bounds import _BoundsI\n", + "from galsim.image import Image, ImageCF, ImageCD\n", + "bounds = _BoundsI(0,Nk//2,-Nk//2,Nk//2-1)\n", + "kimage = ImageCF(bounds=bounds, scale=dk)\n", + "print(bounds)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "8b838838", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(56, 29)\n", + "(188, 95)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "print(tf.signal.rfft2d(gal_image.array).shape)\n", + "print(tf.signal.rfft2d(psf_image).shape)\n", + "\n", + "#imshow(abs(tf.signal.fftshift(tf.signal.rfft2d(gal_image.array), axes=0)))\n", + "imshow(abs(tf.signal.fftshift(tf.signal.rfft2d(tf.signal.fftshift(gal_image.array)), axes=0)))\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "8337eccc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(56, 29)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "tf_gf = tf.signal.fftshift(tf.signal.rfft2d(tf.signal.fftshift(gal_image.array)), axes=0)\n", + "#tf_gf = tf.signal.fftshift(tf.signal.fft2d(tf.signal.fftshift(tf.cast(gal_image.array, tf.complex64))), axes=0)\n", + "\n", + "subplot(121)\n", + "imshow(tf.math.abs(tf_gf))\n", + "colorbar()\n", + "subplot(122)\n", + "imshow(tf.math.angle(tf_gf))\n", + "colorbar()\n", + "\n", + "print(tf.math.abs(tf_gf).shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "7c1cbcb3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(56, 29)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "nk_test = 56\n", + "bounds_test = _BoundsI(0,nk_test//2,-nk_test//2,nk_test//2-1)\n", + "galsim_gal = gal.drawKImage(bounds=bounds_test, scale=2.*np.pi/(nk_test*scale), recenter=False).array\n", + "abs_sim = abs(galsim_gal)\n", + "\n", + "figure(figsize=(15,4))\n", + "subplot(141)\n", + "imshow(abs_sim)\n", + "title('abs_tf')\n", + "colorbar()\n", + "print(abs_sim.shape)\n", + "\n", + "subplot(142)\n", + "imshow(tf.math.real(galsim_gal))\n", + "title('real galsim')\n", + "colorbar()\n", + "\n", + "subplot(143)\n", + "imshow(tf.math.imag(galsim_gal))\n", + "title('imag galsim')\n", + "colorbar()\n", + "\n", + "subplot(144)\n", + "imshow(tf.math.real(galsim_gal) - abs_sim)\n", + "title('abs_tf - real_galsim')\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "d12ad2b1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "imk_tf = tf.signal.fftshift(tf.signal.rfft2d(tf.signal.fftshift(gal_image.array)), axes=0)\n", + "imk_real = tf.math.real(imk_tf)\n", + "imk_imag = tf.math.imag(imk_tf)\n", + "imk_test = tf.math.sqrt(imk_real**2 + imk_imag**2)\n", + "\n", + "figure(figsize=(10,4))\n", + "subplot(131)\n", + "imshow(imk_test)\n", + "colorbar()\n", + "subplot(132)\n", + "imshow(tf.cast(tf.math.abs(galsim_gal), tf.float32))\n", + "colorbar()\n", + "subplot(133)\n", + "imshow(imk_test/tf.reduce_sum(imk_test) - tf.cast(tf.math.abs(galsim_gal)/tf.reduce_sum(tf.math.abs(galsim_gal)), tf.float32))\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "05a1d762", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# comparing real part\n", + "real_gs = tf.math.real(gal.drawKImage(bounds=bounds_test, scale=2.*np.pi/(nk_test*scale), recenter=False).array)\n", + "\n", + "figure(figsize=(10,4))\n", + "subplot(131)\n", + "imshow(imk_real)\n", + "title('real tf')\n", + "colorbar()\n", + "subplot(132)\n", + "imshow(real_gs)\n", + "title('real galsim')\n", + "colorbar()\n", + "subplot(133)\n", + "imshow(imk_real-tf.cast(real_gs, tf.float32))\n", + "title('diff')\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c884dfa", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6811d100", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37697fae", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17cbc00e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5de46d4d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "457bee0d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "d41822ec", + "metadata": {}, + "outputs": [], + "source": [ + "bounds = _BoundsI(0,Nk//2,-Nk//2,Nk//2-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "22a7c3c6", + "metadata": {}, + "outputs": [], + "source": [ + "imk_gs = gal.drawKImage(bounds=bounds, scale=2.*np.pi/(Nk*scale), recenter=False).array\n", + "abs_sim = abs(imk_gs)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "bd6f0fc8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(256, 129)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "imshow(abs(abs_sim))\n", + "print(abs(abs_sim).shape)" + ] + }, + { + "cell_type": "markdown", + "id": "e93c5dc7", + "metadata": {}, + "source": [ + "Interpolate in the Fourier domain" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "c9d8a3f1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(56, 29)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAAD6CAYAAABK3B65AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAOeElEQVR4nO2dXYxcZRnH///Zne2WbQttwaZpiSWhajBGSBqUwI1gFcEIFwYhxmDSpDeaQCCRot6YcAExQb0wmkYIXCAfERBEFGuFEBKDLR9iW+wHBEJrYRX6sS392N15vJjTnXnf3Z1zZuaZM2dm/r/kZOc95+w5b+G/z/s/z/ueZ2hmEKJdSt3ugOgPJCThgoQkXJCQhAsSknBBQhIutCUkkleT3E1yH8lNXp0SvQdbzSORHAKwB8B6APsBbANwk5ntmu93RrjARjHW0v1E9zmJ4zhtpzjXseE2rnspgH1m9jYAkHwEwHUA5hXSKMbwBV7Vxi0HBM75/6p1nJLOL9vWeY+1M7StAvBeXXt/si+A5EaS20lun8SpNm4nikzHzbaZbTazdWa2rowFnb6d6BLtDG0HAJxf116d7BPeQ1O7NNOfFofBdiLSNgBrSV5AcgTAjQCebuN6oodpOSKZ2RTJ7wN4DsAQgPvNbKdbz0RP0c7QBjN7FsCzTn0RPUxbQhooiuZ7CoamSIQLEpJwQUISLsgjnUEeqC0UkYQLEpJwQUISLgyOR5IH6iiKSMIFCUm40D9DW5GGLqb8fVoln37kiCKScEFCEi5ISMKF3vJIefqgNJ+T57V7wFMpIgkXJCThgoQkXCi2R/L0RJ30PJ0m7nsBPVMP/9cVRUJCEi5ISMKF7nqkAnsgljqXs7JK/5WkVkQSLkhIwgUJSbiQv0fy8kVNeqJOep5mifvStGcqYF5JEUm4ICEJF1KFRPJ+kuMkd9TtW0ZyC8m9yc+lne2mKDpZItIDAK6O9m0CsNXM1gLYmrT9YWn+bdapbLg1dW3vLfWfmdLXTmIWbi2S+q80sxcBfBTtvg7Ag8nnBwFc33IPRF/Q6lPbCjM7mHx+H8CK+U4kuRHARgAYxVkt3k4UnbbNtlW/OmDemKjyyINBqxHpA5IrzewgyZUAxl1600RuKNVLpF2rk14kzgsVMO/jTasR6WkANyefbwbwlE93RK+S5fH/YQB/B/BpkvtJbgBwN4D1JPcC+HLSFgNM6tBmZjfNc0jfTiNm6MJcm5MPatIDscPvxAVfVxb3ewA8k6ZIhAsSknBBQhIuFOq9tlmeqJEPSvNApZS/kWY9U8o8FCs1n9Pq17v2MopIwgUJSbiQ79DGJh/pGw1f8dDV5NCWlg5IHZ4q0SN73f0YHbO4K918HalDw64iknBBQhIuSEjChS6/st2EJwJC3zM0lHJuE6mEuboWT1tEvsZiDzY93dT126KAUyqKSMIFCUm4ICEJF3L2SAy8Codij9Q4N8R6XxR5pFmeqBQdTyP2HRbnmSIPND140yCNUEQSLkhIwgUJSbiQq0ciIl8Ue6I4NxR7qOHh+c+Nr5W2jCSeD6tEnijOC83KQxUvlzMvOSxrUUQSLkhIwgUJSbiQ83okBt6GcS6oHHVnOGyzvj0c55FS1ifFPiHySDw9GZ4+a81QG54ovlazc2UFnFuLUUQSLkhIwgUJSbiQu0divQ+KPVC5HJ4/Eratvp3mkWKmwrxQ7Ilmzd1Ntb6+qNnXkdy/UqILr0MpIgkXJCThQpb6SOeTfJ7kLpI7Sd6S7FeJZDFDFo80BeB2M3uV5GIAr5DcAuC7qJZIvpvkJlRLJN/R8EokUB6pNSMPhAUjQdMWhjUnK6O17lq58XojToYep3QyPG7RXBojyzSLWWu4U9oDRpbyyAfN7NXk8wSANwGsgkokizqaemojuQbAJQBeRsYSyUF55NKiljsqik1ms01yEYDHAdxqZkfrjzUqkVxfHnmktLCtzorikikikSyjKqKHzOyJZHfzJZJLBEdrvmeWBxobDdrTY6GHmh6t+SIbDv8GSpOhRxk6Ea33jjzTrDf/49xLynttDUmZW0vNG/XA3FpMlqc2ArgPwJtmdm/dIZVIFjNkiUiXA/gOgH+RfD3Z90NUSyI/lpRLfhfADR3poegJspRHfglzjAQJKpEsAOQ911YqwRbXvthmeknoiU6fHeaRTi8Jc0XTIzU9l6KpsPKxUOul0419BqdT8kCRZ5o1f5Z2PE8KUGpQUyTCBQlJuCAhCRdy9Ug2XMLksppHOnlemEc6sTzU9ekl89d5HDka+oLhaC6NUa6G8bv68Xtt8fqj+L22tLm1+vsNQN4oRhFJuCAhCRdyHdoq5RKOr6o98h9bHer4xIpwCJheEIb8kSO1oa58PLw2p6J2NCWCeGltPJRVwrbF6QE97jdEEUm4ICEJFyQk4UKuHmlqFDj8qZp2T64Nn9nPXT4RtA9PhOuX7NjYzOehU+G1h0/ES2tDT8TJ0ETZVGSq2nncB4JHePfH/QJ6ohhFJOGChCRckJCEC7l6pNLYNBas+2im/a01bwTHj06Fy0r+cPRzQbs8UcsjjUyEnmb4eOSJIo+EyCMh8kiFzhv1AIpIwgUJSbggIQkXcvVIq0YP4a7P/n6mvbb8YXD8noNfDdpT42Ee6ezxmk9ZcCj0OKVjp4M2T4Vti+faYs80Hc+1xXmlNl4x6sO8UYwiknBBQhIuSEjChVw90tklw7Vn1ebXHplYHRx/8e0Lg/bid0KdnzVe8zXlI+E8XenjaK1t5JFm543S5tbaKGncB0tnm0URSbggIQkXJCThQq4e6UiF+OPHtfm0n+5ZHxwv7zoraC9+L/QxCz6sLUIqTTT2RDYZfSVEvP6ozbk015LGPZg3ilFEEi5ISMKFLIW2Rkn+g+Q/k/LIP0n2X0DyZZL7SD5KciTtWqJ/yeKRTgG40syOJSUAXyL5JwC3AfiZmT1C8tcANgD4VaMLHTi5FD/eef1M+8Try4LjS98K8y8L3w8XZg8f/njmM6O8kZ2KFnHnOZc2x/mNz+19TxSTpTyymdmxpFlONgNwJYDfJftVHnnAyeSRSA4lZf/GAWwB8BaAw2Z25s9+P6q1t+f63Y0kt5PcPnXk+FyniD4gk5DMbNrMLgawGsClAD6T9Qb15ZGHzx5L/wXRkzSVRzKzwySfB3AZgHNIDidRaTWAA2m/Xzk+hFPba74o9kSL/hP6nPKhE0G73hdZh+fSBqEUjSdZntrOI3lO8nkhgPWofo3E8wC+mZym8sgDTpaItBLAgySHUBXeY2b2DMldAB4heReA11CtxS0GlCzlkd9A9ftH4v1vo+qXhMh3rm34JHDOnpq3GIvzRB9GnujYx0HbTtadPxnPraXkjdK+IqKT9GHeKEZTJMIFCUm4kO8r25MVjB2oPcLPerw/HraDoQwIyvc1PZSlPM5rCqQ9FJGECxKScEFCEi7k6pE4VUH5o7qlIE14IiBaLtusJ+r0FMgA+qJ6FJGECxKScEFCEi7k+w2SlQo4UfNIdjpaCtLIEwGBL+q6JxIBikjCBQlJuCAhCRdy9kjWeClIXKK40StE3fZEA543ilFEEi5ISMIFCUm4kK9HMgt8UVtriuSJCoUiknBBQhIuSEjChdw9UuCL2lhTJE9ULBSRhAsSknBBQhIu5J9H6tSaInmirqKIJFyQkIQLmYWU1JF8jeQzSVvlkcUMzUSkW1Ct1HaGe1Atj3whgEOolkduiKG65ujMhoqFm1WCzSoWbOHFwnObxizcRFtkrWq7GsC1AH6TtAmVRxZ1ZI1IPwfwAwBn/vSXo4XyyJN2cq5TRB+QpRjp1wGMm9krrdygvjxymaPpvyB6kix5pMsBfIPkNQBGASwB8Au0UB4ZsIZ+pqPzZ/JBHSXLV0jcaWarzWwNgBsB/M3Mvg2VRxZ1tJNHugPAbST3oeqZVB55gGm28v8LAF5IPrddHllDWf+gzLZwQUISLkhIwoWcl5F0cCmIPFFXUUQSLkhIwgUJSbiQr0eKkSfqGxSRhAsSknBBQhIu5O+R5Iv6EkUk4YKEJFyQkIQL3c0jxcgD9SyKSMIFCUm4ICEJF7o81yZP1C8oIgkXJCThgoQkXOjCXJt8UT+iiCRckJCECxKScEFCEi5ISMKFTE9tJN8BMAFgGsCUma0juQzAowDWAHgHwA1mdqgz3RRFp5mI9CUzu9jM1iXtTQC2mtlaAFuTthhQ2hnarkO1mi2gqrYDT1YhGYC/kHyF5MZk3wozO5h8fh/Airl+Mahqi1NtdlcUlayZ7SvM7ADJTwDYQvLf9QfNzEjOmbI2s80ANgPAEi5TWrtPyRSRzOxA8nMcwJOolvz7gORKAEh+jneqk6L4ZKmzPUZy8ZnPAL4CYAeAp1GtZguoqu3Ak2VoWwHgyeq3RmAYwG/N7M8ktwF4jOQGAO8CuKFz3RRFJ1VISfXaz8+x/0MAV3WiU6L3UGZbuCAhCRckJOGChCRckJCECxKScEFCEi5ISMIFCUm4ICEJFyQk4YKEJFyQkIQLEpJwQUISLkhIwgVajmVmSP4X1dWU5wL4X243bo6i9q0I/fqkmZ0314FchTRzU3J73YuWhaKofStqv86goU24ICEJF7olpM1dum8Witq3ovYLQJc8kug/NLQJFyQk4UKuQiJ5NcndJPeR7Go9JZL3kxwnuaNu3zKSW0juTX4u7VLfzif5PMldJHeSvKVI/ZuL3IREcgjALwF8DcBFAG4ieVFe95+DBwBcHe0rSvGwKQC3m9lFAL4I4HvJf6ui9G82ZpbLBuAyAM/Vte8EcGde95+nT2sA7Khr7wawMvm8EsDubvavrl9PAVhf1P6ZWa5D2yoA79W19yf7ikSm4mF5QnINgEsAvIwC9u8MMtvzYNU/+67mRkguAvA4gFvN7Gj9sSL0r548hXQAwPl17dXJviJRmOJhJMuoiughM3uiaP2LyVNI2wCsJXkByREAN6JarKtIFKJ4GKvFqO4D8KaZ3Vt3qBD9m5OcTeM1APYAeAvAj7psYB8GcBDAJKp+bQOA5ag+De0F8FcAy7rUtytQHbbeAPB6sl1TlP7NtWmKRLggsy1ckJCECxKScEFCEi5ISMIFCUm4ICEJF/4PsaQ1gs9hNIAAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "abs_gal = abs(tf.signal.fftshift(tf.signal.rfft2d(gal_image.array), axes=0))\n", + "imshow(abs_gal)\n", + "print(abs_gal.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "99516ad0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 56, 29, 1)\n" + ] + } + ], + "source": [ + "#abs_gal = tf.pad(abs_gal, paddings)\n", + "abs_gal = tf.reshape(abs_gal, (1,56,29,1))\n", + "print(abs_gal.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1a04f3ad", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "471f3646", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wrap = tf.expand_dims(tf.stack(tf.meshgrid(tf.linspace(1.,29.-1, 129), tf.linspace(0.,56.-1, 256)), axis=-1), 0)\n", + "wrap" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "80b77b7a", + "metadata": {}, + "outputs": [], + "source": [ + "from galflow.python.tfutils.transformer import sample" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "d6c1d27d", + "metadata": {}, + "outputs": [], + "source": [ + "interp = sample(abs_gal, wrap)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "bb3d97f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "interp.shape\n", + "subplot(121)\n", + "imshow(interp[0,...,0])\n", + "colorbar()\n", + "subplot(122)\n", + "imshow((interp[0,...,0]-abs_sim))\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "47e4967e", + "metadata": {}, + "outputs": [], + "source": [ + "# it looks like there is a little shift..." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "b3a0f654", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "imshow(tf.signal.fftshift(gal_image.array))" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "f42bffaa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gal_cplx = tf.reshape(tf.signal.fftshift(tf.signal.rfft2d(tf.signal.fftshift(gal_image.array)), axes=0), (1,56,29,1))\n", + "imshow(abs(gal_cplx)[0,...,0])" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "43304a59", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "subplot(121)\n", + "imshow(tf.math.real((gal_cplx)[0,...,0]))\n", + "subplot(122)\n", + "imshow(tf.math.imag((gal_cplx)[0,...,0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "c2cdc54f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "interp_real = sample(tf.math.real(gal_cplx), wrap)\n", + "interp_imag = sample(tf.math.imag(gal_cplx), wrap)\n", + "interp_cplx = tf.complex(interp_real, interp_imag)\n", + "#imshow(tf.math.abs(interp_cplx)[0,...,0])\n", + "imk_gf = interp_cplx[0,...,0]\n", + "imshow(tf.math.angle(imk_gf))" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "10166526", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "imk_gs = gal.drawKImage(bounds=bounds, scale=2.*np.pi/(Nk*scale), recenter=False).array\n", + "subplot(121)\n", + "imshow(tf.math.real(imk_gs))\n", + "colorbar()\n", + "\n", + "subplot(122)\n", + "imshow(tf.math.imag(imk_gs))\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "55f8abc8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gal_f = tf.signal.fftshift(tf.signal.rfft2d(tf.signal.fftshift(gal_image.array)), axes=0)\n", + "\n", + "subplot(121)\n", + "imshow(tf.math.real(gal_f))\n", + "colorbar()\n", + "\n", + "subplot(122)\n", + "imshow(tf.math.imag(gal_f))\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "0ff80d4d", + "metadata": {}, + "outputs": [], + "source": [ + "interp_real = sample(tf.expand_dims(tf.expand_dims(tf.math.real(gal_f), 0), -1), wrap)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "b6d59935", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "imshow(tf.cast(tf.math.real(imk_gs), tf.float32)-interp_real[0,...,0])\n", + "colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8ca109b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "gems", + "language": "python", + "name": "gems" + }, + "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.6.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}