def writeClocktoParmdb(ionmodel, average=False, create_new=True): '''if average the average of both polarizations is used, snice BBS can handle only on value at the moment''' if not hasattr(ionmodel, 'Clock'): print("No Clock solutions found, maybe you forgot to run the fit?") return Clock = ionmodel.Clock[:] # times x stations x pol parms = {} parm = {} parm['freqs'] = np.array([.5e9]) parm['freqwidths'] = np.array([1.0e9]) parm['times'] = ionmodel.times[:].ravel() parm['timewidths'] = ionmodel.timewidths[:].ravel() stations = list(ionmodel.stations[:]) pol = ionmodel.polarizations[:] for ist, st in enumerate(stations): if average: Clock_parm = parm.copy() parmname = ':'.join(['Clock', st]) value = 0.5 * ionmodel.Clock[:, ist, 0] + 0.5 * ionmodel.Clock[:, ist] value *= 1.e-9 Clock_parm['values'] = value parms[parmname] = Clock_parm else: for n_pol, ipol in enumerate(pol): Clock_parm = parm.copy() parmname = ':'.join(['Clock', str(ipol), st]) Clock_parm['values'] = 1.e-9 * ionmodel.Clock[:, ist, n_pol] parms[parmname] = Clock_parm #return parms parmdbmain.store_parms(ionmodel.globaldb + '/ionosphere', parms, create_new=create_new)
def writeClocktoParmdb(ionmodel,average=False,create_new = True): '''if average the average of both polarizations is used, snice BBS can handle only on value at the moment''' if not hasattr(ionmodel,'Clock'): print "No Clock solutions found, maybe you forgot to run the fit?" return Clock=ionmodel.Clock[:] # times x stations x pol parms = {} parm = {} parm[ 'freqs' ] = np.array( [ .5e9 ] ) parm[ 'freqwidths' ] = np.array( [ 1.0e9 ] ) parm[ 'times' ] = ionmodel.times[:].ravel() parm[ 'timewidths' ] = ionmodel.timewidths[:].ravel() stations=list(ionmodel.stations[:]) pol=ionmodel.polarizations[:] for ist,st in enumerate(stations): if average: Clock_parm = parm.copy() parmname = ':'.join(['Clock', st]) value=0.5*ionmodel.Clock[:, ist,0]+0.5*ionmodel.Clock[:, ist] value*=1.e-9 Clock_parm[ 'values' ] = value parms[ parmname ] = Clock_parm else: for n_pol,ipol in enumerate(pol): Clock_parm = parm.copy() parmname = ':'.join(['Clock', str(ipol), st]) Clock_parm[ 'values' ] = 1.e-9*ionmodel.Clock[:, ist,n_pol] parms[ parmname ] = Clock_parm #return parms parmdbmain.store_parms( ionmodel.globaldb + '/ionosphere', parms, create_new = create_new)
def writePhaseScreentoParmdb(ionmodel,create_new = True): N_sources=ionmodel.N_sources N_pol = min(len(ionmodel.polarizations),2) if not hasattr(ionmodel,'globaldb'): ionmodel.globaldb='./' if not hasattr(ionmodel,'DirectionalGainEnable'): ionmodel.DirectionalGainEnable=False parms = {} parm = {} parm[ 'freqs' ] = np.array( [ .5e9 ] ) parm[ 'freqwidths' ] = np.array( [ 1.0e9 ] ) parm[ 'times' ] = ionmodel.times[:].ravel() parm[ 'timewidths' ] = ionmodel.timewidths[:].ravel() for n_pol in range(N_pol): for n_station in range(len(ionmodel.stations[:])): station = ionmodel.stations[n_station] for n_source in range(N_sources): if ionmodel.DirectionalGainEnable: source = ionmodel.sources[n_source] identifier = ':'.join([str(n_pol), station, source]) else: identifier = ':'.join([str(n_pol), station]) # TEC TEC_parm = parm.copy() parmname = ':'.join(['TEC', identifier]) TEC_parm[ 'values' ] = ionmodel.TEC[:,n_station,n_source,n_pol] parms[ parmname ] = TEC_parm #TECfit TECfit_parm = parm.copy() parmname = ':'.join(['TECfit', identifier]) TECfit_parm[ 'values' ] = ionmodel.TECfit[:,n_station,n_source,n_pol] parms[ parmname ] = TECfit_parm #TECfit_white TECfit_white_parm = parm.copy() parmname = ':'.join(['TECfit_white', identifier]) TECfit_white_parm[ 'values' ] = ionmodel.TECfit_white[:,n_station,n_source,n_pol] parms[ parmname ] = TECfit_white_parm # Piercepoints for n_station in range(len(ionmodel.stations)): station = ionmodel.stations[n_station] for n_source in range(N_sources): if ionmodel.DirectionalGainEnable: source = ionmodel.sources[n_source] identifier = ':'.join([station, source]) else: identifier = station PiercepointX_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'X', identifier]) print n_source, n_station x = ionmodel.piercepoints[:]['positions_xyz'][:,n_source, n_station,0] PiercepointX_parm['values'] = x parms[ parmname ] = PiercepointX_parm PiercepointY_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'Y', identifier]) y = ionmodel.piercepoints[:]['positions_xyz'][:,n_source, n_station,1] PiercepointY_parm['values'] = array(y) parms[ parmname ] = PiercepointY_parm PiercepointZ_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'Z', identifier]) z = ionmodel.piercepoints[:]['positions_xyz'][:,n_source, n_station,2] PiercepointZ_parm['values'] = z parms[ parmname ] = PiercepointZ_parm Piercepoint_zenithangle_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'zenithangle', identifier]) za = ionmodel.piercepoints[:]['zenith_angles'][:,n_source, n_station] Piercepoint_zenithangle_parm['values'] = za parms[ parmname ] = Piercepoint_zenithangle_parm time_start = ionmodel.times[0] - ionmodel.timewidths[0]/2 time_end = ionmodel.times[-1] + ionmodel.timewidths[-1]/2 parm[ 'times' ] = array([(time_start + time_end) / 2]) parm[ 'timewidths' ] = array([time_end - time_start]) height_parm = parm.copy() height_parm[ 'values' ] = array( ionmodel.piercepoints.attrs.height ) parms[ 'height' ] = height_parm beta_parm = parm.copy() beta_parm[ 'values' ] = array( ionmodel.TECfit_white.attrs.beta ) parms[ 'beta' ] = beta_parm r_0_parm = parm.copy() r_0_parm[ 'values' ] = array( ionmodel.TECfit_white.attrs.r_0 ) parms[ 'r_0' ] = r_0_parm parmdbmain.store_parms( ionmodel.globaldb + '/ionosphere', parms, create_new = create_new)
def writePhaseScreentoParmdb(ionmodel, create_new=True): N_sources = ionmodel.N_sources N_pol = min(len(ionmodel.polarizations), 2) if not hasattr(ionmodel, 'globaldb'): ionmodel.globaldb = './' if not hasattr(ionmodel, 'DirectionalGainEnable'): ionmodel.DirectionalGainEnable = False parms = {} parm = {} parm['freqs'] = np.array([.5e9]) parm['freqwidths'] = np.array([1.0e9]) parm['times'] = ionmodel.times[:].ravel() parm['timewidths'] = ionmodel.timewidths[:].ravel() for n_pol in range(N_pol): for n_station in range(len(ionmodel.stations[:])): station = ionmodel.stations[n_station] for n_source in range(N_sources): if ionmodel.DirectionalGainEnable: source = ionmodel.sources[n_source] identifier = ':'.join([str(n_pol), station, source]) else: identifier = ':'.join([str(n_pol), station]) # TEC TEC_parm = parm.copy() parmname = ':'.join(['TEC', identifier]) TEC_parm['values'] = ionmodel.TEC[:, n_station, n_source, n_pol] parms[parmname] = TEC_parm #TECfit TECfit_parm = parm.copy() parmname = ':'.join(['TECfit', identifier]) TECfit_parm['values'] = ionmodel.TECfit[:, n_station, n_source, n_pol] parms[parmname] = TECfit_parm #TECfit_white TECfit_white_parm = parm.copy() parmname = ':'.join(['TECfit_white', identifier]) TECfit_white_parm['values'] = ionmodel.TECfit_white[:, n_station, n_source, n_pol] parms[parmname] = TECfit_white_parm # Piercepoints for n_station in range(len(ionmodel.stations)): station = ionmodel.stations[n_station] for n_source in range(N_sources): if ionmodel.DirectionalGainEnable: source = ionmodel.sources[n_source] identifier = ':'.join([station, source]) else: identifier = station PiercepointX_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'X', identifier]) print(n_source, n_station) x = ionmodel.piercepoints[:]['positions_xyz'][:, n_source, n_station, 0] PiercepointX_parm['values'] = x parms[parmname] = PiercepointX_parm PiercepointY_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'Y', identifier]) y = ionmodel.piercepoints[:]['positions_xyz'][:, n_source, n_station, 1] PiercepointY_parm['values'] = array(y) parms[parmname] = PiercepointY_parm PiercepointZ_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'Z', identifier]) z = ionmodel.piercepoints[:]['positions_xyz'][:, n_source, n_station, 2] PiercepointZ_parm['values'] = z parms[parmname] = PiercepointZ_parm Piercepoint_zenithangle_parm = parm.copy() parmname = ':'.join(['Piercepoint', 'zenithangle', identifier]) za = ionmodel.piercepoints[:]['zenith_angles'][:, n_source, n_station] Piercepoint_zenithangle_parm['values'] = za parms[parmname] = Piercepoint_zenithangle_parm time_start = ionmodel.times[0] - ionmodel.timewidths[0] / 2 time_end = ionmodel.times[-1] + ionmodel.timewidths[-1] / 2 parm['times'] = array([(time_start + time_end) / 2]) parm['timewidths'] = array([time_end - time_start]) height_parm = parm.copy() height_parm['values'] = array(ionmodel.piercepoints.attrs.height) parms['height'] = height_parm beta_parm = parm.copy() beta_parm['values'] = array(ionmodel.TECfit_white.attrs.beta) parms['beta'] = beta_parm r_0_parm = parm.copy() r_0_parm['values'] = array(ionmodel.TECfit_white.attrs.r_0) parms['r_0'] = r_0_parm parmdbmain.store_parms(ionmodel.globaldb + '/ionosphere', parms, create_new=create_new)