Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)