File: psf-match.sh

package info (click to toggle)
gnuastro 0.24-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,360 kB
  • sloc: ansic: 185,444; sh: 15,785; makefile: 1,303; cpp: 9
file content (88 lines) | stat: -rwxr-xr-x 2,828 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Find the matching kernel for two PSFs
#
# See the Tests subsection of the manual for a complete explanation
# (in the Installing gnuastro section).
#
# Original author:
#     Mohammad Akhlaghi <mohammad@akhlaghi.org>
# Contributing author(s):
# Copyright (C) 2022-2025 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.





# Preliminaries
# =============
#
# Set the variables (The executable is in the build tree). Do the
# basic checks to see if the executable is made or if the defaults
# file exists (basicchecks.sh is in the source tree).
prog=convolve
psfwide=psf.fits
psfsharp=psf-sharp.fits
fitsprog=$progbdir/astfits
cropprog=$progbdir/astcrop
execname=$progbdir/ast$prog
arithprog=$progbdir/astarithmetic





# Skip?
# =====
#
# If the dependencies of the test don't exist, then skip it. There are two
# types of dependencies:
#
#   - The executable was not made (for example due to a configure option),
#
#   - The input data was not made (for example the test that created the
#     data file failed).
if [ ! -f $execname  ]; then echo "$execname not created."; exit 77; fi
if [ ! -f $psfwide   ]; then echo "$psfwide does not exist."; exit 77; fi
if [ ! -f $psfsharp  ]; then echo "$psfsharp does not exist."; exit 77; fi
if [ ! -f $fitsprog  ]; then echo "$fitsprog does not exist."; exit 77; fi
if [ ! -f $cropprog  ]; then echo "$cropprog does not exist."; exit 77; fi
if [ ! -f $arithprog ]; then echo "$arithprog does not exist."; exit 77; fi





# Prepare Sharper PSF
# -------------------
#
# It is necessary that the two PSFs be the same width. So before finding
# the matching PSF, it is necessary to make the sharper (smaller) PSF have
# the same pixel size as the wider one.
psfsharpwidth=psf-sharp-width-set.fits
psfsharpnoblank=psf-sharp-no-blank.fits
wwidth=$($fitsprog $psfwide --keyvalue=naxis1 --quiet)
center=$($fitsprog $psfsharp --keyvalue=naxis1 --quiet \
             | $AWK '{print int($1/2)+1}')
$cropprog $psfsharp --center=$center,$center --width=$wwidth \
          --mode=img --output=$psfsharpwidth
$arithprog $psfsharpwidth set-i i i isblank 0 where \
           --output=$psfsharpnoblank





# Actual test script
# ==================
#
# 'check_with_program' can be something like Valgrind or an empty
# string. Such programs will execute the command if present and help in
# debugging when the developer doesn't have access to the user's system.
$check_with_program $execname $psfwide --kernel=$psfsharpnoblank \
                              --makekernel=10   \
                              --output=psf-match.fits \
    && rm $psfsharpwidth $psfsharpnoblank