Mission trend for upper limit on aspect solution RMS error

Using the method described in the sim_asol_centroids notebook, this plots the mission trend of the upper limit on 1-axis aspect solution RMS error. This shows that nearly all observations are comfortably below the SE31 image reconstruction budget. However there is a detectable trend upward that correlates with increase ACA CCD temperature, and some outliers are approaching or have exceeded the limit.

Obsid 14462 was noted independently because of large yaw gyro biases. Obsid 14557 was highlighted in V&V for extremely large centroid residuals. The root cause was not fully understood, but perhaps this was the result of a very unlucky configuration of CCD hot pixels.


In [1]:
from mica.vv import get_rms_data
from astropy.table import Table
import matplotlib.pyplot as plt
from Ska.Matplotlib import plot_cxctime
from astropy.time import Time
%matplotlib inline

In [2]:
# Get the mica table of V&V data
dat = Table(get_rms_data())

In [3]:
# Filter table to select only useful and final data
datm = dat['obsid isdefault tstart  used slot type dy_rms dz_rms'.split()]
ok = (dat['type'] == 'GUIDE') & (dat['used'] == 1) & (dat['isdefault'] == 1)
datm = datm[ok]
datm.sort('obsid')
datm


Out[3]:
<Table masked=False length=71360>
obsidisdefaulttstartusedslottypedy_rmsdz_rms
int32int32float64int32int32string80float64float64
2169272595.777513GUIDE0.03642703261390.0360691427786
2169272595.777515GUIDE0.04117152550540.0442287745192
2169272595.777514GUIDE0.05568098548870.038010873714
2169272595.777517GUIDE0.05744262875590.0601175648845
2169272595.777516GUIDE0.05656684202260.0494141196356
5180301654.607813GUIDE0.04362092889560.0366183758036
5180301654.607815GUIDE0.03983835476550.0357611319025
5180301654.607814GUIDE0.05725768442410.0505640839199
5180301654.607817GUIDE0.04119499944650.0453628024224
5180301654.607816GUIDE0.05419421731070.0517387509416
........................
628251243278711.95513GUIDE0.05426666952770.0590725305409
628251243278711.95515GUIDE0.08840652180330.102039197212
628251243278711.95514GUIDE0.04383195495650.0422587966479
628251243278711.95517GUIDE0.1330232987470.121750647763
628251243278711.95516GUIDE0.0707580622850.0660649442163
62877177503172.341813GUIDE0.05824770577560.04963447611
62877177503172.341815GUIDE0.05942375721270.0597524544732
62877177503172.341814GUIDE0.06272790488480.0444410076397
62877177503172.341817GUIDE0.05919230043290.0784747755024
62877177503172.341816GUIDE0.07130720416350.0566349753997

In [4]:
# Group by obsid
datmg = datm['obsid tstart dy_rms dz_rms'.split()].group_by('obsid')

In [5]:
datmg.groups[1]


Out[5]:
<Table masked=False length=5>
obsidtstartdy_rmsdz_rms
int32float64float64float64
580301654.60780.04362092889560.0366183758036
580301654.60780.03983835476550.0357611319025
580301654.60780.05725768442410.0505640839199
580301654.60780.04119499944650.0453628024224
580301654.60780.05419421731070.0517387509416

In [6]:
# Select the minimum within each obsid
datmg_min = datmg.groups.aggregate(np.min)

In [15]:
# Make the plot
dyz_rms = np.maximum(datmg_min['dy_rms'], datmg_min['dz_rms'])
for sym, alpha in (('.b', 0.8), (',r', 0.5), (',y', 0.15)):
    plot_cxctime(datmg_min['tstart'], dyz_rms, sym, alpha=alpha)
plt.grid()
x0, x1 = plt.xlim()
plt.hlines(0.177, x0, x1, linestyles='--', colors='r')
plt.text(x0, 0.177, '  SE31 image reconstruction budget', va='bottom', ha='left')
plt.text(Time('2013:240').plot_date, 0.21, 'Obsid 14557', ha='right')
plt.text(Time('2012:180').plot_date, 0.255, 'Obsid 14462', ha='right')
plt.ylabel('Error upper limit (arcsec)');
plt.title('Aspect solution 1-axis RMS error upper limit vs. time');
plt.savefig('asol_rms_err_upper_limit.png');


Figure 1 - Using the method described in the sim_asol_centroids notebook, this plot shows the mission trend of the upper limit on 1-axis aspect solution RMS error.


In [16]:
# Show outliers
ok = dyz_rms > 0.2
datmg_min[ok]


Out[16]:
<Table masked=False length=2>
obsidtstartdy_rmsdz_rms
int32float64float64float64
14462465928380.690.2547924725660.0955898798809
14557497795872.2660.1869242597250.207943853981
  • Obsid 14462 had gyro yaw bias problems
  • Obsid 14557 had huge systematic errors across most slots (reason??)

In [ ]: