-
Notifications
You must be signed in to change notification settings - Fork 4
/
130.text
156 lines (116 loc) · 5.71 KB
/
130.text
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
From: Dave Shone
Subject: YegSets, Telescope models and Calibration
Date: Tue, 7 Apr 92 09:01:49 EDT
The Relationships between YegSets and Telescope Models
======================================================
The part of the Green Bank scheme of "high-level" objects which is least
clear is the nature of the associations between IntYegSets and IntTelescope
Models (I shall confine myself to the interferometric case). Perhaps
we can clarify this by considering the ways in which we wish to use these
in calibration and self-calibration.
It is often convenient to think of calibration as a process where a
single IntTelescopeModel is updated (typically as part of a
self-calibration, inversion/deconvolution iterative loop, or where
many target source observations are to be calibrated using a single
set of corrections). In this case, it may be natural to have a single
IntTelescopeModel associated with a particular IntYegSet, so that the
IntYegSet is always consistent with the TelescopeModel; thus the
YegSet would be virtual, and a change in the state of the
IntTelescopeModel would be reflected in the IntYegSet. Such an
IntYegSet would be created using the "Apply" (or "Correct") method of
IntTelescopeModel, given an existing IntYegSet (and parameters for the
Apply method, such as interpolation parameters).
The YegSets themselves can be regarded as "views" or "filtered views"
of some underlying data:
_________________________________
|IntYegSet ys1C = tm1.Apply(ys1)|
| |
| |
_______________ _________| |_____
|IntYegSet ys1| |IntTelModel tm1|
| | ---------| |-----
| | | |
_____| |___________________________| |______
| Underlying Data (FITS blob/YegSet (?)) |
--------------------------------------------
The following piece of pseudo-C++ illustrates the use of the ideas above:
IntYegSet ys0; // Calibrator YegSet;
IntYegSet ys0M; // Model YegSet for calibrator;
IntYegSet ys1; // Target YegSet
:
:
IntTelescopeModel tm; // Telescope Model;
IntImagingModel iim; // Imaging Model;
:
:
// Initial calibration and imaging; assume some model of calibrator exists or
// has been determined:
tm1.Solve(ys0, ys0M); // Determine gains etc.;
IntYegSet ys1C = tm.Apply(ys1); // Create new "corrected" YegSet;
// corrections are actually applied
// "on the fly" when ys1A is used;
Image map1 = iim.Invert(ys1C); // Make a map;
:
: // Probably do some deconvolution;
:
// Self Calibration:
IntYegSet ys1M = iim.Predict(map1, ys1); // Predict model yegs;
tm.Solve(ys1, ys1M); // Determine revised gains etc.;
// Now we can remake the map with ys1A; the revised gains will be
// applied "on the fly":
Image map1A = iim.Invert(ys1C);
:
:
Notes:
1) It is possible that many YegSets would be associated with a particular
TelescopeModel, in which cases changes would be reflected in all of
the YegSets.
2) There must be an association between the corrected YegSet ys1C,
the Telescope Model tm1, and the original YegSet ys1. The latter are
required to exist while ys1C exists, although if we regard all of these
objects as handles to something else, we can use a reference counting
mechanism to ensure we don't destroy anything we need to keep.
The user of these objects must be aware that ys1C is associated with
tm1, in order to know which Telescope Model must be modified to change
the calibration of that YegSet. This association is made when ys1C
is created using tm1.Apply(). However, the user need not be aware of
the association between ys1C and ys1. In fact, this association could
be regarded as arising because the objects are simply different "filtered
views" of the same underlying data.
In addition to the calibration strategy outlined above, it may be desirable
to calculate and apply a sequence of Telescope Models, thus preserving
the intermediate results. The following pseudo-C++ illustrates this:
IntTelescopeModel tm1, tm2, tm3;
IntYegSet ys1;
IntImagingModel iim;
:
:
IntYegSet ys2 = tm1.Apply(ys1); // Apply a succession of
IntYegSet ys3 = tm2.Apply(ys2); // Telescope Models;
IntYegSet ys4 = tm3.Apply(ys3);
Image mapA = iim.Invert(ys3); // Make a map;
:
:
tm2.Solve(...); // Redo one of the calibration steps;
Image mapB = iim.Invert(ys3); // Make new map. The new intermediate
// calibration will be applied
// automatically;
Summary
=======
1) YegSets may be associated with a Telescope Model, in which case the
Telescope model is considered to be applied, probably "on the fly".
Such YegSets are created by using the Apply method of Telescope Model.
2) If a YegSet has no Telescope model, then raw values are presented
to the user of the YegSet.
3) Multiple YegSets may be associated with the same Telescope Model,
in which case a change to the Telescope Model is reflected in all
the YegSets.
Unresolved issues:
1) Should we distinguish between virtual and real YegSets, in order to
produce a "new copy" of the data? e.g.,:
ys2 = tm.Apply(ys1, VIRTUAL); // Make a virtual YegSet;
ys3 = tm.Apply(ys1, REAL); // Make a new, calibrated copy;
In practice, the VIRTUAL/REAL option would be passed in with other
parameters for Apply.
2) Should the Telescope Model have a "default state" so that a user
may access uncalibrated data without using the original?