def getTec(data,sat_num,data_interval,satbias=None):
"""
calculates slant TEC using phase tec shifted by the median difference
between phase tec and pseudorange tec
inputs:
data - Panel4D with dimensions (parameter,satellite number,time,data/lli/ssi)
sat_num - the number of the satellite to calculate TEC for
data_interval - the interval made from getInterval(), it's a 2-tuple
marking the beginning and the end of a "good" interval
of data, each value is a Pandas/numpy datetime64
"""
if c2p2(data,sat_num,data_interval):
range_tec = (2.85E9/3.0E8)*(
data['C2',sat_num,data_interval[0]:data_interval[1],'data']
-data['C1',sat_num,data_interval[0]:data_interval[1],'data'])
else:
range_tec = (2.85E9/3.0E8)*(
data['P2',sat_num,data_interval[0]:data_interval[1],'data']
-data['C1',sat_num,data_interval[0]:data_interval[1],'data'])
phase_tec=2.85E9*(data['L1',sat_num,data_interval[0]:data_interval[1],'data']/f1
-data['L2',sat_num,data_interval[0]:data_interval[1],'data']/f2)
tec_difference = np.array(sorted(phase_tec-range_tec))
tec_difference = tec_difference[np.isfinite(tec_difference)]
median_difference = tec_difference[int(len(tec_difference)/2)]
difference_width = tec_difference[int(len(tec_difference)*.75)]-tec_difference[int(len(tec_difference)*.25)]
median_error = difference_width/np.sqrt(len(tec_difference))
tec = phase_tec - median_difference
return tec,median_error
评论列表
文章目录