Skip to content

Commit 86dde15

Browse files
committed
Static pointing error a vector
1 parent 795cba0 commit 86dde15

5 files changed

Lines changed: 33 additions & 24 deletions

File tree

‎data_models/memory_data_models.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def __init__(self, name='', data=None, location=None,
6363
:param diameter:
6464
"""
6565
if data is None and xyz is not None:
66-
desc = [('names', '>U6'),
66+
desc = [('names', '>U12'),
6767
('xyz', '>f8', (3,)),
6868
('diameter', '>f8'),
6969
('mount', '>U5')]

‎processing_components/simulation/testing_support.py‎

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ def moving_average(a, n=3):
745745
return gt
746746

747747

748-
def simulate_pointingtable(pt: PointingTable, pointing_error, static_pointing_error=0.0, global_pointing_error=None,
748+
def simulate_pointingtable(pt: PointingTable, pointing_error, static_pointing_error=None, global_pointing_error=None,
749749
seed=None, **kwargs) -> PointingTable:
750750
""" Simulate a gain table
751751
@@ -760,6 +760,9 @@ def simulate_pointingtable(pt: PointingTable, pointing_error, static_pointing_er
760760

761761
if seed is not None:
762762
numpy.random.seed(seed)
763+
764+
if static_pointing_error is None:
765+
static_pointing_error = [0.0, 0.0]
763766

764767
r2s = 180.0 * 3600.0 / numpy.pi
765768
pt.data['pointing'] = numpy.zeros(pt.data['pointing'].shape)
@@ -770,14 +773,18 @@ def simulate_pointingtable(pt: PointingTable, pointing_error, static_pointing_er
770773
% (pointing_error, r2s * pointing_error))
771774

772775
pt.data['pointing'] += numpy.random.normal(0.0, pointing_error, pt.data['pointing'].shape)
773-
if static_pointing_error > 0.0:
774-
log.debug("simulate_pointingtable: Simulating static pointing error = %g (rad) %g (arcsec)"
775-
% (static_pointing_error, r2s * static_pointing_error))
776+
if (abs(static_pointing_error[0]) > 0.0) or (abs(static_pointing_error[1]) > 0.0):
777+
log.debug("simulate_pointingtable: Simulating static pointing error = (%g, %g) (rad) (%g, %g)(arcsec)"
778+
% (static_pointing_error[0], static_pointing_error[1],
779+
r2s * static_pointing_error[0], r2s * static_pointing_error[1]))
776780

777-
static_pe = numpy.random.normal(0.0, static_pointing_error, pt.data['pointing'].shape[1:])[
778-
numpy.newaxis, ...]
781+
static_pe = numpy.zeros(pt.data['pointing'].shape[1:])
782+
static_pe[...,0] = numpy.random.normal(0.0, static_pointing_error[0],
783+
static_pe[...,0].shape)[numpy.newaxis, ...]
784+
static_pe[...,1] = numpy.random.normal(0.0, static_pointing_error[1],
785+
static_pe[...,1].shape)[numpy.newaxis, ...]
779786
pt.data['pointing'] += static_pe
780-
787+
781788
if global_pointing_error is not None:
782789
log.debug("simulate_pointingtable: Simulating global pointing error = [%g, %g] (rad) [%g,s %g] (arcsec)"
783790
% (global_pointing_error[0], global_pointing_error[1],
@@ -787,7 +794,7 @@ def simulate_pointingtable(pt: PointingTable, pointing_error, static_pointing_er
787794
return pt
788795

789796

790-
def simulate_pointingtable_from_timeseries(pt, type='tracking', time_series_type='precision',
797+
def simulate_pointingtable_from_timeseries(pt, type='wind', time_series_type='precision',
791798
pointing_directory=None, reference_pointing=False,
792799
seed=None):
793800
"""Create a pointing table with time series created from PSD.
@@ -889,17 +896,19 @@ def simulate_pointingtable_from_timeseries(pt, type='tracking', time_series_type
889896

890897
# use original frequency break and max frequency to fit function
891898
# fit polynomial to psd up to max value
892-
p_axis_values1 = numpy.polyfit(freq[:axis_values_max_index], axis_values[:axis_values_max_index], 5)
899+
p_axis_values1 = numpy.polyfit(freq[:axis_values_max_index],
900+
numpy.log(axis_values[:axis_values_max_index]), 5)
893901
f_axis_values1 = numpy.poly1d(p_axis_values1)
894902
# fit polynomial to psd beyond max value
895-
p_axis_values2 = numpy.polyfit(freq[axis_values_max_index:freq_max_index], axis_values[axis_values_max_index:freq_max_index], 5)
903+
p_axis_values2 = numpy.polyfit(freq[axis_values_max_index:freq_max_index],
904+
numpy.log(axis_values[axis_values_max_index:freq_max_index]), 5)
896905
f_axis_values2 = numpy.poly1d(p_axis_values2)
897906

898907
# use new frequency break and max frequency to apply function (ensures equal spacing of frequency intervals)
899908

900909
# resampled to construct regularly-spaced frequencies
901-
regular_axis_values1 = f_axis_values1(regular_freq[:regular_axis_values_max_index])
902-
regular_axis_values2 = f_axis_values2(regular_freq[regular_axis_values_max_index:])
910+
regular_axis_values1 = numpy.exp(f_axis_values1(regular_freq[:regular_axis_values_max_index]))
911+
regular_axis_values2 = numpy.exp(f_axis_values2(regular_freq[regular_axis_values_max_index:]))
903912

904913
# join
905914
regular_axis_values = numpy.append(regular_axis_values1, regular_axis_values2)

‎tests/data_models/test_buffer_data_models.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def test_readwritepointingtable(self):
9696
polarisation_frame=PolarisationFrame("linear"),
9797
weight=1.0)
9898
pt = create_pointingtable_from_blockvisibility(self.vis, timeslice='auto')
99-
pt = simulate_pointingtable(pt, pointing_error=0.1, static_pointing_error=0.)
99+
pt = simulate_pointingtable(pt, pointing_error=0.1)
100100

101101
config = {"buffer": {"directory": self.dir},
102102
"pointingtable": {"name": "test_bufferpointingtable.hdf", "data_model": "PointingTable"}}

‎tests/processing_components/test_pointing.py‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def test_create_pointingtable(self):
5656
for telescope in ['MID', 'LOW', 'ASKAP']:
5757
vp = create_vp(beam, telescope)
5858
pt = create_pointingtable_from_blockvisibility(self.vis, vp)
59-
pt = simulate_pointingtable(pt, 0.1, static_pointing_error=0.01)
59+
pt = simulate_pointingtable(pt, 0.1, static_pointing_error=[0.01, 0.001])
6060
assert pt.pointing.shape == (self.ntimes, self.nants, 1, 1, 2), pt.pointing.shape
6161

6262
def test_create_gaintable_from_pointingtable(self):
@@ -67,7 +67,7 @@ def test_create_gaintable_from_pointingtable(self):
6767
radius=0.2)
6868

6969
pt = create_pointingtable_from_blockvisibility(self.vis)
70-
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=0.001)
70+
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=[0.001,0.0001])
7171
vp = create_vp(self.model, 'MID')
7272
gt = simulate_gaintable_from_pointingtable(self.vis, s3_components, pt, vp)
7373
assert gt[0].gain.shape == (self.ntimes, self.nants, 1, 1, 1), gt[0].gain.shape
@@ -77,7 +77,7 @@ def test_create_gaintable_from_pointingtable_dynamic(self):
7777
polarisation_frame=PolarisationFrame('stokesI'))
7878

7979
pt = create_pointingtable_from_blockvisibility(self.vis)
80-
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=0.0,
80+
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=None,
8181
global_pointing_error=[0.0, 0.0])
8282
vp = create_vp(self.model, 'MID')
8383
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)
@@ -95,7 +95,7 @@ def test_create_gaintable_from_pointingtable_dynamic_radec(self):
9595
polarisation_frame=PolarisationFrame('stokesI'))
9696

9797
pt = create_pointingtable_from_blockvisibility(self.vis)
98-
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=0.0,
98+
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=None,
9999
global_pointing_error=[0.0, 0.0])
100100
vp = create_vp(self.model, 'MID', use_local=False)
101101
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp, use_radec=True)
@@ -113,7 +113,7 @@ def test_create_gaintable_from_pointingtable_static(self):
113113
polarisation_frame=PolarisationFrame('stokesI'))
114114

115115
pt = create_pointingtable_from_blockvisibility(self.vis)
116-
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=0.01,
116+
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=[0.01, 0.001],
117117
global_pointing_error=[0.0, 0.0])
118118
vp = create_vp(self.model, 'MID')
119119
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)
@@ -132,7 +132,7 @@ def test_create_gaintable_from_pointingtable_dynamic_static(self):
132132
polarisation_frame=PolarisationFrame('stokesI'))
133133

134134
pt = create_pointingtable_from_blockvisibility(self.vis)
135-
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=0.01,
135+
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=[0.01, 0.001],
136136
global_pointing_error=[0.0, 0.0])
137137
vp = create_vp(self.model, 'MID')
138138
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)
@@ -152,7 +152,7 @@ def test_create_gaintable_from_pointingtable_global(self):
152152

153153
import matplotlib.pyplot as plt
154154
pt = create_pointingtable_from_blockvisibility(self.vis)
155-
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=0.0,
155+
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=None,
156156
global_pointing_error=[0.0, 0.01])
157157
vp = create_vp(self.model, 'MID')
158158
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)
@@ -169,7 +169,7 @@ def test_create_gaintable_from_pointingtable_global_dynamic(self):
169169
polarisation_frame=PolarisationFrame('stokesI'))
170170

171171
pt = create_pointingtable_from_blockvisibility(self.vis)
172-
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=0.0,
172+
pt = simulate_pointingtable(pt, pointing_error=0.01, static_pointing_error=None,
173173
global_pointing_error=[0.0, 0.01])
174174
vp = create_vp(self.model, 'MID')
175175
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)
@@ -187,7 +187,7 @@ def test_create_gaintable_from_pointingtable_GRASP(self):
187187
polarisation_frame=PolarisationFrame('stokesI'))
188188

189189
pt = create_pointingtable_from_blockvisibility(self.vis)
190-
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=0.0,
190+
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=None,
191191
global_pointing_error=[0.0, 0.01])
192192
vp = create_vp(self.model, 'MID_GRASP')
193193
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)

‎tests/processing_components/test_pointing_circlecut.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def test_create_gaintable_from_pointingtable_circlecut(self):
5858
telescopes = ['MID', 'MID_GAUSS', 'MID_GRASP']
5959
for telescope in telescopes:
6060
pt = create_pointingtable_from_blockvisibility(self.vis)
61-
pt = simulate_pointingtable(pt, pointing_error=0.0, static_pointing_error=0.0,
61+
pt = simulate_pointingtable(pt, pointing_error=0.0,
6262
global_pointing_error=[0.0, 0.0])
6363
vp = create_vp(self.model, telescope)
6464
gt = simulate_gaintable_from_pointingtable(self.vis, [comp], pt, vp)

0 commit comments

Comments
 (0)