def test_AmplitudePoly_SNR3():
  '''
  Test AmplitudePoly SNR_0 computation  (second order polynomial, power units)
  '''
  noiseParams = NoiseParameters(1e6, 1.)
  ampl = AmplitudePoly(AmplitudeBase.UNITS_POWER, (1., 1.))
  SNR = 10. * numpy.log10(noiseParams.getFreqTimesTau() / 4.)
  assert SNR == ampl.computeSNR(noiseParams)
def test_AmplitudePoly_SNR5():
  '''
  Test AmplitudePoly SNR_0 computation  (second order polynomial, SNR dB units)
  '''
  noiseParams = NoiseParameters(1e6, 1.)
  ampl = AmplitudePoly(AmplitudeBase.UNITS_SNR_DB, (1., 1.))
  SNR = 1.
  assert SNR == ampl.computeSNR(noiseParams)
def test_AmplitudePoly_SNR5():
    '''
  Test AmplitudePoly SNR_0 computation  (second order polynomial, SNR dB units)
  '''
    noiseParams = NoiseParameters(1e6, 1.)
    ampl = AmplitudePoly(AmplitudeBase.UNITS_SNR_DB, (1., 1.))
    SNR = 1.
    assert SNR == ampl.computeSNR(noiseParams)
def test_AmplitudePoly_SNR1():
  '''
  Test AmplitudePoly SNR_0 computation (first order polynomial)
  '''
  noiseParams = NoiseParameters(1e6, 1.)
  ampl = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, (1.,))
  SNR = 10. * numpy.log10(noiseParams.getFreqTimesTau() / 4.)
  assert SNR == ampl.computeSNR(noiseParams)
def test_AmplitudePoly_SNR3():
    '''
  Test AmplitudePoly SNR_0 computation  (second order polynomial, power units)
  '''
    noiseParams = NoiseParameters(1e6, 1.)
    ampl = AmplitudePoly(AmplitudeBase.UNITS_POWER, (1., 1.))
    SNR = 10. * numpy.log10(noiseParams.getFreqTimesTau() / 4.)
    assert SNR == ampl.computeSNR(noiseParams)
def test_AmplitudePoly_SNR1():
    '''
  Test AmplitudePoly SNR_0 computation (first order polynomial)
  '''
    noiseParams = NoiseParameters(1e6, 1.)
    ampl = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, (1., ))
    SNR = 10. * numpy.log10(noiseParams.getFreqTimesTau() / 4.)
    assert SNR == ampl.computeSNR(noiseParams)
def test_AmplitudePoly_apply2():
  '''
  Test AmplitudePoly computation (first order polynomial: 1.0*t+1.0)
  '''
  noiseParams = NoiseParameters(1e6, 1.)
  ampl = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, (1., 1.))
  userTimeAll_s = numpy.asarray([0., 1.], dtype=numpy.float)
  signal = numpy.asarray([0., 1.], dtype=numpy.float)
  signal = ampl.applyAmplitude(signal, userTimeAll_s, noiseParams)
  assert (numpy.abs(signal - numpy.asarray([0., 2.], dtype=numpy.float))
          < EPSILON).all()
def test_AmplitudePoly_apply2():
    '''
  Test AmplitudePoly computation (first order polynomial: 1.0*t+1.0)
  '''
    noiseParams = NoiseParameters(1e6, 1.)
    ampl = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, (1., 1.))
    userTimeAll_s = numpy.asarray([0., 1.], dtype=numpy.float)
    signal = numpy.asarray([0., 1.], dtype=numpy.float)
    signal = ampl.applyAmplitude(signal, userTimeAll_s, noiseParams)
    assert (numpy.abs(signal - numpy.asarray([0., 2.], dtype=numpy.float)) <
            EPSILON).all()
def test_AmplitudePoly_str0():
    '''
  String representation test for polynomial amplitude object
  '''
    value = str(AmplitudePoly(AmplitudeBase.UNITS_SNR, ()))
    assert value.find('=SNR') >= 0
    assert value.find('()') >= 0
    assert value.find('Poly') >= 0
    value = str(AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, (1., )))
    assert value.find('=AMP') >= 0
    assert value.find('(1.0,)') >= 0
    assert value.find('Poly') >= 0
def test_AmplitudePoly_init():
    '''
  Test AmplitudePoly init
  '''
    ampl = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, ())
    assert isinstance(ampl, AmplitudeBase)
    assert ampl.units == AmplitudeBase.UNITS_AMPLITUDE
Exemple #11
0
def test_factories():
    '''
  Test factories
  '''
    to_map_and_back(AFO, AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, (1, )))
    to_map_and_back(AFO,
                    AmplitudeSine(AmplitudeBase.UNITS_AMPLITUDE, 1., 2., 1.))
    value_error(AFO)

    to_map_and_back(DFO, DopplerPoly(1000., 77., (1., 1.)))
    to_map_and_back(DFO, DopplerSine(1000., 55., 4., 3., 5.))
    value_error(DFO)

    to_map_and_back(MFO, BlockMessage(np.random.rand(1023)))
    to_map_and_back(MFO, CNAVMessage(1))
    to_map_and_back(MFO, ConstMessage(1))
    to_map_and_back(MFO, LNAVMessage(1))
    to_map_and_back(MFO, ZeroOneMessage())
    value_error(MFO)

    to_map_and_back(SFO, GPSSatellite(1))
    value_error(SFO)

    to_map_and_back(TFO, PolyTcxo((1., 1.)))
    to_map_and_back(TFO, SineTcxo(0., 1e6, 0.004))
    value_error(TFO)
Exemple #12
0
        def doUpdate(self, sv, parser, namespace, values, option_string):
            amplitude_units = AMP_MAP[namespace.amplitude_units]

            if namespace.amplitude_type == "poly":
                coeffs = []
                hasHighOrder = False

                srcA = [
                    namespace.amplitude_a3, namespace.amplitude_a2,
                    namespace.amplitude_a1, namespace.amplitude_a0
                ]
                for a in srcA:
                    if a is not None:
                        coeffs.append(a)
                        hasHighOrder = True
                    elif hasHighOrder:
                        coeffs.append(0.)
                amplitude = AmplitudePoly(amplitude_units, tuple(coeffs))
            elif namespace.amplitude_type == "sine":
                initial = 1.
                ampl = 0.5
                period_s = 1.
                if namespace.amplitude_a0 is not None:
                    initial = namespace.amplitude_a0
                if namespace.amplitude_a1 is not None:
                    ampl = namespace.amplitude_a1
                if namespace.amplitude_period is not None:
                    period_s = namespace.amplitude_period

                amplitude = AmplitudeSine(amplitude_units, initial, ampl,
                                          period_s)
            else:
                raise ValueError("Unsupported amplitude type")
            sv.setAmplitude(amplitude)
Exemple #13
0
    def __init__(self, svName):
        '''
    Constructor.

    Parameters
    ----------
    svName : string
      Satellite name
    '''
        super(Satellite, self).__init__()
        self.svName = svName
        self.doppler = zeroDoppler(0., 0., 1.)
        self.amplitude = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, ())
Exemple #14
0
def test_DopplerZero_batch():
  '''
  Verifies execution of the batch computation with zero doppler.
  '''
  doppler = zeroDoppler(1000., 50., GPS.L1CA.CENTER_FREQUENCY_HZ)
  userTimeAll_s = numpy.linspace(0.,
                                 NormalRateConfig.SAMPLE_BATCH_SIZE /
                                 NormalRateConfig.SAMPLE_RATE_HZ,
                                 NormalRateConfig.SAMPLE_BATCH_SIZE,
                                 endpoint=False)
  amplitude = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, ())
  noiseParams = NoiseParameters(GPS.L1CA.CENTER_FREQUENCY_HZ, 0.)
  message = Message(1)
  code = PrnCode(1)
  res = doppler.computeBatch(userTimeAll_s,
                             amplitude,
                             noiseParams,
                             GPS.L1CA,
                             NormalRateConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ,
                             message,
                             code,
                             NormalRateConfig,
                             True)

  signal1, doppler1 = res

  doppler.setCodeDopplerIgnored(True)
  res = doppler.computeBatch(userTimeAll_s,
                             amplitude,
                             noiseParams,
                             GPS.L1CA,
                             NormalRateConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ,
                             message,
                             code,
                             NormalRateConfig,
                             True)
  signal2, doppler2 = res

  assert (signal1 == signal2).all()
  assert (doppler1 == doppler2).all()
Exemple #15
0
def test_DopplerBase_computeBatch():
  '''
  Test signal generation
  '''
  doppler = DopplerBase(distance0_m=0., tec_epm2=0.)
  userTimeAll_s = numpy.asarray([0.])
  amplitude = AmplitudePoly(AmplitudeBase.UNITS_AMPLITUDE, ())
  noiseParams = NoiseParameters(NormalRateConfig.SAMPLE_RATE_HZ, 0.)
  message = Message(1)
  code = PrnCode(1)
  try:
    doppler.computeBatch(userTimeAll_s,
                         amplitude,
                         noiseParams,
                         GPS.L1CA,
                         NormalRateConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ,
                         message,
                         code,
                         NormalRateConfig,
                         False)
    assert False
  except NotImplementedError:
    pass