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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
|
.help apphot Aug83 "Digital Aperture Photometry Package"
.sh
1. Introduction
The APPHOT package will provide a set of routines for performing
aperture photometry on uncrowded or moderately crowded fields, in either
interactive or batch mode. The basic photometry technique employed
shall be fractional-pixel aperture integration; no PSF fitting techniques
shall be employed, and no knowledge of the PSF shall be required.
This document presents the formal requirements and specifications for
the package, and describes the algorithms to be used.
.sh
2. Requirements
.ls 4
.ls (1)
The program shall take as input an IRAF imagefile containing a starfield
which has been corrected for pixel to pixel gain variations, high frequency
fluctuations in the background, nonlinearity, and any other instrumental
defects affecting the intensity value of a pixel.
.le
.ls (2)
Given as input the approximate coordinates of a single object in the image,
the program shall perform the following operations:
.ls 4
.ls o
Determine a constant background value by analysis of an annular region
surrounding the object. The background is assumed to be flat in the region
of the object, but may contain contaminating objects or defects which
shall be detected and eliminated by the fitting algorithm.
It shall be permissible for the background region to extend beyond the
boundaries of the image; the out of bounds region of the annulus shall
be excluded from the fit.
.le
.ls o
Determine the center of the object, taking the approximate object
coordinates given as input as a starting point.
The center determination shall be resistant to the affects of nearby
contaminating objects. The centering algorithm may assume that the object
is circularly symmetric, or nearly so, and that the object flux is positive.
.le
.ls o
Determine the integral of object minus background within one or more
circular apertures centered upon the object. The integration shall be
performed using partial pixel techniques, to minimize the effects of
sampling. If the aperture contains any indefinite pixels, or if the
aperture extends beyond the boundary of the image, an indefinite result
shall be returned.
.le
.le
.le
.ls (3)
The following options shall be provided to modify the operation of the
above functions:
.ls
.ls o
Use a user supplied constant background value and background noise estimate
instead of fitting the background.
.le
.ls o
Use the starting center as the actual center in all cases.
.le
.ls o
Use the starting center as the actual center if the object is very faint,
but tweak up the center if the signal to noise is above a certain threshold.
.le
.ls o
Allow the object aperture to extend beyond the image boundary,
using only that portion of the aperture which is in bounds when computing
the aperture integral.
.le
.le
.le
.ls (4)
At a minimum, the following parameters shall be calculated and output
for each object:
.ls
.ls o
The coordinates of the object, and the estimated error in these coordinates.
.le
.ls o
The mode and standard deviation of the background; the number of pixels
left in the background region after pixel rejection.
.le
.ls o
The magnitude of the object, to within an arbitary zero-point, and
the statistical uncertainty of the magnitude. If multiple concentric
apertures are used, a magnitude and uncertainty shall be given for each.
.le
.le
.le
.ls (5)
The program shall be usable both interactively and in batch mode.
In interactive use, the user shall be able to mark the positions of the
objects by interactively positioning a cursor on a 2-dim display device.
It shall be possible to enter the control parameters for the analysis
routines interactively for each object. In batch mode, the control
parameters shall be fixed, and object coordinates shall be taken from
a user supplied list. The display device shall not be required in
batch mode.
.le
.ls (6)
The APPHOT package shall be written in the SPP language in conformance
with the standards and conventions of IRAF. The code shall be portable
and device independent.
.le
.le
.sh
2.1 Summary of the Limitations of APPHOT
The APPHOT package is designed to perform simple aperture photometry
subject to the following restrictions:
.ls
.ls (1)
Objects must be circular or nearly circular, since the aperture is
circular.
.le
.ls (2)
All pixels within the object aperture are weighted equally. All pixels
in the object aperture must be present; the object aperture may not normally
extend outside the image. Defective pixels within the object
aperture may not be detected.
.le
.ls (3)
The background must be approximately flat in the neighborhood of the
object being measured. The background must have a unique mode,
or the background fitting routine will reject the object. Any low
frequency fluctuations in the background should be removed before
using APPHOT.
.le
.ls (4)
The object aperture must be kept small to minimize the degradation of
signal to noise caused by sky pixels within the aperture, and to
minimize the effects of crowding. Therefore, the wings of the object
will extend beyond the aperture. Good photometric results will be
obtained only if the aperture is consistently well centered, and if the
shape and diameter of an object is constant throughout the image and
invariant with respect to magnitude.
.le
.le
.sh
3. Specifications
The APPHOT package performs aperture photometry on digitized starfields
maintained as IRAF imagefiles. Input to the package consists of an imagefile,
a list of object coordinates, and numerous parameters controlling the analysis
algorithms. Output consists of successive lines of text, where each line
summarizes the results of the analysis for a particular object. The output
may be saved in a textfile, which may easily be printed or written onto a
card image tape for export. The package routines may be used either
interactively or in batch mode.
The CL callable part of the APPHOT package consists of the following
routines:
.ks
.nf
apphot -- the main aperture photometry routine.
coordtr -- translations and rotations of coord lists.
fitsky -- computes mode and sigma of a sky region.
fitpsf -- compute the FWHM of the PSF.
imcursor -- reads the image cursor; used to make lists.
immark -- marks objects on the display device.
radprof -- computes the radial profile of an object.
.fi
.ke
Routines for general list manipulation, reading and writing card image tapes,
reading and writing images to FITS tapes, removing the instrumental signature
from the data, and so on are available elsewhere in the IRAF system.
The package is easily extended to include peak finding,
matching of object lists from different images,
background fitting and removal, and so on. The APPHOT package shall eventually
supplant both the KPNO AUTOPHOT and KPNO "Mountain Photometry Code" packages.
.sh
3.1 Standard Analysis Procedures
Before performing aperture photometry one must determine the radius
of the object aperture to be used, the inner radius and size of the annulus
to be used to fit the background, the full width at half max (FWHM) of
the point spread function (PSF), and so on.
Additional parameters are required by the centering algorithm.
A list of object centers must be prepared if APPHOT is to be used in
batch mode. The standard procedure is as follows:
.ls
.ls (1)
Use RADPROF to determine values for the following parameters:
.nf
- the object aperture radius or radii, in pixels
- the inner radius of the annular (sky) region
- the width of the annular region
.fi
.le
.ls (2)
Use FITPSF to fit gaussians to isolated, high signal to noise data objects,
to determine the FWHM of the point spread function.
.le
.ls (3)
Use FITSKY to determine the sky sigma (standard deviation).
APPHOT assumes that sigma is approximately constant throughout the image.
.le
.ls (4)
If one does not wish to manually mark object positions with the cursor
during analysis, i.e. when the analysis is to be done in batch, a list
of object coordinates must be prepared. This may be done in many ways:
.ls
.ls o
By running RCURSOR with the standard output redirected into the list file.
.le
.ls o
By transforming an existing list with COORDTR, OPSTRM, MATCH, SORT, WINDOW,
the editor, or some other filter.
.le
.ls o
By an automatic object finding procedure, if one is available.
.le
.ls o
By any other program which generates a list of object coordinates,
where each line of the list describes one object, and where x and y
in pixel coordinates are given in columns one and two. Additional
columns, if present, are ignored.
.le
.ls o
APPHOT output may be used as coordinate input in a subsequent run.
.le
.le
.le
.ls (5)
Finally, APPHOT is run to measure the objects. The user should be familiar
with the algorithms used to fit the background, measure the object center,
and compute the aperture integral, magnitude, and errors. The values of
all visible and hidden APPHOT parameters should be inspected before doing
any serious processing.
.le
.le
The general purpose IRAF list processing tools may be used for further
analysis of APPHOT output.
Output lists may be filtered to select objects based on the value of a
list column, i.e., all the objects within a certain magnitude range may
be selected, objects with estimated errors larger than a certain value
may be deleted, or a list may be sorted using the value in any column.
Columns may be extracted from a list to form new lists or to provide input
to a plot filter, and lists may be merged.
Arithmetic may be performed on lists to calculate colors, etc.
The remainder of this section presents detailed specifications for the analysis
procedures in the APPHOT package.
.sh
3.2 The APPHOT Program
The function of the APPHOT procedure is to perform aperture photometry
on isolated objects within an image. The principal input operands are the
name of the imagefile and the rough coordinates of the objects to be processed.
The principal output operands are the coordinates and magnitudes of the
objects.
In order to perform aperture photometry APPHOT must perform the following
sequence of operations (the algorithms employed are explained in
more detail later in this section):
.ls
.ls (1)
The mode and sigma of an annular background region centered on the object
is calculated.
.le
.ls (2)
The center of the object is determined.
.le
.ls (3)
The background is subracted from the object, and the total flux within
the object aperture or apertures is calculated.
.le
.le
Steps (1) and (2) above are optional; the background and center may be
determined externally, rather than by APPHOT, if desired.
.sh
3.2.1 APPHOT parameters
APPHOT has quite a few parameters due to the complexity of the
algorithms employed. All data dependent parameters are query mode to
ensure that they get set properly when a new image is processed.
The data independent algorithm control parameters are hidden mode,
and are given reasonable default values. The names, datatypes, and
default values of the APPHOT parameters are shown below.
.ks
.nf
Positional or query mode parameters:
image filename
apertures string
annulus real
width_annulus real
fwhm_psf real
sky_sigma real
.fi
.ke
.ks
.nf
List structured parameters (filename may be given on command line):
sky_mode *real
coords *imcur
.fi
.ke
.ks
.nf
Hidden parameters:
spool boolean no
output filename "apphot.out"
fitsky boolean yes
max_sky_iter integer 50
growing_radius real 1.0 (fwhm_psf units)
k1 real 5.0
k2 real 2.0
center boolean yes
clean boolean yes
cleaning_radius real 0.8 (fwhm_psf units)
clipping_radius real 1.5 (fwhm_psf units)
max_cen_shift real 1.0 (fwhm_psf units)
min_snratio real 0.5
zmag real 26.0
verbose boolean yes
.fi
.ke
The function and format of each of these parameters is explained in more
detail below.
.ls
.ls 16 image
The name of the image or image section to be processed.
.le
.ls output
The name of the output textfile used to spool APPHOT output.
If null, output will not be spooled. Note that output always appears on
the standard output, whether or not spooling is in effect.
.le
.ls apertures
The radii in pixels of the concentric object apertures, given all on the
same line, delimited by blanks. At least one aperture must be given;
the maximum number of apertures is limited by the length of a line.
A sample input string might be "5.0 5.5 6.0 6.5 7.0". If only a single
aperture is to be used, a real expression may be used instead of a string
type argument. The apertures need not be given in any particular order.
The average radius will be used to compute the uncertainty in the
object magnitude.
.le
.ls annulus
The inner radius of the annular sky region, in pixels.
.le
.ls width_annulus
The width of the annular sky region, in pixels.
.le
.ls fwhm_psf
The FWHM of the psf, in pixels. Used as a scale factor to control the
internal algorithms.
.le
.ls sky_sigma
The standard deviation (noise value) of a typical region of sky in
the image. Used for pixel rejection in the sky fitting algorithm.
.le
.ls sky_mode
The name of a list file containing the mode of the background of each of
the objects to be processed. Required only if FITSKY is switched off.
If sky fitting is disabled, and no list file is given, APPHOT will query
for the sky value.
.le
.ls coords
The name of a list file containing the coordinates of the objects to
be processed. If absent, objects may be marked interactively with the
cursor.
.le
.ls fitsky
A switch used to specify whether or not the background will be fitted.
If background fitting is disabled, the mode and sigma of the background
will be read from the SKY_FILE list each time an object is processed.
.le
.ls max_sky_iter
The maximum number of iterations for the sky fitting algorithm.
Since the sky fitting algorithm is guaranteed to converge,
this parameter should normally have a large value. If the value
is zero, the median of the sky region will be used instead of the mode.
.le
.ls growing_radius
The region growing radius for pixel rejection in the sky region, in units
of FWHM_PSF. When a bad sky pixel is detected, all pixels within
(growing_radius * fwhm_psf) pixels of the bad pixel will be rejected.
Used to exclude the wings of contaminating objects from the sky sample,
to avoid biasing the mode.
.le
.ls k1
The k-sigma clipping factor for the first phase of the sky fitting algorithm.
.le
.ls k2
The k-sigma clipping factor for the second, iterative, phase of the
sky fitting algorithm.
.le
.ls center
A switch used to specify whether or not centering is to be performed.
If centering is disabled, the initial center will be used as the object center.
.le
.ls clean
A switch used to specify whether or not the symmetry-clean algorithm
is to be employed during centering.
.le
.ls cleaning_radius
The cleaning radius for the symmetry-clean algorithm, in units of
FWHM_PSF.
.le
.ls clipping_radius
The clipping radius for the symmetry-clean algorithm, in units of
FWHM_PSF.
.le
.ls max_cen_shift
The maximum permissible shift of center, in units of FWHM_PSF.
If the shift produced by the centering algorithm is larger than this value,
the fit will terminate and no magnitude will be calculated.
.le
.ls min_snratio
Centering will be skipped if the signal to noise of the object,
as calculated from the initial center, is less than the value given
by this parameter.
.le
.ls zmag
Zero point for the output magnitude scale.
.le
.ls verbose
If enabled, the output columns are labeled. Note that the presence
of column labels in the output may interfere with the use of the list
processing tools.
.le
.le
.sh
3.2.2 The APPHOT Background Fitting Algorithm
A good background fit is essential to aperture photometry. Fitting
the background is trivial in a sparse field, but difficult in a crowded
field. In general the background region will contain contaminating objects
which must be detected and excluded if a good fit is to be obtained.
The algorithm employed here is based on the fact that contaminated pixels
are almost always spatially correlated. Background fitting algorithms
which work with a one dimensional sample (mode, median), or with the one
dimensional histogram (mode of hgm) have difficulty rejecting the faint
wings of contaminated regions. This is a serious defect of one dimensional
fitting algorithms, because it is these faint wings, not the bright
central pixels, which are most likely to bias the calculated background value.
The algorithm used in APPHOT is as follows:
.ks
.nf
algorithm fit_sky
begin
# Reject gross deviants.
compute the median of the annular region
detect pixels more than (k1*sky_sigma) from the median
reject all such pixels, without region growing
# Detect and reject contaminating objects.
while (number of iterations <= max_sky_iter) {
compute the histogram of the reduced sample
compute the sigma and mode of the histogram
detect pixels more than k2*sigma from the mode
reject all such pixels, with region growing
if (no pix rejected or all pix rejected)
terminate loop
}
return the final mode, sigma, and sample size
end
.fi
.ke
The mode of the histogram is found by cross correlating the noise function
with the histogram. The width of the the noise function is given by the
standard deviation of the current sample. Pixel rejection is
performed by locating all pixels more than k2*sigma from the mode,
and blindly rejecting all pixels within a certain radius of each deviant
pixel. This simple algorithm works well because the sample is large,
and therefore there is little penalty for discarding pixels that might
not be deviant. Region growing also tends to accelerate convergence
significantly.
Very faint contaminating objects are difficult to detect and reject.
If there are enough such objects, they should not be rejected, because
there are probably a few in the object aperture as well. A higher sky
sigma will be calculated and the computed uncertainty in the magnitude
will increase. The best solution to this problem may be to increase
the size of the annulus to minimize the bias and maximize the liklihood
of a detection.
.sh
3.2.3 The APPHOT Centering Algorithm
The centering algorithm used in APPHOT is that of Auer and Van Altena,
with the addition of the symmetry-clean algorithm developed by Barry Newell.
The main algorithm is as follows:
.ks
.nf
algorithm get_center
begin
if (centering is disabled) {
return initial center, zero uncertainty estimate
} else if (signal to noise of object < MIN_SNRATIO) {
compute uncertainty using initial center
return initial center, computed uncertainty
} else {
call measure_center
return image center and estimated uncertainty
}
end
.fi
.ke
The actual center determination is carried out by the following
algorithm:
.ks
.nf
algorithm measure_center
begin
extract subarray from the main data array
# Perform symmetry-cleaning.
if (cleaning is enabled) {
for (each pair of pixels diametrically opposed about
the image center beyond the cleaning radius)
if (i2 > i1 + 2*sky_sigma)
replace i2 by i1
else if (i1 > i2 + 2*sky_sigma)
replace i1 by i2
perform 2*sky_sigma noniterative clip of all pixels
beyond the clipping radius, to remove any remaining
radially symmetric structures
}
# Compute the image center and uncertainty.
compute x and y marginals of the cleaned subarray
fit a gaussian of width FWHM_PSF to each marginal
compute the centering error from the covariance matrix
return image center and estimated uncertainty
end
.fi
.ke
The effect of the symmetry-clean algorithm is to edit the raster,
removing any contaminating objects in the vicinity of the primary object.
This simplifies the fitting algorithm and increases its reliability,
since it does not have to deal with multipeak marginal distributions.
A gaussian is fitted to the marginal distributions because it is expected
to yield a better center determination for undersampled data.
An alternative is to empirically derive the marginal distributions of
the psf and fit these to each data object. This is a better approach in
some cases, but in the case of undersampled data it is difficult to derive
the marginal distributions due to sampling effects, and fitting is difficult
due to interpolation error. The use of a gaussian eliminates interpolation
error. Eventually, both techniques should be made available.
.sh
3.2.4 The APPHOT Aperture Integration Algorithm
The integral of the flux within a circular aperture is computed by
fractional pixel techniques. Pixels are assumed to be square apertures
arranged in a rectangular grid. The fraction of a pixel which lies within
the circular APPHOT aperture is computed by an approximation, and all
such contributions are summed to produce the total integral.
The simplicity of aperture photometry limits the amount of information
available for error analysis. Using only the noise value for the background,
the estimated error in the aperture integral is given by
flux_error = sky_sigma * sqrt (aperture_area)
where "sky_sigma" is either the sigma calculated by the background fitting
algorithm or the parameter SKY_SIGMA, depending on whether sky fitting
is enabled, and where "aperture_area" is the fractional pixel area of the
aperture.
It is possible, however, to produce a more useful error estimate if we
include some information about the psf. For the purposes of an improved
error estimate, we assume that the PSF is a gaussian. Given the object center,
the background, and the FWHM of the PSF, it is trivial to fit a two dimensional
gaussian to the object. An estimate of the average noise value for the
pixels within the aperture may then be obtained by computing the standard
deviation of the residual formed by subtracting the fitted two-dimensional
gaussian from the data. This value is used in place of SKY_SIGMA in the
above equation for an improved estimate of the actual flux error.
In the limit as the gaussian goes to zero, both uncertainty estimates tend
to the same value, as they should. For bright objects, the uncertainty
produced by analysis of the residual will tend to be pessimistic, since
it is unlikely that the PSF can actually be modeled by a simple gaussian.
Nonetheless, a plot of uncertainty versus magnitude should reveal objects
which are blended, which contain bad pixels, and so on. The accuracy of
the gaussian model will determine how reliably deviant objects can be
discriminated.
.sh
3.2.5 APPHOT Output
For each object processed, APPHOT prints a single line of text on the
standard output. If desired, APPHOT will simultaneously spool output into
a user specified text file. Each output line will contain the following
information (excluding the commas):
.nf
x,y,cenerr,shift, mode,sigma,nskypix, mag1,...,magn,magerr
where
x,y object coordinates in pixels
cenerr estimated uncertainty in the object center
shift shift of center from initial coordinates
mode mode of the background
sigma sigma of the background
nskypix number of sky pixels left after rejection
mag1 magnitude within the first annulus
magn magnitude within the Nth annulus
magerr estimated mag. uncertainty at the average radius
.fi
Note that the estimated uncertainty in the magnitude is given only for
the average object aperture radius. The uncertainty for the other
apertures can easily be calculated given SIGMA and the area of each
aperture. The zero point for the magnitude scale is given by the
hidden parameter ZMAG.
Additional information could be calculated and output (such as the
moments of the object and the skew of the background), but in our
experience few people ever look at such information, and a more complex
output format would be required. Probably the calculation of anything
but object centers, magnitudes, and errors should be left to other
programs.
.sh
3.3 The COORDTR Program
The function of COORDTR is to effect a linear translation and/or
rotation of a coordinate list. COORDTR is a filter; coordinate lines
are read from the standard input and written to the standard output.
COORDTR is concerned only with coordinate transformations, and knows
nothing about image boundaries. A transformed coordinate may no longer
lie within an image.
x y other_stuff
The format of a coordinate line is shown above. COORDTR operates only
on the coordinate pair x,y. Any additional information on the line is
passed on to the output without modification.
COORDTR is actually a general purpose list processing operator, and
belongs in a list processing package, rather than in the APPHOT package.
When a list processing package is developed, COORDTR will be moved to
that package.
A COORDTR transformation consists of a linear translation followed
by a rotation. Either the translation, the rotation, or both may be
skipped. The COORDTR parameters are summarized below.
.ks
.nf
positional arguments:
xshift real
yshift real
xcenter real
ycenter real
theta real
.fi
.ke
.ks
.nf
hidden parameters:
translate boolean yes
rotate boolean no
.fi
.ke
If more than two positional arguments are given, COORDTR knows
that both a translation and a rotation are desired. Otherwise the
boolean parameters TRANSLATE and ROTATE are read to determine
what additional parameters are needed. Thus a simple linear translation
of +2.5 pixels in X and -0.2 pixels in Y would be specified by the
command
coordtr (2.5, -.2, < "input", > "output")
which transforms the list in file "input", writing the output into the
new file "output".
If a rotation is desired, XCENTER, YCENTER, and THETA must be given.
The first two parameters specify the pixel coordinates of the point
about which the rotation is to be performed, while THETA specifies
the rotation angle in degrees. Positive THETA produces a counterclockwise
rotation, if positive X is to the right and positive Y is up.
.sh
3.4 The FITSKY Program
The function of the FITSKY program is to determine the mode and sigma
of the specified annular regions, printing the results (mode, sigma, and npix)
on the standard output. FITSKY is similar in operation to APPHOT, except
that its function is to fit sky, not perform aperture photometry. The
FITSKY parameters are the following:
.ks
.nf
Positional or query mode parameters:
image filename
annulus real
width_annulus real
fwhm_psf real
.fi
.ke
.ks
.nf
List structured parameters (filename may be given on command line):
coords *imcur
.fi
.ke
.ks
.nf
Hidden parameters:
spool boolean no
output filename "fitsky.out"
max_sky_iter integer 50
growing_radius real 1.0 (fwhm_psf units)
k1 real 5.0
k2 real 2.0
verbose boolean yes
.fi
.ke
The names and functions of the FITSKY parameters are the same as those
for APPHOT. Note that ANNULUS may be set to zero to measure the
background within a circular aperture. The maximum number of iterations
may be set to zero to measure the median of the sky sample.
FITSKY output may be spooled into a file and used as input to APPHOT.
.sh
3.5 The FITPSF Program
The function of the FITPSF program is to determine the FWHM of the
point spread function. This is done by selecting an isolated, high
signal to noise object, computing the x and y marginal profiles,
and fitting a gaussian to each profile. Output consists of the object
center, the error in the center, and the FWHM of the fitted gaussians.
Note that the sigma of a gaussian may be obtained by dividing the FWHM
by 2.354.
x y err x_fwhm y_fwhm
The input parameters for the FITPSF program are shown below.
.ks
.nf
Positional parameters:
image filename
aperture real
annulus real
width_annulus real
sky_mode real
coords *imcur
.fi
.ke
.ks
.nf
Hidden parameters:
fitsky boolean yes
center boolean yes
spool boolean no
output filename "fitpsf.out"
verbose boolean yes
.fi
.ke
If background fitting is disabled, the parameter SKY_MODE defines
the sky level. The background fitting algorithm is a simple median
calculation without pixel rejection or iteration.
This should be sufficient, since FITPSF is expected to be used mainly
in uncrowded regions on high signal to noise objects.
Note that FITPSF is set up to process a list of input objects.
The list processing tools (i.e., AVERAGE) may be used to average the
results to produce the final FWHM of the PSF for the image.
.sh
3.6 The IMCURSOR Program
The function of the IMCURSOR program is to read the STDIMAGE cursor,
writing the cursor coordinates on the standard output. The cursor is read
until the EOF character is entered to terminate the loop. The standard
output may be redirected into a file to generate a coordinate list.
IMCURSOR has no parameters.
.sh
3.7 The IMMARK Program
The function of IMMARK is to draw marks on the diplay device.
IMMARK is useful for verifying coordinate lists.
.ks
.nf
parameters:
mark_type string
mark_size real
coords *imcur
.fi
.ke
Output is the current frame of the STDIMAGE device. Mark types
include "circle", "box", "cross", "plus", and "diamond". The size of
a mark is given in pixels. The third parameter is a standard coordinate
list. If no list is given, the image cursor will be read instead.
.sh
3.8 The RADPROF Program
The function of the RADPROF program is to compute the radial profile
of an object. The output of RADPROF consists of a sequence of lines of
text, each line defining the profile at a single radius. Since RADPROF
may generate many lines of output for a single input object, it is set up
to process only a single input object. A CL while loop may be written
to process multiple objects, if desired.
.ks
.nf
positional arguments:
image filename
aperture real
step_size real
annulus real
width_annulus real
sky_mode real
.fi
.ke
.ks
.nf
hidden parameters:
fitsky boolean yes
center boolean yes
verbose boolean yes
.fi
.ke
The radial profile is calculated from the image center out to the radius
specified by the parameter APERTURE, in steps of STEP_SIZE pixels.
The remaining RADPROF parameters are similar to those of APPHOT and will not be
discussed in detail. If background fitting is disabled, the parameter
SKY_MODE defines the sky level. The background fitting algorithm is
a simple median calculation without pixel rejection or iteration.
This should be sufficient, since RADPROF is expected to be used mainly
in uncrowded regions on high signal to noise objects.
Centering is via gaussian fits to the marginal profiles, without cleaning.
RADPROF output lines contain the following fields:
r, i(r), inorm(r), fraction(r)
.nf
where
r radius in pixels
i(r) raw intensity at r
inorm(r) normalized intensity at r (range 0-1)
fraction(r) fraction of total integral at r
.fi
RADPROF does not generate any plots. If one wishes to plot the contents
of an output column, the column may be extracted with a list processing
filter and piped to a graphics task.
.sh
4.0 Example
A brief example may help illustrate the use of the package. Suppose
we want to process a few hundred stars on images "blue" and "red". We
start by analyzing the blue image.
ap> radprof blue,15,0.5,20,10
This gives us a radial profile printout for one of the "blue" stars.
We decide that an aperture radius of 2.5 pixels is about right.
The annulus will start at a radius of 10.0 pixels and extend to 20.0 pixels.
The next step is to determine the FWHM of the PSF:
ap> fitpsf blue,3,10,20 | tee spoolfile
By default, the program will take coordinate input by reading the image
display cursor. When the program is waiting for cursor input, it will
cause the display cursor to blink rapidly; normally the cursor does not
blink. One has to be aware of this, because no other prompt is issued.
We postion the cursor on several stars, and tap the space bar to measure
each one. When finished we type the EOF character (<ctrl/z> on our systems)
to terminate the loop. The screen will now look like this (the output
column labels are ommitted):
.nf
ap> fitpsf blue,3,10,20 | tee spoolfile
283.12 157.40 0.035 2.887 2.751
546.08 213.45 0.023 2.833 2.902
318.32 354.73 0.064 2.791 2.824
.fi
Since we elected to use TEE to spool the output, rather than the SPOOL
parameter of FITPSF, we will not see the results until all stars have been
measured. The next step is to average the results, to determine the
final FWHM (the FITPSF output could have been piped directly to GETCOLS
without using an intermediate spoolfile, if desired).
.nf
ap> getcols spoolfile,"4-5" | getcols | average
2.83133 0.0569725 6
.fi
There are many ways this average could have been computed, of course;
this is only one example. Next, to avoid having to write down the FWHM value,
we put it into the appropriate APPHOT parameter (note that the parameter
name is abbreviated).
ap> apphot.fwhm = 2.831
Finally, we must determine a representative backround sigma value for
the image. This is done by using FITSKY to measure several sky areas,
and averaging column two of the output, much as we did for FITPSF. The
final value may be saved in "apphot.sky_sigma".
By this point we have determined all the necessary parameters, and it is
time to do some photometry. The only APPHOT argument we are sure of is
the image name parameter, so that is all we include on the command line:
.nf
ap> apphot blue
aperture radii, pixels: 2.4 2.5 2.75 3.0
inner radius of sky annulus: 10
width of sky annulus (1 - ): 10
full width at half max of psf (2.831):
standard deviation of the image noise function (23.733):
.fi
After responding to the prompts shown above, APPHOT will ask for the
first pair of object coordinates, and the cursor blink prompt will again
be given. Several objects may be measured to verify that all is working.
The last step is to prepare a list of objects to be processed. The simplest
way to do this is to interactively mark the objects with the cursor.
Later, when we process the "red" image, the same coordinate list may again
be used, possibly after filtering with COORDTR.
ap> imcursor > objlist
At this point, all of the APPHOT parameters have been set, we have
a list of objects to be processed, and we are ready to run APPHOT in
batch mode. We decide to save the output in the file "blue.out".
To ensure that we have a record of the parameters used for the fit,
we first print the APPHOT parameters into the output file, then we
start up the APPHOT batch run.
.nf
ap> lparam apphot > blue.out
ap> apphot >> blue.out &
[1]
.fi
The batch job is now running, appending output lines to the file "blue.out".
We can proceed to set up the job for the red image, in much the same way
that we set up the job for the blue image. When both jobs finish, we
can use the list processing tools to filter out the good objects and
calculate colors.
|