def test_generateSamples1(): ''' Sample generation test: - GPS L1/L2 - No noise - Low pass filter type - No group delays - Two process spawning ''' outputFile = file('/dev/null', 'wt') logFile = file('/dev/null', 'wt') sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) sv0.setL2CEnabled(True) sv_list = [sv0] outputConfig = HighRateConfig encoder = GPSL1L2BitEncoder(outputConfig) time0S = 0. nSamples = 9999 noiseSigma = None tcxo = None filterType = 'lowpass' groupDelays = False threadCount = 2 pbar = None # Execute main sample generation function with all supported SV types and # bands. An error shall lead to the test failure. # This time execution is performed in a separate process. generateSamples(outputFile, sv_list, encoder, time0S, nSamples, outputConfig, noiseSigma, tcxo, filterType, groupDelays, logFile, threadCount, pbar)
def test_Task_update1(): ''' Task object parameter update test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly(()) signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) userTime0_s = 123. nSamples = 1024 firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) assert task.nSamples == nSamples assert task.firstSampleIndex == firstSampleIndex assert task.userTime0_s == userTime0_s assert task.noise.shape == (outputConfig.N_GROUPS, nSamples) assert isinstance(task.signals, numpy.ndarray) assert task.signals.shape == (outputConfig.N_GROUPS, nSamples)
def test_Task_generate0(): ''' Task object generation test ''' outputConfig = HighRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1., )) signalFilters = [ LowPassFilter(outputConfig, outputConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ), None, None, None ] groupDelays = True bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) nSamples = 1024 userTime0_s = 0. firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) inputParams, sigs, debugData = task.perform() assert inputParams[0] == userTime0_s assert inputParams[1] == nSamples assert inputParams[2] == firstSampleIndex assert debugData is None assert sigs.shape == (outputConfig.N_GROUPS, nSamples)
def test_Task_generate1(): ''' Task object generation test ''' outputConfig = HighRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = None signalFilters = [None] * 4 groupDelays = True bands = [outputConfig.GPS.L1] generateDebug = True task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) nSamples = 1024 userTime0_s = 0. firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) inputParams, sigs, debugData = task.perform() assert inputParams[0] == userTime0_s assert inputParams[1] == nSamples assert inputParams[2] == firstSampleIndex assert isinstance(debugData, dict) assert sigs.shape == (outputConfig.N_GROUPS, nSamples)
def test_Task_computeGroupTimeVectors1(): ''' Task object group time vector test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1., )) signalFilters = [None] * 4 groupDelays = True bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) nSamples = 1024 userTime0_s = 0. firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) userTimeAll_s = task.computeTimeVector() result = task.computeGroupTimeVectors(userTimeAll_s) assert isinstance(result, list) for i in range(outputConfig.N_GROUPS): assert (result[i] == userTimeAll_s + outputConfig.GROUP_DELAYS[i]).all()
def test_Task_init(): ''' Task object initialization test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly(()) signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) assert task.outputConfig == outputConfig assert task.bands == bands assert task.generateDebug == generateDebug assert task.groupDelays == groupDelays assert task.noiseParams == noiseParams assert task.signalFilters == signalFilters assert task.signalSources == signalSources assert task.tcxo == tcxo assert isinstance(task.noise, numpy.ndarray) assert task.noise.shape == (outputConfig.N_GROUPS, outputConfig.SAMPLE_BATCH_SIZE) assert isinstance(task.signals, numpy.ndarray) assert task.signals.shape == (outputConfig.N_GROUPS, outputConfig.SAMPLE_BATCH_SIZE)
def test_Task_createNoise(): ''' Task object noise helper test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1., )) signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) userTime0_s = 123. nSamples = outputConfig.SAMPLE_BATCH_SIZE firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) noiseMatrix = task.createNoise() assert isinstance(noiseMatrix, numpy.ndarray) assert noiseMatrix.shape == (outputConfig.N_GROUPS, nSamples) assert numpy.mean(noiseMatrix) < 0.1 assert (noiseMatrix != 0.).sum() > 1000
def test_Worker_init(): ''' Worker object initialization ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = None signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False worker = Worker(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) assert worker.totalWaitTime_s == 0. assert worker.totalExecTime_s == 0. assert worker.outputConfig == outputConfig assert worker.signalSources == signalSources assert worker.noiseParams == noiseParams assert worker.tcxo == tcxo assert worker.signalFilters == signalFilters assert worker.groupDelays == groupDelays assert worker.bands == bands assert worker.generateDebug == generateDebug
def test_Task_computeTcxoVector1(): ''' Task object TCXO helper test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = None signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) userTime0_s = 123. nSamples = 1024 firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) tcxo = task.computeTcxoVector() # TCXO object is None because TCXO function is not provided assert tcxo is None
def test_Task_createNoise(): ''' Task object noise helper test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1.,)) signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) userTime0_s = 123. nSamples = outputConfig.SAMPLE_BATCH_SIZE firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) noiseMatrix = task.createNoise() assert isinstance(noiseMatrix, numpy.ndarray) assert noiseMatrix.shape == (outputConfig.N_GROUPS, nSamples) assert numpy.mean(noiseMatrix) < 0.1 assert (noiseMatrix != 0.).sum() > 1000
def test_Task_computeTcxoVector2(): ''' Task object TCXO helper test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1.,)) signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) userTime0_s = 123. nSamples = 1024 firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) tcxoVector = task.computeTcxoVector() assert isinstance(tcxoVector, numpy.ndarray) assert tcxoVector.shape == (1024,) assert (tcxoVector != 0.).all()
def test_Task_computeTcxoVector2(): ''' Task object TCXO helper test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1., )) signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) userTime0_s = 123. nSamples = 1024 firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) tcxoVector = task.computeTcxoVector() assert isinstance(tcxoVector, numpy.ndarray) assert tcxoVector.shape == (1024, ) assert (tcxoVector != 0.).all()
def test_Task_computeGroupTimeVectors1(): ''' Task object group time vector test ''' outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1.,)) signalFilters = [None] * 4 groupDelays = True bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) nSamples = 1024 userTime0_s = 0. firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) userTimeAll_s = task.computeTimeVector() result = task.computeGroupTimeVectors(userTimeAll_s) assert isinstance(result, list) for i in range(outputConfig.N_GROUPS): assert (result[i] == userTimeAll_s + outputConfig.GROUP_DELAYS[i]).all()
def test_Task_generate0(): ''' Task object generation test ''' outputConfig = HighRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = TCXOPoly((1.,)) signalFilters = [LowPassFilter(outputConfig, outputConfig.GPS.L1.INTERMEDIATE_FREQUENCY_HZ), None, None, None] groupDelays = True bands = [outputConfig.GPS.L1] generateDebug = False task = Task(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) nSamples = 1024 userTime0_s = 0. firstSampleIndex = 1 task.update(userTime0_s, nSamples, firstSampleIndex) inputParams, sigs, debugData = task.perform() assert inputParams[0] == userTime0_s assert inputParams[1] == nSamples assert inputParams[2] == firstSampleIndex assert debugData is None assert sigs.shape == (outputConfig.N_GROUPS, nSamples)
def test_Task_runOnce0(): ''' Worker object loop cycle test ''' class MyQueue(object): def __init__(self): self.queue = [] def get(self): return self.queue.pop(0) def put(self, obj): return self.queue.append(obj) outputConfig = NormalRateConfig sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) signalSources = [sv0] noiseParams = NoiseParameters(outputConfig.SAMPLE_RATE_HZ, 1.) tcxo = None signalFilters = [None] * 4 groupDelays = False bands = [outputConfig.GPS.L1] generateDebug = False worker = Worker(outputConfig, signalSources, noiseParams, tcxo, signalFilters, groupDelays, bands, generateDebug) # worker.start() worker.queueIn = MyQueue() worker.queueOut = MyQueue() nSamples = 1024 userTime0_s = 0. firstSampleIndex = 1l params = (userTime0_s, nSamples, firstSampleIndex) worker.queueIn.put(params) task = worker.createTask() worker.run_once(task) result = worker.queueOut.get() (inputParams, signalSamples, debugData) = result assert inputParams[0] == userTime0_s assert inputParams[1] == nSamples assert inputParams[2] == firstSampleIndex assert debugData is None assert signalSamples.shape == (outputConfig.N_GROUPS, nSamples) worker.queueIn.put(None) worker.run_once(task) worker.queueOut.get()
def test_computeEnabledBands1(): ''' Bands selection test ''' sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) sv1 = GLOSatellite(0) sv1.setL2Enabled(True) bandMap = computeEnabledBands([sv0, sv1], NormalRateConfig) assert bandMap[NormalRateConfig.GPS.L1.NAME] == True assert bandMap[NormalRateConfig.GPS.L2.NAME] == False assert bandMap[NormalRateConfig.GLONASS.L1.NAME] == False assert bandMap[NormalRateConfig.GLONASS.L2.NAME] == True
def test_generateSamples0(): ''' Sample generation test: - GPS L1/L2 - Noise sigma defined - Band pass filter type - No group delays - No process spawning ''' outputFile = file('/dev/null', 'wt') logFile = file('/dev/null', 'wt') sv0 = GPSSatellite(1) sv0.setL1CAEnabled(True) sv0.setL2CEnabled(True) sv_list = [sv0] outputConfig = HighRateConfig encoder = GPSL1L2BitEncoder(outputConfig) time0S = 0. nSamples = HighRateConfig.SAMPLE_BATCH_SIZE + 10000 noiseSigma = 1. tcxo = None filterType = 'bandpass' groupDelays = False threadCount = 0 class Pbar(object): def update(self, value): pass pbar = Pbar() # Execute main sample generation function with all supported SV types and # bands. An error shall lead to the test failure. # This time execution is performed in the test process. generateSamples(outputFile, sv_list, encoder, time0S, nSamples, outputConfig, noiseSigma, tcxo, filterType, groupDelays, logFile, threadCount, pbar)
def __MapTo_GPSSatellite(self, data): prn = data['prn'] doppler = dopplerOF.fromMapForm(data['doppler']) amplitude = amplitudeOF.fromMapForm(data['amplitude']) l1caEnabled = data['l1caEnabled'] l2cEnabled = data['l2cEnabled'] l1caMessage = messageOF.fromMapForm(data['l1caMessage']) l2cMessage = messageOF.fromMapForm(data['l2cMessage']) clCodeType = data['l2clCodeType'] codeDopplerIgnored = data['codeDopplerIgnored'] satellite = GPSSatellite(prn) satellite.setAmplitude(amplitude) satellite.setDoppler(doppler) satellite.setL1CAEnabled(l1caEnabled) satellite.setL2CEnabled(l2cEnabled) satellite.setL1CAMessage(l1caMessage) satellite.setL2CMessage(l2cMessage) satellite.setL2CLCodeType(clCodeType) satellite.setCodeDopplerIgnored(codeDopplerIgnored) return satellite
def test_GPSSV_getBatchSignals2(): ''' GPS SV signal generation: L1 C/A ''' sv = GPSSatellite(1) start = 0. stop = start + (100. / float(NormalRateConfig.SAMPLE_RATE_HZ)) userTimeAll_s = numpy.linspace(start, stop, 100, endpoint=False, dtype=numpy.float) samples = numpy.zeros((2, 100)) noiseParams = NoiseParameters(NormalRateConfig.SAMPLE_RATE_HZ, 1.0) sv.setL1CAEnabled(True) result = sv.getBatchSignals(userTimeAll_s, samples, NormalRateConfig, noiseParams, NormalRateConfig.GPS.L1, False) assert len(result) == 1 assert result[0]['type'] == 'GPSL1' assert result[0]['doppler'] is None assert (samples[0] != 0).any() assert (samples[1] == 0).all()
def test_GPSSV_bands(): ''' GPS SV band configurations ''' sv = GPSSatellite(1) assert not sv.isBandEnabled(NormalRateConfig.GPS.L1, NormalRateConfig) assert not sv.isBandEnabled(NormalRateConfig.GPS.L2, NormalRateConfig) assert not sv.isBandEnabled(NormalRateConfig.GLONASS.L1, NormalRateConfig) assert not sv.isBandEnabled(NormalRateConfig.GLONASS.L2, NormalRateConfig) assert not sv.isL1CAEnabled() assert not sv.isL2CEnabled() sv.setL1CAEnabled(True) assert sv.isBandEnabled(NormalRateConfig.GPS.L1, NormalRateConfig) assert not sv.isBandEnabled(NormalRateConfig.GPS.L2, NormalRateConfig) assert sv.isL1CAEnabled() assert not sv.isL2CEnabled() sv.setL2CEnabled(True) sv.setL1CAEnabled(False) assert not sv.isBandEnabled(NormalRateConfig.GPS.L1, NormalRateConfig) assert sv.isBandEnabled(NormalRateConfig.GPS.L2, NormalRateConfig) assert not sv.isL1CAEnabled() assert sv.isL2CEnabled()
def test_GPSSV_getBatchSignals2(): ''' GPS SV signal generation: L1 C/A ''' sv = GPSSatellite(1) start = 0. stop = start + (100. / float(NormalRateConfig.SAMPLE_RATE_HZ)) userTimeAll_s = numpy.linspace( start, stop, 100, endpoint=False, dtype=numpy.float) samples = numpy.zeros((2, 100)) noiseParams = NoiseParameters(NormalRateConfig.SAMPLE_RATE_HZ, 1.0) sv.setL1CAEnabled(True) result = sv.getBatchSignals(userTimeAll_s, samples, NormalRateConfig, noiseParams, NormalRateConfig.GPS.L1, False) assert len(result) == 1 assert result[0]['type'] == 'GPSL1' assert result[0]['doppler'] is None assert (samples[0] != 0).any() assert (samples[1] == 0).all()