Commit eac5f7f40e7250ce4d643fa23e92ea816ed60f6e
1 parent
d7df3c0e
Adapt to new model interface.
Showing
6 changed files
with
78 additions
and
32 deletions
inst/cta/test/test_gauss.py
| ... | ... | @@ -35,11 +35,13 @@ def gauss(dir, sigma): |
| 35 | 35 | # Compute derivative |
| 36 | 36 | dh = 0.0001 |
| 37 | 37 | s = GSkyDir() |
| 38 | + e = GEnergy() | |
| 39 | + t = GTime() | |
| 38 | 40 | f1 = GModelSpatialRadialGauss(s, sigma) |
| 39 | 41 | f2 = GModelSpatialRadialGauss(s, sigma + dh) |
| 40 | - v1 = f1.eval_gradients(dir) | |
| 42 | + v1 = f1.eval_gradients(GPhoton(dir, e, t)) | |
| 41 | 43 | g1 = f1[2].gradient() |
| 42 | - v2 = f2.eval_gradients(dir) | |
| 44 | + v2 = f2.eval_gradients(GPhoton(dir, e, t)) | |
| 43 | 45 | g2 = f2[2].gradient() |
| 44 | 46 | g = (v2 - v1) / dh |
| 45 | 47 | |
| ... | ... | @@ -79,10 +81,12 @@ def show_gaussian(sigma): |
| 79 | 81 | f_expected = [] |
| 80 | 82 | sigma_rad = sigma * (pi / 180.0) |
| 81 | 83 | norm = 1.0 / (2.0 * pi * sigma_rad * sigma_rad) |
| 84 | + eng = GEnergy() | |
| 85 | + time = GTime() | |
| 82 | 86 | for t in theta: |
| 83 | 87 | s = GSkyDir() |
| 84 | 88 | s.radec_deg(0.0, t) |
| 85 | - f = gauss.eval(s) | |
| 89 | + f = gauss.eval(GPhoton(s, eng, time)) | |
| 86 | 90 | e = norm * exp(-0.5 * t * t / sigma / sigma) |
| 87 | 91 | f_gauss.append(f) |
| 88 | 92 | f_expected.append(e) | ... | ... |
inst/cta/test/test_model.py
| ... | ... | @@ -36,7 +36,7 @@ def ptsrc_model(ra=0.0, dec=0.0): |
| 36 | 36 | spatial = GModelSpatialPointSource(pos) |
| 37 | 37 | |
| 38 | 38 | # Set spectral model |
| 39 | - spectral = GModelSpectralPlaw(1.0, -2.0, 100.0) | |
| 39 | + spectral = GModelSpectralPlaw(1.0, -2.0, GEnergy(100.0, "MeV")) | |
| 40 | 40 | |
| 41 | 41 | # Set sky model |
| 42 | 42 | model = GModelSky(spatial, spectral) |
| ... | ... | @@ -60,7 +60,7 @@ def shell_model(ra=0.3, dec=0.3, radius=0.3, width=0.1): |
| 60 | 60 | radial = GModelSpatialRadialShell(center, radius, width, False) |
| 61 | 61 | |
| 62 | 62 | # Set spectral model |
| 63 | - spectral = GModelSpectralPlaw(1.0, -2.0, 100.0) | |
| 63 | + spectral = GModelSpectralPlaw(1.0, -2.0, GEnergy(100.0, "MeV")) | |
| 64 | 64 | |
| 65 | 65 | # Set sky model |
| 66 | 66 | model = GModelSky(radial, spectral) |
| ... | ... | @@ -84,7 +84,7 @@ def disk_model(ra=359.6, dec=-0.2, radius=0.4): |
| 84 | 84 | radial = GModelSpatialRadialDisk(center, radius) |
| 85 | 85 | |
| 86 | 86 | # Set spectral model |
| 87 | - spectral = GModelSpectralPlaw(1.0, -2.0, 100.0) | |
| 87 | + spectral = GModelSpectralPlaw(1.0, -2.0, GEnergy(100.0, "MeV")) | |
| 88 | 88 | |
| 89 | 89 | # Set sky model |
| 90 | 90 | model = GModelSky(radial, spectral) |
| ... | ... | @@ -108,7 +108,7 @@ def gauss_model(ra=359.6, dec=+0.1, sigma=0.2): |
| 108 | 108 | radial = GModelSpatialRadialGauss(center, sigma) |
| 109 | 109 | |
| 110 | 110 | # Set spectral model |
| 111 | - spectral = GModelSpectralPlaw(1.0, -2.0, 100.0) | |
| 111 | + spectral = GModelSpectralPlaw(1.0, -2.0, GEnergy(100.0, "MeV")) | |
| 112 | 112 | |
| 113 | 113 | # Set sky model |
| 114 | 114 | model = GModelSky(radial, spectral) |
| ... | ... | @@ -128,7 +128,7 @@ def diffuse_model(file="../../../test/data/cena_lobes_parkes.fits"): |
| 128 | 128 | spatial = GModelSpatialDiffuseMap(file) |
| 129 | 129 | |
| 130 | 130 | # Set spectral model |
| 131 | - spectral = GModelSpectralPlaw(1.0, -2.0, 100.0) | |
| 131 | + spectral = GModelSpectralPlaw(1.0, -2.0, GEnergy(100.0, "MeV")) | |
| 132 | 132 | |
| 133 | 133 | # Set sky model |
| 134 | 134 | model = GModelSky(spatial, spectral) | ... | ... |
inst/mwl/test/test_python.py
| ... | ... | @@ -93,7 +93,7 @@ def fit_spectrum(filename, xmlname): |
| 93 | 93 | yval = 0.0 |
| 94 | 94 | for model in obs.models(): |
| 95 | 95 | if model.type() == "PointSource": |
| 96 | - yval += model.value(d, e, t) * energy * energy * 1.6021765e-6 | |
| 96 | + yval += model.value(GPhoton(d, e, t)) * energy * energy * 1.6021765e-6 | |
| 97 | 97 | y.append(yval) |
| 98 | 98 | plt.plot(x, y) |
| 99 | 99 | ... | ... |
test/example_model_xml_io.py
| 1 | 1 | #!/usr/bin/env python |
| 2 | -# ========================================================================== | |
| 3 | -# This script builds a set of models, saves the models into an XML file and | |
| 4 | -# loads the models back into memory. | |
| 5 | -# ========================================================================== | |
| 6 | - | |
| 7 | -"""IO example: GModels <--> XML file""" | |
| 8 | - | |
| 2 | +# ===================================================================== | |
| 3 | +# This script builds a set of models, saves the models into an XML file | |
| 4 | +# and loads the models back into memory. | |
| 5 | +# | |
| 6 | +# Copyright (C) 2011-2013 Juergen Knoedlseder | |
| 7 | +# | |
| 8 | +# This program is free software: you can redistribute it and/or modify | |
| 9 | +# it under the terms of the GNU General Public License as published by | |
| 10 | +# the Free Software Foundation, either version 3 of the License, or | |
| 11 | +# (at your option) any later version. | |
| 12 | +# | |
| 13 | +# This program is distributed in the hope that it will be useful, | |
| 14 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | +# GNU General Public License for more details. | |
| 17 | +# | |
| 18 | +# You should have received a copy of the GNU General Public License | |
| 19 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 20 | +# ===================================================================== | |
| 9 | 21 | from gammalib import * |
| 10 | 22 | |
| 11 | 23 | # |
| ... | ... | @@ -21,7 +33,7 @@ center.radec_deg(42.0, 43.0) |
| 21 | 33 | # Spectral index: -2.1 |
| 22 | 34 | # =================================================== |
| 23 | 35 | point_spatial = GModelSpatialPointSource(center) |
| 24 | -point_spectrum = GModelSpectralPlaw(1.0e-7, -2.1, 100.0) | |
| 36 | +point_spectrum = GModelSpectralPlaw(1.0e-7, -2.1, GEnergy(100.0, "MeV")) | |
| 25 | 37 | point = GModelSky(point_spatial, point_spectrum) |
| 26 | 38 | point.name('My point source') |
| 27 | 39 | |
| ... | ... | @@ -32,7 +44,7 @@ point.name('My point source') |
| 32 | 44 | # Spectral index: -2.4 |
| 33 | 45 | # =================================================== |
| 34 | 46 | gauss_spatial = GModelSpatialRadialGauss(center, 3.0) |
| 35 | -gauss_spectrum = GModelSpectralPlaw(4.2e-7, -2.4, 100.0) | |
| 47 | +gauss_spectrum = GModelSpectralPlaw(4.2e-7, -2.4, GEnergy(100.0, "MeV")) | |
| 36 | 48 | gauss = GModelSky(gauss_spatial, gauss_spectrum) |
| 37 | 49 | gauss.name('My Gaussian source') |
| 38 | 50 | ... | ... |
test/example_radial_models.py
| 1 | 1 | #! /usr/bin/env python |
| 2 | -# ========================================================================== | |
| 3 | -# This script makes an image from a radial model and verifies that the model | |
| 4 | -# is correctly normalized. | |
| 5 | -# ========================================================================== | |
| 2 | +# ===================================================================== | |
| 3 | +# This script makes an image from a radial model and verifies that the | |
| 4 | +# model is correctly normalized. | |
| 5 | +# | |
| 6 | +# Copyright (C) 2011-2013 Juergen Knoedlseder | |
| 7 | +# | |
| 8 | +# This program is free software: you can redistribute it and/or modify | |
| 9 | +# it under the terms of the GNU General Public License as published by | |
| 10 | +# the Free Software Foundation, either version 3 of the License, or | |
| 11 | +# (at your option) any later version. | |
| 12 | +# | |
| 13 | +# This program is distributed in the hope that it will be useful, | |
| 14 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | +# GNU General Public License for more details. | |
| 17 | +# | |
| 18 | +# You should have received a copy of the GNU General Public License | |
| 19 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 20 | +# ===================================================================== | |
| 6 | 21 | from gammalib import * |
| 7 | 22 | |
| 8 | 23 | |
| ... | ... | @@ -10,30 +25,34 @@ from gammalib import * |
| 10 | 25 | # Radial model testing routine # |
| 11 | 26 | # ============================ # |
| 12 | 27 | def test_radial_model(name, model, clobber=True): |
| 13 | - """Make an image of a spatial model | |
| 14 | - and check that it integrates to 1""" | |
| 28 | + """ | |
| 29 | + Make an image of a spatial model and check that it integrates to 1. | |
| 30 | + """ | |
| 15 | 31 | # Make a 2D FITS image (cartesian projection, celestial coordinates) |
| 16 | 32 | ra, dec, binsz, npix = 0, 0, 0.01, 300 |
| 17 | 33 | image = GSkymap("CAR", "CEL", ra, dec, -binsz, binsz, npix, npix, 1) |
| 18 | 34 | |
| 19 | 35 | # Fill the image |
| 36 | + energy = GEnergy() | |
| 37 | + time = GTime() | |
| 20 | 38 | for pix in range(image.npix()): |
| 21 | - dir = image.pix2dir(pix) | |
| 22 | - theta = center.dist(dir) | |
| 23 | - image[pix] = model.eval(theta) | |
| 39 | + dir = image.pix2dir(pix) | |
| 40 | + theta = center.dist(dir) | |
| 41 | + image[pix] = model.eval(theta, energy, time) | |
| 24 | 42 | |
| 25 | 43 | # Write it to file |
| 26 | 44 | filename = name + '.fits' |
| 27 | - print 'Writing', filename | |
| 45 | + print('Writing', filename) | |
| 28 | 46 | image.save(filename, clobber) |
| 29 | 47 | |
| 30 | 48 | # Check that it integrates to 1 |
| 31 | 49 | integral = 0.0 |
| 32 | 50 | for pix in range(image.npix()): |
| 33 | 51 | integral += image.omega(pix) * image[pix] |
| 34 | - print 'integral = %g (should be 1)' % integral | |
| 35 | - print 'integral error = %g (should be 0)' % (integral - 1) | |
| 36 | ||
| 52 | + print('integral = %g (should be 1)' % integral) | |
| 53 | + print('integral error = %g (should be 0)' % (integral - 1)) | |
| 54 | + print('') | |
| 55 | + | |
| 37 | 56 | |
| 38 | 57 | # ================ # |
| 39 | 58 | # Main entry point # | ... | ... |
testall.sh
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | # |
| 3 | 3 | # Run all test and example scripts that come with the package |
| 4 | 4 | # |
| 5 | -# Copyright (C) 2011 Juergen Knoedlseder | |
| 5 | +# Copyright (C) 2011-2013 Juergen Knoedlseder | |
| 6 | 6 | # |
| 7 | 7 | # This program is free software: you can redistribute it and/or modify |
| 8 | 8 | # it under the terms of the GNU General Public License as published by |
| ... | ... | @@ -20,6 +20,17 @@ |
| 20 | 20 | base=$PWD |
| 21 | 21 | |
| 22 | 22 | |
| 23 | +# examples | |
| 24 | +# ======== | |
| 25 | +echo | |
| 26 | +echo "=====> examples" | |
| 27 | +cd examples/python | |
| 28 | +./models_howto.py | |
| 29 | +./xml_howto.py | |
| 30 | +./xml_html_create.py | |
| 31 | +cd $base | |
| 32 | + | |
| 33 | + | |
| 23 | 34 | # test |
| 24 | 35 | # ==== |
| 25 | 36 | echo | ... | ... |