From 898c747a9a9ea7e5ae4786ccb7d2924ed568c59d Mon Sep 17 00:00:00 2001 From: John Parejko Date: Tue, 27 Dec 2022 12:24:23 -0600 Subject: [PATCH] Remove examples directory --- examples/.gitignore | 1 - examples/SConscript | 21 - examples/Show Camera.ipynb | 206 -- examples/Spline.cc | 76 - examples/analyticKernel.cc | 96 - examples/cameraGeomExample.py | 27 - examples/catTables.py | 39 - examples/chebyshev1Function.cc | 52 - examples/convolveLinear.cc | 118 -- examples/countMaskBits.py | 104 - examples/decoratedImage.cc | 76 - examples/deltaFunctionKernels.cc | 68 - examples/ellipsePixelRegion.py | 40 - examples/estimateBackground.py | 114 -- examples/fixedKernel.cc | 56 - examples/footprintSet.py | 116 -- examples/forEachPixel.cc | 104 - examples/gaussianFunction.cc | 39 - examples/image.cc | 203 -- examples/image1.cc | 115 -- examples/image2.cc | 131 -- examples/imageAddSegFault.py | 35 - examples/imageBackground.cc | 109 - examples/imageDisplay.ipynb | 336 ---- examples/imageStatistics.cc | 165 -- examples/integrateCartesian.cc | 157 -- examples/integrateExample.cc | 156 -- examples/integratePolar.cc | 104 - examples/lanczosFunction.cc | 64 - examples/lanczosKernel.cc | 56 - examples/mask.cc | 92 - examples/maskIo2.cc | 78 - examples/maskedImage.cc | 181 -- examples/maskedImage1.cc | 117 -- examples/maskedImage2.cc | 129 -- examples/maskedImageFitsIo.cc | 52 - examples/minimize.cc | 149 -- examples/polynomialFunction.cc | 52 - examples/repeatability.ipynb | 2298 ---------------------- examples/rowColumnStats.cc | 108 - examples/showCamera.py | 137 -- examples/simpleConvolve.cc | 83 - examples/simpleStacker.cc | 97 - examples/simpleStacker.py | 55 - examples/spatialCellExample.cc | 173 -- examples/spatiallyVaryingConvolve.cc | 114 -- examples/splineInterpolate.cc | 71 - examples/statistics.cc | 70 - examples/statisticsConstructor.py | 65 - examples/statisticsMaskedImage.py | 79 - examples/statisticsNaN.py | 72 - examples/testSpatialCell.cc | 40 - examples/testSpatialCell.h | 88 - examples/ticket647.cc | 42 - examples/timeConvolve.cc | 141 -- examples/timeImageAddition.cc | 75 - examples/timeImageIterators.cc | 149 -- examples/timeLeastSquares.py | 94 - examples/timePixelAccess.cc | 113 -- examples/timePixelAccessGil.cc | 105 - examples/timeSpatiallyVaryingConvolve.py | 243 --- examples/timeWarpExposure.py | 198 -- examples/timeWcs.cc | 91 - examples/tunnelDs9 | 98 - examples/warpExposure.py | 86 - examples/warpWithTransform.py | 48 - examples/wcsTest.cc | 133 -- 67 files changed, 9000 deletions(-) delete mode 100644 examples/.gitignore delete mode 100644 examples/SConscript delete mode 100644 examples/Show Camera.ipynb delete mode 100644 examples/Spline.cc delete mode 100644 examples/analyticKernel.cc delete mode 100755 examples/cameraGeomExample.py delete mode 100755 examples/catTables.py delete mode 100644 examples/chebyshev1Function.cc delete mode 100644 examples/convolveLinear.cc delete mode 100755 examples/countMaskBits.py delete mode 100644 examples/decoratedImage.cc delete mode 100644 examples/deltaFunctionKernels.cc delete mode 100644 examples/ellipsePixelRegion.py delete mode 100644 examples/estimateBackground.py delete mode 100644 examples/fixedKernel.cc delete mode 100755 examples/footprintSet.py delete mode 100644 examples/forEachPixel.cc delete mode 100644 examples/gaussianFunction.cc delete mode 100644 examples/image.cc delete mode 100644 examples/image1.cc delete mode 100644 examples/image2.cc delete mode 100755 examples/imageAddSegFault.py delete mode 100644 examples/imageBackground.cc delete mode 100644 examples/imageDisplay.ipynb delete mode 100644 examples/imageStatistics.cc delete mode 100644 examples/integrateCartesian.cc delete mode 100644 examples/integrateExample.cc delete mode 100644 examples/integratePolar.cc delete mode 100644 examples/lanczosFunction.cc delete mode 100644 examples/lanczosKernel.cc delete mode 100644 examples/mask.cc delete mode 100644 examples/maskIo2.cc delete mode 100644 examples/maskedImage.cc delete mode 100644 examples/maskedImage1.cc delete mode 100644 examples/maskedImage2.cc delete mode 100644 examples/maskedImageFitsIo.cc delete mode 100644 examples/minimize.cc delete mode 100644 examples/polynomialFunction.cc delete mode 100644 examples/repeatability.ipynb delete mode 100644 examples/rowColumnStats.cc delete mode 100755 examples/showCamera.py delete mode 100644 examples/simpleConvolve.cc delete mode 100644 examples/simpleStacker.cc delete mode 100755 examples/simpleStacker.py delete mode 100644 examples/spatialCellExample.cc delete mode 100644 examples/spatiallyVaryingConvolve.cc delete mode 100644 examples/splineInterpolate.cc delete mode 100644 examples/statistics.cc delete mode 100755 examples/statisticsConstructor.py delete mode 100755 examples/statisticsMaskedImage.py delete mode 100755 examples/statisticsNaN.py delete mode 100644 examples/testSpatialCell.cc delete mode 100644 examples/testSpatialCell.h delete mode 100644 examples/ticket647.cc delete mode 100644 examples/timeConvolve.cc delete mode 100644 examples/timeImageAddition.cc delete mode 100644 examples/timeImageIterators.cc delete mode 100644 examples/timeLeastSquares.py delete mode 100644 examples/timePixelAccess.cc delete mode 100644 examples/timePixelAccessGil.cc delete mode 100755 examples/timeSpatiallyVaryingConvolve.py delete mode 100755 examples/timeWarpExposure.py delete mode 100644 examples/timeWcs.cc delete mode 100755 examples/tunnelDs9 delete mode 100755 examples/warpExposure.py delete mode 100755 examples/warpWithTransform.py delete mode 100644 examples/wcsTest.cc diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index 763513e910..0000000000 --- a/examples/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.ipynb_checkpoints diff --git a/examples/SConscript b/examples/SConscript deleted file mode 100644 index bdf95841b0..0000000000 --- a/examples/SConscript +++ /dev/null @@ -1,21 +0,0 @@ -# -*- python -*- -import os -from lsst.sconsUtils import scripts, env, targets - -# This is more complicated than an examples SConscript should usually be (most can just use -# BasicSConscript.examples() with no arguments), because we have a source file that's compiled -# into both a C++ program and a SWIG module. - -ccList = [] -spatialCellSrcList = ["spatialCellExample.cc", "testSpatialCell.cc"] -for path in Glob("#examples/*.cc"): - base, name = os.path.split(path.abspath) - if name in spatialCellSrcList: - continue - ccList.append(name) - -scripts.BasicSConscript.examples(ccList=ccList) - -targets["examples"].extend( - env.Program(spatialCellSrcList, LIBS=env.getLibs("main")) - ) diff --git a/examples/Show Camera.ipynb b/examples/Show Camera.ipynb deleted file mode 100644 index c92c2cbe4b..0000000000 --- a/examples/Show Camera.ipynb +++ /dev/null @@ -1,206 +0,0 @@ -{ - "metadata": { - "name": "", - "signature": "sha256:9ccf347ebc09bb54d4b2b99775917146d65991813166cf6c79139004070d7292" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Illustrate the use of showCamera with a butler to display CCD data laid out in the focal plane.\n", - "\n", - "We use obs_test (which must be setup), but any other camera should work too --- you'll have to change the dataRoot and also\n", - "the visit numbers.\n", - "\n", - "The display code will use the default display device, so setup display_ds9 or display_firefly if you want to see the displays (but\n", - "there's also inlined versions for your viewing pleasure)" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import numpy as np\n", - "\n", - "import lsst.daf.persistence as dafPersist\n", - "import lsst.afw.cameraGeom.utils as cameraGeomUtils\n", - "import lsst.afw.display.ds9 as ds9\n", - "import lsst.afw.display.rgb as afwRgb" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 1 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "%matplotlib inline\n", - "import matplotlib.pyplot as plt" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import os\n", - "\n", - "dataRoot = os.path.join(os.environ[\"OBS_TEST_DIR\"], \"data/input\")\n", - "\n", - "butler = dafPersist.Butler(dataRoot)\n", - "camera = butler.get(\"camera\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "biasMos = cameraGeomUtils.showCamera(camera, \n", - " cameraGeomUtils.ButlerImage(butler, \"bias\", verbose=False), \n", - " binSize=4, frame=0)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " Generate and display a png image of that mosaic" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "def inlineImage(im, minVal=0, maxVal=0.1, Q=8):\n", - " \"\"\" \n", - " Use plt.imshow() to display an afwImage\n", - "\n", - " We use the \"im\" image three times (R, G, and B) to make a gray-scale image. \n", - " The parameters stretch from minVal .. maxVal with an asinh softening of Q (if Q == 0 it'll stretch linearily from 0 to 0.1)\n", - " \"\"\"\n", - " rgb = afwRgb.makeRGB(*3*[im[:]], min=minVal, range=maxVal - minVal, Q=Q)\n", - "\n", - " plt.imshow(rgb, interpolation=\"nearest\")\n", - "\n", - " plt.axes().xaxis.set_ticklabels([])\n", - " plt.axes().yaxis.set_ticklabels([])\n", - " \n", - "inlineImage(biasMos)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stderr", - "text": [ - "/Users/rhl/LSST/afw-LSST/python/lsst/afw/display/rgb.py:107: RuntimeWarning: invalid value encountered in less_equal\n", - " return np.where(I <= 0, 0, np.arcsinh(I*self._soften)*self._slope/I)\n", - "/Users/rhl/LSST/afw-LSST/python/lsst/afw/display/rgb.py:107: RuntimeWarning: invalid value encountered in divide\n", - " return np.where(I <= 0, 0, np.arcsinh(I*self._soften)*self._slope/I)\n", - "/Users/rhl/LSST/afw-LSST/python/lsst/afw/display/rgb.py:57: RuntimeWarning: invalid value encountered in less_equal\n", - " c[c <= 0] = 0\n" - ] - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n", - "text": [ - "" - ] - } - ], - "prompt_number": 5 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for visit in range(1, 3+1):\n", - " mos = cameraGeomUtils.showCamera(camera, \n", - " cameraGeomUtils.ButlerImage(butler, \"raw\", visit=visit, verbose=True), \n", - " #detectorNameList=['0_08', '0_12', '1_12', '1_16'],\n", - " binSize=1,\n", - " title=visit, frame=visit, textSize=2)\n", - " med = np.median(mos.getArray())\n", - " inlineImage(mos, med - 1, med + 10, Q=8)\n", - " plt.show()" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n2L/+67/K/Py8LC4uSrvdluFwKCIi7XZbRMT25cEHH5Sbb75Z/vd//1fG47FEo1G59NJLRUTkpS99\nqfz4xz+WSy65RF7zmtfI/Py8bGxsyPPPPy8iInfffbecffbZts35+XnJ5XLy85//XF7+8peLiEin\n05HhcCij0UiOHz8u3/ve9+yY/u3f/k1ERF75yldKoVCQaDQqZ599tjz44INy+eWXi4jI2tqavO1t\nb5OtrS3bzszMjKUhPsPhUGZmZhy6PPbYY/L+979farWafOhDH5Jjx47JK17xCnnVq14lP/3pT2Vm\nZkZuvfVWp97NzU37+9Zbb5XRaCQiIk888YSIiCwuLsrrXvc6efzxxyUWi9n7X/3qV8vv/M7vyDPP\nPCORSEQWFhZEROTaa68VEZHDhw/L8vKyFItFicfjEolE5LOf/aycOHFCPvzhD0sqlZJDhw7Z+0RE\nZmdnRUTkvPPOk9nZWXnZy14md955p4iIlMtlO+56vS4iIt1uVyKRiJRKJclkMvL9739fDh8+LP/9\n3/8td955p3z729+WP/qjP5Ll5WVptVq2Dnw2NjbkV3/1V2UymYiISCqVss/n4osvlpe97GXS6XTk\nwQcflGq1avv6kY98RK699lpZW1uTQ4cOybPPPisiIrVazY6j0WjIddddJ6VSSYIgkF/6pV+SVqsl\nH//4x2VtbU1mZ2el3+/LeDyWO+64Q0REjh07Jg899JA89thjto9PPPGEDIdDabVaIiISiUTs8See\neEIGg4F8+tOfltnZWfvM3vGOd4iIyPe+9z3pdrsiInLllVfKtddeK9dee62cd955cv7558v9998v\nk8lELrzwQtve/Py8XHTRRfZ/v98XEZHrrrtO/vEf/1FOnTolb3zjG0VE5EMf+pCIiFSrVXn66afl\nzjvvlB/84AcSiUTke9/7nhw9elTuvPNOufrqq0VEpFKpyF//9V/LBRdcYN+RcrksQRDI3NyciIj8\nz//8j5TLZYlEIvLNb35TREQeffRRabVacvjwYcnn87K8vGz79xd/8Rf2HcGnXC7L0aNH5bSfF8Lp\nMicbjUZNo9FwuD14NOE/K59EZCrm6ubm5pTMlENFiuyJH7hdn3swl1Kp5Gz3Odi1/N8Vj336cQ+4\nxMFgMOVRx7m5sP0djUZTW3t2W+V0NlhBmTNjRRYC4/Dqre2BERwGwWIgd9VjF3FlwZAzc064sF0J\n+tLpdMzhw4edc41GwzF9Yw9APF9WtnKaIh63lr/jHp88nHcZ8Hjj86A/cxu+sHyssOl2u5aLZaUQ\nInlB3uiLAQtbT2TpFdnjYhE4R2eE0NwjxqyDqcD2Exy5iDgBxEV2nROw1YVJlo4Hu7CwYD3DfBp2\nkV2uFtl3+TjMzsDNs0IMYht2bAjLMYe64GYdiUSmRD0+iwhff+H4gvnFActhMw0Ok1Oja0uQMFto\nzoEXNpawwnWyVQjT5UDiBQ5wHeb+G1Z8BuNh3l964s3MzNhtP2dYEJkGDwZHLRdlJw5sZ/lenZYH\noBoEgQ2DiISbeAFgBeATW8CUTQPFfgb/nGGBU9pj/Agaj2tE3AwXvj7g99LSkhmPx5a+iUTCJtgU\n2UvhgyzDPvHMzMzMVKhONodj0cXS0tKUaVi/37dJLdmEEKKkyWTipHHnfGgiroxfy41h1sXxYRGN\nioEYNpmQbWKihIkb9sv4gMm+s7Njr30hKWsA1EEQOOnFRfbiQmjLA4ArgFhHUhPZS4XDMQZ0OENc\nw+2xDa/IrsjBl5aeFwAG7K2tLce6IkxExbiBhYdluADAer0emqoez3dzc9O0Wi1rQYFngYXaB+B4\n7vvZ97KTBt4nmIGhvyzK4cWt2Ww6YThFXgRFmk69jlgGAAUomGq1mgMsrIgAONRqtSl5KZwAWJYZ\n5uHDnNvi4qJ1pkDdIq5cGL85NThrvXX+L57QqBdyR1yL4z6vszDHCfbo8inbdDxSVhyFud1ivDwe\nDcLaQYMB+cYbbzRf+tKXrK0xbKFvuOGGKZMzDcaLi4u2XXYN5sVhcXHRiTHBOyRMRB0zmWl19OhR\nG7xIL5YaUDER+BvFB6BMU9iZMpCx5QJ8+Pl+jjTFhVOus8VD2GTXWQ0wrng8PjVPYHkBm2GAgLYR\nZW6csw37QEfnItN1aNppzpAzUsCyAwubfm8RHIjrQdyJTCZjsxzzPQA0yIf5HJxQfIHmw1IuYUzs\nEg3ABTgzF80plSCP1nMO6Ya4jbDPS1dWVlYk5AN5jojIpZdeKq95zWvkqaeekh/+8IcyNzcnn//8\n5+Xtb3+7nHXWWXLLLbfIHXfcIR/60IfkrLPOkje96U1y3nnnyUUXXSSHDh2Su+++Wx544AEREXnT\nm94kf/mXfymFQkHuu+8+SSQS8vTTT8t73vMeef7552V9fV0WFxel0+lIrVaTu+++W0REEomEPPzw\nw/LQQw/J1VdfLXfccYd885vflG9+85vyW7/1W/LYY4/JRRddJA888IB86UtfsvW/7W1vk9e85jVy\n0003iYjI888/L48//rjE43G577775Gtf+5qIiGxtbUkkEpH3vve98txzz8kHP/hBefTRR+Wpp56S\n97znPfLII4/I8ePHpVQqWTny29/+drngggvkj//4j+XNb36zPPDAA3LNNdfI7bffLiIiS0tL8tWv\nflVERB566CEREbnzzjvlJS95ifzwhz+0cqVvfOMb8oUvfEE+8pGPyJ133inpdFo++clPyuLiosTj\ncTl06JCcddZZcvnll8vDDz8sv/d7vyf33HOPfPCDH5Q3vvGN8pd/+Zcisisj/cxnPiOxWEy+853v\nyMzMjNx3332STCbl5MmTIiISjUatTD4Wi8mpU6fkRz/6kZx99tny+OOPy2c+8xn5m7/5G3nooYfk\nvvvuk/F4LJ///OcdGVYsFpOf//zn8vzzz8s555wjr371q+X3f//35QMf+IBMJhMpFApyzz33yKFD\nhwSv2D333CNf+tKXRERkPB7LyZMn5aqrrpLJZCK/+7u/K/fcc4/EYjF5//vfLzs7O7K4uCh33nmn\n3HbbbfL444/LL//yL8tVV10ll1xyiXzkIx+RCy+8UM4++2x59NFH7TP8+te/7nzjMzc3J5dddplc\ncskl8mu/9mvy3e9+VyqVilxyySXy9a9/Xc4991y5+OKL5Q1veIO85S1vkXvvvVeuvvpquf322+Wa\na66R7e1tOffcc+UNb3iDXHnllXLFFVfIpZdeKsViUYbDoZx77rnyZ3/2Z/La175Wjh8/Lvfcc4+I\n7Mo5v/Wtb8m9994r2WxW7r//fkmlUvKtb31LqtWq3H333fb9yGaz8thjj8mVV14pP//5z+Xiiy+2\nzxWfP/zDP5RbbrlFvvWtb8kf/MEfyI9+9CM599xz5emnn5YrrrhCgiCQc845R/72b/9WRES++tWv\nyt133y3ValXOPvts+fSnPy2nTp2S2dlZWVxclLe+9a0ymUxkdnZWvvvd78pjjz0mp06dkkwmIxdc\ncIFceuml8vrXv97St9PpyPb2tu07xviyl71MfuVXfkVuvfVWueOOO+TKK6+Uiy66SJ599ll59NFH\npdvtyle+8hW599575eGHH7bv6j/8wz/IeeedJ69//evlr/7qr+Rd73qXvPe975UvfOELUiwW5d57\n75VDhw7JHXfcIW984xvlgQcekAsvvNDqK+6++245deqUpXc8HpcrrrhC3vnOd8pZZ50lv/EbvyHP\nPfec/Pqv/7qjo3n44YclGo3Kb//2b8ttt90mjz76qNx///3ynve8x+qd3vrWt8qXv/xl+y69+93v\nluXlZfv/K1/5ijSbTfna174ml112mVx22WXyjW98Q06dOiUiImHQepb3qOfzs5/9TM455xy55ppr\n5Pvf/76dwAAfEZHNzU35yU9+Is8884yIiNx1111WWSSyO9Gef/55q4h67rnnZGZmRi6++GI555xz\n5KyzzpJnn31W5ufnrULnySefFJFd5db5558vsVhMDh06JOVyWWZmZuTSSy+Vra0tOf/88+Xxxx+X\nY8eOSSKRkFtvvVVe+9rX2hdFZBdsHn/8cXnnO98pTz31lPzsZz+zD/+uu+6Shx9+WE6ePGnH9pOf\n/ETuuusuEdlV0t12223SaDTkn//5nyUajcpHP/pRefrpp+XJJ5+UK664Ql71qldZWuHzgx/8YIqW\n0WhU/vRP/1SuuuoqGQwG8uCDD9pzS0tLksvl5HWve50sLi6KiPvwEomEiIh8+ctfllgsJo888oi8\n9a1vtef/5E/+RO666y75yU9+ItFoVO666y45evSoBfxarSZra2vS7/flrrvukptvvlne/e5324nw\nyCOPyGAwkFOnTsnS0pKI7Cmp8Ekmk/Kbv/mbVlmIT61Ws0qV5557zo5raWlJ2u22bTuRSMh//ud/\nWqVRo9GQf//3f5cgCOQd73iHfPSjHxWRXSXkoUOH5MILL5Sbb75ZHnzwQVvnk08+Ke9617vks5/9\nrIjsAtbhw4clHo/L17/+dXniiSekXC5bhQwYiHg8bhePf/mXf5HDhw+LiMinP/1pEdlVRrGC58EH\nH5R3vetdIiLOojM7Oyuve93r7DN+8sknpVKpWKWciEgmk3HqeulLXyoiIidOnBARkW9/+9sSBIFc\neeWVcvToUfnzP/9z26bILnMisqsQxjEoqERELrjgAnnlK19plTfNZlN+8IMfyJvf/Ga56qqr5Omn\nn7bjX19fd/p1/vnny2OPPSZ///d/b8dWr9el2+3KeDyWH//4x9JqtWR2dlb+67/+y97baDQkEonI\nK17xCksH1J1KpeSaa66R4XAol112maN4qtfrkslkJBKJSLfblclkIvl8Xubm5uSnP/2pvPzlL7eK\n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\nTkSuQmCC\n", - "text": [ - "" - ] - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAC6CAYAAAANvp45AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvW2Is+lZP3zUv9UPQUSxkE9SxS5KsC2R2i0S22zF1pCy\nLBMKTUQDegkTieWCC0NCyMskmbxMMskkmcnM3K+7220L1VrfqkJL177YpS7LQtXC9otoYYX1U9EP\nIvR8PszzO+d3Htd5zb0w+/SB57lvOLknyfVyvh7ncR7H7/gdbzPGGHn87/G/x/8e/3v874fy70f+\n367A43+P/z3+9/jf/5/+PRa6j/89/vf43+N/P8R/j4Xu43+P/z3+9/jfD/HfY6H7+N/jf4//Pf73\nQ/z3WOg+/vf43+N/j//9EP89FrqP/z3+9/jf438/xH8/etOPb3vb235Y9Xj87/G/x/8e//v/1L8k\nNO7/6fV6vaSb+v2+iIiEYSiFQkG+8pWvyHq9lg9/+MPyzDPPyLvf/W75+te/Ls8995w8+eST8sQT\nT8gTTzwhb3/72+X111+XfD4v//qv/yrFYlH+6I/+SL74xS9KNpuV119/XdLptHzoQx+S1157TabT\nqXz0ox+Vd7/73ZLL5eQb3/iGVKtVefXVVyUIAvn5n/95+dCHPiS/8Ru/IV//+tedOmazWfm1X/s1\n+Zd/+RcRESmVSvbvIAjklVdekVqtJplMRiqVihQKBfm7v/s7ERFJp9PyX//1X4mdFkWR/MM//IPz\nrj/+4z+Wt7/97fLaa6+JiEilUpFvf/vbsXvz+bx84hOfsPXN5XKSy+Vkb29PXnzxRdsPIiLFYlFe\ne+01yWaz8od/+Ifym7/5m/KlL31JREQajYZ84xvfsO968skn5Xd/93flf/7nf+RjH/uYfOtb34pd\nF4ahfOADH5CXXnrJ9mOn05G///u/d+pYKpXkd37nd+Sf/umfJIoiefHFF2U4HEomk5Gf/dmflY9/\n/OPy4osvysHBgXzlK19x7uXver2evP/977fvfzP/ttutfOxjH5MnnnhCfvEXf1FeffVV2yeYNyIi\nnU5HPvjBD8oHP/hBp/7T6VRyuZy8+OKLEgSB/Mqv/Iq88sorkkql5Pd///flt3/7tyWVSsl3vvMd\nyeVy8m//9m8ShqG89NJLsre3J3/wB38gv/VbvyV/+7d/64zzYDCQX/iFX5BXXnnF9ul6vZa3ve1t\n8vTTT8sTTzwhr776qoiIrFYryefz8qUvfUlms5lks1l59dVX5cd+7MekUqnIe9/7XvmJn/gJ+fjH\nPy7vec975H3ve5+8733vk5dffllERPb39+Xll1+W0WgkTz75pDz11FPyn//5n/LGG2/YdmL8REQy\nmYzUajX5mZ/5GfnOd74jIiKFQkG++93v2uvRVlyPZ3W7Xfm5n/s5efXVV2W328lP/uRPyre//W15\n6qmn5OMf/7h84xvfkMFgIE899ZR89KMflV/6pV+SH//xH5enn35ann76aXnPe94jL730kl1To9FI\nMpmM/PM//7N88pOflE984hPyN3/zN7YOn/zkJ+VHf/RH5UMf+pC88sorMhgM5Kd/+qflmWeeka99\n7Wt2zlarVfnlX/5lKRQK8tJLL8n//u//iojIaDSSj3zkI/L666/LG2+8IaPRSH7qp35KnnnmGXnq\nqafkqaeekhdffNH20Qc+8AF5+eWX5fT0VN773vfK1772NQnDUJ5++mn5j//4D/n1X/91+ZEf+RF5\n4403JIoieec73ynf/va3pVAoyLve9S757ne/K6lUyr5fROT09FSy2ax89atflc1mI+985zvlfe97\nn1QqFfne974npVJJfu/3fk/++q//WkRE3v72t8sPfvADe3+iaDU3/BMRW9rttun1eubzn/+8+f73\nv2++9a1vmclkYqrVqkmn0yabzTrXc6lUKiadTse+z+fzplqt2s/NZtOIiGk0GkZEzPHxsZnP57H7\nms2myefzplarmVKpZCqVin1eFEXOtXjv8fGxrUupVPLWM5/P27//7M/+zF6vr9Ntabfbplgsmlqt\nZkTE9Hq92PN+9Vd/1dZBRGw9t9ut836+h9vebDZNpVKxv7fbbftbp9Mx2WzWBEEQa8tutzMi4vTz\ner029XrdiIiZTqemVqvZ6/GMZrPptBPvw3Oy2ayZTqf294ODA/t3GIZ2PmAsuW5BENjnNBoN0263\nTaPRsO9Lp9OmXq/bPmq32+bo6Cg2Dvg9DMPYd9Vq1eRyOSMiJpfLmX6/b0TEXF5emuVyaTKZjNP3\nImLK5bL9u9/vm729PSMiJpPJ2O/39vZMtVo1hULBfpfL5Uwmk7F9vd1uzWAwsHXHtalUyoxGI++c\n5ueLiGm1WqZer5vpdOqM3f7+vtOXImI2m40RETMajewz0F6+Bs8WEVMoFJz2vpkSBIHT12gT3t3t\n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\n+77P/sW/+Bf22c9+1iqVin3+85+32dlZGw6H9tM//dP2Td/0Tfa5z33O/tE/+kf2yiuv2G/+5m8m\n47SwsGCvv/66velNb7KTkxN7z3veY3/8x39sv/Ebv2EzMzP2hS98wUII9tGPftReeOEFe/TRR+0t\nb3mLfelLX7K3vOUt9g/+wT+wer1uc3Nz9t3f/d32wz/8w3Z6emqf/exnzczsXe96l331q1+1p59+\n2l566SV77bXX4m/veMc77Pbt2/biiy/aq6++WniGL730kv3gD/6gPfXUU/aFL3zBfvd3f9dqtZq9\n8sortr29HZ9HvV63z3/+8/baa6/Zl7/8ZXv/+99vZmbf8z3fY29+85vtLW95i3W7XfvoRz9qS0tL\n9p3f+Z32hS98IZ7zh3/4h7a2tmZf/vKX7dd+7dfi/aempuxbvuVb7C1veYv9+I//uL31rW+1D3/4\nw/a7v/u79v3f//32mc98xr74xS/aP/2n/9Reeuklq1Qq9qY3vcleffVV++f//J/bSy+9ZJ/4xCfs\ni1/8Yuwzn7m5Oft7f+/vWbfbtX/5L/+lffd3f7d98pOftEceecR+4id+wn7u537OXn31Vfv4xz9u\nZmaLi4v22GOP2fd+7/faZz7zGXvxxRfNzOzll182M7Ovfe1rNjs7a3/0R39kr7zyipmZ1Wo1e/zx\nx63RaNjP//zP27//9//eLi8v7aWXXrJ/8k/+ib3yyiu2s7NjP/qjP2r/5//8H/vQhz5kf/3Xf21/\n9Vd/ZdVq1f7iL/7CHnvsMatUKvZHf/RHSfsfffRR+/SnPx3v+elPf9o+97nP2Tve8Q77u7/7O/vc\n5z5n+/v79m3f9m32yCOP2Je+9CUzM5udnbWnn37aNjY27Fu+5Vvs05/+tE1MTNj3fM/32Lve9S77\nb//tv9m73/1u+67v+i57+eWX7Z3vfKe99a1vtU996lPx3pVKxX7/93/fzMw+9alP2de+9jV75zvf\nGechH8ZudnbWjo+P7Ud+5Efst37rt+Lv1PHoo4/a9va2ffWrX7VHHnnE3v3ud9vrr79u3/qt32rf\n/M3fbJVKxf7+3//79pM/+ZPx+u///u+3u3fv2vT0tG1tbdmXvvQlW1pasj/90z+197znPfbSSy/Z\nRz7yEdvd3bWvfOUr9qu/+qv27ne/297znvfYzs6Ofdd3fZd99KMftZdfftlmZ2ft4uLCzMz+8T/+\n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\n5+v4+X8AXd82ezAtj2UAAAAASUVORK5CYII=\n", - "text": [ - "" - ] - }, - { - "metadata": {}, - "output_type": "display_data", - "png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAC6CAYAAAANvp45AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvWuMa9dZN/5wa6ilIioZ+IIAwSdT6ZU/vCAElsDfjOov\nFpawsGRhWVjGuLawsXFtWVsey+x6xjMejz2+zcyZOT5ncubcepJecmujk+ZCmvSW0lZtAmppI9oC\n+dAASaFN87wfJr81z1p7edJXk3//0v9/LC3NeHvvtdft+a1nPdefYmame597n3ufe597n5/I56f/\n327Avc+9z73Pvc//nz73QPfe597n3ufe5yf4uQe69z73Pvc+9z4/wc890L33ufe597n3+Ql+7oHu\nvc+9z73Pvc9P8HMPdO997n3ufe59foKfnz3vx5/6qZ/6SbXj3ufe597n3uf/U59V1rg/Fqeby+Vo\nc3PTcz0SiXiudbtdIiJaLpdERBQIBDz3VCoVisVi6vv6+jplMhkiIkqlUkRElEgktGdmsxmtra3R\n9va2uuY4DoVCIer1etY2EBH5fD7a3d1V313XpUwmQ4lEghKJBDmOoz0r35tKpSiXy5HP57P2GW3Z\n39+n9fV1IiIqFApUq9WoVCp5+o3xMNuLvsi/RES1Wk17L8aI6HROWq2WtV2FQsHzf6fTISLyzCPG\nW7bv/+Yjxxof13XV/51OR42pHJP5fE4HBwfqe7/fJyKitbU1dQ39Xy6XVK/XKZFIaH2LRqOetoTD\nYRoOh9RqtSidTqvfBoOB1tZwOEz5fJ6ISJuPcrms/m80GtTr9ejo6Ig+9rGP0cMPP0xPP/00vfTS\nS8TM9OabbxIzW8vLL79MX/rSl+iRRx6hj3zkI/Too4+uHMNbt27R1tYWHR0d0WAw0NrQbrcVLdXr\nde250Wik3UdEFI/H1bXhcEjFYlF9TyaTNJvN1Pd4PE6/93u/p74Hg0FtLG0fOaa4H+uw3W7TYDCg\n0Wik5kbeT0SUzWZpsVhQOBwmIlLtmc/n1veBHsbjMaXTafL7/R76mUwm1O12PdcxFsViUaMVolOa\nlX2Nx+OqTcvlkvL5PLXbbSqXy1Sv17WxkfMTj8fVWL373e/Wxn/lh8/5EJEqjuNo34mIr1y5wp1O\nh4mIu90uj8djjkQiXCgUtPtisRgTERcKBY5EIp56QqEQFwoFrtfrvL29ra6vra1p96VSKe17r9fj\n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\nDSIi+u///m/68pe/TP/7f/9v+tVf/VUiItrb26NWq6XqqlQqFIvF6Hvf+x7F43EiIrrvvvsoFArR\nq6++StlslprNJr3xxhv0P//zP3Tnzh2azWbU6/XoF3/xF+nnfu7n1Bj84R/+IaXTafrABz5Ar732\nGs1mM/qnf/oncl2XiIje9a53ERFRp9Ohz33uc6oNr776qmfc77vvPnJdl1KpFD311FP0G7/xG/TV\nr36V/vRP/5Sef/55IiLK5XLq/ieffJJefPFFVT/G7umnnyYiok984hP02c9+ltrtNr3rXe+iH/7w\nh/Tud7+biIgSiQRlMhk6OTmhN954g2KxGLmuS7VajV577TWKxWJq3iORCHW7XbU20NZf+IVfICKi\n119/Xc0d2vLSSy9RMBikdDpN3//+91X7fumXfonu3r1Lf/d3f0dERH/xF39Bfr+fqtUqtVotunPn\nDm1tbdF0OqW//du/pU6nQ8FgkIiI/H4/vf/971d1ffvb36aNjQ0iIkomkzSZTOh3fud36NFHH6UP\nfOAD9Jd/+ZdqjRaLRXrve99L3/jGN+jKlStERPTKK6/QCy+8QOVymdrttnrHe97zHkqn05TNZomI\n6NatW9Tv9+lDH/oQERH9/M//vOpruVz2zGOxWKSHHnqIPvaxj2nXv/Wtb9F73/te9f2Xf/mX6fj4\nWH1vNBpERPTaa6/R3bt36Wd+5meoUChQMpmk++67j77zne/Qq6++Si+88AK9+OKL9PLLL9N//dd/\n0Z/8yZ8QM9O///u/q/l5z3veQx/84Ae193/wgx+kUqlE9XqdPvShD6n34fPGG2/QX//1X9PW1hb9\n67/+K73wwgvUaDQom83S1taWGqMPfehD9IUvfIGIiCaTCREROY5DjuNQtVql++67jyaTief9RES/\n+7u/S0SnNPnbv/3bREQUjUbV+weDAf3mb/6m9ky1WlV0euvWLSIiOjw8JCKib37zm/T973+f+v0+\nlctl8vv9VCqV6Ld+67eIiOju3bueNng+Pw6nKxVSpg+9WUx55ZUrVxSnAI24aXCPpIjyOQQTgSut\nVLpAvmeKCcjYUfEe6e5IdJZnTXI1MlOFrUhLCvM9RLqIwiav3t/fP9eTz+fzqcwOoVBIExtIbl62\nwbQYkfGAsYvjBAFvPnzH77VajcfjsWozQjLKetFXaZKWSqW4UChoyi8iXemGekw7XVNubZ4wpChG\n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\n", - "text": [ - "" - ] - } - ], - "prompt_number": 6 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "ccd = list(camera)[0]\n", - "im = cameraGeomUtils.showCcd(ccd, cameraGeomUtils.ButlerImage(butler, \"raw\", visit=visit, verbose=True),\n", - " frame=1)\n", - "med = np.median(im.getArray())\n", - "inlineImage(im, med - 1, med + 10, Q=8)" - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "metadata": {}, - "output_type": "display_data", - "png": "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\n", - "text": [ - "" - ] - } - ], - "prompt_number": 7 - } - ], - "metadata": {} - } - ] -} \ No newline at end of file diff --git a/examples/Spline.cc b/examples/Spline.cc deleted file mode 100644 index 830f18fa31..0000000000 --- a/examples/Spline.cc +++ /dev/null @@ -1,76 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/afw/math/detail/Spline.h" - -namespace afwMath = lsst::afw::math; - -double func(double const x) { - if (x < 2) { - return 2 - x; - } else { - return 0; - } -} - -int main() { - // create x,y vector<>s containing a sin() function - int const nX = 20; - std::vector x(nX); - std::vector y(nX); - double const xLo = 0; - double const xHi = 2.0 * M_PI; - double const range = xHi - xLo; - - for (int i = 0; i < nX; ++i) { - x[i] = xLo + i / (nX - 1.0) * range; - y[i] = func(x[i]); - } - - // create a new x vector<> on a different grid and extending beyond the bounds - // of the interpolation range to tests extrapolation properties - int const nX2 = 100; - std::vector x2(nX2); - for (int i = 0; i < nX2; ++i) { - x2[i] = xLo + ((nX + 2.0) / nX * i / (nX2 - 1.0) - 1.0 / nX) * range; - } - - // declare an spline interpolate object. - double gamma = 2.5; - afwMath::detail::Spline *yinterp = new afwMath::detail::TautSpline(x, y, gamma); - - std::vector y2(x2.size()); - yinterp->interpolate(x2, y2); - - // output the interpolated y values, 1st derivatives, and 2nd derivatives. - for (unsigned int i = 0; i != x2.size(); ++i) { - std::cout << i << " " << x2[i] << " " << func(x2[i]) << " " << y2[i] << " " << std::endl; - } - - delete yinterp; -} diff --git a/examples/analyticKernel.cc b/examples/analyticKernel.cc deleted file mode 100644 index 1a7dd75c20..0000000000 --- a/examples/analyticKernel.cc +++ /dev/null @@ -1,96 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include - -#include "boost/format.hpp" - -#include "lsst/afw/math.h" - -/* - * Demonstrate an AnalyticKernel, both spatially invariant and spatially varying. - */ - -using Pixel = lsst::afw::math::Kernel::Pixel; - -using namespace std; - -int main() { - double majorSigma = 2.5; - double minorSigma = 2.0; - double angle = 0.5; - unsigned int kernelCols = 6; - unsigned int kernelRows = 5; - - lsst::afw::math::GaussianFunction2 gaussFunc(majorSigma, minorSigma, angle); - lsst::afw::math::AnalyticKernel gaussKernel(kernelCols, kernelRows, gaussFunc); - - cout << boost::format("Gaussian Kernel with majorSigma=%.1f, minorSigma=%.1f\n\n") % majorSigma % - minorSigma; - - lsst::afw::math::printKernel(gaussKernel, true); - - // now show a spatially varying version - unsigned int polyOrder = 1; - lsst::afw::math::PolynomialFunction2 polyFunc(polyOrder); - - lsst::afw::math::AnalyticKernel gaussSpVarKernel(kernelCols, kernelRows, gaussFunc, polyFunc); - - // get copy of spatial parameters (all zeros), set and feed back to the kernel - vector > polyParams = gaussSpVarKernel.getSpatialParameters(); - polyParams[0][0] = 1.0; - polyParams[0][1] = 1.0; - polyParams[0][2] = 0.0; - polyParams[1][0] = 1.0; - polyParams[1][1] = 0.0; - polyParams[1][2] = 1.0; - gaussSpVarKernel.setSpatialParameters(polyParams); - - cout << "Spatial Parameters:" << endl; - for (unsigned int row = 0; row < polyParams.size(); ++row) { - if (row == 0) { - cout << "xSigma"; - } else { - cout << "ySigma"; - } - for (unsigned int col = 0; col < polyParams[row].size(); ++col) { - cout << boost::format("%7.1f") % polyParams[row][col]; - } - cout << endl; - } - cout << endl; - - std::vector kernelParams(gaussSpVarKernel.getNKernelParameters()); - for (unsigned int y = 0; y < 2; ++y) { - for (unsigned int x = 0; x < 2; ++x) { - gaussSpVarKernel.computeKernelParametersFromSpatialModel(kernelParams, static_cast(x), - static_cast(y)); - cout << boost::format("GaussianKernel at x=%d, y=%d; xSigma = %7.2f, ySigma=%7.2f:\n\n") % x % y % - kernelParams[0] % kernelParams[1]; - - lsst::afw::math::printKernel(gaussSpVarKernel, true, static_cast(x), - static_cast(y)); - } - } -} diff --git a/examples/cameraGeomExample.py b/examples/cameraGeomExample.py deleted file mode 100755 index 538cf47165..0000000000 --- a/examples/cameraGeomExample.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python -import lsst.geom -import lsst.afw.cameraGeom.testUtils as testUtils -import lsst.afw.cameraGeom as cameraGeom - -# Construct a mock LSST-like camera. -# Normally you would obtain a camera from a data butler using butler.get("camera") -# but when this example was written the software stack did not including a -# sample data repository. -camera = testUtils.CameraWrapper(isLsstLike=True).camera - -# Get a detector from the camera by name (though you may specify an ID, if -# you prefer). -det = camera["R:1,0 S:1,1"] - -# Convert a 2-d point from PIXELS to both FOCAL_PLANE and FIELD_ANGLE coordinates. -pixelPos = lsst.geom.Point2D(25, 43.2) -# position in focal plane in mm -focalPlanePos = det.transform(pixelPos, cameraGeom.PIXELS, cameraGeom.FOCAL_PLANE) -# position in as a field angle, in radians -fieldAnglePos = det.transform(pixelPos, cameraGeom.PIXELS, cameraGeom.FIELD_ANGLE) - -# Find all detectors that overlap a specific point (in this case find the -# detector we already have) -detList = camera.findDetectors(focalPlanePos, cameraGeom.FOCAL_PLANE) -assert len(detList) == 1 -assert detList[0].getName() == det.getName() diff --git a/examples/catTables.py b/examples/catTables.py deleted file mode 100755 index b48ed13b9a..0000000000 --- a/examples/catTables.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python - -import sys -import lsst.afw.table as afwTable -from functools import reduce - - -def concatenate(catalogList): - """Concatenate multiple catalogs (FITS tables from lsst.afw.table)""" - catalogList = [afwTable.BaseCatalog.readFits(c) if isinstance( - c, str) else c for c in catalogList] - - schema = catalogList[0].schema - for i, c in enumerate(catalogList[1:]): - if c.schema != schema: - raise RuntimeError(f"Schema for catalog {i+1} not consistent") - - out = afwTable.BaseCatalog(schema) - num = reduce(lambda n, c: n + len(c), catalogList, 0) - out.preallocate(num) - - for catalog in catalogList: - for record in catalog: - out.append(out.table.copyRecord(record)) - - return out - - -if __name__ == "__main__": - if len(sys.argv) < 4: - print( - "catTables.py: Concatenate multiple FITS tables (catalogs) from lsst.afw.table") - print("Usage: catTables.py OUT IN1 IN2 [IN3...]") - sys.exit(1) - - outName = sys.argv[1] - catalogList = sys.argv[2:] - out = concatenate(catalogList) - out.writeFits(outName) diff --git a/examples/chebyshev1Function.cc b/examples/chebyshev1Function.cc deleted file mode 100644 index f2a1f194f6..0000000000 --- a/examples/chebyshev1Function.cc +++ /dev/null @@ -1,52 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "boost/format.hpp" - -#include "lsst/afw/math/FunctionLibrary.h" - -using namespace std; - -int main() { - using funcType = double; - const unsigned int order = 3; - vector params(order + 1); - lsst::afw::math::Chebyshev1Function1 chebyFunc(order); - - for (unsigned int jj = 0; jj < params.size(); ++jj) { - for (unsigned int ii = 0; ii < params.size(); ++ii) { - params[ii] = (ii == jj) ? 1.0 : 0.0; - } - chebyFunc.setParameters(params); - cout << "Chebychev polynomial of the first kind with parameters: "; - for (double param : params) { - cout << param << " "; - } - cout << endl << endl; - for (double x = -1.0; x < 1.1; x += 0.2) { - cout << boost::format("poly(%5.1f) = %6.3f\n") % x % chebyFunc(x); - } - } -} diff --git a/examples/convolveLinear.cc b/examples/convolveLinear.cc deleted file mode 100644 index e966db88c8..0000000000 --- a/examples/convolveLinear.cc +++ /dev/null @@ -1,118 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/daf/base.h" -#include "lsst/log/Log.h" -#include "lsst/afw/image.h" -#include "lsst/afw/math.h" - -namespace afwImage = lsst::afw::image; -namespace afwMath = lsst::afw::math; - -const std::string outImagePath("clOut.fits"); - -int main(int argc, char **argv) { - LOG_CONFIG(); - LOG_SET_LVL("TRACE5.afw.math.convolve", LOG_LVL_INFO); - - using ImagePixel = float; - unsigned int const KernelCols = 19; - unsigned int const KernelRows = 19; - double const MinSigma = 1.5; - double const MaxSigma = 4.5; - - std::string inImagePath; - if (argc < 2) { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/med.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: linearConvolve [fitsFile]" << std::endl; - std::cerr << "fitsFile is the path to a masked image" << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } else { - inImagePath = std::string(argv[1]); - } - - // block in which to allocate and deallocate memory - { - // read in fits file - afwImage::MaskedImage mImage(inImagePath); - - // construct basis kernels - - afwMath::KernelList kernelList; - for (int ii = 0; ii < 3; ++ii) { - double majorSigma = (ii == 1) ? MaxSigma : MinSigma; - double minorSigma = (ii == 2) ? MinSigma : MaxSigma; - double angle = 0.0; - afwMath::GaussianFunction2 gaussFunc(majorSigma, minorSigma, angle); - std::shared_ptr basisKernelPtr( - new afwMath::AnalyticKernel(KernelCols, KernelRows, gaussFunc)); - kernelList.push_back(basisKernelPtr); - } - - // construct spatially varying linear combination kernel - int const polyOrder = 1; - afwMath::PolynomialFunction2 polyFunc(polyOrder); - afwMath::LinearCombinationKernel kernel(kernelList, polyFunc); - - // Get copy of spatial parameters (all zeros), set and feed back to the kernel - std::vector > polyParams = kernel.getSpatialParameters(); - // Set spatial parameters for basis kernel 0 - polyParams[0][0] = 1.0; - polyParams[0][1] = -0.5 / static_cast(mImage.getWidth()); - polyParams[0][2] = -0.5 / static_cast(mImage.getHeight()); - // Set spatial function parameters for basis kernel 1 - polyParams[1][0] = 0.0; - polyParams[1][1] = 1.0 / static_cast(mImage.getWidth()); - polyParams[1][2] = 0.0; - // Set spatial function parameters for basis kernel 2 - polyParams[2][0] = 0.0; - polyParams[2][1] = 0.0; - polyParams[2][2] = 1.0 / static_cast(mImage.getHeight()); - // Set spatial function parameters for kernel parameter 1 - kernel.setSpatialParameters(polyParams); - - std::cerr << "Image: " << inImagePath << std::endl; - std::cout << "Image size: " << mImage.getWidth() << " x " << mImage.getHeight() << std::endl; - std::cout << "Kernel size: " << KernelCols << " x " << KernelRows << std::endl; - std::cout << "Number of basis kernels: " << kernel.getNBasisKernels() << std::endl; - std::cout << "Spatial order: " << polyOrder << std::endl; - - // convolve - afwImage::MaskedImage resMaskedImage(mImage.getDimensions()); - afwMath::convolve(resMaskedImage, mImage, kernel, false); - - // write results - resMaskedImage.writeFits(outImagePath); - std::cout << "Saved convolved image as " << outImagePath << std::endl; - } -} diff --git a/examples/countMaskBits.py b/examples/countMaskBits.py deleted file mode 100755 index 7444e6e009..0000000000 --- a/examples/countMaskBits.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -"""Report how many of each bit plane is set in the mask and the number of non-finite pixels. - -Usage: -./countMaskBits.py path-to-masked-image -""" -import sys - -import numpy - -import lsst.afw.image as afwImage - -BadPixelList = ["BAD", "SAT", "CR"] - - -def getMaskBitNameDict(mask): - """Compute a dictionary of bit index: bit plane name - - @param[in] mask: an afwImage.Mask - - @return maskBitNameDict: a dictionary of bit index: bit plane name - """ - maskBitNameDict = dict() - maskNameBitDict = mask.getMaskPlaneDict() - for name, ind in maskNameBitDict.items(): - maskBitNameDict[ind] = name - return maskBitNameDict - - -def countInterp(maskedImage): - """Count how many BAD, SAT or CR pixels are interpolated over and how many are not - - @param[in] maskedImage: an afwImage MaskedImage - - @return - - numBad: number of pixels that are BAD or SAT - - numInterp: number of pixels that are interpolated - - numBadAndInterp: number of pixels that are bad and interpolated - """ - interpMask = afwImage.Mask.getPlaneBitMask("INTRP") - badMask = afwImage.Mask.getPlaneBitMask(BadPixelList) - - maskArr = maskedImage.getMask().getArray() - isBadArr = maskArr & badMask > 0 - isInterpArr = maskArr & interpMask > 0 - numBad = numpy.sum(isBadArr) - numInterp = numpy.sum(isInterpArr) - numBadAndInterp = numpy.sum(isBadArr & isInterpArr) - return numBad, numInterp, numBadAndInterp - - -def countNotFinite(maskedImage): - """Count non-finite pixels (NaNs, infs, etc.), and how many of those are non-EDGE pixels - - @param[in] maskedImage: an afwImage MaskedImage - - @return - - numImNotFinite: number of image pixels that are not finite - - numVarNotFinite: number of variance pixels that are not finite - - numImNotEdgeOrFinite: number of image pixels that are not edge or finite - - numVarNotEdgeOrFinite: number of variance pixels that are not edge or finite - """ - imArr = maskedImage.getImage().getArray() - varArr = maskedImage.getVariance().getArray() - maskArr = maskedImage.getMask().getArray() - numImNotFinite = numpy.sum(numpy.logical_not(numpy.isfinite(imArr))) - numVarNotFinite = numpy.sum(numpy.logical_not(numpy.isfinite(varArr))) - edgeMask = afwImage.Mask.getPlaneBitMask("EDGE") - isEdge = maskArr & edgeMask - numImNotEdgeOrFinite = numpy.sum(numpy.logical_not( - numpy.logical_or(numpy.isfinite(imArr), isEdge))) - numVarNotEdgeOrFinite = numpy.sum(numpy.logical_not( - numpy.logical_or(numpy.isfinite(varArr), isEdge))) - return numImNotFinite, numVarNotFinite, numImNotEdgeOrFinite, numVarNotEdgeOrFinite - - -if __name__ == "__main__": - maskedImage = afwImage.MaskedImageF(sys.argv[1]) - - mask = maskedImage.getMask() - maskBitNameDict = getMaskBitNameDict(mask) - maskArr = maskedImage.getMask().getArray() - bitIndList = sorted(maskBitNameDict.keys()) - print("Bit Mask Plane Name # Pixels") - for bitInd in bitIndList: - planeName = maskBitNameDict[bitInd] - bitMask = 1 << bitInd - count = numpy.sum(maskArr & bitMask > 0) - print("%3d %-18s %d" % (bitInd, planeName, count)) - - print() - print("Interpolation: \"bad\" pixels have any of these bits set: %s" % - (BadPixelList,)) - numBad, numInterp, numBadAndInterp = countInterp(maskedImage) - print("%d bad; %d interp; %d bad & interp; %d bad and not interp; %d good but interp" % - (numBad, numInterp, numBadAndInterp, numBad - numBadAndInterp, numInterp - numBadAndInterp)) - - print() - numImNotFinite, numVarNotFinite, numImNotEdgeOrFinite, numVarNotEdgeOrFinite = countNotFinite( - maskedImage) - print("%d non-finite image pixels; of these %d are not EDGE" % - (numImNotFinite, numImNotEdgeOrFinite)) - print("%d non-finite variance pixels; of these %d are not EDGE" % - (numVarNotFinite, numVarNotEdgeOrFinite)) diff --git a/examples/decoratedImage.cc b/examples/decoratedImage.cc deleted file mode 100644 index ca53c6c392..0000000000 --- a/examples/decoratedImage.cc +++ /dev/null @@ -1,76 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/geom.h" -#include "lsst/pex/exceptions.h" -#include "lsst/afw/image/Image.h" - -namespace afwImage = lsst::afw::image; - -template -void print(afwImage::Image& src, const std::string& title = "") { - if (title.size() > 0) { - printf("%s:\n", title.c_str()); - } - - printf("%3s ", ""); - for (int x = 0; x != src.getWidth(); ++x) { - printf("%4d ", x); - } - printf("\n"); - - for (int y = src.getHeight() - 1; y >= 0; --y) { - printf("%3d ", y); - for (typename afwImage::Image::c_iterator src_it = src.row_begin(y); src_it != src.row_end(y); - ++src_it) { - printf("%4g ", static_cast((*src_it)[0])); - } - printf("\n"); - } -} - -int main(int argc, char* argv[]) { - afwImage::DecoratedImage dimg(lsst::geom::Extent2I(10, 6)); - afwImage::Image img(*dimg.getImage()); - - std::string file_u16; - if (argc == 2) { - file_u16 = std::string(argv[1]); - } else { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - file_u16 = dataDir + "/data/small.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Error: provide fits file path as argument or setup afwdata.\n" << std::endl; - exit(EXIT_FAILURE); - } - } - std::cout << "Running with: " << file_u16 << std::endl; - afwImage::DecoratedImage dimg2(file_u16); - - return 0; -} diff --git a/examples/deltaFunctionKernels.cc b/examples/deltaFunctionKernels.cc deleted file mode 100644 index c3dcc072a2..0000000000 --- a/examples/deltaFunctionKernels.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "boost/format.hpp" - -#include "lsst/afw/math.h" - -namespace afwMath = lsst::afw::math; - -int main() { - unsigned int kernelCols = 3; - unsigned int kernelRows = 2; - unsigned int nPixels = kernelCols * kernelRows; - - // create linear combination kernel as a set of delta function basis kernels - afwMath::KernelList kernelList; - { - unsigned int ind = 0; - for (unsigned int row = 0; row < kernelRows; ++row) { - for (unsigned int col = 0; col < kernelCols; ++col) { - std::cout << boost::format("Delta function kernel %3d: col=%d, row=%d\n") % ind % col % row; - std::shared_ptr kernelPtr(new afwMath::DeltaFunctionKernel( - kernelCols, kernelRows, lsst::geom::Point2I(col, row))); - kernelList.push_back(kernelPtr); - ++ind; - } - } - } - std::cout << std::endl; - std::vector kernelParams(nPixels); // initial kernel parameters - afwMath::LinearCombinationKernel deltaFunctionKernelSet(kernelList, kernelParams); - - // set various kernel parameters and print the results - for (unsigned int ind = 0; ind < nPixels; ++ind) { - kernelParams[ind] = 1.0; - deltaFunctionKernelSet.setKernelParameters(kernelParams); - - std::cout << "DeltaFunctionKernelSet with kernelParams="; - for (unsigned int ii = 0; ii < nPixels; ++ii) { - std::cout << kernelParams[ii] << " "; - } - std::cout << std::endl << std::endl; - afwMath::printKernel(deltaFunctionKernelSet, true); - } -} diff --git a/examples/ellipsePixelRegion.py b/examples/ellipsePixelRegion.py deleted file mode 100644 index a3f5a4f3d8..0000000000 --- a/examples/ellipsePixelRegion.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python - -import numpy -from matplotlib import pyplot - -import lsst.geom -import lsst.afw.geom.ellipses - - -def main(): - axes = lsst.afw.geom.ellipses.Axes(4, 3, 1) - ellipse = lsst.afw.geom.ellipses.Ellipse( - axes, lsst.geom.Point2D(0.25338, 0.76032)) - region = lsst.afw.geom.ellipses.PixelRegion(ellipse) - for bbox in [ellipse.computeBBox(), lsst.geom.Box2D(region.getBBox())]: - corners = bbox.getCorners() - pyplot.fill([p.getX() for p in corners], [p.getY() - for p in corners], alpha=0.2) - envelope = region.getBBox() - envelope.grow(2) - ellipse.plot(alpha=0.2) - ellX = [] - ellY = [] - allX, allY = numpy.meshgrid( - numpy.arange(envelope.getBeginX(), envelope.getEndX()), - numpy.arange(envelope.getBeginY(), envelope.getEndY()) - ) - gt = ellipse.getGridTransform() - mgt = gt.getMatrix() - transX = mgt[0, 0] * allX + mgt[0, 1] * allY + mgt[0, 2] - transY = mgt[1, 0] * allX + mgt[1, 1] * allY + mgt[1, 2] - allR = (transX**2 + transY**2)**0.5 - pyplot.plot(ellX, ellY, 'ro', markeredgewidth=0, alpha=0.5) - pyplot.plot(allX[allR < 1], allY[allR < 1], '+') - pyplot.plot(allX[allR > 1], allY[allR > 1], 'x') - - -if __name__ == "__main__": - main() - pyplot.show() diff --git a/examples/estimateBackground.py b/examples/estimateBackground.py deleted file mode 100644 index 6c823fe369..0000000000 --- a/examples/estimateBackground.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python - -# -# This file is part of afw. -# -# Developed for the LSST Data Management System. -# This product includes software developed by the LSST Project -# (https://www.lsst.org). -# See the COPYRIGHT file at the top-level directory of this distribution -# for details of code ownership. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -import os -import lsst.utils -import lsst.afw.image as afwImage -import lsst.afw.math as afwMath -import lsst.afw.display as afwDisplay - -try: - display -except NameError: - display = not False - -afwDisplay.setDefaultMaskTransparency(75) - -################################################ - - -def getImage(): - imagePath = os.path.join(lsst.utils.getPackageDir("afwdata"), - "DC3a-Sim", "sci", "v5-e0", "v5-e0-c011-a00.sci.fits") - return afwImage.MaskedImageF(imagePath) - - -def simpleBackground(image): - binsize = 128 - nx = int(image.getWidth()/binsize) + 1 - ny = int(image.getHeight()/binsize) + 1 - bctrl = afwMath.BackgroundControl(nx, ny) - - bkgd = afwMath.makeBackground(image, bctrl) - - image -= bkgd.getImageF(afwMath.Interpolate.NATURAL_SPLINE) - - return bkgd - - -def complexBackground(image): - MaskPixel = afwImage.MaskPixel - binsize = 128 - nx = int(image.getWidth()/binsize) + 1 - ny = int(image.getHeight()/binsize) + 1 - - sctrl = afwMath.StatisticsControl() - sctrl.setNumSigmaClip(3) - sctrl.setNumIter(4) - sctrl.setAndMask(afwImage.Mask[MaskPixel].getPlaneBitMask(["INTRP", - "EDGE"])) - sctrl.setNoGoodPixelsMask(afwImage.Mask[MaskPixel].getPlaneBitMask("BAD")) - sctrl.setNanSafe(True) - if False: - sctrl.setWeighted(True) - sctrl.setCalcErrorFromInputVariance(True) - - bctrl = afwMath.BackgroundControl(nx, ny, sctrl, afwMath.MEANCLIP) - - bkgd = afwMath.makeBackground(image, bctrl) - - statsImage = bkgd.getStatsImage() - afwDisplay.Display(frame=3).mtv(statsImage.getVariance(), title="statsImage Variance") - - return bkgd - - -def main(): - image = getImage() - - if display: - afwDisplay.Display(frame=0).mtv(image, title="Image") - - bkgd = simpleBackground(image) - image = getImage() - bkgd = complexBackground(image) - - if display: - afwDisplay.Display(frame=1).mtv(image, title="image") - afwDisplay.Display(frame=2).mtv(bkgd.getStatsImage(), title="background") - - order = 2 - actrl = afwMath.ApproximateControl( - afwMath.ApproximateControl.CHEBYSHEV, order, order) - approx = bkgd.getApproximate(actrl) - - approx.getImage() - approx.getMaskedImage() - approx.getImage(order - 1) - - -################################################# -if __name__ == '__main__': - main() diff --git a/examples/fixedKernel.cc b/examples/fixedKernel.cc deleted file mode 100644 index 9305ffad9e..0000000000 --- a/examples/fixedKernel.cc +++ /dev/null @@ -1,56 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include - -#include -#include "boost/format.hpp" - -#include "lsst/afw/image.h" -#include "lsst/afw/math.h" - -using namespace std; - -int main() { - using Pixel = lsst::afw::math::Kernel::Pixel; - - double majorSigma = 2.5; - double minorSigma = 2.0; - double angle = 0.5; - unsigned int kernelCols = 5; - unsigned int kernelRows = 4; - - lsst::afw::math::GaussianFunction2 gaussFunc(majorSigma, minorSigma, angle); - lsst::afw::math::AnalyticKernel analyticKernel(kernelCols, kernelRows, gaussFunc); - lsst::afw::image::Image analyticImage(analyticKernel.getDimensions()); - (void)analyticKernel.computeImage(analyticImage, true); - analyticImage *= 47.3; // denormalize by some arbitrary factor - - lsst::afw::math::FixedKernel fixedKernel(analyticImage); - - cout << boost::format("Gaussian kernel with majorSigma=%.1f, minorSigma=%.1f\n") % majorSigma % - minorSigma; - - lsst::afw::math::printKernel(fixedKernel, true); -} diff --git a/examples/footprintSet.py b/examples/footprintSet.py deleted file mode 100755 index 9fc041c112..0000000000 --- a/examples/footprintSet.py +++ /dev/null @@ -1,116 +0,0 @@ -# This file is part of afw. -# -# Developed for the LSST Data Management System. -# This product includes software developed by the LSST Project -# (https://www.lsst.org). -# See the COPYRIGHT file at the top-level directory of this distribution -# for details of code ownership. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -""" -Examples of using Footprints -""" - -import lsst.geom -import lsst.afw.image as afwImage -import lsst.afw.detection as afwDetect -import lsst.afw.display as afwDisplay - -afwDisplay.setDefaultMaskTransparency(75) - - -def showPeaks(im=None, fs=None, frame=0): - """Show the image and peaks""" - if frame is None: - return - - disp = afwDisplay.Display(frame=frame) - if im: - disp.mtv(im, title="Image and peaks") - - if fs: - with disp.Buffering(): # turn on buffering of display's slow "region" writes - for foot in fs.getFootprints(): - for p in foot.getPeaks(): - disp.dot("+", p.getIx(), p.getIy(), size=0.4, ctype=afwDisplay.RED) - - -def run(frame=6): - im = afwImage.MaskedImageF(lsst.geom.Extent2I(14, 10)) - # - # Populate the image with objects that we should detect - # - objects = [] - objects.append([(4, 1, 10), (3, 2, 10), (4, 2, 20), - (5, 2, 10), (4, 3, 10), ]) - objects.append([(9, 7, 30), (10, 7, 29), (12, 7, 28), - (10, 8, 27), (11, 8, 26), (10, 4, -5)]) - objects.append([(3, 8, 10), (4, 8, 10), ]) - - for obj in objects: - for x, y, I in obj: - im.getImage()[x, y, afwImage.LOCAL] = I - - im.getVariance().set(1) - im.getVariance()[10, 4, afwImage.LOCAL] = 0.5**2 - # - # Detect the objects at 10 counts or above - # - level = 10 - fs = afwDetect.FootprintSet(im, afwDetect.Threshold(level), "DETECTED") - - showPeaks(im, fs, frame=frame) - # - # Detect the objects at -10 counts or below. N.b. the peak's at -5, so it isn't detected - # - polarity = False # look for objects below background - threshold = afwDetect.Threshold(level, afwDetect.Threshold.VALUE, polarity) - fs2 = afwDetect.FootprintSet(im, threshold, "DETECTED_NEGATIVE") - print("Detected %d objects below background" % len(fs2.getFootprints())) - # - # Search in S/N (n.b. the peak's -10sigma) - # - threshold = afwDetect.Threshold( - level, afwDetect.Threshold.PIXEL_STDEV, polarity) - fs2 = afwDetect.FootprintSet(im, threshold) - # - # Here's another way to set a mask plane (we chose not to do so in the FootprintSet call) - # - msk = im.getMask() - afwDetect.setMaskFromFootprintList( - msk, fs2.getFootprints(), msk.getPlaneBitMask("DETECTED_NEGATIVE")) - - if frame is not None: - frame += 1 - afwDisplay.Display(frame=frame).mtv(msk, title="Image Mask") - # - # Merge the positive and negative detections, growing both sets by 1 pixel - # - fs.merge(fs2, 1, 1) - # - # Set EDGE so we can see the grown Footprints - # - afwDetect.setMaskFromFootprintList( - msk, fs.getFootprints(), msk.getPlaneBitMask("EDGE")) - - if frame is not None: - frame += 1 - afwDisplay.Display(frame=frame).mtv(msk, title="Grown Mask") - - showPeaks(fs=fs, frame=frame + 1) - - -if __name__ == "__main__": - run(frame=None) diff --git a/examples/forEachPixel.cc b/examples/forEachPixel.cc deleted file mode 100644 index 187328e654..0000000000 --- a/examples/forEachPixel.cc +++ /dev/null @@ -1,104 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include "lsst/geom/Extent.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/image/ImageAlgorithm.h" - -namespace afwImage = lsst::afw::image; -template -struct erase : public afwImage::pixelOp0 { - T operator()() const override { return 0; } -}; - -template -struct setVal - : public afwImage::pixelOp0 { // don't call it fill as people like to say using namespace std - setVal(T val) : _val(val) {} - T operator()() const override { return _val; } - -private: - T _val; -}; - -template -struct addOne : public afwImage::pixelOp1 { - T operator()(T val) const override { return val + 1; } -}; - -template -struct divide : public afwImage::pixelOp2 { - T1 operator()(T1 lhs, T2 rhs) const override { return lhs / rhs; } -}; - -template -struct Gaussian : public afwImage::pixelOp1XY { - Gaussian(float a, float xc, float yc, float alpha) : _a(a), _xc(xc), _yc(yc), _alpha(alpha) {} - T operator()(int x, int y, T val) const override { - float const dx = x - _xc; - float const dy = y - _yc; - return val + _a * ::exp(-(dx * dx + dy * dy) / (2 * _alpha * _alpha)); - } - -private: - float _a, _xc, _yc, _alpha; -}; - -using namespace std; - -int main() { - afwImage::Image img1(lsst::geom::Extent2I(10, 6)); - afwImage::Image img2(img1.getDimensions()); - // set img1 to 0 (actually, the constructor already did this) - lsst::afw::image::for_each_pixel(img1, erase()); - - // Set img2 to 10 - lsst::afw::image::for_each_pixel(img2, setVal(10)); - cout << img1(0, 0) << " " << img2(0, 0) << endl; - - // Set img1 += 1 - lsst::afw::image::for_each_pixel(img1, addOne()); - cout << img1(0, 0) << " " << img2(0, 0) << endl; - - // Set img1 = img2 + 1 - lsst::afw::image::for_each_pixel(img1, img2, addOne()); - cout << img1(0, 0) << " " << img2(0, 0) << endl; - - // Set img1 = 10, img2 = 3 then img1 /= img2 - lsst::afw::image::for_each_pixel(img1, setVal(10)); - lsst::afw::image::for_each_pixel(img2, setVal(3)); - - lsst::afw::image::for_each_pixel(img1, img2, divide()); - cout << img1(0, 0) << " " << img2(0, 0) << endl; - - // Set img1 = 10 + Gaussian() - float const peak = 1000.0; // peak value - float const xc = 5.0; // center of Gaussian - float const yc = 3.0; // - float const alpha = 1.5; // "sigma" for Gaussian - - lsst::afw::image::for_each_pixel(img1, setVal(10)); - lsst::afw::image::for_each_pixel(img1, Gaussian(peak, xc, yc, alpha)); - cout << img1(0, 0) << " " << img1(xc, yc) << endl; -} diff --git a/examples/gaussianFunction.cc b/examples/gaussianFunction.cc deleted file mode 100644 index 5d0e5e416b..0000000000 --- a/examples/gaussianFunction.cc +++ /dev/null @@ -1,39 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include - -#include "boost/format.hpp" - -#include "lsst/afw/math/FunctionLibrary.h" - -using namespace std; - -int main() { - using FuncReturn = double; - double sigma = 2.0; - lsst::afw::math::GaussianFunction1 gaussFunc(sigma); - - for (double x = -3.0; x < 3.1; x += 0.5) { - cout << boost::format("gauss(%5.1f) = %6.3f\n") % x % gaussFunc(x); - } -} diff --git a/examples/image.cc b/examples/image.cc deleted file mode 100644 index c5984297df..0000000000 --- a/examples/image.cc +++ /dev/null @@ -1,203 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" - -namespace afwImage = lsst::afw::image; - -template -void print(afwImage::Image& src, const std::string& title = "") { - using XIter = typename afwImage::Image::x_iterator; - if (title.size() > 0) { - printf("%s:\n", title.c_str()); - } - - printf("%3s ", ""); - for (int x = 0; x != src.getWidth(); ++x) { - printf("%4d ", x); - } - printf("\n"); - - for (int y = src.getHeight() - 1; y >= 0; --y) { - printf("%3d ", y); - for (XIter src_it = src.row_begin(y), src_end = src.row_end(y); src_it != src_end; ++src_it) { - printf("%4g ", static_cast((*src_it)[0])); - } - printf("\n"); - } -} - -template -void printT(afwImage::Image& src, const std::string& _title = "") { - std::string title = _title; - if (title.size() > 0) { - title += " "; - } - title += "transposed"; - printf("%s:\n", title.c_str()); - - printf("%3s ", ""); - for (int r = 0; r != src.getHeight(); ++r) { - printf("%4d ", r); - } - printf("\n"); - - for (int c = 0; c != src.getWidth(); ++c) { - printf("%3d ", c); - -#if 1 // print the column from the top (there's no reverse iterator) - typename afwImage::Image::y_iterator src_it = src.col_begin(c); - for (int r = src.getHeight() - 1; r >= 0; --r) { - printf("%4g ", static_cast(src_it[r][0])); - } -#else // print the column from the bottom (i.e. upside down) - for (typename afwImage::Image::y_iterator src_it = src.col_begin(c); src_it != src.col_end(c); - ++src_it) { - printf("%4g ", static_cast((*src_it)[0])); - } -#endif - - printf("\n"); - } -} - -template -void y_gradient(const afwImage::Image& src, const afwImage::Image& dst) { - assert(src.getDimensions() == dst.getDimensions()); - - using xy_loc = typename afwImage::Image::const_xy_locator; - xy_loc src_loc = src.xy_at(0, 1); - -#define USE_CACHE_LOCATION 1 -#if USE_CACHE_LOCATION - typename xy_loc::cached_location_t above = src_loc.cache_location(0, 1); - typename xy_loc::cached_location_t below = src_loc.cache_location(0, -1); -#endif - - for (int r = 1; r < src.getHeight() - 1; ++r) { - for (typename afwImage::Image::x_iterator dst_it = dst.row_begin(r); dst_it != dst.row_end(r); - ++dst_it, ++src_loc.x()) { -#if USE_CACHE_LOCATION // this version is faster - *dst_it = (src_loc[above] - src_loc[below]) / 2; -#else // but this is possible too, and more general (but slower) - *dst_it = (src_loc(0, 1) - src_loc(0, -1)) / 2; -#endif - } - - src_loc += afwImage::detail::difference_type(-src.getWidth(), 1); - } -} - -int main() { - afwImage::Image img(lsst::geom::Extent2I(10, 6)); - // This is equivalent to img = 100: - for (afwImage::Image::iterator ptr = img.begin(); ptr != img.end(); ++ptr) { - (*ptr)[0] = 100; - } - // so is this, but fills backwards - for (afwImage::Image::reverse_iterator ptr = img.rbegin(); ptr != img.rend(); ++ptr) { - (*ptr)[0] = 100; - } - // so is this, but tests a different way of choosing begin() - for (afwImage::Image::iterator ptr = img.at(0, 0); ptr != img.end(); ++ptr) { - (*ptr)[0] = 100; - } - - afwImage::Image jmg = img; - - printf("%dx%d\n", img.getWidth(), img.getHeight()); - - *img.y_at(7, 2) = 999; - *img.x_at(0, 0) = 0; - img(img.getWidth() - 1, img.getHeight() - 1) = -100; - - print(img, "img"); - printT(img, "img"); - print(jmg, "jmg"); - - afwImage::Image kmg = jmg; - kmg(0, 0) = 111; - kmg += 222; - kmg -= 222; - kmg += jmg; - kmg *= 10; - { - afwImage::Image tmp(kmg.getDimensions()); - tmp = 10; - print(tmp, "tmp"); - kmg /= tmp; - } - print(kmg, "kmg"); - - afwImage::Image lmg(img); - print(lmg, "lmg"); - - afwImage::Image mmg(img, true); - mmg = -1; // shouldn't modify img - - printf("sub images\n"); - - // img will be modified - afwImage::Image simg1( - img, lsst::geom::Box2I(lsst::geom::Point2I(1, 1), lsst::geom::Extent2I(7, 3)), afwImage::LOCAL); - afwImage::Image simg( - simg1, lsst::geom::Box2I(lsst::geom::Point2I(0, 0), lsst::geom::Extent2I(5, 2)), afwImage::LOCAL); - - { - afwImage::Image nimg(lsst::geom::Extent2I(5, 2)); - nimg = 1; - simg.assign(nimg); - } - - print(simg, "simg"); - print(img, "img"); - - printf("\n"); - for (int r = 0; r != img.getHeight(); ++r) { - std::fill(img.row_begin(r), img.row_end(r), 100 * (1 + r)); - } - print(img, "ramp img"); - - afwImage::Image grad_y(img.getDimensions()); - grad_y = 0; - y_gradient(img, grad_y); - - print(grad_y, "grad_y"); - - afwImage::Image u16(img.getDimensions()); - u16 = 100; - afwImage::Image fl32(u16, true); // must be true as all type conversions are deep - print(fl32, "Float from U16"); - - try { - afwImage::Image fl32(u16, false); // will throw - } catch (lsst::pex::exceptions::InvalidParameterError& e) { - printf("Correctly threw exception: %s\n", e.what()); - } - - return 0; -} diff --git a/examples/image1.cc b/examples/image1.cc deleted file mode 100644 index 1b520b5414..0000000000 --- a/examples/image1.cc +++ /dev/null @@ -1,115 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * Image iterator tutorial. - */ - -// Include the necessary headers; -// if using many image modules then you may prefer to include "lsst/afw/image.h" -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" - -// Declare the desired Image type. -// Note: only specific types are supported; for the list of available types -// see the explicit instantiation code at the end of lsst/afw/image/src/Image.cc -namespace afwImage = lsst::afw::image; -using ImageT = afwImage::Image; - -int main() { - // Declare an Image; its pixels are not yet initialized. - ImageT img(lsst::geom::Extent2I(10, 6)); - - // Initialize all pixels to a given value. - img = 100; - - // Alternatively you can specify an initial value in the constructor: - ImageT img2(img.getDimensions(), 100.0); - - // Here is a common and efficient way to set all pixels of the image. - // Note that the end condition is only computed once, for efficiency. - for (int y = 0; y != img.getHeight(); ++y) { - for (ImageT::x_iterator ptr = img.row_begin(y), end = img.row_end(y); ptr != end; ++ptr) { - *ptr = 100; - } - } - - // It is probably slower to compute the end condition each time, as is done here. - for (int y = 0; y != img.getHeight(); ++y) { - for (ImageT::x_iterator ptr = img.row_begin(y); ptr != img.row_end(y); ++ptr) { - *ptr = 100; - } - } - - // STL-compliant iterators are available. - // However, they are not very efficient because the image data may not be contiguous - // so these iterators must test for end-of-row on every increment. - // (By the way, we do guarantee that an image's row data is contiguous). - // iterator - for (ImageT::iterator ptr = img.begin(), end = img.end(); ptr != end; ++ptr) { - *ptr = 100; - } - // reverse_iterator - for (ImageT::reverse_iterator ptr = img.rbegin(), end = img.rend(); ptr != end; ++ptr) { - *ptr = 100; - } - // A different way of choosing begin() for use with (inefficient) iterator - for (ImageT::iterator ptr = img.at(0, 0), end = img.end(); ptr != end; ++ptr) { - *ptr = 100; - } - - // There is one efficient STL-compliant iterator: "fast_iterator", but it only works for contiguous images - // (such as newly allocated images). If you attempt to use this on a subimage you will get an exception. - for (ImageT::fast_iterator ptr = img.begin(true), end = img.end(true); ptr != end; ++ptr) { - *ptr = 100; - } - - // It is possible to traverse the image by columns instead of by rows, - // but because the data is row-contiguous, this has awful consequences upon cache performance. - for (int x = 0; x != img.getWidth(); ++x) { - for (ImageT::y_iterator ptr = img.col_begin(x), end = img.col_end(x); ptr != end; ++ptr) { - *ptr = 100; - } - } - - // If you must traverse the image by columns then consider doing it in batches to improve - // cache performance, as shown here: - int x = 0; - for (; x != img.getWidth() % 4; ++x) { - for (ImageT::y_iterator ptr = img.col_begin(x), end = img.col_end(x); ptr != end; ++ptr) { - *ptr = 100; - } - } - for (; x != img.getWidth(); x += 4) { - for (ImageT::y_iterator ptr0 = img.col_begin(x + 0), end0 = img.col_end(x + 0), - ptr1 = img.col_begin(x + 1), ptr2 = img.col_begin(x + 2), - ptr3 = img.col_begin(x + 3); - ptr0 != end0; ++ptr0, ++ptr1, ++ptr2, ++ptr3) { - *ptr0 = *ptr1 = *ptr2 = *ptr3 = 100; - } - } - - // Save the image to disk - img.writeFits("foo.fits"); - - return 0; -} diff --git a/examples/image2.cc b/examples/image2.cc deleted file mode 100644 index a2f015ba9a..0000000000 --- a/examples/image2.cc +++ /dev/null @@ -1,131 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" - -namespace image = lsst::afw::image; -using ImageT = image::Image; - -int main() { - ImageT in(lsst::geom::Extent2I(10, 6)); - - // Set data to a ramp - for (int y = 0; y != in.getHeight(); ++y) { - for (ImageT::xy_locator ptr = in.xy_at(0, y), end = in.xy_at(in.getWidth(), y); ptr != end; - ++ptr.x()) { - *ptr = y; - } - } - // - // Convolve with a pseudo-Gaussian kernel ((1, 2, 1), (2, 4, 2), (1, 2, 1)) - // - ImageT out(in.getDimensions()); // Make an output image the same size as the input image - out.assign(in); - for (int y = 1; y != in.getHeight() - 1; ++y) { - for (ImageT::xy_locator ptr = in.xy_at(1, y), end = in.xy_at(in.getWidth() - 1, y), - optr = out.xy_at(1, y); - ptr != end; ++ptr.x(), ++optr.x()) { - *optr = ptr(-1, -1) + 2 * ptr(0, -1) + ptr(1, -1) + 2 * ptr(-1, 0) + 4 * ptr(0, 0) + - 2 * ptr(1, 0) + ptr(-1, 1) + 2 * ptr(0, 1) + ptr(1, 1); - } - } - // - // Do the same thing a faster way, using cached_location_t - // - std::shared_ptr out2(new ImageT(in.getDimensions())); - out2->assign(in); - - using xy_loc = ImageT::const_xy_locator; - - for (int y = 1; y != in.getHeight() - 1; ++y) { - // "dot" means "cursor location" in emacs - xy_loc dot = in.xy_at(1, y), end = in.xy_at(in.getWidth() - 1, y); - - xy_loc::cached_location_t nw = dot.cache_location(-1, -1); - xy_loc::cached_location_t n = dot.cache_location(0, -1); - xy_loc::cached_location_t ne = dot.cache_location(1, -1); - xy_loc::cached_location_t w = dot.cache_location(-1, 0); - xy_loc::cached_location_t c = dot.cache_location(0, 0); - xy_loc::cached_location_t e = dot.cache_location(1, 0); - xy_loc::cached_location_t sw = dot.cache_location(-1, 1); - xy_loc::cached_location_t s = dot.cache_location(0, 1); - xy_loc::cached_location_t se = dot.cache_location(1, 1); - - for (ImageT::x_iterator optr = out2->row_begin(y) + 1; dot != end; ++dot.x(), ++optr) { - *optr = dot[nw] + 2 * dot[n] + dot[ne] + 2 * dot[w] + 4 * dot[c] + 2 * dot[e] + dot[sw] + - 2 * dot[s] + dot[se]; - } - } - // - // Do the same calculation, but set nw etc. outside the loop - // - xy_loc pix11 = in.xy_at(1, 1); - - xy_loc::cached_location_t nw = pix11.cache_location(-1, -1); - xy_loc::cached_location_t n = pix11.cache_location(0, -1); - xy_loc::cached_location_t ne = pix11.cache_location(1, -1); - xy_loc::cached_location_t w = pix11.cache_location(-1, 0); - xy_loc::cached_location_t c = pix11.cache_location(0, 0); - xy_loc::cached_location_t e = pix11.cache_location(1, 0); - xy_loc::cached_location_t sw = pix11.cache_location(-1, 1); - xy_loc::cached_location_t s = pix11.cache_location(0, 1); - xy_loc::cached_location_t se = pix11.cache_location(1, 1); - - for (int y = 1; y != in.getHeight() - 1; ++y) { - // "dot" means "cursor location" in emacs - xy_loc dot = in.xy_at(1, y), end = in.xy_at(in.getWidth() - 1, y); - - for (ImageT::x_iterator optr = out2->row_begin(y) + 1; dot != end; ++dot.x(), ++optr) { - *optr = dot[nw] + 2 * dot[n] + dot[ne] + 2 * dot[w] + 4 * dot[c] + 2 * dot[e] + dot[sw] + - 2 * dot[s] + dot[se]; - } - } - // - // Normalise the kernel. I.e. divide the smoothed parts of image2 by 16 - // - { - ImageT center = ImageT( - *out2, - lsst::geom::Box2I(lsst::geom::Point2I(1, 1), in.getDimensions() - lsst::geom::Extent2I(2)), - image::LOCAL); - center /= 16; - } - // - // Clear in using the x_iterator embedded in the locator - // - for (int y = 0; y != in.getHeight(); ++y) { - for (ImageT::xy_x_iterator ptr = in.xy_at(0, y).x(), end = in.xy_at(in.getWidth(), y).x(); ptr != end; - ++ptr) { - *ptr = 0; - } - } - // - // Save those images to disk - // - out.writeFits("foo.fits"); - out2->writeFits("foo2.fits"); - - return 0; -} diff --git a/examples/imageAddSegFault.py b/examples/imageAddSegFault.py deleted file mode 100755 index e1d3cb7fac..0000000000 --- a/examples/imageAddSegFault.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -"""Demonstrate a segmentation fault -""" -import lsst.geom -import lsst.afw.image as afwImage - -testMaskedImage = afwImage.MaskedImageD(lsst.geom.Extent2I(100, 100)) -testImage = testMaskedImage.getImage().get() # no segfault if .get() omitted -addImage = afwImage.ImageD(testMaskedImage.getCols(), - testMaskedImage.getRows()) -testImage += addImage # no segfault if this step omitted -print("Done") diff --git a/examples/imageBackground.cc b/examples/imageBackground.cc deleted file mode 100644 index 9c150dcfa0..0000000000 --- a/examples/imageBackground.cc +++ /dev/null @@ -1,109 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/math/Background.h" -#include "lsst/afw/math/Interpolate.h" - -using namespace std; -namespace image = lsst::afw::image; -namespace math = lsst::afw::math; - -using ImageF = image::Image; - -int main() { - // set the parameters for a fake image. - int const wid = 256; // pixels - int const xcen = wid / 2; // pixels - int const ycen = wid / 2; // pixels - int const xsig = 2; // pixels - int const ysig = xsig; // pixels - float const sky = 100.0; // photo-e - float const A = 100.0; // peak star brightness in photo-e - int const nStar = 100; - - // declare an image. - ImageF img(lsst::geom::Extent2I(wid, wid)); - img = sky; - - // put sky and some fake stars in the image, and add uniform noise - for (int iS = 0; iS < nStar; ++iS) { - int const xStar = static_cast(wid * static_cast(rand()) / RAND_MAX); - int const yStar = static_cast(wid * static_cast(rand()) / RAND_MAX); - for (int i_y = 0; i_y != img.getHeight(); ++i_y) { - int iX = 0; - for (ImageF::x_iterator ip = img.row_begin(i_y); ip != img.row_end(i_y); ++ip) { - // use a bivariate gaussian as a stellar PSF - *ip += A * exp(-((iX - xStar) * (iX - xStar) + (i_y - yStar) * (i_y - yStar)) / - (2.0 * xsig * ysig)); - - // add the noise on the last pass - if (iS == nStar - 1) { - // @todo Change to a Poisson variate - *ip += sqrt(*ip) * 2.0 * (static_cast(rand()) / RAND_MAX - 0.5); - } - ++iX; - } - } - } - - // declare a background control object for a natural spline - math::BackgroundControl bgCtrl(math::Interpolate::NATURAL_SPLINE); - - // could also use a string! (commented-out, but will work) - // math::BackgroundControl bgCtrl("NATURAL_SPLINE"); - - // we can control the background estimate - bgCtrl.setNxSample(5); - bgCtrl.setNySample(5); - - // we can also control the statistics - bgCtrl.getStatisticsControl()->setNumIter(3); - bgCtrl.getStatisticsControl()->setNumSigmaClip(2.5); - - // initialize a background object - std::shared_ptr back = math::makeBackground(img, bgCtrl); - - // can get an individual pixel or a whole frame. - std::shared_ptr bg = back->getImage(); - float const MID = (*bg)(xcen, ycen); - - // create a background-subtracted image - ImageF sub(img.getDimensions()); - sub.assign(img); - sub -= *bg; - - // output what we've made - cout << xcen << " " << ycen << " center pixel: " << MID << endl; - img.writeFits("example_Background_fak.fits"); - bg->writeFits("example_Background_bac.fits"); - sub.writeFits("example_Background_sub.fits"); - - return 0; -} diff --git a/examples/imageDisplay.ipynb b/examples/imageDisplay.ipynb deleted file mode 100644 index b7a08dbf9b..0000000000 --- a/examples/imageDisplay.ipynb +++ /dev/null @@ -1,336 +0,0 @@ -{ - "metadata": { - "name": "" - }, - "nbformat": 3, - "nbformat_minor": 0, - "worksheets": [ - { - "cells": [ - { - "cell_type": "code", - "collapsed": false, - "input": [ - "#\n", - "# Users should not usually set the default backend in a script.\n", - "#\n", - "# If you want to explicitly set the backend (the default is \"ds9\" \n", - "# if you've setup display_ds9, or \"virtualDevice\" otherwise), put \n", - "# something like this in your $PYTHONSTARTUP file\n", - "#\n", - "try:\n", - " import lsst.afw.display as afwDisplay\n", - "except ImportError:\n", - " afwDisplay = None\n", - "\n", - "if afwDisplay:\n", - " try:\n", - " afwDisplay.setDefaultBackend(\"ds9\" if True else \"virtualDevice\")\n", - " except RuntimeError as e:\n", - " print e\n", - "\n", - " afwDisplay.setDefaultMaskTransparency(75)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 6 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You don't usually need to do this, but if we have changed the defaultBackend we need a clean slate of displays" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "afwDisplay.delAllDisplays()" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 2 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "import lsst.afw.image as afwImage\n", - "\n", - "fileName = \"../tests/data/HSC-0908120-056-small.fits\"\n", - "exp = afwImage.ExposureF(fileName)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 3 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display0 = afwDisplay.getDisplay() # frame=0, verbose=True)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 4 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The workhorse \"display my image\" routine" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display0.mtv(exp, title=\"parent\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 5 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Configure the mask plane transparency (alpha); in percent and draw the CROSSTALK plane in orange" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display0.setMaskTransparency(50)\n", - "display0.setMaskPlaneColor(\"CROSSTALK\", \"orange\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 7 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now redisplay that image with some of the mask planes disabled" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "for frame in (0, 1):\n", - " disp = afwDisplay.getDisplay(frame, verbose=True)\n", - " \n", - " disp.setMaskTransparency(50)\n", - "\n", - " if frame == 1:\n", - " disp.setMaskPlaneColor(\"CROSSTALK\", \"ignore\")\n", - " disp.mtv(exp, title=\"parent\")\n", - " \n", - " disp.erase()\n", - " disp.dot('o', 205, 180, size=6, ctype=afwDisplay.RED)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 8 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Zoom and pan works too" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display0.pan(205, 180)\n", - "display0.zoom(4)\n", - "\n", - "afwDisplay.getDisplay(1).zoom(4, 205, 180)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 9 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now overlay something, in this case symbols and lines" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display0.show() # Un-iconise and raise the display to the top of the stacking order if appropriate\n", - "\n", - "display0.erase()\n", - "\n", - "with display0.Buffering():\n", - " display0.dot('o', 200, 220)\n", - " vertices = [(200, 220), (210, 230), (224, 230), (214, 220), (200, 220)]\n", - " display0.line(vertices, ctype=afwDisplay.CYAN)\n", - " display0.line(vertices[:-1], symbs=\"+x+x\", size=3)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 10 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now control the stretch." - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "display0.show()\n", - "\n", - "display0.scale(\"linear\", \"zscale\")" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 11 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Demonstrate the utility routine to generate mask plane colours (used by e.g. the ds9 implementation of _mtv)" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "colorGenerator = display0.maskColorGenerator(omitBW=True)\n", - "for i in range(10):\n", - " print i, next(colorGenerator)," - ], - "language": "python", - "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "0 red 1 green 2 blue 3 cyan 4 magenta 5 yellow 6 red 7 green 8 blue 9 cyan\n" - ] - } - ], - "prompt_number": 12 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Check that we can display a range of types of image" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "dummy = afwDisplay.getDisplay(\"dummy\", \"virtualDevice\")\n", - "\n", - "for imageType in [afwImage.DecoratedImageF,\n", - " afwImage.ExposureF,\n", - " afwImage.ImageU, \n", - " afwImage.ImageI,\n", - " afwImage.ImageF,\n", - " afwImage.MaskedImageF,\n", - " ]:\n", - " im = imageType(fileName)\n", - " dummy.mtv(im)\n", - " \n", - "im = afwImage.MaskU(fileName, 3)\n", - "dummy.mtv(im)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 13 - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now the make-an-image-mosaic code. Start by creating a set of 30x30 images with labels" - ] - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "images = []\n", - "labels = []\n", - "for i in range(1, 4):\n", - " im = afwImage.ImageF(30, 30); im[:] = 100*i\n", - " images.append(im)\n", - " labels.append(\"Label %d\" % i)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 14 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m = afwDisplay.Mosaic()\n", - "\n", - "mosaic = m.makeMosaic(images)\n", - "disp = afwDisplay.getDisplay(frame=2)\n", - "disp.mtv(mosaic)\n", - "m.drawLabels(labels, display=disp)" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 15 - }, - { - "cell_type": "code", - "collapsed": false, - "input": [ - "m = afwDisplay.Mosaic()\n", - " \n", - "m.setGutter(5)\n", - "m.setBackground(10)\n", - "m.setMode(\"x\")\n", - " \n", - "for im, lab in zip(images, labels):\n", - " m.append(im, lab)\n", - " \n", - "mos = m.makeMosaic(frame=3) # it's really better to pass a Display object" - ], - "language": "python", - "metadata": {}, - "outputs": [], - "prompt_number": 16 - } - ], - "metadata": {} - } - ] -} \ No newline at end of file diff --git a/examples/imageStatistics.cc b/examples/imageStatistics.cc deleted file mode 100644 index a8a46a98d2..0000000000 --- a/examples/imageStatistics.cc +++ /dev/null @@ -1,165 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/image/MaskedImage.h" -#include "lsst/afw/math/Statistics.h" - -#include "lsst/afw/math/MaskedVector.h" - -namespace image = lsst::afw::image; -namespace math = lsst::afw::math; - -using ImageF = image::Image; -using MaskedImageF = image::MaskedImage; -using ImgStat = math::Statistics; -using MaskedVectorF = math::MaskedVector; - -/* - * An example of how to use the Statistics class - */ - -template -void printStats(Image &img, math::StatisticsControl const &sctrl) { - // initialize a Statistics object with any stats we might want - ImgStat stats = math::makeStatistics( - img, - math::NPOINT | math::STDEV | math::MEAN | math::VARIANCE | math::ERRORS | math::MIN | math::MAX | - math::VARIANCECLIP | math::MEANCLIP | math::MEDIAN | math::IQRANGE | math::STDEVCLIP, - sctrl); - - // get various stats with getValue() and their errors with getError() - double const npoint = stats.getValue(math::NPOINT); - double const mean = stats.getValue(math::MEAN); - double const var = stats.getValue(math::VARIANCE); - double const dmean = stats.getError(math::MEAN); - double const sd = stats.getValue(math::STDEV); - double const min = stats.getValue(math::MIN); - double const max = stats.getValue(math::MAX); - double const meanclip = stats.getValue(math::MEANCLIP); - double const varclip = stats.getValue(math::VARIANCECLIP); - double const stdevclip = stats.getValue(math::STDEVCLIP); - double const median = stats.getValue(math::MEDIAN); - double const iqrange = stats.getValue(math::IQRANGE); - - // output - std::cout << "N " << npoint << std::endl; - std::cout << "dmean " << dmean << std::endl; - - std::cout << "mean: " << mean << std::endl; - std::cout << "meanclip: " << meanclip << std::endl; - - std::cout << "var: " << var << std::endl; - std::cout << "varclip: " << varclip << std::endl; - - std::cout << "stdev: " << sd << std::endl; - std::cout << "stdevclip: " << stdevclip << std::endl; - - std::cout << "min: " << min << std::endl; - std::cout << "max: " << max << std::endl; - std::cout << "median: " << median << std::endl; - std::cout << "iqrange: " << iqrange << std::endl; - std::cout << std::endl; -} - -int main() { - // declare an image and a masked image - int const wid = 1024; - ImageF img(lsst::geom::Extent2I(wid, wid)); - MaskedImageF mimg(img.getDimensions()); - std::vector v(0); - MaskedVectorF mv(wid * wid); - - // fill it with some noise (Cauchy noise in this case) - for (int j = 0; j != img.getHeight(); ++j) { - int k = 0; - MaskedImageF::x_iterator mip = mimg.row_begin(j); - for (ImageF::x_iterator ip = img.row_begin(j); ip != img.row_end(j); ++ip) { - double const xUniform = M_PI * static_cast(std::rand()) / RAND_MAX; - double xLorentz = xUniform; // tan(xUniform - M_PI/2.0); - - // throw in the occassional nan ... 1% of the time - if (static_cast(std::rand()) / RAND_MAX < 0.01) { - xLorentz = NAN; - } - - *ip = xLorentz; - - // mask the odd rows - // variance actually diverges for Cauchy noise ... but stats doesn't access this. - *mip = MaskedImageF::Pixel(xLorentz, (k % 2) ? 0x1 : 0x0, (k % 2) ? 1.0e99 : 1.0); - - v.push_back(xLorentz); - ++k; - ++mip; - } - } - - int j = 0; - for (MaskedVectorF::iterator mvp = mv.begin(); mvp != mv.end(); ++mvp) { - *mvp = MaskedVectorF::Pixel(v[j], (j % 2) ? 0x1 : 0x0, 10.0); - ++j; - } - - std::shared_ptr > vF = mv.getVector(); - - // make a statistics control object and override some of the default properties - math::StatisticsControl sctrl; - sctrl.setNumIter(3); - sctrl.setNumSigmaClip(5.0); - sctrl.setAndMask(0x1); // pixels with this mask bit set will be ignored. - sctrl.setNanSafe(true); - - // ================================================================== - // Get stats for the Image, MaskedImage, and vector - std::cout << "image::Image" << std::endl; - printStats(img, sctrl); - std::cout << "image::MaskedImage" << std::endl; - printStats(mimg, sctrl); - std::cout << "std::vector" << std::endl; - printStats(v, sctrl); - std::cout << "image::MaskedVector" << std::endl; - printStats(mv, sctrl); - std::cout << "image::MaskedVector::getVector()" << std::endl; - printStats(*vF, sctrl); - - // Now try the weighted statistics - sctrl.setWeighted(true); - sctrl.setAndMask(0x0); - std::cout << "image::MaskedImage (weighted)" << std::endl; - printStats(mimg, sctrl); - - // Now try the specialization to get NPOINT and SUM (bitwise OR) for an image::Mask - math::Statistics mskstat = makeStatistics(*mimg.getMask(), (math::NPOINT | math::SUM), sctrl); - std::cout << "image::Mask" << std::endl; - std::cout << mskstat.getValue(math::NPOINT) << " " << mskstat.getValue(math::SUM) << std::endl; - - return 0; -} diff --git a/examples/integrateCartesian.cc b/examples/integrateCartesian.cc deleted file mode 100644 index 8429c320a4..0000000000 --- a/examples/integrateCartesian.cc +++ /dev/null @@ -1,157 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * This example demonstrates how to use the romberg 1D and 2D - * integrators in afw::math (Quadrature). - * - */ -#include - -#include "lsst/afw/math/Integrate.h" - -namespace math = lsst::afw::math; - -/* ========================================================================= - * define a simple 1D function as a functor to be integrated. - * I've chosen a parabola here: f(x) = k + kx*x*x - * as it's got an easy-to-check analytic answer. - * - * @note We *have* to inherit from unary_function<> - */ -template -class Parab1D { -public: - // declare coefficients at instantiation - Parab1D(double const k, double const kx) : _k(k), _kx(kx) {} - - // operator() must be overloaded to return the evaluation of the function - // ** This is the function to be integrated ** - IntegrandT operator()(IntegrandT const x) const { return (_k - _kx * x * x); } - - // for this example we have an analytic answer to check - IntegrandT getAnalyticArea(IntegrandT const x1, IntegrandT const x2) { - return _k * (x2 - x1) - _kx * (x2 * x2 * x2 - x1 * x1 * x1) / 3.0; - } - -private: - double _k, _kx; -}; - -/* ========================================================================= - * define a simple 2D function as a functor to be integrated. - * I've chosen a 2D paraboloid: f(x) = k - kx*x*x - ky*y*y - * as it's got an easy-to-check analytic answer. - * - * @note we *have* to inherit from binary_function<> - */ -template -class Parab2D { -public: - // declare coefficients at instantiation. - Parab2D(IntegrandT const k, IntegrandT const kx, IntegrandT const ky) : _k(k), _kx(kx), _ky(ky) {} - - // operator() must be overloaded to return the evaluation of the function - // ** This is the function to be integrated ** - // @note *need* ... operator()() __const__ { - IntegrandT operator()(IntegrandT const x, IntegrandT const y) const { - return (_k - _kx * x * x - _ky * y * y); - } - - // for this example we have an analytic answer to check - IntegrandT getAnalyticVolume(IntegrandT const x1, IntegrandT const x2, IntegrandT const y1, - IntegrandT const y2) { - IntegrandT const xw = x2 - x1; - IntegrandT const yw = y2 - y1; - return _k * xw * yw - _kx * (x2 * x2 * x2 - x1 * x1 * x1) * yw / 3.0 - - _ky * (y2 * y2 * y2 - y1 * y1 * y1) * xw / 3.0; - } - -private: - IntegrandT _k, _kx, _ky; -}; - -/* ============================================================================= - * Define a pair of normal functions that do the same thing as the above functors - * - */ - -// the 1D parabola -double parabola(double const x) { - double const k = 100.0, kx = 1.0; - return k - kx * x * x; -} -// the 2D paraboloid -double parabola2d(double const x, double const y) { - double const k = 100.0, kx = 1.0, ky = 1.0; - return k - kx * x * x - ky * y * y; -} - -/* ===================================================================== - * Main body of code - * ====================================================================== - */ -int main() { - // set limits of integration - double const x1 = 0, x2 = 9, y1 = 0, y2 = 9; - // set the coefficients for the quadratic equation - // (parabola f(x) = k + kx*x*x + ky*y*y) - double const k = 100, kx = 1.0, ky = 1.0; - - // ========== 1D integrator ========== - - // instantiate a Parab1D Functor - Parab1D parab1d(k, kx); - - // integrate the area under the curve, and then get the analytic result - double const parab_area_integrate = math::integrate(parab1d, x1, x2); - double const parab_area_analytic = parab1d.getAnalyticArea(x1, x2); - - // now run it on the 1d function (you *need* to wrap the function in ptr_fun()) - double const parab_area_integrate_func = math::integrate(parabola, x1, x2); - - // output - std::cout << "1D integrate: functor = " << parab_area_integrate - << " function = " << parab_area_integrate_func << " analytic = " << parab_area_analytic - << std::endl; - - // ========== 2D integrator ========== - - // instantiate a Parab2D - Parab2D parab2d(k, kx, ky); - - // integrate the volume under the function, and then get the analytic result - double const parab_volume_integrate = math::integrate2d(parab2d, x1, x2, y1, y2); - double const parab_volume_analytic = parab2d.getAnalyticVolume(x1, x2, y1, y2); - - // now run it on the 2d function (you *need* to wrap the function in ptr_fun()) - double const parab_volume_integrate_func = math::integrate2d(parabola2d, x1, x2, y1, y2); - - // output - std::cout << "2D integrate: functor = " << parab_volume_integrate - << " function = " << parab_volume_integrate_func << " analytic = " << parab_volume_analytic - << std::endl; - - return 0; -} diff --git a/examples/integrateExample.cc b/examples/integrateExample.cc deleted file mode 100644 index 2982598397..0000000000 --- a/examples/integrateExample.cc +++ /dev/null @@ -1,156 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -// -// Here are some concrete examples of the use of int1d and int2d. -// -// First, I include the examples from the comment at the beginning of -// the file Int.h. -// -// Next, I include an astronomically useful calculation of coordinate distance -// as a function of redshit. -// -// If you want more details, see the comment at the beginning of Integrate.h -// - -#include -#include -#include - -#include "lsst/afw/math/Integrate.h" - -namespace math = lsst::afw::math; - -// A simple Gaussian, parametrized by its center (mu) and size (sigma). -class Gauss { -public: - explicit Gauss(double mu, double sig) : _mu(mu), _sig(sig), _sigsq(sig * sig) {} - - double operator()(double x) const { - double const SQRTTWOPI = 2.50662827463; - return exp(-pow(x - _mu, 2) / 2.0 / _sigsq) / SQRTTWOPI / _sig; - } - -private: - double _mu, _sig, _sigsq; -}; - -// In the file Int.h, I present this as a class Integrand. -// Here I do it as a function to show how that can work just as well. -double foo(double x, double y) { - // A simple function: - // f(x,y) = x*(3*x+y) + y - return x * (3.0 * x + y) + y; -} - -// This is stripped down from a more complete Cosmology class that -// calculates all kinds of things, including power spectra and such. -// The simplest integration calculation is the w(z) function, so that's -// all that is replicated here. -struct Cosmology { - Cosmology(double omMxx, double omVxx, double wxx, double waxx) - : omM(omMxx), omV(omVxx), w(wxx), wa(waxx) {} - - double calcW(double z); - // calculate coordinate distance (in units of c/Ho) as a function of z. - - double omM, omV, w, wa; -}; - -class W_Integrator { -public: - W_Integrator(Cosmology const &c) : _c(c) {} - double operator()(double a) const { - // First calculate H^2 according to: - // - // H^2 = H0^2 * [ Om_M a^-3 + Om_k a^-2 + - // Om_DE exp (-3 [ (1+w+wa)*lna + wa*(1-a) ] ) ] - // Ignore the H0^2 scaling - double lna = log(a); - double omK = 1.0 - _c.omM - _c.omV; - double hsq = _c.omM * std::exp(-3.0 * lna) + omK * std::exp(-2.0 * lna) + - _c.omV * std::exp(-3.0 * ((1.0 + _c.w + _c.wa) * lna + _c.wa * (1.0 - a))); - - if (hsq <= 0.0) { - // This can happen for very strange w, wa values with non-flat - // cosmologies so do something semi-graceful if it does. - std::cerr << "Invalid hsq for a = " << a << ". hsq = " << hsq << std::endl; - throw std::runtime_error("Negative hsq found."); - } - - // w = int( 1/sqrt(H(z)) dz ) = int( 1/sqrt(H(a)) 1/a^2 da ) - // So we return the integrand. - return 1.0 / (std::sqrt(hsq) * (a * a)); - } - -private: - Cosmology const &_c; -}; - -double Cosmology::calcW(double z) { - // w = int( 1/sqrt(H(z)) dz ) = int( 1/sqrt(H(a)) 1/a^2 da ) - // H(a) = H0 sqrt( Om_m a^-3 + Om_k a^-2 + - // Om_de exp(3 int(1+w(a') dln(a'), a'=a..1) ) ) - // For w(a) = w0 + wa(1-a), we can do the internal integral: - // ... Om_de exp( -3(1+w0+wa) ln(a) - 3 wa(1-a) ) - - math::IntRegion intreg(1.0 / (1.0 + z), 1); - W_Integrator winteg(*this); - - return int1d(winteg, intreg); -} - -int main() { - // First some integrations of a Gaussian: - - math::IntRegion reg1(-1.0, 1.0); - math::IntRegion reg2(-2.0, 2.0); - math::IntRegion reg3(0.0, math::MOCK_INF); - - Gauss g01(0.0, 1.0); // mu = 0, sigma = 1. - Gauss g02(0.0, 2.0); // mu = 0, sigma = 2. - - std::cout << "int(Gauss(0.0, 1.0) , -1..1) = " << int1d(g01, reg1) << std::endl; - std::cout << "int(Gauss(0.0, 2.0) , -1..1) = " << int1d(g02, reg1) << std::endl; - - std::cout << "int(Gauss(0.0, 1.0) , -2..2) = " << int1d(g01, reg2) << std::endl; - std::cout << "int(Gauss(0.0, 2.0) , -2..2) = " << int1d(g02, reg2) << std::endl; - - std::cout << "int(Gauss(0.0, 1.0) , 0..inf) = " << int1d(g01, reg3) << std::endl; - std::cout << "int(Gauss(0.0, 2.0) , 0..inf) = " << int1d(g02, reg3) << std::endl; - - math::IntRegion reg4(0.0, 1.0); - - std::cout << "\nIn a universe with:\n\n"; - std::cout << "Omega_m = 0.3\n"; - std::cout << "Omega_v = 0.65\n"; - std::cout << "w = -0.9\n"; - std::cout << "wa = 0.2\n"; - std::cout << "\nThe w(z) relation is:\n\n"; - std::cout << "z\tw\n\n"; - Cosmology c(0.3, 0.65, -0.9, 0.2); - for (double z = 0.0; z < 5.01; z += 0.2) { - std::cout << z << "\t" << c.calcW(z) << std::endl; - } -} diff --git a/examples/integratePolar.cc b/examples/integratePolar.cc deleted file mode 100644 index 95a5387990..0000000000 --- a/examples/integratePolar.cc +++ /dev/null @@ -1,104 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * This example demonstrates how to use the romberg2D() - * integrator (afw::math Quadrature) with a polar function. - */ -#include - -#include "lsst/afw/math/Integrate.h" - -namespace math = lsst::afw::math; - -/* ========================================================================= - * define a simple 2D function as a functor to be integrated. - * I've chosen a paraboloid: f(x) = K - kr*r*r - * as it's got an easy-to-check analytic answer. - * - * @note that we *have* to inherit from binary_function<> - */ -template -class Parab2D { -public: - // declare coefficients at instantiation. - Parab2D(IntegrandT const k, IntegrandT const kr) : _k(k), _kr(kr) {} - - // operator() must be overloaded to return the evaluation of the function - // ** This is the function to be integrated ** - // - // NOTE: extra 'r' term due to polar coords (ie. the 'r' in r*dr*dtheta) - IntegrandT operator()(IntegrandT const r, IntegrandT const) const { return (_k - _kr * r * r) * r; } - - // for this example we have an analytic answer to check - IntegrandT getAnalyticVolume(IntegrandT const r1, IntegrandT const r2, IntegrandT const theta1, - IntegrandT const theta2) { - return ((theta2 - theta1) * ((0.5 * _k * r2 * r2 - (1.0 / 3.0) * _kr * r2 * r2 * r2) - - (0.5 * _k * r1 * r1 - (1.0 / 3.0) * _kr * r1 * r1 * r1))); - } - -private: - IntegrandT _k, _kr; -}; - -/* ============================================================================= - * Define a normal function that does the same thing as the above functor - * - */ -double parabola2d(double const r, double const) { - double const k = 1.0, kr = 0.0; - return (k - kr * r * r) * r; -} - -/* ===================================================================== - * Main body of code - * ====================================================================== - */ -int main() { - // set limits of integration - double const r1 = 0, r2 = 1, theta1 = 0, theta2 = 2.0 * M_PI; - // set the coefficients for the quadratic equation - // (parabola f(r) = k - kr*r*r) - double const k = 1.0, kr = 0.0; // not really a parabola ... force the answer to be 'pi' - - // ========== 2D integrator ========== - - // instantiate a Parab2D - Parab2D parab2d(k, kr); - - // integrate the volume under the function, and then get the analytic result - double const parab_volume_integrate = math::integrate2d(parab2d, r1, r2, theta1, theta2); - double const parab_volume_analytic = parab2d.getAnalyticVolume(r1, r2, theta1, theta2); - - // now run it on the 2d function (you *need* to wrap the function in ptr_fun()) - double const parab_volume_integrate_func = - math::integrate2d(parabola2d, r1, r2, theta1, theta2); - - // output - std::cout << "2D integrate: functor = " << parab_volume_integrate - << " function = " << parab_volume_integrate_func << " analytic = " << parab_volume_analytic - << std::endl; - - return 0; -} diff --git a/examples/lanczosFunction.cc b/examples/lanczosFunction.cc deleted file mode 100644 index cc4fce6e97..0000000000 --- a/examples/lanczosFunction.cc +++ /dev/null @@ -1,64 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "lsst/afw/math/FunctionLibrary.h" - -using namespace std; - -int main() { - using FuncReturn = double; - - unsigned int order = 2; - lsst::afw::math::LanczosFunction2 lancFunc(order); - - double deltaX = order * 2 / 12.0; - - double deltaOff = deltaX / 3.0; - - cout << fixed << setprecision(3); - - vector offVec(2); - for (offVec[0] = 0.0; offVec[0] < deltaX * 1.01; offVec[0] += deltaOff) { - cout << "LanczosFunction2(" << order << ") with offset " << offVec[0] << ", " << offVec[1] << endl - << endl; - - lancFunc.setParameters(offVec); - - cout << " y \\ x"; - for (double x = -(order + deltaX); x < order + (deltaX * 1.01); x += deltaX) { - cout << setw(7) << x; - } - cout << endl; - - for (double y = -(order + deltaX); y < order + (deltaX * 1.01); y += deltaX) { - cout << setw(7) << y; - for (double x = -(order + deltaX); x <= order + deltaX; x += deltaX) { - cout << setw(7) << lancFunc(x, y); - } - cout << endl; - } - cout << endl << endl; - } -} diff --git a/examples/lanczosKernel.cc b/examples/lanczosKernel.cc deleted file mode 100644 index 76a15eb0a1..0000000000 --- a/examples/lanczosKernel.cc +++ /dev/null @@ -1,56 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "boost/format.hpp" - -#include "lsst/afw/math/FunctionLibrary.h" -#include "lsst/afw/math/Kernel.h" -#include "lsst/afw/math/KernelFunctions.h" - -using namespace std; - -int main() { - using Pixel = lsst::afw::math::Kernel::Pixel; - - unsigned int kernelCols = 6; - unsigned int kernelRows = 5; - unsigned int order = (min(kernelCols, kernelRows) - 1) / 2; - - lsst::afw::math::LanczosFunction2 lanczosFunc(order); - lsst::afw::math::AnalyticKernel kernel(kernelCols, kernelRows, lanczosFunc); - - cout << boost::format("Lanczos Kernel is %d x %d; Lanczos function has order %d\n") % kernelCols % - kernelRows % order; - - double deltaOff = 1.0 / 3.0; - vector offVec(2); - for (offVec[0] = 0.0; offVec[0] < 1.01; offVec[0] += deltaOff) { - cout << boost::format("Kernel with offset %7.3f, %7.3f\n\n") % offVec[0] % offVec[1]; - - kernel.setKernelParameters(offVec); - - lsst::afw::math::printKernel(kernel, true); - } -} diff --git a/examples/mask.cc b/examples/mask.cc deleted file mode 100644 index 295092370f..0000000000 --- a/examples/mask.cc +++ /dev/null @@ -1,92 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include -#include - -#include "lsst/geom.h" -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/afw/image.h" - -namespace afwImage = lsst::afw::image; - -int main() { - afwImage::Mask img(lsst::geom::Extent2I(10, 6)); - // This is equivalent to mask = 100: - for (afwImage::Mask::iterator ptr = img.begin(); ptr != img.end(); ++ptr) { - (*ptr)[0] = 100; - } - // so is this, but fills backwards - for (afwImage::Mask::reverse_iterator ptr = img.rbegin(); ptr != img.rend(); ++ptr) { - (*ptr)[0] = 100; - } - // so is this, but tests a different way of choosing begin() - for (afwImage::Mask::iterator ptr = img.at(0, 0); ptr != img.end(); ++ptr) { - (*ptr)[0] = 100; - } - - afwImage::Mask jmg = img; - - printf("%dx%d\n", img.getWidth(), img.getHeight()); - - *img.y_at(7, 2) = 999; - *img.x_at(0, 0) = 0; - img(img.getWidth() - 1, img.getHeight() - 1) = 100; - - printf("sub Masks\n"); - - // img will be modified - afwImage::Mask simg1( - img, lsst::geom::Box2I(lsst::geom::Point2I(1, 1), lsst::geom::Extent2I(7, 3)), afwImage::LOCAL); - afwImage::Mask simg( - simg1, lsst::geom::Box2I(lsst::geom::Point2I(0, 0), lsst::geom::Extent2I(5, 2)), afwImage::LOCAL); - - { - afwImage::Mask nimg(simg.getDimensions()); - nimg = 1; - simg.assign(nimg); - } - - for (int r = 0; r != img.getHeight(); ++r) { - std::fill(img.row_begin(r), img.row_end(r), 100 * (1 + r)); - } - - std::string inImagePath; - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/small.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: mask [fitsFile]" << std::endl; - std::cerr << "fitsFile is the path to a masked image" << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - - afwImage::MaskedImage mi = afwImage::MaskedImage(inImagePath); - printf("mask(0,0) = %d\n", (*(mi.getMask()))(0, 0)); - printf("image(0,0) = %f\n", (*(mi.getImage()))(0, 0)); - - return 0; -} diff --git a/examples/maskIo2.cc b/examples/maskIo2.cc deleted file mode 100644 index 6bdeb552ac..0000000000 --- a/examples/maskIo2.cc +++ /dev/null @@ -1,78 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include - -#include "lsst/pex/exceptions.h" -#include "lsst/afw/image.h" - -using namespace std; -namespace afwImage = lsst::afw::image; - -/* - * Make this a subroutine so that locals go out of scope as part of test - * of memory management - */ -void test(char *name, char *masterName) { - using MaskPixel = afwImage::MaskPixel; - - afwImage::Mask testMask(name); - - afwImage::Mask masterMask(masterName); - - // check whether Mask planes got setup right from FITS header... - cout << "test MaskPlanes from FITS header:" << endl; - testMask.printMaskPlanes(); - - // check whether Mask planes got setup right from FITS header... - cout << "master MaskPlanes from FITS header:" << endl; - masterMask.printMaskPlanes(); - - testMask.conformMaskPlanes(masterMask.getMaskPlaneDict()); - - // check whether Mask planes got setup right from FITS header... - cout << "test MaskPlanes from FITS header:" << endl; - testMask.printMaskPlanes(); - - // check whether Mask planes got mapped right to conform with master - cout << "test MaskPlanes after conformMaskPlanes:" << endl; - testMask.printMaskPlanes(); - - testMask.writeFits("test_msk.fits"); -} - -int main(int argc, char *argv[]) { - if (argc < 3) { - cerr << "Usage: inputBaseName masterBaseName" << endl; - return EXIT_FAILURE; - } - - try { - test(argv[1], argv[2]); - } catch (std::exception const &e) { - clog << e.what() << endl; - return EXIT_FAILURE; - } - return EXIT_SUCCESS; -} diff --git a/examples/maskedImage.cc b/examples/maskedImage.cc deleted file mode 100644 index 61a2bcdfb1..0000000000 --- a/examples/maskedImage.cc +++ /dev/null @@ -1,181 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "boost/iterator/zip_iterator.hpp" - -#include "lsst/geom.h" -#include "lsst/afw/image/MaskedImage.h" - -namespace image = lsst::afw::image; -using namespace std; - -using ImagePixelT = double; - -template -void y_gradient(image::MaskedImage& src, image::MaskedImage& dst) { - assert(src.getDimensions() == dst.getDimensions()); - -#define CONST 1 -#if CONST - using xyl = typename image::MaskedImage::const_xy_locator; -#else - typedef typename image::MaskedImage::xy_locator xyl; -#endif - xyl src_loc = src.xy_at(0, 1); - -#define USE_CACHE_LOCATION 1 -#if USE_CACHE_LOCATION - typename xyl::cached_location_t above = src_loc.cache_location(0, 1); - typename xyl::cached_location_t below = src_loc.cache_location(0, -1); -#endif - - for (int r = 1; r < src.getHeight() - 1; ++r) { - for (typename image::MaskedImage::x_iterator dst_it = dst.row_begin(r); - dst_it != dst.row_end(r); ++dst_it, ++src_loc.x()) { -#if USE_CACHE_LOCATION // this version is faster - dst_it.image() = (src_loc.image(above) - src_loc.image(below)) / 2; -#else // but this is possible too, and more general (but slower) - dst_it.image() = (src_loc.image(0, 1) - src_loc.image(0, -1)) / 2; -#endif - dst_it.mask() |= src_loc.mask(0, 1) | src_loc.mask(0, -1); - dst_it.variance() = src_loc.variance(0, 1) + src_loc.variance(0, -1); - - // src_loc.image()++; // uncomment to check const checking - // src_loc.mask() |= 2; // uncomment to check const checking - // src_loc.variance() = 0.0; // uncomment to check const checking - } - - src_loc += std::make_pair(-src.getWidth(), 1); - } -} - -namespace { -void printImage(image::MaskedImage const& img, string const& title = "") { - if (title != "") { - cout << title << endl; - } - - for (int i = img.getHeight() - 1; i >= 0; --i) { - for (image::MaskedImage::x_iterator ptr = img.row_begin(i), end = img.row_end(i); - ptr != end; ++ptr) { - cout << ptr.image() << " "; - } - cout << endl; - } -} - -void printVariance(image::MaskedImage const& img, string const& title = "") { - if (title != "") { - cout << title << endl; - } - - for (int i = img.getHeight() - 1; i >= 0; --i) { - for (image::MaskedImage::x_iterator ptr = img.row_begin(i), end = img.row_end(i); - ptr != end; ++ptr) { - cout << ptr.variance() << " "; - } - cout << endl; - } -} -} // namespace - -int main() { - image::MaskedImage img(lsst::geom::Extent2I(3, 5)); - *img.getImage() = 100; - *img.getMask() = 0x10; - *img.getVariance() = 10; - - { - float const gain = 2; - img.getVariance()->assign(image::Image(*img.getImage(), true)); - *img.getVariance() /= gain; - } - - int i = 0; - for (image::MaskedImage::iterator ptr = img.begin(), end = img.end(); ptr != end; - ++ptr, ++i) { - ptr.image() = i / img.getWidth() + 100 * (i % img.getWidth()); - ptr.mask() |= 0x8; - ptr.variance() *= 2; - } - -#if 1 - for (image::MaskedImage::const_iterator ptr = img.at(0, 2), end = img.end(); ptr != end; - ++ptr) { - cout << ptr.image() << " " << ptr.mask() << " " << ptr.variance() << endl; - } - cout << endl; - - for (image::MaskedImage::x_iterator ptr = img.row_begin(0), end = img.row_end(0); ptr != end; - ++ptr) { - cout << ptr.image() << " " << ptr.mask() << " " << ptr.variance() << endl; - } - cout << endl; - - for (image::MaskedImage::reverse_iterator ptr = img.rbegin(), rend = img.rend(); ptr != rend; - ++ptr) { - cout << ptr.image() << " " << ptr.mask() << " " << ptr.variance() << endl; - } - - for (image::MaskedImage::y_iterator ptr = img.col_begin(1), end = img.col_end(1); ptr != end; - ++ptr) { - cout << ptr.image() << " " << ptr.mask() << " " << ptr.variance() << endl; - } - cout << endl; - - for (image::MaskedImage::const_x_iterator ptr = img.x_at(1, 1), end = img.x_at(5, 1); - ptr != end; ++ptr) { - cout << ptr.image() << " " << ptr.mask() << " " << ptr.variance() << endl; - } - cout << endl; - -#endif - for (image::MaskedImage::y_iterator ptr = img.y_at(1, 0), end = img.y_at(1, 2); ptr != end; - ++ptr) { - cout << ptr.image() << " " << ptr.mask() << " " << ptr.variance() << endl; - } - cout << endl; - -#if 1 - image::MaskedImage grad_y(img.getDimensions()); - *grad_y.getImage() = 0; - y_gradient(img, grad_y); - - printImage(img, "image"); - cout << endl; - printVariance(img, "variance(image)"); - cout << endl; - - printImage(grad_y, "gradient"); - cout << endl; - printVariance(grad_y, "variance(gradient)"); - cout << endl; -#endif - - return 0; -} diff --git a/examples/maskedImage1.cc b/examples/maskedImage1.cc deleted file mode 100644 index 70042de22e..0000000000 --- a/examples/maskedImage1.cc +++ /dev/null @@ -1,117 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * MaskedImage iterator tutorial. - */ - -// Include the necessary headers; -// if using many image modules then you may prefer to include "lsst/afw/image.h" -#include "lsst/geom.h" -#include "lsst/afw/image/MaskedImage.h" - -// Declare the desired MaskedImage type. -// Note: only specific types are supported; for the list of available types -// see the explicit instantiation code at the end of lsst/afw/image/src/MaskedImage.cc -namespace afwImage = lsst::afw::image; -using ImageT = afwImage::MaskedImage; - -int main() { - // Declare a MaskedImage; its pixels are not yet initialized. - ImageT img(lsst::geom::Extent2I(10, 6)); - - // Initialize all pixels to a given value. - img = ImageT::Pixel(100, 0x1, 10); - - // Here is a common and efficient way to set all pixels of the image. - // Note that the end condition is only computed once, for efficiency. - for (int y = 0; y != img.getHeight(); ++y) { - for (ImageT::x_iterator ptr = img.row_begin(y), end = img.row_end(y); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - - // Or, if you prefer, you may set image, mask and variance separately with no loss of speed - ptr.image() = 100; - ptr.mask() = 0x1; - ptr.variance() = 10; - } - } - - // It is probably slower to compute the end condition each time, as is done here. - for (int y = 0; y != img.getHeight(); ++y) { - for (ImageT::x_iterator ptr = img.row_begin(y); ptr != img.row_end(y); ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - } - - // STL-compliant iterators are available. - // However, they are not very efficient because the image data may not be contiguous - // so these iterators must test for end-of-row on every increment. - // (By the way, we do guarantee that an image's row data is contiguous). - // iterator - for (ImageT::iterator ptr = img.begin(), end = img.end(); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - // reverse_iterator - for (ImageT::reverse_iterator ptr = img.rbegin(), end = img.rend(); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - // A different way of choosing begin() for use with (inefficient) iterator - for (ImageT::iterator ptr = img.at(0, 0), end = img.end(); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - - // There is one efficient STL-compliant iterator: "fast_iterator", but it only works for contiguous images - // (such as newly allocated images). If you attempt to use this on a subimage you will get an exception. - for (ImageT::fast_iterator ptr = img.begin(true), end = img.end(true); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - - // It is possible to traverse the image by columns instead of by rows, - // but because the data is row-contiguous, this has awful consequences upon cache performance. - for (int x = 0; x != img.getWidth(); ++x) { - for (ImageT::y_iterator ptr = img.col_begin(x), end = img.col_end(x); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - } - - // If you must traverse the image by columns then consider doing it in batches to improve - // cache performance, as shown here: - int x = 0; - for (; x != img.getWidth() % 4; ++x) { - for (ImageT::y_iterator ptr = img.col_begin(x), end = img.col_end(x); ptr != end; ++ptr) { - *ptr = ImageT::Pixel(100, 0x1, 10); - } - } - for (; x != img.getWidth(); x += 4) { - for (ImageT::y_iterator ptr0 = img.col_begin(x + 0), end0 = img.col_end(x + 0), - ptr1 = img.col_begin(x + 1), ptr2 = img.col_begin(x + 2), - ptr3 = img.col_begin(x + 3); - ptr0 != end0; ++ptr0, ++ptr1, ++ptr2, ++ptr3) { - *ptr0 = *ptr1 = *ptr2 = *ptr3 = ImageT::Pixel(100, 0x1, 10); - } - } - - // Save the image to disk - img.writeFits("foo"); - - return 0; -} diff --git a/examples/maskedImage2.cc b/examples/maskedImage2.cc deleted file mode 100644 index 45351d4781..0000000000 --- a/examples/maskedImage2.cc +++ /dev/null @@ -1,129 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include "lsst/geom.h" -#include "lsst/afw/image/MaskedImage.h" - -namespace image = lsst::afw::image; -using ImageT = image::MaskedImage; - -int main() { - ImageT in(lsst::geom::Extent2I(10, 6)); - - // Set data to a ramp - for (int y = 0; y != in.getHeight(); ++y) { - for (ImageT::xy_locator ptr = in.xy_at(0, y), end = in.xy_at(in.getWidth(), y); ptr != end; - ++ptr.x()) { - *ptr = ImageT::Pixel(y, 0x1, 10); - } - } - // - // Convolve with a pseudo-Gaussian kernel ((1, 2, 1), (2, 4, 2), (1, 2, 1)) - // - ImageT out(in.getDimensions()); // Make an output image the same size as the input image - out.assign(in); - for (int y = 1; y != in.getHeight() - 1; ++y) { - for (ImageT::xy_locator ptr = in.xy_at(1, y), end = in.xy_at(in.getWidth() - 1, y), - optr = out.xy_at(1, y); - ptr != end; ++ptr.x(), ++optr.x()) { - *optr = ptr(-1, -1) + 2 * ptr(0, -1) + ptr(1, -1) + 2 * ptr(-1, 0) + 4 * ptr(0, 0) + - 2 * ptr(1, 0) + ptr(-1, 1) + 2 * ptr(0, 1) + ptr(1, 1); - } - } - // - // Do the same thing a faster way, using cached_location_t - // - std::shared_ptr out2(new ImageT(in.getDimensions())); - out2->assign(in); - - using xy_loc = ImageT::const_xy_locator; - - for (int y = 1; y != in.getHeight() - 1; ++y) { - // "dot" means "cursor location" in emacs - xy_loc dot = in.xy_at(1, y), end = in.xy_at(in.getWidth() - 1, y); - - xy_loc::cached_location_t nw = dot.cache_location(-1, -1); - xy_loc::cached_location_t n = dot.cache_location(0, -1); - xy_loc::cached_location_t ne = dot.cache_location(1, -1); - xy_loc::cached_location_t w = dot.cache_location(-1, 0); - xy_loc::cached_location_t c = dot.cache_location(0, 0); - xy_loc::cached_location_t e = dot.cache_location(1, 0); - xy_loc::cached_location_t sw = dot.cache_location(-1, 1); - xy_loc::cached_location_t s = dot.cache_location(0, 1); - xy_loc::cached_location_t se = dot.cache_location(1, 1); - - for (ImageT::x_iterator optr = out2->row_begin(y) + 1; dot != end; ++dot.x(), ++optr) { - *optr = dot[nw] + 2 * dot[n] + dot[ne] + 2 * dot[w] + 4 * dot[c] + 2 * dot[e] + dot[sw] + - 2 * dot[s] + dot[se]; - } - } - // - // Do the same calculation, but set nw etc. outside the loop - // - xy_loc pix11 = in.xy_at(1, 1); - - xy_loc::cached_location_t nw = pix11.cache_location(-1, -1); - xy_loc::cached_location_t n = pix11.cache_location(0, -1); - xy_loc::cached_location_t ne = pix11.cache_location(1, -1); - xy_loc::cached_location_t w = pix11.cache_location(-1, 0); - xy_loc::cached_location_t c = pix11.cache_location(0, 0); - xy_loc::cached_location_t e = pix11.cache_location(1, 0); - xy_loc::cached_location_t sw = pix11.cache_location(-1, 1); - xy_loc::cached_location_t s = pix11.cache_location(0, 1); - xy_loc::cached_location_t se = pix11.cache_location(1, 1); - - for (int y = 1; y != in.getHeight() - 1; ++y) { - // "dot" means "cursor location" in emacs - xy_loc dot = in.xy_at(1, y), end = in.xy_at(in.getWidth() - 1, y); - - for (ImageT::x_iterator optr = out2->row_begin(y) + 1; dot != end; ++dot.x(), ++optr) { - *optr = dot[nw] + 2 * dot[n] + dot[ne] + 2 * dot[w] + 4 * dot[c] + 2 * dot[e] + dot[sw] + - 2 * dot[s] + dot[se]; - } - } - // - // Normalise the kernel. I.e. divide the smoothed parts of image2 by 16 - // - { - ImageT center = ImageT( - *out2, - lsst::geom::Box2I(lsst::geom::Point2I(1, 1), in.getDimensions() - lsst::geom::Extent2I(-2)), - image::LOCAL); - center /= 16; - } - // - // Clear in using the x_iterator embedded in the locator - // - for (int y = 0; y != in.getHeight(); ++y) { - for (ImageT::xy_x_iterator ptr = in.xy_at(0, y).x(), end = in.xy_at(in.getWidth(), y).x(); ptr != end; - ++ptr) { - *ptr = 0; - } - } - // - // Save those images to disk - // - out.writeFits("foo.fits"); - out2->writeFits("foo2.fits"); - - return 0; -} diff --git a/examples/maskedImageFitsIo.cc b/examples/maskedImageFitsIo.cc deleted file mode 100644 index a8223c08d0..0000000000 --- a/examples/maskedImageFitsIo.cc +++ /dev/null @@ -1,52 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/afw/image/MaskedImage.h" - -const std::string outImagePath("rwfitsOut.fits"); - -int main(int argc, char **argv) { - std::string inImagePath; - if (argc == 2) { - inImagePath = std::string(argv[1]); - } else { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/small.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: maskedImageFitsIO [fitsFile]" << std::endl; - std::cerr << "fitsFile is the path to a masked image" << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } - std::cout << "Running with: " << inImagePath << std::endl; - - lsst::afw::image::MaskedImage mImage(inImagePath); - mImage.writeFits(outImagePath); - std::cout << "Wrote masked image: " << outImagePath << std::endl; -} diff --git a/examples/minimize.cc b/examples/minimize.cc deleted file mode 100644 index 47bca250b4..0000000000 --- a/examples/minimize.cc +++ /dev/null @@ -1,149 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include "lsst/afw/math/FunctionLibrary.h" -#include "lsst/afw/math/minimize.h" - -template -void printVector(std::vector v) { - for (unsigned int ii = 0; ii < v.size(); ++ii) { - std::cout << " " << v[ii]; - } - std::cout << std::endl; -} - -int main(int argc, char** argv) { - using FuncReturn = double; - const unsigned int order = 3; - const unsigned int npts = 10; - - lsst::afw::math::Chebyshev1Function1 chebyFunc(order); - - const unsigned int nParams = chebyFunc.getNParameters(); - std::vector modelParams = chebyFunc.getParameters(); - for (unsigned int ii = 0; ii < nParams; ++ii) { - modelParams[ii] = static_cast(ii) * 0.1; - } - chebyFunc.setParameters(modelParams); - std::cout << "Input : Chebychev polynomial of the first kind with parameters: " << std::endl; - printVector(modelParams); - - std::vector measurements(npts); - std::vector variances(npts); - std::vector positions(npts); - - double x = -1.0; - double deltaX = 2.0 / static_cast(npts - 1); - for (unsigned int i = 0; i < npts; i++, x += deltaX) { - measurements[i] = chebyFunc(x); - variances[i] = 0.1; - positions[i] = x; - } - - // add a bit of randomization to model parameters for initial parameters - // and set stepSizes - std::vector initialParams = modelParams; - std::vector stepSizes(nParams); - for (unsigned int ii = 0; ii < nParams; ++ii) { - initialParams[ii] += 0.5 * double(rand()) / RAND_MAX; - stepSizes[ii] = 0.1; - } - std::cout << "Initial guess:" << std::endl; - printVector(initialParams); - std::cout << "Step size:" << std::endl; - printVector(stepSizes); - - double errorDef = 1.0; - - lsst::afw::math::FitResults fitResults = lsst::afw::math::minimize( - chebyFunc, initialParams, stepSizes, measurements, variances, positions, errorDef); - - std::vector fitParams = chebyFunc.getParameters(); - std::cout << "fitResults.isValid =" << fitResults.isValid << std::endl; - std::cout << "fitResults.parameterList:" << std::endl; - printVector(fitResults.parameterList); - std::vector negErrors; - std::vector posErrors; - for (unsigned int ii = 0; ii < nParams; ++ii) { - negErrors.push_back(fitResults.parameterErrorList[ii].first); - posErrors.push_back(fitResults.parameterErrorList[ii].second); - } - std::cout << "Negative parameter errors:" << std::endl; - printVector(negErrors); - std::cout << "Positive parameter errors:" << std::endl; - printVector(posErrors); - - // MnMigrad migrad(myFcn, upar); - // FunctionMinimum min = migrad(); - // - // MnMinos minos(myFcn, min); - // - // std::pair e0 = minos(0); - // std::pair e1 = minos(1); - // std::pair e2 = minos(2); - // std::pair e3 = minos(3); - // - // cout << "Best fit:" << endl; - // std::cout<<"par0: "< measurements2(npts); - // std::vector variances2(npts); - // std::vector positions2(npts); - // x = -1.; - // for (unsigned int i = 0; i < npts; i++, x += 0.2) { - // measurements[i] = 1.; - // variances[i] = 0.1; - // positions[i] = x; - // } - // def = 1.0; - // - // - // const unsigned int polyorder = 0; - // std::shared_ptr > polyFuncPtr( - // new lsst::afw::math::PolynomialFunction1(polyorder) - // ); - // - // lsst::afw::math::MinimizerFunctionBase1 myFcn2( - // measurements, variances, positions, def, polyFuncPtr); - // - // MnMigrad migrad2(myFcn2, upar2); - // FunctionMinimum min2 = migrad2(); - // MnMinos minos2(myFcn2, min2); - // - // std::pair e02 = minos2(0); - // - // cout << "Best fit:" << endl; - // std::cout<<"par0: "<. - */ - -#include -#include - -#include "boost/format.hpp" - -#include "lsst/afw/math/FunctionLibrary.h" - -using namespace std; - -int main() { - using FuncReturn = double; - const unsigned int order = 2; - vector params(order + 1); - lsst::afw::math::PolynomialFunction1 polyFunc(order); - - for (unsigned int ii = 0; ii < params.size(); ++ii) { - params[ii] = static_cast(1 + order - ii); - } - polyFunc.setParameters(params); - - cout << "Polynomial function with parameters: "; - for (double param : params) { - cout << param << " "; - } - cout << endl << endl; - - for (double x = -3.0; x < 3.1; x += 0.5) { - cout << boost::format("poly(%5.1f) = %6.3f\n") % x % polyFunc(x); - } -} diff --git a/examples/repeatability.ipynb b/examples/repeatability.ipynb deleted file mode 100644 index 7a32785de7..0000000000 --- a/examples/repeatability.ipynb +++ /dev/null @@ -1,2298 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Photometric Repeatability using `MultiMatch` and `GroupView`\n", - "\n", - "This notebook uses the `MultiMatch` and `GroupView` classes from `afw.table`'s `multiMatch.py`. It is intended to be run on `lsst-dev.ncsa.illinois.edu`, on an HSC output repository produced at the end of the S15 cycle (where it was used to measure key performance metrics related to photometric repeatability). It can be adapted to run on other datasets by modifying the repository path and data IDs below." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import numpy\n", - "from lsst.afw.table import MultiMatch, SimpleRecord, GroupView\n", - "import lsst.daf.persistence" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "butler = lsst.daf.persistence.Butler(\"/raid/lauren/rerun/LSST/STRIPE82L/v2/\")\n", - "dataset = \"transformed_src\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "schema = butler.get(dataset + \"_schema\", immediate=True).schema" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create an object that can match multiple catalogs with the same schema" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "m = MultiMatch(schema, dict(visit=int), RecordClass=SimpleRecord)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create a list of `DataRef`s for all CCDs images to be included in the plot." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "dataRefs = [dataRef for dataRef in butler.subset(dataset, field=\"STRIPE82L\", filter=\"HSC-I\")\n", - " if dataRef.datasetExists(dataset)]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create visit catalogs by merging those from constituent CCDs. We also convert from `BaseCatalog` to `SimpleCatalog`, but in the future we'll probably want to have the source transformation tasks generate `SimpleCatalog`s (or `SourceCatalog`s) directly." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "byVisit = {}\n", - "for dataRef in dataRefs:\n", - " catalog = byVisit.setdefault(dataRef.dataId[\"visit\"], SimpleRecord.Catalog(schema))\n", - " catalog.extend(dataRef.get(dataset, immediate=True), deep=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Loop over visits, adding them to the match." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "for visit, catalog in byVisit.iteritems():\n", - " m.add(catalog, dict(visit=visit))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Complete the match, returning a catalog that includes all matched sources with object IDs that can be used to group them." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "matchCat = m.finish()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create a mapping object that allows the matches to be manipulated as a mapping of object ID to catalog of sources." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "allMatches = GroupView.build(matchCat)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Filter down to matches with at least 5 sources and good flags" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "flagKeys = [allMatches.schema.find(\"base_PixelFlags_flag_%s\" % flag).key\n", - " for flag in (\"saturated\", \"cr\", \"bad\", \"edge\")]\n", - "nMatchesRequired = 5\n", - "def goodFilter(cat):\n", - " if len(cat) < nMatchesRequired:\n", - " return False\n", - " for flagKey in flagKeys:\n", - " if cat.get(flagKey).any():\n", - " return False\n", - " return True\n", - "goodMatches = allMatches.where(goodFilter)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "psfMagKey = allMatches.schema.find(\"base_PsfFlux_mag\").key\n", - "modelMagKey = allMatches.schema.find(\"base_GaussianFlux_mag\").key" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from matplotlib import pyplot\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Filter further to a limited range in magnitude and extendedness to select bright stars (plotted below)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "safeMinMag = 18\n", - "safeMaxMag = 19.5\n", - "safeMaxExtend = 0.01\n", - "def safeFilter(cat):\n", - " psfMag = numpy.mean(cat.get(psfMagKey))\n", - " modelMag = numpy.mean(cat.get(psfMagKey))\n", - " extend = numpy.abs(psfMag - modelMag)\n", - " return psfMag >= safeMinMag and modelMag <= safeMaxMag and extend < safeMaxExtend\n", - "safeMatches = goodMatches.where(safeFilter)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "goodPsfMag = goodMatches.aggregate(numpy.mean, field=psfMagKey)\n", - "goodModelMag = goodMatches.aggregate(numpy.mean, field=modelMagKey)\n", - "fig = pyplot.figure(figsize=(10,6))\n", - "ax = fig.add_subplot(1,1,1)\n", - "ax.axhline(0, color='k')\n", - "ax.scatter(goodModelMag, goodPsfMag - goodModelMag, c='r', s=4, linewidth=0, alpha=0.2)\n", - "ax.plot([safeMinMag, safeMaxMag, safeMaxMag, safeMinMag, safeMinMag],\n", - " [-safeMaxExtend, -safeMaxExtend, safeMaxExtend, safeMaxExtend, -safeMaxExtend], 'k-')\n", - "ax.set_ylim(-0.05, 0.05)\n", - "ax.set_xlim(16, 23.5)\n", - "ax.set_ylabel(\"psf mag - model mag\")\n", - "ax.set_xlabel(\"psf mag\")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "safeMatches = goodMatches.where(safeFilter)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Compute the RMS in two ways: as a direct mean over all differences from the per-object means, and via a mean of the unbiased per-object variance estimates, and plot the differences as scatter and histogram plots, with normal distributions with the two RMS estimates overplotted." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "class ClippedVariance(object):\n", - " \n", - " nMeanIterations = 5\n", - " nSigmaIterations = 5\n", - " \n", - " def __init__(self, sigma=None, nSigma=5):\n", - " self.sigma = sigma\n", - " self.nSigma = nSigma\n", - " self.nKept = 0\n", - " self.nTotal = 0\n", - " self.meansTotal = None\n", - " self.meansKept = None\n", - " self.diffsTotal = None\n", - " self.diffsKept = None\n", - "\n", - " def __call__(self, mag):\n", - " mask = slice(None, None, None)\n", - " nTotal = len(mag)\n", - " if self.sigma is not None:\n", - " nKeptLast = None\n", - " for i in xrange(self.nMeanIterations):\n", - " mu = numpy.mean(mag[mask])\n", - " diff = mag - mu\n", - " mask = numpy.abs(diff) <= self.sigma*self.nSigma\n", - " nKept = mask.sum()\n", - " if nKeptLast is not None and nKeptLast == nKept:\n", - " break\n", - " elif nKept < nMatchesRequired:\n", - " return float(\"NaN\")\n", - " nKeptLast = nKept\n", - " else:\n", - " mu = numpy.mean(mag)\n", - " diff = mag - mu\n", - " nKept = nTotal\n", - " if self.meansTotal is not None:\n", - " self.meansTotal[self.nTotal:self.nTotal+nTotal] = mu\n", - " self.meansKept[self.nKept:self.nKept+nKept] = mu\n", - " self.diffsTotal[self.nTotal:self.nTotal+nTotal] = diff\n", - " self.diffsKept[self.nKept:self.nKept+nKept] = diff[mask]\n", - " self.nKept += nKept\n", - " self.nTotal += nTotal\n", - " return numpy.sum((diff[mask])**2)/(nKept - 1)\n", - "\n", - " def reconstructArrays(self, matches, field):\n", - " self.meansTotal = numpy.zeros(self.nTotal, dtype=float)\n", - " self.meansKept = numpy.zeros(self.nKept, dtype=float)\n", - " self.diffsTotal = numpy.zeros(self.nTotal, dtype=float)\n", - " self.diffsKept = numpy.zeros(self.nKept, dtype=float)\n", - " self.nTotal = 0\n", - " self.nKept = 0\n", - " matches.aggregate(self, field=field)\n", - " return self.meansKept, self.meansTotal, self.diffsKept, self.diffsTotal\n", - " \n", - " @classmethod\n", - " def apply(cls, matches, field, sigma=None, nSigma=5):\n", - " nKept = None\n", - " for i in xrange(cls.nSigmaIterations):\n", - " func = ClippedVariance(sigma=sigma, nSigma=nSigma)\n", - " x = matches.aggregate(func, field=field)\n", - " sigma = numpy.nanmean(x)**0.5\n", - " if nKept is not None and nKept == func.nKept:\n", - " break\n", - " nKept = func.nKept\n", - " meansKept, meansTotal, diffsKept, diffsTotal = func.reconstructArrays(matches, field=field)\n", - " return sigma, meansKept, meansTotal, diffsKept, diffsTotal\n", - " \n", - "sigma, meansKept, meansTotal, diffsKept, diffsTotal = ClippedVariance.apply(safeMatches, field=psfMagKey)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(-0.08, 0.08)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": [ - "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\n", - "TkSuQmCC\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = pyplot.figure(figsize=(10,6))\n", - "ax1 = fig.add_subplot(1,2,1)\n", - "ax1.scatter(meansTotal, diffsTotal, c='k', linewidth=0, s=4, alpha=0.2)\n", - "ax1.scatter(meansKept, diffsKept, c='b', linewidth=0, s=4, alpha=0.2)\n", - "ax1.axhline(sigma, color='r')\n", - "ax1.axhline(-sigma, color='r')\n", - "ax1.set_xlim(18.0, 19.5)\n", - "ax1.set_xlabel(\"psf mag\")\n", - "ax1.set_ylabel(\"delta psf mag\")\n", - "ax2 = fig.add_subplot(1,2,2, sharey=ax1)\n", - "ax2.hist(diffsKept, orientation='horizontal', bins=25, range=(-0.1, 0.1), normed=True)\n", - "ax2.get_yaxis().set_visible(False)\n", - "y = numpy.linspace(-0.1, 0.1, 1000)\n", - "gaussian = numpy.exp(-0.5*(y/sigma)**2)/(sigma*(2.0*numpy.pi)**0.5)\n", - "ax2.plot(gaussian, y, 'r-', label=\"Gaussian with sigma={}\".format(sigma))\n", - "ax2.legend()\n", - "ax2.set_ylim(-0.08, 0.08)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMS = 0.018545 magnitudes, with 0.35% of measurements clipped as outliers.\n" - ] - } - ], - "source": [ - "print \"RMS = {0:5f} magnitudes, with {1:0.2f}% of measurements clipped as outliers.\".format(sigma, 100*(1.0-float(len(diffsKept))/len(diffsTotal)))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.9" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/rowColumnStats.cc b/examples/rowColumnStats.cc deleted file mode 100644 index 3eabf43026..0000000000 --- a/examples/rowColumnStats.cc +++ /dev/null @@ -1,108 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * An example executible which calls the statisticsStack function - * - */ -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/math/Stack.h" -#include "lsst/afw/image/ImageSlice.h" - -namespace image = lsst::afw::image; -namespace math = lsst::afw::math; -using ImageF = image::Image; -using ImageSliceF = image::ImageSlice; -using MImageF = image::MaskedImage; - -int main(int argc, char **argv) { - int const nX = 8; - int const nY = 8; - - // fill an image with a gradient - // - we want something different in x and y so we can see the different projections - std::shared_ptr img = std::make_shared(lsst::geom::Extent2I(nX, nY), 0); - for (int y = 0; y < img->getHeight(); ++y) { - int x = 0; - for (ImageF::x_iterator ptr = img->row_begin(y), end = img->row_end(y); ptr != end; ++ptr, ++x) { - *ptr = 1.0 * x + 2.0 * y; - } - } - - // collapse with a MEAN over 'x' (ie. avg all columns to one), then 'y' (avg all rows to one) - std::shared_ptr imgProjectCol = math::statisticsStack(*img, math::MEAN, 'x'); - std::shared_ptr imgProjectRow = math::statisticsStack(*img, math::MEAN, 'y'); - - ImageSliceF slc = ImageSliceF(*(imgProjectCol->getImage())); - - std::shared_ptr opColPlus(new ImageF(*img, true)); - *opColPlus += slc; - std::shared_ptr opColMinus = *img - slc; - - std::shared_ptr opColMult = *img * slc; - std::shared_ptr opColDiv = *img / slc; - - ImageSliceF rowSlice = ImageSliceF(*(imgProjectRow->getImage())); - std::vector> rows; - rows.push_back(*img + rowSlice); - rows.push_back(*img - rowSlice); - rows.push_back(*img * rowSlice); - rows.push_back(*img / rowSlice); - - // output the pixel values and show the statistics projections - - for (auto const &row : rows) { - ImageF::x_iterator end = row->row_end(0); - printf("%26s", " "); - for (ImageF::x_iterator ptr = row->row_begin(0); ptr != end; ++ptr) { - printf("%5.2f ", static_cast(*ptr)); - } - std::cout << std::endl; - } - std::cout << std::endl; - - int y = 0; - MImageF::y_iterator colEnd = imgProjectCol->col_end(0); - for (MImageF::y_iterator pCol = imgProjectCol->col_begin(0); pCol != colEnd; ++pCol, ++y) { - printf("%5.1f %5.1f %5.1f %5.2f : ", (*opColPlus)(0, y), (*opColMinus)(0, y), (*opColMult)(0, y), - (*opColDiv)(0, y)); - for (ImageF::x_iterator ptr = img->row_begin(y), end = img->row_end(y); ptr != end; ++ptr) { - printf("%5.2f ", static_cast(*ptr)); - } - printf(" ==> %5.2f +/- %5.3f\n", pCol.image(), sqrt(pCol.variance())); - } - std::cout << std::endl; - - MImageF::x_iterator rowEnd = imgProjectRow->row_end(0); - printf("%26s", " "); - for (MImageF::x_iterator ptr = imgProjectRow->row_begin(0); ptr != rowEnd; ++ptr) { - printf("%5.2f ", static_cast(ptr.image())); - } - - std::cout << std::endl; -} diff --git a/examples/showCamera.py b/examples/showCamera.py deleted file mode 100755 index acfc5dd65d..0000000000 --- a/examples/showCamera.py +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -import numpy -import matplotlib.pyplot as plt - -import lsst.geom -import lsst.afw.cameraGeom as cameraGeom - - -def main(camera, sample=20, showDistortion=True): - if True: - fig = plt.figure(1) - fig.clf() - ax = fig.add_axes((0.1, 0.1, 0.8, 0.8)) - - title = camera.getId().getName() - if showDistortion: - title += ' (Distorted)' - - ax.set_title(title) - else: - fig = None - - if showDistortion: - dist = camera.getDistortion() - - for raft in camera: - raft = raft - for ccd in raft: - if False and ccd.getId().getSerial() not in (0, 3): - continue - - ccd = ccd - ccd.setTrimmed(True) - - width, height = ccd.getAllPixels(True).getDimensions() - - corners = ((0.0, 0.0), (0.0, height), - (width, height), (width, 0.0), (0.0, 0.0)) - for (x0, y0), (x1, y1) in zip(corners[0:4], corners[1:5]): - if x0 == x1 and y0 != y1: - yList = numpy.linspace(y0, y1, num=sample) - xList = [x0] * len(yList) - elif y0 == y1 and x0 != x1: - xList = numpy.linspace(x0, x1, num=sample) - yList = [y0] * len(xList) - else: - raise RuntimeError("Should never get here") - - xOriginal = [] - yOriginal = [] - xDistort = [] - yDistort = [] - for x, y in zip(xList, yList): - position = ccd.getPositionFromPixel( - lsst.geom.Point2D(x, y)) # focal plane position - - xOriginal.append(position.getMm().getX()) - yOriginal.append(position.getMm().getY()) - - if not showDistortion: - continue - - # Calculate offset (in CCD pixels) due to distortion - distortion = dist.distort(lsst.geom.Point2D( - x, y), ccd) - lsst.geom.Extent2D(x, y) - - # Calculate the distorted position - distorted = position + \ - cameraGeom.FpPoint(distortion)*ccd.getPixelSize() - - xDistort.append(distorted.getMm().getX()) - yDistort.append(distorted.getMm().getY()) - - if fig: - ax.plot(xOriginal, yOriginal, 'k-') - if showDistortion: - ax.plot(xDistort, yDistort, 'r-') - - if fig: - x, y = ccd.getPositionFromPixel( - lsst.geom.Point2D(width/2, height/2)).getMm() - ax.text(x, y, ccd.getId().getSerial(), ha='center') - - if fig: - plt.show() - - -if __name__ == '__main__': - import argparse - import sys - - parser = argparse.ArgumentParser() - parser.add_argument("camera", help="Name of camera to show") - parser.add_argument("--showDistortion", - action="store_true", help="Show distortion?") - parser.add_argument("-v", "--verbose", - action="store_true", help="Be chattier") - args = parser.parse_args() - - if args.camera.lower() == "hsc": - from lsst.obs.hscSim.hscSimMapper import HscSimMapper as Mapper - elif args.camera.lower() == "suprimecam": - from lsst.obs.suprimecam import SuprimecamMapper as Mapper - elif args.camera.lower() == "lsstsim": - from lsst.obs.lsstSim import LsstSimMapper as Mapper - else: - print("Unknown camera %s" % args.camera, file=sys.stderr) - sys.exit(1) - - camera = Mapper().camera - - main(camera, showDistortion=args.showDistortion, sample=2) - print("Hit any key to exit", end=' ') - input() diff --git a/examples/simpleConvolve.cc b/examples/simpleConvolve.cc deleted file mode 100644 index c0ea1a5556..0000000000 --- a/examples/simpleConvolve.cc +++ /dev/null @@ -1,83 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/log/Log.h" -#include "lsst/afw/math.h" -#include "lsst/afw/image.h" - -const std::string outImagePath("scOut.fits"); -namespace afwImage = lsst::afw::image; -namespace afwMath = lsst::afw::math; - -int main(int argc, char **argv) { - using Pixel = afwMath::Kernel::Pixel; - unsigned int kernelCols = 6; - unsigned int kernelRows = 5; - - LOG_CONFIG(); - LOG_SET_LVL("TRACE5.afw.math.convolve", LOG_LVL_INFO); - - const double DefSigma = 2.0; - - std::string inImagePath; - if (argc < 2) { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/small.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: simpleConvolve [fitsFile [sigma]]" << std::endl; - std::cerr << "fitsFile is the path to a masked image" << std::endl; - std::cerr << "sigma (default " << DefSigma << ") is the width of the gaussian kernel, in pixels" - << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } else { - inImagePath = std::string(argv[1]); - } - std::cerr << "Convolving masked image " << inImagePath << std::endl; - - double sigma = DefSigma; - if (argc > 2) { - std::istringstream(argv[2]) >> sigma; - } - - // read in fits file - afwImage::MaskedImage mImage(inImagePath); - - // construct kernel - afwMath::GaussianFunction2 gaussFunc(sigma, sigma, 0); - afwMath::AnalyticKernel kernel(kernelCols, kernelRows, gaussFunc); - - // convolve - afwImage::MaskedImage resMaskedImage(mImage.getDimensions()); - afwMath::convolve(resMaskedImage, mImage, kernel, true); - - // write results - resMaskedImage.writeFits(outImagePath); - std::cerr << "Wrote convolved image " << outImagePath << std::endl; -} diff --git a/examples/simpleStacker.cc b/examples/simpleStacker.cc deleted file mode 100644 index e4ce253b1d..0000000000 --- a/examples/simpleStacker.cc +++ /dev/null @@ -1,97 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * An example executable which calls the example 'stack' code - */ -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/math/Stack.h" - -namespace image = lsst::afw::image; -namespace math = lsst::afw::math; - -using ImageF = image::Image; -using MImageF = image::MaskedImage; -using VecF = std::vector; - -int main(int argc, char **argv) { - int const nImg = 10; - int const nX = 64; - int const nY = 64; - - // load a vector with weights to demonstrate weighting each image/vector by a constant weight. - std::vector wvec(nImg, 1.0); - for (int iImg = 0; iImg < nImg; ++iImg) { - if (iImg < nImg / 2) { - wvec[iImg] = 0.0; - } - } - // we'll need a StatisticsControl object with weighted stats specified. - math::StatisticsControl sctrl; - if (argc > 1 && std::atoi(argv[1]) > 0) { - sctrl.setWeighted(true); - } else { - sctrl.setWeighted(false); - } - - // regular image - std::vector> imgList; - for (int iImg = 0; iImg < nImg; ++iImg) { - std::shared_ptr img = std::make_shared(lsst::geom::Extent2I(nX, nY), iImg); - imgList.push_back(img); - } - std::shared_ptr imgStack = math::statisticsStack(imgList, math::MEAN); - std::cout << "Image: " << (*imgStack)(nX / 2, nY / 2) << std::endl; - std::shared_ptr wimgStack = math::statisticsStack(imgList, math::MEAN, sctrl, wvec); - std::cout << "Image (const weight): " << (*wimgStack)(nX / 2, nY / 2) << std::endl; - - // masked image - std::vector> mimgList; - for (int iImg = 0; iImg < nImg; ++iImg) { - std::shared_ptr mimg = std::make_shared(lsst::geom::Extent2I(nX, nY)); - *mimg->getImage() = iImg; - *mimg->getMask() = 0x0; - *mimg->getVariance() = iImg; - mimgList.push_back(mimg); - } - std::shared_ptr mimgStack = math::statisticsStack(mimgList, math::MEAN); - std::cout << "MaskedImage: " << (*mimgStack->getImage())(nX / 2, nY / 2) << std::endl; - std::shared_ptr wmimgStack = math::statisticsStack(mimgList, math::MEAN, sctrl, wvec); - std::cout << "MaskedImage (const weight): " << (*wmimgStack->getImage())(nX / 2, nY / 2) << std::endl; - - // std::vector, and also with a constant weight vector - std::vector vecList; - for (int iImg = 0; iImg < nImg; ++iImg) { - VecF v(nX * nY, iImg); - vecList.push_back(v); - } - VecF vecStack = math::statisticsStack(vecList, math::MEAN); - std::cout << "Vector: " << (vecStack)[nX * nY / 2] << std::endl; - VecF wvecStack = math::statisticsStack(vecList, math::MEAN, sctrl, wvec); - std::cout << "Vector (const weight): " << (wvecStack)[nX * nY / 2] << std::endl; -} diff --git a/examples/simpleStacker.py b/examples/simpleStacker.py deleted file mode 100755 index 0c3deff85a..0000000000 --- a/examples/simpleStacker.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -# -*- python -*- -# -# simpleStacker.py -# An example executible which calls the example 'stack' code -# -import lsst.geom -import lsst.afw.math as afwMath -import lsst.afw.image as afwImage - -###################################### -# main body of code -###################################### - - -def main(): - - nImg = 10 - nX, nY = 64, 64 - - imgList = [] - for iImg in range(nImg): - imgList.push_back(afwImage.ImageF(lsst.geom.Extent2I(nX, nY), iImg)) - - imgStack = afwMath.statisticsStack(imgList, afwMath.MEAN) - - print(imgStack.get(nX/2, nY/2)) - - -####################################### -if __name__ == '__main__': - main() diff --git a/examples/spatialCellExample.cc b/examples/spatialCellExample.cc deleted file mode 100644 index 17113ed96a..0000000000 --- a/examples/spatialCellExample.cc +++ /dev/null @@ -1,173 +0,0 @@ -/* - * This file is part of afw. - * - * Developed for the LSST Data Management System. - * This product includes software developed by the LSST Project - * (https://www.lsst.org). - * See the COPYRIGHT file at the top-level directory of this distribution - * for details of code ownership. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This C++ example does the same thing as SpatialCellExample.py. The latter of the python version - * is that you can set display == True and see what's going on - */ -#include -#include "lsst/geom.h" -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/daf/base.h" -#include "lsst/afw/image.h" -#include "lsst/afw/detection.h" -#include "lsst/afw/math.h" - -#include "testSpatialCell.h" - -namespace afwDetect = lsst::afw::detection; -namespace afwImage = lsst::afw::image; -namespace afwMath = lsst::afw::math; -using PixelT = float; - -std::pair>, std::shared_ptr> -readImage(); - -/* - * A demonstration of the use of a SpatialCellSet - */ -void SpatialCellSetDemo() { - std::shared_ptr> im; - std::shared_ptr fs; - boost::tie(im, fs) = readImage(); - /* - * Create an (empty) SpatialCellSet - */ - afwMath::SpatialCellSet cellSet(im->getBBox(), 260, 200); - /* - * Populate the cellSet using the detected object in the FootprintSet - */ - for (auto const &ptr : *fs->getFootprints()) { - lsst::geom::Box2I const bbox = ptr->getBBox(); - float const xc = (bbox.getMinX() + bbox.getMaxX()) / 2.0; - float const yc = (bbox.getMinY() + bbox.getMaxY()) / 2.0; - std::shared_ptr tc(new ExampleCandidate(xc, yc, im, bbox)); - cellSet.insertCandidate(tc); - } - /* - * OK, the SpatialCellList is populated. Let's do something with it - */ - ExampleCandidateVisitor visitor; - - cellSet.visitCandidates(&visitor); - std::cout << boost::format("There are %d candidates\n") % visitor.getN(); - /* - * Now label too-small object as BAD - */ - for (unsigned int i = 0; i != cellSet.getCellList().size(); ++i) { - std::shared_ptr cell = cellSet.getCellList()[i]; - - for (auto && candidate : *cell) { - lsst::geom::Box2I box = dynamic_cast((candidate).get())->getBBox(); - -#if 0 - std::cout << boost::format("%d %5.2f %5.2f %d\n") - % i % (*candidate)->getXCenter() % (*candidate)->getYCenter() % (w*h); -#endif - if (box.getArea() < 75) { - (candidate)->setStatus(afwMath::SpatialCellCandidate::BAD); - } - } - } - /* - * Now count the good and bad candidates - */ - for (unsigned int i = 0; i != cellSet.getCellList().size(); ++i) { - std::shared_ptr cell = cellSet.getCellList()[i]; - cell->visitCandidates(&visitor); - - cell->setIgnoreBad(false); // include BAD in cell.size() - std::cout << boost::format("%s nobj=%d N_good=%d NPix_good=%d\n") % cell->getLabel() % cell->size() % - visitor.getN() % visitor.getNPix(); - } - - cellSet.setIgnoreBad(true); // don't visit BAD candidates - cellSet.visitCandidates(&visitor); - std::cout << boost::format("There are %d good candidates\n") % visitor.getN(); -} - -/* - * Read an image and background subtract it - */ -std::pair>, std::shared_ptr> -readImage() { - std::shared_ptr> mi; - - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - - std::string filename = dataDir + "/CFHT/D4/cal-53535-i-797722_1.fits"; - - lsst::geom::Box2I bbox = - lsst::geom::Box2I(lsst::geom::Point2I(270, 2530), lsst::geom::Extent2I(512, 512)); - - std::shared_ptr md; - mi.reset(new afwImage::MaskedImage(filename, md, bbox)); - - } catch (lsst::pex::exceptions::NotFoundError &e) { - std::cerr << e << std::endl; - exit(1); - } - /* - * Subtract the background. We can't fix those pesky cosmic rays, as that's in a dependent product - * (meas/algorithms) - */ - afwMath::BackgroundControl bctrl(afwMath::Interpolate::NATURAL_SPLINE); - bctrl.setNxSample(mi->getWidth() / 256 + 1); - bctrl.setNySample(mi->getHeight() / 256 + 1); - bctrl.getStatisticsControl()->setNumSigmaClip(3.0); - bctrl.getStatisticsControl()->setNumIter(2); - - std::shared_ptr> im = mi->getImage(); - try { - *mi->getImage() -= *afwMath::makeBackground(*im, bctrl)->getImage(); - } catch (std::exception &) { - bctrl.setInterpStyle(afwMath::Interpolate::CONSTANT); - *mi->getImage() -= *afwMath::makeBackground(*im, bctrl)->getImage(); - } - /* - * Find sources - */ - afwDetect::Threshold threshold(5, afwDetect::Threshold::STDEV); - int npixMin = 5; // we didn't smooth - std::shared_ptr fs( - new afwDetect::FootprintSet(*mi, threshold, "DETECTED", npixMin)); - int const grow = 1; - bool const isotropic = false; - std::shared_ptr grownFs(new afwDetect::FootprintSet(*fs, grow, isotropic)); - grownFs->setMask(mi->getMask(), "DETECTED"); - - return std::make_pair(mi, grownFs); -} - -/* - * Run the example - */ -int main() { - std::pair>, std::shared_ptr> data = - readImage(); - assert(data.first != nullptr); // stop compiler complaining about data being unused - - SpatialCellSetDemo(); -} diff --git a/examples/spatiallyVaryingConvolve.cc b/examples/spatiallyVaryingConvolve.cc deleted file mode 100644 index 362dfc5cd7..0000000000 --- a/examples/spatiallyVaryingConvolve.cc +++ /dev/null @@ -1,114 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/log/Log.h" -#include "lsst/afw/math.h" -#include "lsst/afw/image.h" - -namespace afwImage = lsst::afw::image; -namespace afwMath = lsst::afw::math; - -const std::string outImagePath("svcOut.fits"); - -/* - * Demonstrate convolution with a spatially varying kernel - * - * The kernel is a Gaussian that varies as follows: - * xSigma varies linearly from minSigma to maxSigma as image col goes from 0 to max - * ySigma varies linearly from minSigma to maxSigma as image row goes from 0 to max - */ -int main(int argc, char **argv) { - using Pixel = afwMath::Kernel::Pixel; - - LOG_CONFIG(); - LOG_SET_LVL("TRACE5.afw.math.convolve", LOG_LVL_INFO); - - double minSigma = 0.1; - double maxSigma = 3.0; - unsigned int kernelCols = 5; - unsigned int kernelRows = 5; - - std::string inImagePath; - if (argc < 2) { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/small.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: spatiallyVaryingConvolve [fitsFile]" << std::endl; - std::cerr << "fitsFile is the path to a masked image" << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } else { - inImagePath = std::string(argv[1]); - } - std::cerr << "Convolving masked image " << inImagePath << std::endl; - - // read in fits file - afwImage::MaskedImage mImage(inImagePath); - - // construct kernel - afwMath::GaussianFunction2 gaussFunc(1, 1, 0); - unsigned int polyOrder = 1; - afwMath::PolynomialFunction2 polyFunc(polyOrder); - afwMath::AnalyticKernel gaussSpVarKernel(kernelCols, kernelRows, gaussFunc, polyFunc); - - // Get copy of spatial parameters (all zeros), set and feed back to the kernel - std::vector > polyParams = gaussSpVarKernel.getSpatialParameters(); - // Set spatial parameters for kernel parameter 0 - polyParams[0][0] = minSigma; - polyParams[0][1] = (maxSigma - minSigma) / static_cast(mImage.getWidth()); - polyParams[0][2] = 0.0; - // Set spatial function parameters for kernel parameter 1 - polyParams[1][0] = minSigma; - polyParams[1][1] = 0.0; - polyParams[1][2] = (maxSigma - minSigma) / static_cast(mImage.getHeight()); - gaussSpVarKernel.setSpatialParameters(polyParams); - - std::cout << "Spatial Parameters:" << std::endl; - for (unsigned int row = 0; row < polyParams.size(); ++row) { - if (row == 0) { - std::cout << "xSigma"; - } else { - std::cout << "ySigma"; - } - for (unsigned int col = 0; col < polyParams[row].size(); ++col) { - std::cout << boost::format("%7.1f") % polyParams[row][col]; - } - std::cout << std::endl; - } - std::cout << std::endl; - - // convolve - afwImage::MaskedImage resMaskedImage(mImage.getDimensions()); - afwMath::convolve(resMaskedImage, mImage, gaussSpVarKernel, true); - - // write results - resMaskedImage.writeFits(outImagePath); - std::cerr << "Wrote convolved image " << outImagePath << std::endl; -} diff --git a/examples/splineInterpolate.cc b/examples/splineInterpolate.cc deleted file mode 100644 index 050d924d4e..0000000000 --- a/examples/splineInterpolate.cc +++ /dev/null @@ -1,71 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include -#include "lsst/afw/math/Interpolate.h" - -using namespace std; -namespace math = lsst::afw::math; - -int main() { - // create x,y vector<>s containing a sin() function - int const nX = 20; - vector x(nX); - vector y(nX); - double const xLo = 0; - double const xHi = 2.0 * M_PI; - double const range = xHi - xLo; - - for (int i = 0; i < nX; ++i) { - x[i] = xLo + static_cast(i) / (nX - 1) * range; - y[i] = sin(x[i]); - } - - // create a new x vector<> on a different grid and extending beyond the bounds - // of the interpolation range to tests extrapolation properties - int const nX2 = 100; - vector x2(nX2); - for (int i = 0; i < nX2; ++i) { - x2[i] = xLo + (((nX + 2.0) / nX) * static_cast(i) / (nX2 - 1) - 1.0 / nX) * range; - } - - // declare an spline interpolate object. the constructor computes the first derivatives - std::shared_ptr yinterpS = math::makeInterpolate(x, y, math::Interpolate::LINEAR); - - // declare a linear interpolate object. the constructor computes the second derivatives - std::shared_ptr yinterpL = - math::makeInterpolate(x, y, math::Interpolate::CUBIC_SPLINE); - - // output the interpolated y values, 1st derivatives, and 2nd derivatives. - for (int i = 0; i < nX2; ++i) { - cout << i << " " << x2[i] << " " << yinterpL->interpolate(x2[i]) << " " - << yinterpS->interpolate(x2[i]) << " " << endl; - } - - return 0; -} diff --git a/examples/statistics.cc b/examples/statistics.cc deleted file mode 100644 index 28a2024f96..0000000000 --- a/examples/statistics.cc +++ /dev/null @@ -1,70 +0,0 @@ -// -*- LSST-C++ -*- - -/* - * This file is part of afw. - * - * Developed for the LSST Data Management System. - * This product includes software developed by the LSST Project - * (https://www.lsst.org). - * See the COPYRIGHT file at the top-level directory of this distribution - * for details of code ownership. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/image/MaskedImage.h" -#include "lsst/afw/math/Statistics.h" - -using namespace std; -namespace image = lsst::afw::image; -namespace math = lsst::afw::math; - -using ImageF = image::Image; - -int main() { - // First we'll try a regular image - ImageF img(lsst::geom::Extent2I(10, 40)); - img = 100000.0; - - { - math::Statistics stats = math::makeStatistics(img, math::NPOINT | math::MEAN | math::STDEV); - cout << "Npixel: " << stats.getValue(math::NPOINT) << endl; - cout << "Mean: " << stats.getValue(math::MEAN) << endl; - cout << "Error in mean: " << stats.getError(math::MEAN) << " (expect NaN)" << endl; - cout << "Standard Deviation: " << stats.getValue(math::STDEV) << endl << endl; - } - - { - math::Statistics stats = math::makeStatistics(img, math::STDEV | math::MEAN | math::ERRORS); - std::pair mean = stats.getResult(math::MEAN); - - cout << "Mean: " << mean.first << " error in mean: " << mean.second << endl << endl; - } - - { - math::Statistics stats = math::makeStatistics(img, math::NPOINT); - try { - stats.getValue(math::MEAN); - } catch (lsst::pex::exceptions::InvalidParameterError &e) { - cout << "You didn't ask for the mean, so we caught an exception: " << e.what() << endl; - } - } - - return 0; -} diff --git a/examples/statisticsConstructor.py b/examples/statisticsConstructor.py deleted file mode 100755 index b2176a7042..0000000000 --- a/examples/statisticsConstructor.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -# -import lsst.geom -import lsst.afw.math as afwMath -import lsst.afw.image as afwImage - -# This code was written as a result of ticket #1090 to -# demonstrate how to call the Statistics Constructor directly. - - -def main(): - - mimg = afwImage.MaskedImageF(lsst.geom.Extent2I(100, 100)) - mimValue = (2, 0x0, 1) - mimg.set(mimValue) - - # call with the factory function ... should get stats on the image plane - fmt = "%-40s %-16s %3.1f\n" - print(fmt % ("Using makeStatistics:", "(should be " + str(mimValue[0]) + ")", - afwMath.makeStatistics(mimg, afwMath.MEAN).getValue()), end=' ') - - # call the constructor directly ... once for image plane, then for variance - # - make sure we're not using weighted stats for this - sctrl = afwMath.StatisticsControl() - sctrl.setWeighted(False) - print(fmt % ("Using Statistics on getImage():", "(should be " + str(mimValue[0]) + ")", - afwMath.StatisticsF(mimg.getImage(), mimg.getMask(), mimg.getVariance(), - afwMath.MEAN, sctrl).getValue()), end=' ') - print(fmt % ("Using Statistics on getVariance():", "(should be " + str(mimValue[2]) + ")", - afwMath.StatisticsF(mimg.getVariance(), mimg.getMask(), mimg.getVariance(), - afwMath.MEAN, sctrl).getValue()), end=' ') - - # call makeStatistics as a front-end for the constructor - print(fmt % ("Using makeStatistics on getImage():", "(should be " + str(mimValue[0]) + ")", - afwMath.makeStatistics(mimg.getImage(), mimg.getMask(), afwMath.MEAN).getValue()), end=' ') - print(fmt % ("Using makeStatistics on getVariance():", "(should be " + str(mimValue[2]) + ")", - afwMath.makeStatistics(mimg.getVariance(), mimg.getMask(), - afwMath.MEAN).getValue()), end=' ') - - -if __name__ == '__main__': - main() diff --git a/examples/statisticsMaskedImage.py b/examples/statisticsMaskedImage.py deleted file mode 100755 index 430976f6a5..0000000000 --- a/examples/statisticsMaskedImage.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -# -import lsst.geom -import lsst.afw.math as afwMath -import lsst.afw.image as afwImage - -# This example demonstrates how to compute statistics on a masked image - - -def main(): - showSetAndMask() - - -def showSetAndMask(): - - nX, nY = 10, 10 - mimg = afwImage.MaskedImageF(lsst.geom.Extent2I(nX, nY)) - - # decide what we believe to be 'bad' mask bits - mask = mimg.getMask() - maskbitBad = mask.getPlaneBitMask('BAD') - maskbitSat = mask.getPlaneBitMask('SAT') - maskbits = maskbitBad | maskbitSat - - # four possibilities ... none, bad, sat, bad+sat - # we'll just set the pixel value to equal the mask value for simplicity - values = [ - (0, 0x0, 0), - (maskbitBad, maskbitBad, 0), - (maskbitSat, maskbitSat, 0), - (maskbits, maskbits, 0) - ] - for iY in range(nY): - for iX in range(nX): - mod = (iY*nX + iX) % len(values) - mimg.set(iX, iY, values[mod]) - - # create our statisticsControl object and change the andMask to reject - # the bits we deem bad. - masks = [0x0, maskbitBad, maskbitSat, maskbits] - explanations = [ - "all values accepted ... avg of 0,1,2,3 = 1.5", - "reject 'BAD' ... avg of 0,2 = 1.0", - "reject 'SAT' ... avg of 0,1 = 0.5", - "reject BAD | SAT ... avg of 0 = 0.0" - ] - for i in range(len(masks)): - sctrl = afwMath.StatisticsControl() - sctrl.setAndMask(masks[i]) - stat = afwMath.makeStatistics(mimg, afwMath.MEAN, sctrl) - answer = stat.getValue(afwMath.MEAN) - print(explanations[i], " (got %.1f)" % (answer)) - - -if __name__ == '__main__': - main() diff --git a/examples/statisticsNaN.py b/examples/statisticsNaN.py deleted file mode 100755 index 5ecc647e17..0000000000 --- a/examples/statisticsNaN.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python -# This file is part of afw. -# -# Developed for the LSST Data Management System. -# This product includes software developed by the LSST Project -# (https://www.lsst.org). -# See the COPYRIGHT file at the top-level directory of this distribution -# for details of code ownership. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -import lsst.geom -import lsst.afw.math as afwMath -import lsst.afw.image as afwImage -import lsst.afw.display as afwDisplay - -# This code was submitted as a part of ticket #749 to demonstrate -# the failure of Statistics in dealing with NaN - -disp = False - - -def main(): - - gaussFunction = afwMath.GaussianFunction2D(3, 2, 0.5) - gaussKernel = afwMath.AnalyticKernel(10, 10, gaussFunction) - inImage = afwImage.ImageF(lsst.geom.Extent2I(100, 100)) - inImage.set(1) - if disp: - afwDisplay.Display(frame=0).mtv(inImage, title="Input Image") - - # works - outImage = afwImage.ImageF(lsst.geom.Extent2I(100, 100)) - afwMath.convolve(outImage, inImage, gaussKernel, False, True) - if disp: - afwDisplay.Display(frame=1).mtv(outImage, title="Output Image") - print("Should be a number: ", afwMath.makeStatistics( - outImage, afwMath.MEAN).getValue()) - print("Should be a number: ", afwMath.makeStatistics( - outImage, afwMath.STDEV).getValue()) - - # not works ... now does work - outImage = afwImage.ImageF(lsst.geom.Extent2I(100, 100)) - afwMath.convolve(outImage, inImage, gaussKernel, False, False) - if disp: - afwDisplay.Display(frame=2).mtv(outImage, title="Output Image") - print("Should be a number: ", afwMath.makeStatistics( - outImage, afwMath.MEAN).getValue()) - print("Should be a number: ", afwMath.makeStatistics( - outImage, afwMath.STDEV).getValue()) - - # This will print nan - sctrl = afwMath.StatisticsControl() - sctrl.setNanSafe(False) - print("Should be a nan (nanSafe set to False): " - + str(afwMath.makeStatistics(outImage, afwMath.MEAN, sctrl).getValue())) - - -if __name__ == '__main__': - main() diff --git a/examples/testSpatialCell.cc b/examples/testSpatialCell.cc deleted file mode 100644 index 61cda1609a..0000000000 --- a/examples/testSpatialCell.cc +++ /dev/null @@ -1,40 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include "testSpatialCell.h" - -ExampleCandidate::ExampleCandidate(float const xCenter, float const yCenter, - std::shared_ptr parent, lsst::geom::Box2I bbox) - : lsst::afw::math::SpatialCellImageCandidate(xCenter, yCenter), _parent(parent), _bbox(bbox) {} - -double ExampleCandidate::getCandidateRating() const { - return (*_parent->getImage())(getXCenter(), getYCenter()); -} - -std::shared_ptr ExampleCandidate::getMaskedImage() const { - if (!_image) { - _image = std::make_shared(*_parent, _bbox, lsst::afw::image::LOCAL); - } - return _image; -} diff --git a/examples/testSpatialCell.h b/examples/testSpatialCell.h deleted file mode 100644 index bde976fd05..0000000000 --- a/examples/testSpatialCell.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#if !defined(TESTSPATIALCELL_H) -#define TESTSPATIALCELL_H -#include -#include "lsst/geom.h" -#include "lsst/afw/math.h" -#include "lsst/afw/image/Image.h" - -/* - * Test class for SpatialCellImageCandidate - */ -class ExampleCandidate : public lsst::afw::math::SpatialCellImageCandidate { -public: - using PixelT = float; - using MaskedImageT = lsst::afw::image::MaskedImage; - - /** Constructor - * - * @param xCenter The object's column-centre - * @param yCenter The object's row-centre - * @param parent the parent image - * @param bbox The object's bounding box - */ - ExampleCandidate(float const xCenter, float const yCenter, std::shared_ptr parent, - lsst::geom::Box2I bbox); - - lsst::geom::Box2I getBBox() const { return _bbox; } - - /// Return candidates rating - double getCandidateRating() const; - - /// Return the %image - std::shared_ptr getMaskedImage() const; - -private: - mutable std::shared_ptr _image; - std::shared_ptr _parent; - lsst::geom::Box2I _bbox; -}; - -/* - * Class to pass around to all our ExampleCandidates. All this one does is count acceptable candidates - */ -class ExampleCandidateVisitor : public lsst::afw::math::CandidateVisitor { -public: - ExampleCandidateVisitor() : lsst::afw::math::CandidateVisitor(), _n(0), _npix(0) {} - - // Called by SpatialCellSet::visitCandidates before visiting any Candidates - void reset() { _n = _npix = 0; } - - // Called by SpatialCellSet::visitCandidates for each Candidate - void processCandidate(lsst::afw::math::SpatialCellCandidate *candidate) { - ++_n; - - lsst::geom::Box2I box = dynamic_cast(candidate)->getBBox(); - _npix += box.getArea(); - } - - int getN() const { return _n; } - int getNPix() const { return _npix; } - -private: - int _n; // number of ExampleCandidates - int _npix; // number of pixels in ExampleCandidates's bounding boxes -}; - -#endif diff --git a/examples/ticket647.cc b/examples/ticket647.cc deleted file mode 100644 index 3af317a937..0000000000 --- a/examples/ticket647.cc +++ /dev/null @@ -1,42 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include "lsst/geom.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/image/MaskedImage.h" - -namespace image = lsst::afw::image; - -int main() { - image::MaskedImage mi(lsst::geom::Extent2I(10, 10)); - image::Image im(mi.getDimensions()); - - image::MaskedImage::xy_locator mi_loc = mi.xy_at(5, 5); - image::Image::xy_locator im_loc = im.xy_at(5, 5); - - std::pair const step = std::make_pair(1, 1); - - mi_loc += step; - im_loc += step; - - return 0; -} diff --git a/examples/timeConvolve.cc b/examples/timeConvolve.cc deleted file mode 100644 index 5424a2abae..0000000000 --- a/examples/timeConvolve.cc +++ /dev/null @@ -1,141 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/pex/exceptions.h" -#include "lsst/afw/math/FunctionLibrary.h" -#include "lsst/afw/image/Image.h" -#include "lsst/afw/image/MaskedImage.h" -#include "lsst/afw/math/Kernel.h" -#include "lsst/afw/math/KernelFunctions.h" - -namespace afwImage = lsst::afw::image; -namespace afwMath = lsst::afw::math; - -using ImageType = float; -using KernelType = double; - -const double Sigma = 3; -const unsigned DefNIter = 10; -const unsigned MinKernelSize = 5; -const unsigned MaxKernelSize = 15; -const unsigned DeltaKernelSize = 5; - -template -void timeConvolution(ImageClass &image, unsigned int nIter) { - using KernelType = double; - - unsigned imWidth = image.getWidth(); - unsigned imHeight = image.getHeight(); - - ImageClass resImage(image.getDimensions()); - - std::cout << std::endl << "Analytic Kernel" << std::endl; - std::cout << "ImWid\tImHt\tKerWid\tKerHt\tMOps\tCnvSec\tMOpsPerSec" << std::endl; - - for (unsigned kSize = MinKernelSize; kSize <= MaxKernelSize; kSize += DeltaKernelSize) { - // construct kernel - afwMath::GaussianFunction2 gaussFunc(Sigma, Sigma, 0); - afwMath::AnalyticKernel analyticKernel(kSize, kSize, gaussFunc); - - clock_t startTime = clock(); - for (unsigned int iter = 0; iter < nIter; ++iter) { - // convolve - afwMath::convolve(resImage, image, analyticKernel, true); - } - // separate casts for CLOCKS_PER_SEC and nIter avoids incorrect results, perhaps due to overflow - double secPerIter = - (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - double mOps = - static_cast((imHeight + 1 - kSize) * (imWidth + 1 - kSize) * kSize * kSize) / 1.0e6; - double mOpsPerSec = mOps / secPerIter; - std::cout << imWidth << "\t" << imHeight << "\t" << kSize << "\t" << kSize << "\t" << mOps << "\t" - << secPerIter << "\t" << mOpsPerSec << std::endl; - } - - std::cout << std::endl << "Separable Kernel" << std::endl; - std::cout << "ImWid\tImHt\tKerWid\tKerHt\tMOps\tCnvSec\tMOpsPerSec" << std::endl; - - for (unsigned kSize = MinKernelSize; kSize <= MaxKernelSize; kSize += DeltaKernelSize) { - // construct kernel - afwMath::GaussianFunction1 gaussFunc(Sigma); - afwMath::SeparableKernel separableKernel(kSize, kSize, gaussFunc, gaussFunc); - - clock_t startTime = clock(); - for (unsigned int iter = 0; iter < nIter; ++iter) { - // convolve - afwMath::convolve(resImage, image, separableKernel, true); - } - double secPerIter = - (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - - double mOps = - static_cast((imHeight + 1 - kSize) * (imWidth + 1 - kSize) * kSize * kSize) / 1.0e6; - double mOpsPerSec = mOps / secPerIter; - std::cout << imWidth << "\t" << imHeight << "\t" << kSize << "\t" << kSize << "\t" << mOps << "\t" - << secPerIter << "\t" << mOpsPerSec << std::endl; - } -} - -int main(int argc, char **argv) { - std::string inImagePath; - if (argc < 2) { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/small.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: timeConvolve [fitsFile [nIter]]" << std::endl; - std::cerr << "fitsFile is the path to a masked image" << std::endl; - std::cerr << "nIter (default " << DefNIter << ") is the number of iterations per kernel size" - << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } else { - inImagePath = std::string(argv[1]); - } - - unsigned int nIter = DefNIter; - if (argc > 2) { - std::istringstream(argv[2]) >> nIter; - } - - std::cout << "Timing convolution with a spatially invariant kernel" << std::endl; - std::cout << "Columns:" << std::endl; - std::cout << "* MOps: the number of operations of a kernel pixel on a masked pixel / 10e6." << std::endl; - std::cout << " One operation includes the all of the following:" << std::endl; - std::cout << " * two multiplies and two additions (one image, one for variance)," << std::endl; - std::cout << " * one OR (for the mask)" << std::endl; - std::cout << " * four pixel pointer increments (for image, variance, mask and kernel)" << std::endl; - std::cout << "* CnvSec: time to perform one convolution (sec)" << std::endl; - - std::cout << std::endl << "Image " << inImagePath << std::endl; - afwImage::Image image(inImagePath); - timeConvolution(image, nIter); - - std::cout << std::endl << "MaskedImage " << inImagePath << std::endl; - afwImage::MaskedImage mImage(inImagePath); - timeConvolution(mImage, nIter); -} diff --git a/examples/timeImageAddition.cc b/examples/timeImageAddition.cc deleted file mode 100644 index bf7d0bdfdf..0000000000 --- a/examples/timeImageAddition.cc +++ /dev/null @@ -1,75 +0,0 @@ -// -*- lsst-c++ -*- - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image.h" - -namespace image = lsst::afw::image; - -int main(int argc, char **argv) { - using imageType = float; - const unsigned DefNIter = 100; - const unsigned DefNCols = 1024; - - if ((argc == 2) && (argv[1][0] == '-')) { - std::cout << "Usage: timeImageAddition [nIter [nCols [nRows]]]" << std::endl; - std::cout << "nIter (default " << DefNIter << ") is the number of iterations" << std::endl; - std::cout << "nCols (default " << DefNCols << ") is the number of columns" << std::endl; - std::cout << "nRows (default = nCols) is the number of rows" << std::endl; - return 1; - } - - unsigned nIter = DefNIter; - if (argc > 1) { - std::istringstream(argv[1]) >> nIter; - } - unsigned nCols = DefNCols; - if (argc > 2) { - std::istringstream(argv[2]) >> nCols; - } - unsigned nRows = nCols; - if (argc > 3) { - std::istringstream(argv[3]) >> nRows; - } - - image::Image image1(lsst::geom::Extent2I(nCols, nRows)); - image::Image image2(image1.getDimensions()); - - std::cout << "Cols\tRows\tMPix\tSecPerIter\tSecPerIterPerMPix" << std::endl; - - clock_t startTime = clock(); - for (unsigned iter = 0; iter < nIter; ++iter) { - image1 += image2; - } - // separate casts for CLOCKS_PER_SEC and nIter avoids incorrect results, perhaps due to overflow - double secPerIter = - (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - double megaPix = static_cast(nCols * nRows) / 1.0e6; - double secPerMPixPerIter = secPerIter / static_cast(megaPix); - std::cout << nCols << "\t" << nRows << "\t" << megaPix << "\t" << secPerIter << "\t\t" - << secPerMPixPerIter << std::endl; -} diff --git a/examples/timeImageIterators.cc b/examples/timeImageIterators.cc deleted file mode 100644 index fb66efdfce..0000000000 --- a/examples/timeImageIterators.cc +++ /dev/null @@ -1,149 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/geom.h" -#include "lsst/afw/image.h" - -namespace image = lsst::afw::image; - -int main(int argc, char **argv) { - using ImageT = image::Image; - - int const DefNIter = 100; - int const DefNCols = 1024; - - if ((argc == 2) && (argv[1][0] == '-')) { - std::cout << "Usage: timeImageAddition [nIter [nCols [nRows]]]" << std::endl; - std::cout << "nIter (default " << DefNIter << ") is the number of iterations" << std::endl; - std::cout << "nCols (default " << DefNCols << ") is the number of columns" << std::endl; - std::cout << "nRows (default = nCols) is the number of rows" << std::endl; - return 1; - } - - unsigned nIter = DefNIter; - if (argc > 1) { - std::istringstream(argv[1]) >> nIter; - } - unsigned nCols = DefNCols; - if (argc > 2) { - std::istringstream(argv[2]) >> nCols; - } - unsigned nRows = nCols; - if (argc > 3) { - std::istringstream(argv[3]) >> nRows; - } - - ImageT image(lsst::geom::Extent2I(nCols, nRows)); - - std::cout << "\tCols\tRows\tMPix\tSecPerIter\tMPix/sec" << std::endl; - // - // Use the STL iterators - // - clock_t startTime = clock(); - for (unsigned iter = 0; iter < nIter; ++iter) { - for (ImageT::iterator ptr = image.begin(), end = image.end(); ptr != end; ++ptr) { - *ptr += 1; - } - } - - double const megaPix = static_cast(nCols * nRows) / 1.0e6; - - // separate casts for CLOCKS_PER_SEC and nIter avoids incorrect results, perhaps due to overflow - double secPerIter = - (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << "STL\t" << nCols << "\t" << nRows << "\t" << megaPix << "\t" << secPerIter << "\t\t" - << static_cast(megaPix) / secPerIter << std::endl; - // - // Now per-row iterators - // - startTime = clock(); - for (unsigned iter = 0; iter < nIter; ++iter) { - for (int y = 0; y != image.getHeight(); ++y) { - for (ImageT::x_iterator ptr = image.row_begin(y), end = image.row_end(y); ptr != end; ++ptr) { - *ptr += 1; - } - } - } - - secPerIter = (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << "Per row\t" << nCols << "\t" << nRows << "\t" << megaPix << "\t" << secPerIter << "\t\t" - << static_cast(megaPix) / secPerIter << std::endl; - // - // Use a fast STL compiliant iterator, but the pixel order's undefined - // - startTime = clock(); - for (unsigned iter = 0; iter < nIter; ++iter) { - for (ImageT::fast_iterator ptr = image.begin(true), end = image.end(true); ptr != end; ++ptr) { - *ptr += 1; - } - } - - secPerIter = (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << "STL 2\t" << nCols << "\t" << nRows << "\t" << megaPix << "\t" << secPerIter << "\t\t" - << static_cast(megaPix) / secPerIter << std::endl; - // - // Now copy and iterate over whole image - // - std::vector vec(image.getWidth() * image.getHeight()); - std::vector::iterator vptr = vec.begin(); - for (int y = 0; y != image.getHeight(); ++y) { - std::copy(image.row_begin(y), image.row_end(y), vptr); - vptr += image.getWidth(); - } - startTime = clock(); - for (unsigned iter = 0; iter < nIter; ++iter) { - for (float & ptr : vec) { - ptr += 1; - } - } - - secPerIter = (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << "Vector\t" << nCols << "\t" << nRows << "\t" << megaPix << "\t" << secPerIter << "\t\t" - << static_cast(megaPix) / secPerIter << std::endl; -#if 0 - std::cout << image(0,0) << " " << image(image.getWidth() - 1, image.getHeight() - 1) << std::endl; - std::cout << vec[0] << " " << vec[image.getWidth()*image.getHeight() - 1] << std::endl; -#endif - // - // Try a valarray - // - std::valarray varray(*image.begin(), image.getWidth() * image.getHeight()); - - startTime = clock(); - for (unsigned iter = 0; iter < nIter; ++iter) { - for (unsigned i = 0; i != varray.size(); ++i) { - varray[i] += 1; - } - } - - secPerIter = (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << "Varray\t" << nCols << "\t" << nRows << "\t" << megaPix << "\t" << secPerIter << "\t\t" - << static_cast(megaPix) / secPerIter << std::endl; -#if 0 - std::cout << image(0,0) << " " << image(image.getWidth() - 1, image.getHeight() - 1) << std::endl; - std::cout << varray[0] << " " << varray[image.getWidth()*image.getHeight() - 1] << std::endl; -#endif -} diff --git a/examples/timeLeastSquares.py b/examples/timeLeastSquares.py deleted file mode 100644 index 6aa2d515dd..0000000000 --- a/examples/timeLeastSquares.py +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env python - -import timeit -import sys -import numpy -from matplotlib import pyplot -from lsst.afw.math import LeastSquares # noqa: F401 - -nDataList = 2**numpy.arange(4, 14, 2, dtype=int) -dimensionList = 2**numpy.arange(1, 8, dtype=int) - - -def run(number=10): - setup = """ -import numpy -from lsst.afw.math import LeastSquares -nData = %d -dimension = %d -data = numpy.random.randn(nData) -design = numpy.random.randn(dimension, nData).transpose() -""" - statement = "LeastSquares.fromDesignMatrix(design, data, LeastSquares.%s).solve()" - results = {} - totalCount = 0 - for nData in nDataList: - for dimension in dimensionList: - if dimension <= nData: - totalCount += 1 - totalCount *= 3 - progress = 0 - sys.stderr.write("Timing: ") - for method in ("DIRECT_SVD", "NORMAL_EIGENSYSTEM", "NORMAL_CHOLESKY"): - results[method] = numpy.zeros( - nDataList.shape + dimensionList.shape, dtype=float) - for i, nData in enumerate(nDataList): - for j, dimension in enumerate(dimensionList): - if dimension <= nData: - results[method][i, j] = timeit.timeit(statement % method, setup % (nData, dimension), - number=number) / number - progress += 1 - else: - results[method][i, j] = float("NaN") - sys.stderr.write("%0.2f " % (float(progress) / totalCount)) - sys.stderr.write("\n") - return results - - -def plot(results): - colors = {"DIRECT_SVD": "r", - "NORMAL_EIGENSYSTEM": "g", "NORMAL_CHOLESKY": "b"} - pyplot.figure() - alpha = 0.75 - for method in results: - for i, nData in enumerate(nDataList): - if i == len(nDataList)-1: - label = method - else: - label = "_nolegend_" - pyplot.loglog(dimensionList, results[method][i, :], colors[method], alpha=alpha, label=label, - marker="o", markeredgewidth=0, markersize=3) - j = -1 - while numpy.isnan(results[method][i, j]): - j -= 1 - pyplot.text(dimensionList[j], results[method][i, j], " %d" % nData, - color=colors[method], size="x-small") - pyplot.xlabel("# of parameters (# of data points in labels)") - pyplot.ylabel("time (s)") - pyplot.legend(loc="upper left") - - pyplot.figure() - for method in results: - for j, dimension in enumerate(dimensionList): - if j == len(dimensionList)-1: - label = method - else: - label = "_nolegend_" - pyplot.loglog(nDataList, results[method][:, j], colors[method], alpha=alpha, label=label, - marker="o", markeredgewidth=0, markersize=3) - pyplot.text(nDataList[i], results[method][-1, j], " %d" % dimension, - color=colors[method], size="x-small") - pyplot.xlabel("# of data points (# of parameters in labels)") - pyplot.ylabel("time (s)") - pyplot.legend(loc="upper left") - - pyplot.show() - - -def main(): - results = run() - plot(results) - - -if __name__ == "__main__": - main() diff --git a/examples/timePixelAccess.cc b/examples/timePixelAccess.cc deleted file mode 100644 index 24594a2256..0000000000 --- a/examples/timePixelAccess.cc +++ /dev/null @@ -1,113 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "boost/format.hpp" - -#include "lsst/geom.h" -#include "lsst/afw/image.h" - -namespace afwImage = lsst::afw::image; - -template -void timePixelAccess(ImageT const &image, typename ImageT::SinglePixel const pix, int nIter) { - const int nCols = image.getWidth(); - const int nRows = image.getHeight(); - - clock_t startTime = clock(); - for (int iter = 0; iter < nIter; ++iter) { - for (int y = 0; y < image.getHeight(); ++y) { - for (typename ImageT::x_iterator ptr = image.row_begin(y), end = image.row_end(y); ptr != end; - ++ptr) { - *ptr += pix; - } - } - } - // separate casts for CLOCKS_PER_SEC and nIter avoids incorrect results, perhaps due to overflow - double secPerIter = - (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - double const megaPix = static_cast(nCols * nRows) / 1.0e6; - std::cout << boost::format("Pixel Iterator\t%d\t%d\t%g\t%-8g\t%-8.1f") % nCols % nRows % megaPix % - secPerIter % (megaPix / secPerIter) - << std::endl; - - startTime = clock(); - for (int iter = 0; iter < nIter; ++iter) { - for (int y = 0; y < image.getHeight(); ++y) { - for (typename ImageT::xy_locator ptr = image.xy_at(0, y), end = image.xy_at(nCols, y); ptr != end; - ++ptr.x()) { - *ptr += pix; - } - } - } - secPerIter = (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << boost::format("Pixel Locator\t%d\t%d\t%g\t%-8g\t%-8.1f") % nCols % nRows % megaPix % - secPerIter % (megaPix / secPerIter) - << std::endl; -} - -int main(int argc, char **argv) { - using ImagePixel = float; - - int const DefNIter = 100; - int const DefNCols = 1024; - - if ((argc >= 2) && (argv[1][0] == '-')) { - std::cout << "Usage: timePixelAccess [nIter [nCols [nRows]]]" << std::endl; - std::cout << "nIter (default " << DefNIter << ") is the number of iterations" << std::endl; - std::cout << "nCols (default " << DefNCols << ") is the number of columns" << std::endl; - std::cout << "nRows (default = nCols) is the number of rows" << std::endl; - return 1; - } - - int nIter = DefNIter; - if (argc > 1) { - std::istringstream(argv[1]) >> nIter; - } - int nCols = DefNCols; - if (argc > 2) { - std::istringstream(argv[2]) >> nCols; - } - int nRows = nCols; - if (argc > 3) { - std::istringstream(argv[3]) >> nRows; - } - - std::cout << "Accessor Type\tCols\tRows\tMPix\tSecPerIter\tMPixPerSec" << std::endl; - - std::cout << "Image(" << nCols << ", " << nRows << ")" << std::endl; - { - afwImage::Image image(lsst::geom::Extent2I(nCols, nRows)); - afwImage::Image::SinglePixel pix(1.0); - timePixelAccess(image, pix, nIter); - } - - std::cout << "MaskedImage(" << nCols << ", " << nRows << ")" << std::endl; - { - afwImage::MaskedImage maskedImage(lsst::geom::Extent2I(nCols, nRows)); - afwImage::MaskedImage::SinglePixel pix(1.0, 0x10, 100); - timePixelAccess(maskedImage, pix, nIter); - } -} diff --git a/examples/timePixelAccessGil.cc b/examples/timePixelAccessGil.cc deleted file mode 100644 index 7f34b5f39c..0000000000 --- a/examples/timePixelAccessGil.cc +++ /dev/null @@ -1,105 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "boost/format.hpp" - -#include "boost/version.hpp" -#if BOOST_VERSION < 106900 -#include "boost/gil/gil_all.hpp" -#else -#include "boost/gil.hpp" -#endif - -template -void timePixelAccess(ImageT const &image, float const pix, int nIter) { - const int nCols = image.width(); - const int nRows = image.height(); - - clock_t startTime = clock(); - for (int iter = 0; iter < nIter; ++iter) { - for (int y = 0; y < image.height(); ++y) { - for (typename ImageT::x_iterator ptr = image.row_begin(y), end = image.row_end(y); ptr != end; - ++ptr) { - (*ptr)[0] += pix; - } - } - } - // separate casts for CLOCKS_PER_SEC and nIter avoids incorrect results, perhaps due to overflow - double secPerIter = - (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - double const megaPix = static_cast(nCols * nRows) / 1.0e6; - std::cout << boost::format("Pixel Iterator\t%d\t%d\t%g\t%-8g\t%-8.1f") % nCols % nRows % megaPix % - secPerIter % (megaPix / secPerIter) - << std::endl; - - startTime = clock(); - for (int iter = 0; iter < nIter; ++iter) { - for (int y = 0; y < image.height(); ++y) { - for (typename ImageT::xy_locator ptr = image.xy_at(0, y), end = image.xy_at(nCols, y); ptr != end; - ++ptr.x()) { - (*ptr)[0] += pix; - } - } - } - secPerIter = (clock() - startTime) / (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << boost::format("Pixel Locator\t%d\t%d\t%g\t%-8g\t%-8.1f") % nCols % nRows % megaPix % - secPerIter % (megaPix / secPerIter) - << std::endl; -} - -int main(int argc, char **argv) { - int const DefNIter = 100; - int const DefNCols = 1024; - - if ((argc == 2) && (argv[1][0] == '-')) { - std::cout << "Usage: timePixelAccess [nIter [nCols [nRows]]]" << std::endl; - std::cout << "nIter (default " << DefNIter << ") is the number of iterations" << std::endl; - std::cout << "nCols (default " << DefNCols << ") is the number of columns" << std::endl; - std::cout << "nRows (default = nCols) is the number of rows" << std::endl; - return 1; - } - - int nIter = DefNIter; - if (argc > 1) { - std::istringstream(argv[1]) >> nIter; - } - int nCols = DefNCols; - if (argc > 2) { - std::istringstream(argv[2]) >> nCols; - } - int nRows = nCols; - if (argc > 3) { - std::istringstream(argv[3]) >> nRows; - } - - std::cout << "Accessor Type\tCols\tRows\tMPix\tSecPerIter\tSecPerIterPerMPix" << std::endl; - std::cout << "Image(" << nCols << ", " << nRows << ")" << std::endl; - - boost::gil::gray32f_image_t image(nCols, nRows); - - float pix = 1.0; - timePixelAccess(boost::gil::view(image), pix, nIter); -} diff --git a/examples/timeSpatiallyVaryingConvolve.py b/examples/timeSpatiallyVaryingConvolve.py deleted file mode 100755 index e37afd13ab..0000000000 --- a/examples/timeSpatiallyVaryingConvolve.py +++ /dev/null @@ -1,243 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -import math -import sys -import os -import time - -import lsst.utils -import lsst.geom -import lsst.afw.image as afwImage -import lsst.afw.math as afwMath -from lsst.log import Log - -Log.getDefaultLogger().setLevel(Log.INFO) -Log.getLogger("TRACE2.afw.math.convolve").setLevel(Log.DEBUG) - -MaxIter = 20 -MaxTime = 1.0 # seconds - -afwdataDir = lsst.utils.getPackageDir("afwdata") - -InputMaskedImagePath = os.path.join(afwdataDir, "data", "med.fits") - - -def getSpatialParameters(nKernelParams, func): - """Get basic spatial parameters list - - You may wish to tweak it up for specific cases (especially the lower order terms) - """ - nCoeff = func.getNParameters() - spParams = [[0.0]*nCoeff]*nKernelParams - for kernelTermInd in range(nKernelParams): - spParams[kernelTermInd][0] = 1.0 - spParams[kernelTermInd][1:3] = [1.0e-3] * \ - len(spParams[kernelTermInd][1:3]) - spParams[kernelTermInd][3:6] = [1.0e-6] * \ - len(spParams[kernelTermInd][3:6]) - spParams[kernelTermInd][6:10] = [1.0e-9] * \ - len(spParams[kernelTermInd][6:10]) - return spParams - - -def getAnalyticKernel(kSize, imSize, spOrder): - """Return spatially varying analytic kernel: a Gaussian - - @param kSize: kernel size (scalar; height = width) - @param x, y imSize: image size - """ - gaussFunc = afwMath.GaussianFunction2D(1.0, 1.0, 0.0) - polyFunc = afwMath.PolynomialFunction2D(spOrder) - kernel = afwMath.AnalyticKernel(kSize, kSize, gaussFunc, polyFunc) - - minSigma = 0.1 - maxSigma = 3.0 - - spParams = getSpatialParameters(3, polyFunc) - spParams[0][0:3] = [ - minSigma, (maxSigma - minSigma) / float(imSize[0]), 0.0] - spParams[1][0:3] = [minSigma, 0.0, - (maxSigma - minSigma) / float(imSize[1])] - kernel.setSpatialParameters(spParams) - return kernel - - -def getSeparableKernel(kSize, imSize, spOrder): - """Return spatially varying separable kernel: a pair of 1-d Gaussians - - @param kSize: kernel size (scalar; height = width) - @param x, y imSize: image size - """ - gaussFunc = afwMath.GaussianFunction1D(1) - polyFunc = afwMath.PolynomialFunction2D(spOrder) - kernel = afwMath.SeparableKernel( - kSize, kSize, gaussFunc, gaussFunc, polyFunc) - - minSigma = 0.1 - maxSigma = 3.0 - - spParams = getSpatialParameters(2, polyFunc) - spParams[0][0:3] = [ - minSigma, (maxSigma - minSigma) / float(imSize[0]), 0.0] - spParams[1][0:3] = [minSigma, 0.0, - (maxSigma - minSigma) / float(imSize[0])] - kernel.setSpatialParameters(spParams) - return kernel - - -def getDeltaLinearCombinationKernel(kSize, imSize, spOrder): - """Return a LinearCombinationKernel of delta functions - - @param kSize: kernel size (scalar; height = width) - @param x, y imSize: image size - """ - kernelList = [] - for ctrX in range(kSize): - for ctrY in range(kSize): - kernelList.append(afwMath.DeltaFunctionKernel( - kSize, kSize, lsst.geom.Point2I(ctrX, ctrY))) - - polyFunc = afwMath.PolynomialFunction2D(spOrder) - kernel = afwMath.LinearCombinationKernel(kernelList, polyFunc) - - spParams = getSpatialParameters(len(kernelList), polyFunc) - kernel.setSpatialParameters(spParams) - return kernel - - -def getGaussianLinearCombinationKernel(kSize, imSize, spOrder): - """Return a LinearCombinationKernel with 5 bases, each a Gaussian - - @param kSize: kernel size (scalar; height = width) - @param x, y imSize: image size - """ - kernelList = [] - for fwhmX, fwhmY, angle in ( - (2.0, 2.0, 0.0), - (0.5, 4.0, 0.0), - (0.5, 4.0, math.pi / 4.0), - (0.5, 4.0, math.pi / 2.0), - (4.0, 4.0, 0.0), - ): - gaussFunc = afwMath.GaussianFunction2D(fwhmX, fwhmY, angle) - kernelList.append(afwMath.AnalyticKernel(kSize, kSize, gaussFunc)) - - polyFunc = afwMath.PolynomialFunction2D(spOrder) - kernel = afwMath.LinearCombinationKernel(kernelList, polyFunc) - - spParams = getSpatialParameters(len(kernelList), polyFunc) - kernel.setSpatialParameters(spParams) - return kernel - - -def timeConvolution(outImage, inImage, kernel, convControl): - """Time convolution - - @param outImage: output image or masked image (must be the same size as inImage) - @param inImage: input image or masked image - @param kernel: convolution kernel - @param convControl: convolution control parameters (afwMath.ConvolutionControl) - - @return (elapsed time in seconds, number of iterations) - """ - startTime = time.time() - for nIter in range(1, MaxIter + 1): - # mathDetail.convolveWithInterpolation(outImage, inImage, kernel, convControl) - afwMath.convolve(outImage, inImage, kernel, convControl) - endTime = time.time() - if endTime - startTime > MaxTime: - break - - return (endTime - startTime, nIter) - - -def timeSet(outImage, inImage, kernelFunction, kernelDescr, convControl, spOrder, doInterp=True): - """Time a set of convolutions for various parameters - - Inputs: - ... the usual - - spOrder: the order of the spatial Polynomial2 function - - doInterp: if True then test interpolation, else only test brute force - """ - imSize = inImage.getDimensions() - if doInterp: - methodDescrInterpDistList = ( - ("no interpolation", 0), - ("linear interpolation over 10 x 10 pixels", 10), - ("linear interpolation over 20 x 20 pixels", 20), - ) - else: - methodDescrInterpDistList = ( - ("no interpolation", 0), - ) - for methodDescr, maxInterpolationDistance in methodDescrInterpDistList: - convControl.setMaxInterpolationDistance(maxInterpolationDistance) - print("%s using %s" % (kernelDescr, methodDescr)) - print("ImWid\tImHt\tKerWid\tKerHt\tSec/Cnv") - for kSize in (5, 11, 19): - kernel = kernelFunction(kSize, imSize, spOrder) - dur, nIter = timeConvolution( - outImage, inImage, kernel, convControl) - print("%d\t%d\t%d\t%d\t%0.2f" % - (imSize[0], imSize[1], kSize, kSize, dur/float(nIter))) - print() - - -def run(): - convControl = afwMath.ConvolutionControl() - convControl.setDoNormalize(True) - spOrder = 3 - print("All kernels use a spatial model of a Polynomial2 of order %s" % (spOrder,)) - - for imageClass in ( - afwImage.ImageF, - afwImage.ImageD, - afwImage.MaskedImageF, - afwImage.MaskedImageD, - ): - print("\n*** Test convolution with %s ***\n" % (imageClass.__name__,)) - if len(sys.argv) < 2: - inImage = imageClass(InputMaskedImagePath) - # to get original behavior change True to False: - if (False): - bbox = lsst.geom.Box2I(lsst.geom.Point2I( - 0, 0), lsst.geom.Extent2I(256, 256)) - inImage = imageClass(inImage, bbox, afwImage.LOCAL, False) - else: - inImage = imageClass(sys.argv[1]) - outImage = imageClass(inImage.getDimensions()) - - timeSet(outImage, inImage, getAnalyticKernel, - "AnalyticKernel", convControl, spOrder=spOrder) - timeSet(outImage, inImage, getSeparableKernel, - "SeparableKernel", convControl, spOrder=spOrder, doInterp=False) - timeSet(outImage, inImage, getGaussianLinearCombinationKernel, - "LinearCombinationKernel with 5 Gaussian Basis Kernels", convControl, spOrder=spOrder) - timeSet(outImage, inImage, getDeltaLinearCombinationKernel, - "LinearCombinationKernel with Delta Function Basis", convControl, spOrder=spOrder) - - -if __name__ == "__main__": - run() diff --git a/examples/timeWarpExposure.py b/examples/timeWarpExposure.py deleted file mode 100755 index 58318702a2..0000000000 --- a/examples/timeWarpExposure.py +++ /dev/null @@ -1,198 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008-2017 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -import math -import sys -import os -import time - -import lsst.utils -import lsst.daf.base as dafBase -import lsst.geom -import lsst.afw.geom -import lsst.afw.image as afwImage -import lsst.afw.math as afwMath - -MaxIter = 20 -MaxTime = 1.0 # seconds -WarpSubregion = True # set False to warp more pixels -SaveImages = False -DegPerRad = 180.0 / math.pi - - -DegreesFlag = lsst.geom.degrees - - -def setDegreesFlag(newValue): - """Set global DegreesFlag; avoids a syntax warning in makeWcs - """ - global DegreesFlag - DegreesFlag = newValue - - -afwdataDir = lsst.utils.getPackageDir("afwdata") - -InputExposurePath = os.path.join( - afwdataDir, "ImSim/calexp/v85408556-fr/R23/S11.fits") - - -def timeWarp(destExposure, srcExposure, warpingControl): - """Time warpExposure - - int warpExposure( - DestExposureT &destExposure, - SrcExposureT const &srcExposure, - SeparableKernel &warpingKernel, int const interpLength=0); - - @param destExposure: output exposure (including a WCS) - @param srcExposure: input exposure (including a WCS) - @param warpingKernel: warping kernel - @param interpLength: interpolation length (0 for no interpolation) - - @return (elapsed time in seconds, number of iterations) - """ - startTime = time.time() - for nIter in range(1, MaxIter + 1): - goodPix = afwMath.warpExposure( - destExposure, srcExposure, warpingControl) - endTime = time.time() - if endTime - startTime > MaxTime: - break - - return (endTime - startTime, nIter, goodPix) - - -def makeWcs(projName, destCtrInd, skyOffset, rotAng, scaleFac, srcWcs, srcCtrInd): - """Make an RA/Dec WCS from another RA/Dec WCS - - @param projName: projection, e,g, "TAN" - @param destCtrInd: pixel index of center of WCS; used to compute CRPIX; - typically the center of the destination exposure - @param skyOffset: offset in sky coords (axis 1, axis 2 degrees): - dest sky pos at destCtrInd = src sky pos at destCtrInd + skyOffset - @param rotAng: change of orientation with respect to srcWcs, in degrees - @param scaleFac: output resolution / input resolution - @param srcWcs: reference WCS, an lsst.afw.geom.SkyWcs - @param srcCtrInd: index of source pixel whose sky matches destCtrInd on new WCS - typically the center of the source exposure - """ - ps = dafBase.PropertySet() - srcCtrPix = lsst.geom.Point2D(*[float(val) for val in srcCtrInd]) - destCtrFitsPix = lsst.geom.Point2D(*[ind + 1.0 for ind in destCtrInd]) - srcCtrFitsPix = lsst.geom.Point2D(*[ind + 1.0 for ind in srcCtrInd]) - # offset 1 pixel in x to compute orientation - srcOffFitsPix = srcCtrFitsPix + lsst.geom.Extent2D(1.0, 0.0) - srcCtrSkyPos = srcWcs.pixelToSky(srcCtrFitsPix) - srcOffSkyPos = srcWcs.pixelToSky(srcOffFitsPix) - srcAngleRad = srcCtrSkyPos.bearingTo(srcOffSkyPos).asRadians() - destAngleRad = srcAngleRad + (rotAng / DegPerRad) - srcScale = srcWcs.getPixelScale(srcCtrPix).asDegrees() - destScale = srcScale / scaleFac - for i in range(2): - ip1 = i + 1 - ctypeStr = ("%-5s%3s" % (("RA", "DEC")[i], projName)).replace(" ", "-") - ps.add("CTYPE%1d" % (ip1,), ctypeStr) - ps.add("CRPIX%1d" % (ip1,), destCtrFitsPix[i]) - ps.add("CRVAL%1d" % (ip1,), srcCtrSkyPos[i].asDegrees() + skyOffset[i]) - ps.add("RADESYS", "ICRS") - ps.add("EQUINOX", 2000) - ps.add("CD1_1", -destScale * math.cos(destAngleRad)) - ps.add("CD2_1", destScale * math.sin(destAngleRad)) - ps.add("CD1_2", destScale * math.sin(destAngleRad)) - ps.add("CD2_2", destScale * math.cos(destAngleRad)) - return lsst.afw.geom.makeSkyWcs(ps) - - -def run(): - if len(sys.argv) < 2: - srcExposure = afwImage.ExposureF(InputExposurePath) - if WarpSubregion: - bbox = lsst.geom.Box2I(lsst.geom.Point2I(0, 0), - lsst.geom.Extent2I(2000, 2000)) - srcExposure = afwImage.ExposureF( - srcExposure, bbox, afwImage.LOCAL, False) - else: - srcExposure = afwImage.ExposureF(sys.argv[1]) - srcWcs = srcExposure.getWcs() - srcDim = srcExposure.getDimensions() - srcCtrInd = [int(d / 2) for d in srcDim] - - # make the destination exposure small enough that even after rotation and offset - # (by reasonable amounts) there are no edge pixels - destDim = lsst.geom.Extent2I(*[int(sd * 0.5) for sd in srcDim]) - destExposure = afwImage.ExposureF(destDim) - destCtrInd = [int(d / 2) for d in destDim] - - maskKernelName = "" - cacheSize = 0 - - print("Warping", InputExposurePath) - print("Source (sub)image size:", srcDim) - print("Destination image size:", destDim) - print() - - print("test# interp scaleFac skyOffset rotAng kernel goodPix time/iter") - print(' (pix) (RA, Dec ") (deg) (sec)') - testNum = 1 - for interpLength in (0, 1, 5, 10): - for scaleFac in (1.2,): # (1.0, 1.5): - # ((0.0, 0.0), (10.5, -5.5)): - for skyOffsetArcSec in ((0.0, 0.0),): - skyOffset = [so / 3600.0 for so in skyOffsetArcSec] - for rotAng, kernelName in ( - (0.0, "bilinear"), - (0.0, "lanczos2"), - (0.0, "lanczos3"), - (45.0, "lanczos3"), - ): - warpingControl = afwMath.WarpingControl( - kernelName, - maskKernelName, - cacheSize, - interpLength, - ) - destWcs = makeWcs( - projName="TAN", - destCtrInd=destCtrInd, - skyOffset=skyOffset, - rotAng=rotAng, - scaleFac=scaleFac, - srcWcs=srcWcs, - srcCtrInd=srcCtrInd, - ) - destExposure.setWcs(destWcs) - dTime, nIter, goodPix = timeWarp( - destExposure, srcExposure, warpingControl) - print("%4d %5d %8.1f %6.1f, %6.1f %7.1f %10s %8d %6.2f" % ( - testNum, interpLength, scaleFac, skyOffsetArcSec[0], skyOffsetArcSec[1], - rotAng, kernelName, goodPix, dTime/float(nIter))) - - if SaveImages: - destExposure.writeFits( - "warpedExposure%03d.fits" % (testNum,)) - testNum += 1 - - -if __name__ == "__main__": - run() diff --git a/examples/timeWcs.cc b/examples/timeWcs.cc deleted file mode 100644 index 56b5e5d3dc..0000000000 --- a/examples/timeWcs.cc +++ /dev/null @@ -1,91 +0,0 @@ -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -#include -#include -#include - -#include "lsst/utils/packaging.h" -#include "lsst/geom.h" -#include "lsst/afw/geom/SkyWcs.h" -#include "lsst/afw/image.h" - -const unsigned DefNIter = 100000; - -/** -@internal Transform pix to sky and back again nIter times using points distributed evenly -from bbox.getMin() to bbox.getMax() and return the max round trip pixel error -*/ -void timeWcs(lsst::afw::geom::SkyWcs const &wcs, lsst::geom::Box2D &bbox, unsigned int nIter) { - lsst::geom::Extent2D maxErr; - auto const dxy = bbox.getDimensions() / static_cast(nIter); - auto const xy0 = bbox.getMin(); - auto startClock = std::clock(); - for (unsigned int iter = 0; iter < nIter; ++iter) { - auto pixPos = xy0 + dxy * static_cast(iter); - auto skyPos = wcs.pixelToSky(pixPos); - auto retPixPos = wcs.skyToPixel(skyPos); - for (int i = 0; i < 2; ++i) { - maxErr[i] = std::fmax(maxErr[i], std::fabs(retPixPos[i] - pixPos[i])); - } - } - // separate casts for CLOCKS_PER_SEC and nIter avoids incorrect results, perhaps due to overflow - double usecPerIter = 1.0e6 * (clock() - startClock) / - (static_cast(CLOCKS_PER_SEC) * static_cast(nIter)); - std::cout << usecPerIter << " usec per iteration; max round trip error = " << maxErr << " pixels\n"; -} - -int main(int argc, char **argv) { - std::string inImagePath; - if (argc < 2) { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/ImSim/calexp/v85408556-fr/R23/S11.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: timeWcs [fitsFile [nIter]]" << std::endl; - std::cerr << "fitsFile is the path to an exposure" << std::endl; - std::cerr << "nIter (default " << DefNIter << ") is the number of iterations" << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } else { - inImagePath = std::string(argv[1]); - } - - unsigned int nIter = DefNIter; - if (argc > 2) { - std::istringstream(argv[2]) >> nIter; - } - - auto exposure = lsst::afw::image::Exposure(inImagePath); - auto bbox = lsst::geom::Box2D(exposure.getBBox()); - if (!exposure.hasWcs()) { - std::cerr << "Exposure " << inImagePath << " has no WCS\n" << std::endl; - exit(EXIT_FAILURE); - } - auto wcsPtr = exposure.getWcs(); - - std::cout << "Timing " << nIter << " iterations of pixel->sky->pixel of the WCS found in " << inImagePath - << std::endl; - - timeWcs(*wcsPtr, bbox, nIter); -} diff --git a/examples/tunnelDs9 b/examples/tunnelDs9 deleted file mode 100755 index 281acd607e..0000000000 --- a/examples/tunnelDs9 +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env bash -# -# Allow remoteHost to talk to a local ds9 by talking to access point localhost:$xpa_port, e.g. -# xpaset -p localhost:10198 "frame 0; raise" -# -# You need to start ds9 locally with -# env XPA_PORT="DS9:ds9 $xpa_port $[$xpa_port + 1]" ds9 & -# -# Note that the LSST ds9 code understands XPA_PORT, so there's no need to play with XPANS -# -remoteHost=lsst8.ncsa.uiuc.edu -ds9Port=22345 -kill=0 -list=0 - -while [ ! -z $1 ]; do - case $1 in - -h|--help) - echo "Usage: ds9-tunnel [--kill|--list] [remote-machine [port]]" >&2 - exit 0;; - -k|--kill) - kill=1;; - -l|--list) - list=1;; - -*) - echo "Unknown option $1" >&2 - exit 1;; - *) - break;; - esac - shift -done - -if [ $list = 1 ]; then - if [ $kill = 1 ]; then - echo "Ignoring request to kill the tunnel" >&2 - fi - if [ ! -z $1 ]; then - echo "Ignoring arguments: $@" >&2 - fi - - ls $HOME/.ds9* 2> /dev/null | perl -ne 'if(/-([^-]+)-(\d+)$/) { printf "%-30s %d\n", $1, $2 }' - - exit 0 -fi - -if [ ! -z $1 ]; then - remoteHost=$1; shift -fi -if [ ! -z $1 ]; then - ds9Port=$1; shift -fi - -pidFile=$HOME/.ds9-$remoteHost-$ds9Port - -if [ $kill = 1 ]; then - if [ ! -f $pidFile ]; then - echo "I can't find the PID as $pidFile doesn't exist" >&2 - exit 1 - fi - - pid=$(cat $pidFile) - echo "Killing $pid" >&2 - - if kill -0 $pid > /dev/null 2>&1; then - kill $pid && rm -f $pidFile - else - echo "Process $pid doesn't seem to exist" >&2 - rm -f $pidFile - fi - - - exit 0 -elif [ -f $pidFile ]; then - pid=$(cat $pidFile) - - if kill -0 $pid > /dev/null 2>&1; then - echo "The ds9 tunnels already seem to exist, process $pid. Please use ds9-remote --kill to remove them, then try again" >&2 - exit 1 - fi - rm -f $pidFile -fi - -ssh -N -f $remoteHost \ - -R $ds9Port:localhost:$ds9Port -R $[$ds9Port+1]:localhost:$[$ds9Port+1] > /dev/null 2>&1 -pid=$[$$+2] # it must use the double-fork trick - -echo $pid > $pidFile & - -value="DS9:ds9 $ds9Port $[$ds9Port + 1]" -echo "You'll need to set XPA_PORT to '$value' both locally (before starting ds9) and remotely (before starting the client)" >&2 - -case $SHELL in - */csh) - echo "setenv XPA_PORT '$value'";; - *) - echo "export XPA_PORT='$value'";; -esac diff --git a/examples/warpExposure.py b/examples/warpExposure.py deleted file mode 100755 index 1bbb7a69b1..0000000000 --- a/examples/warpExposure.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python - -# -# LSST Data Management System -# Copyright 2008, 2009, 2010 LSST Corporation. -# -# This product includes software developed by the -# LSST Project (http://www.lsst.org/). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the LSST License Statement and -# the GNU General Public License along with this program. If not, -# see . -# - -import optparse - -import lsst.afw.image as afwImage -import lsst.afw.math as afwMath -import lsst.log as log -import lsst.log.utils as logUtils - - -def main(): - DefKernel = "lanczos4" - DefVerbosity = 1 - - usage = """usage: %%prog [options] srcExposure refExposure destExposure - -Computes destExposure = srcExposure warped to match refExposure's WCS and bounding box, -where exposure arguments are paths to Exposure fits files""" - - parser = optparse.OptionParser(usage) - parser.add_option("-k", "--kernel", - type=str, default=DefKernel, - help="kernel type: bilinear or lancszosN where N = order; default=%s" % (DefKernel,)) - parser.add_option("-v", "--verbosity", - type=int, default=DefVerbosity, - help="verbosity of diagnostic trace messages; 1 for just TRACE1, more for more" - " information; default=%s" % (DefVerbosity,)) - - (opt, args) = parser.parse_args() - - log.configure() - - kernelName = opt.kernel.lower() - - if len(args) != 3: - parser.error("You must supply three arguments") - - srcExposurePath = args[0] - refExposurePath = args[1] - destExposurePath = args[2] - print("Remapping exposure :", srcExposurePath) - print("to match wcs and bbox of:", refExposurePath) - print("using", kernelName, "kernel") - - warpingControl = afwMath.WarpingControl(kernelName) - - srcExposure = afwImage.ExposureF(srcExposurePath) - - destExposure = afwImage.ExposureF(refExposurePath) - - if opt.verbosity > 0: - print("Verbosity =", opt.verbosity) - logUtils.traceSetAt("afw.math.warp", opt.verbosity) - - numGoodPixels = afwMath.warpExposure( - destExposure, srcExposure, warpingControl) - print("Warped exposure has %s good pixels" % (numGoodPixels)) - - print("Writing warped exposure to %s" % (destExposurePath,)) - destExposure.writeFits(destExposurePath) - - -if __name__ == "__main__": - main() diff --git a/examples/warpWithTransform.py b/examples/warpWithTransform.py deleted file mode 100755 index b44f31c6dc..0000000000 --- a/examples/warpWithTransform.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python - -import math - -import lsst.geom -import lsst.afw.image as afwImage -import lsst.afw.math as afwMath - - -def main(): - - # a 31x31 postage stamp image - nx, ny = 31, 31 - # move xy0 to simulate it being a shallow bbox'd sub-image - xorig, yorig = 100, 300 - xy0 = lsst.geom.Point2I(xorig, yorig) - - psfSigma = 3.0 - x0, y0 = xorig + nx/2, yorig + ny/2 - p0 = lsst.geom.Point2D(x0, y0) - - img = afwImage.ImageF(nx, ny, 0) - img.setXY0(xy0) - for i in range(ny): - for j in range(nx): - ic = i - (y0 - yorig) - jc = j - (x0 - xorig) - r = math.sqrt(ic*ic + jc*jc) - img[j, i, afwImage.LOCAL] = 1.0*math.exp(-r**2/(2.0*psfSigma**2)) - - # now warp it about the centroid using a linear transform - - linTran = lsst.geom.LinearTransform().makeScaling( - 1.2) # a simple scale-by-20% - # extent a bit along x-dir - linTran[0] *= 1.2 - - wimg = afwImage.ImageF(nx, ny, 0) # output 'warped' image - wimg.setXY0(xy0) - kernel = afwMath.LanczosWarpingKernel(5) # warping kernel - afwMath.warpCenteredImage(wimg, img, kernel, linTran, p0) - - img.writeFits("img.fits") - wimg.writeFits("wimg.fits") - - -if __name__ == '__main__': - main() diff --git a/examples/wcsTest.cc b/examples/wcsTest.cc deleted file mode 100644 index f87b3c6287..0000000000 --- a/examples/wcsTest.cc +++ /dev/null @@ -1,133 +0,0 @@ -// -*- LSST-C++ -*- // fixed format comment for emacs - -/* - * LSST Data Management System - * Copyright 2008, 2009, 2010 LSST Corporation. - * - * This product includes software developed by the - * LSST Project (http://www.lsst.org/). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the LSST License Statement and - * the GNU General Public License along with this program. If not, - * see . - */ - -/* - * Simple test code for the Wcs Class - */ - -#include -#include -#include - -#include "boost/format.hpp" -#include - -#include "lsst/geom.h" -#include "lsst/utils/packaging.h" -#include "lsst/log/Log.h" -#include "lsst/pex/exceptions.h" -#include "lsst/afw/geom/SkyWcs.h" -#include "lsst/afw/image.h" - -/* - * This test code incorporates some very simple tests of the Wcs class and related classes. - */ - -namespace afwImage = lsst::afw::image; - -using lsst::daf::base::PropertySet; - -int main(int argc, char **argv) { - using Pixel = double; - LOG_CONFIG(); - - std::string inImagePath; - if (argc < 2) { - try { - std::string dataDir = lsst::utils::getPackageDir("afwdata"); - inImagePath = dataDir + "/data/medexp.fits"; - } catch (lsst::pex::exceptions::NotFoundError const&) { - std::cerr << "Usage: wcsTest [fitsFile]" << std::endl; - std::cerr << "fitsFile is the path to an exposure" << std::endl; - std::cerr << "\nError: setup afwdata or specify fitsFile.\n" << std::endl; - exit(EXIT_FAILURE); - } - } else { - inImagePath = std::string(argv[1]); - } - std::cout << "Opening exposure " << inImagePath << std::endl; - - afwImage::Exposure exposure(inImagePath); - if (!exposure.hasWcs()) { - std::cerr << "Exposure does not have a WCS." << std::endl; - exit(EXIT_FAILURE); - } - auto wcs = exposure.getWcs(); - - // Testing input col, row values - - auto minCoord = lsst::geom::Point2D(1.0, 1.0); - auto xy = lsst::geom::Point2D(exposure.getWidth(), exposure.getHeight()); - - auto sky1 = wcs->pixelToSky(minCoord); - auto sky2 = wcs->pixelToSky(xy); - - auto miRa1 = sky1.getLongitude(); - auto miDecl1 = sky1.getLatitude(); - auto miRa2 = sky2.getLongitude(); - auto miDecl2 = sky2.getLatitude(); - - std::cout << "ra, decl of " << inImagePath << " at (" << minCoord[0] << " " << minCoord[1] << ") = " - << "ra: " << miRa1.asDegrees() << " decl: " << miDecl1.asDegrees() << std::endl - << std::endl; - - std::cout << "ra, decl of " << inImagePath << " at (" << xy[0] << " " << xy[1] << ") = " - << "ra: " << miRa2.asDegrees() << " decl: " << miDecl2.asDegrees() << std::endl - << std::endl; - - auto pixelScale0 = wcs->getPixelScale(minCoord); - auto pixelScale1 = wcs->getPixelScale(xy); - - std::cout << "pixel scales: " << pixelScale0.asArcseconds() << ", " << pixelScale1.asArcseconds() - << " arcsec/pixel\n"; - - // Testing input ra, dec values using output from above for now - - auto pix1 = wcs->skyToPixel(sky1); - auto pix2 = wcs->skyToPixel(sky2); - - std::cout << "col, row of " << inImagePath << " at (" << miRa1.asDegrees() << " " << miDecl1.asDegrees() - << ") = " - << "col: " << pix1[0] << " row: " << pix1[1] << std::endl - << std::endl; - - std::cout << "col, row of " << inImagePath << " at (" << miRa2.asDegrees() << " " << miDecl2.asDegrees() - << ") = " - << "col: " << pix2[0] << " row: " << pix2[1] << std::endl - << std::endl; - - auto raDecl1 = lsst::geom::SpherePoint(miRa1, miDecl1); - auto raDecl2 = lsst::geom::SpherePoint(miRa2, miDecl2); - - auto pix3 = wcs->skyToPixel(raDecl1); - auto pix4 = wcs->skyToPixel(raDecl2); - - std::cout << "col, row of " << inImagePath << " at " << raDecl1 << " = " - << "col: " << pix3[0] << " row: " << pix3[1] << std::endl - << std::endl; - - std::cout << "col, row of " << inImagePath << " at " << raDecl2 << " = " - << "col: " << pix4[0] << " row: " << pix4[1] << std::endl - << std::endl; -}