MIRAtest.py
320 lines
| 11.7 KiB
| text/x-python
|
PythonLexer
|
r965 | import os, sys | |
import glob | |||
import fnmatch | |||
import datetime | |||
import time | |||
import re | |||
import h5py | |||
import numpy | |||
import matplotlib.pyplot as plt | |||
import pylab as plb | |||
from scipy.optimize import curve_fit | |||
from scipy import asarray as ar,exp | |||
from scipy import stats | |||
from duplicity.path import Path | |||
from numpy.ma.core import getdata | |||
SPEED_OF_LIGHT = 299792458 | |||
SPEED_OF_LIGHT = 3e8 | |||
try: | |||
from gevent import sleep | |||
except: | |||
from time import sleep | |||
from schainpy.model.data.jrodata import Spectra | |||
#from schainpy.model.data.BLTRheaderIO import FileHeader, RecordHeader | |||
from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation | |||
#from schainpy.model.io.jroIO_bltr import BLTRReader | |||
from numpy import imag, shape, NaN | |||
startFp = open('/home/erick/Documents/MIRA35C/20160117/20160117_0000.zspc',"rb") | |||
FILE_HEADER = numpy.dtype([ #HEADER 1024bytes | |||
('Hname',numpy.str_,32), #Original file name | |||
('Htime',numpy.str_,32), #Date and time when the file was created | |||
('Hoper',numpy.str_,64), #Name of operator who created the file | |||
('Hplace',numpy.str_,128), #Place where the measurements was carried out | |||
('Hdescr',numpy.str_,256), #Description of measurements | |||
('Hdummy',numpy.str_,512), #Reserved space | |||
#Main chunk | |||
('Msign','<i4'), #Main chunk signature FZKF or NUIG | |||
('MsizeData','<i4'), #Size of data block main chunk | |||
#Processing DSP parameters | |||
('PPARsign','<i4'), #PPAR signature | |||
('PPARsize','<i4'), #PPAR size of block | |||
('PPARprf','<i4'), #Pulse repetition frequency | |||
('PPARpdr','<i4'), #Pulse duration | |||
('PPARsft','<i4'), #FFT length | |||
('PPARavc','<i4'), #Number of spectral (in-coherent) averages | |||
('PPARihp','<i4'), #Number of lowest range gate for moment estimation | |||
('PPARchg','<i4'), #Count for gates for moment estimation | |||
('PPARpol','<i4'), #switch on/off polarimetric measurements. Should be 1. | |||
#Service DSP parameters | |||
('SPARatt','<i4'), #STC attenuation on the lowest ranges on/off | |||
('SPARtx','<i4'), #OBSOLETE | |||
('SPARaddGain0','<f4'), #OBSOLETE | |||
('SPARaddGain1','<f4'), #OBSOLETE | |||
('SPARwnd','<i4'), #Debug only. It normal mode it is 0. | |||
('SPARpos','<i4'), #Delay between sync pulse and tx pulse for phase corr, ns | |||
('SPARadd','<i4'), #"add to pulse" to compensate for delay between the leading edge of driver pulse and envelope of the RF signal. | |||
('SPARlen','<i4'), #Time for measuring txn pulse phase. OBSOLETE | |||
('SPARcal','<i4'), #OBSOLETE | |||
('SPARnos','<i4'), #OBSOLETE | |||
('SPARof0','<i4'), #detection threshold | |||
('SPARof1','<i4'), #OBSOLETE | |||
('SPARswt','<i4'), #2nd moment estimation threshold | |||
('SPARsum','<i4'), #OBSOLETE | |||
('SPARosc','<i4'), #flag Oscillosgram mode | |||
('SPARtst','<i4'), #OBSOLETE | |||
('SPARcor','<i4'), #OBSOLETE | |||
('SPARofs','<i4'), #OBSOLETE | |||
('SPARhsn','<i4'), #Hildebrand div noise detection on noise gate | |||
('SPARhsa','<f4'), #Hildebrand div noise detection on all gates | |||
('SPARcalibPow_M','<f4'), #OBSOLETE | |||
('SPARcalibSNR_M','<f4'), #OBSOLETE | |||
('SPARcalibPow_S','<f4'), #OBSOLETE | |||
('SPARcalibSNR_S','<f4'), #OBSOLETE | |||
('SPARrawGate1','<i4'), #Lowest range gate for spectra saving Raw_Gate1 >=5 | |||
('SPARrawGate2','<i4'), #Number of range gates with atmospheric signal | |||
('SPARraw','<i4'), #flag - IQ or spectra saving on/off | |||
('SPARprc','<i4'),]) #flag - Moment estimation switched on/off | |||
self.Hname= None | |||
self.Htime= None | |||
self.Hoper= None | |||
self.Hplace= None | |||
self.Hdescr= None | |||
self.Hdummy= None | |||
self.Msign=None | |||
self.MsizeData=None | |||
self.PPARsign=None | |||
self.PPARsize=None | |||
self.PPARprf=None | |||
self.PPARpdr=None | |||
self.PPARsft=None | |||
self.PPARavc=None | |||
self.PPARihp=None | |||
self.PPARchg=None | |||
self.PPARpol=None | |||
#Service DSP parameters | |||
self.SPARatt=None | |||
self.SPARtx=None | |||
self.SPARaddGain0=None | |||
self.SPARaddGain1=None | |||
self.SPARwnd=None | |||
self.SPARpos=None | |||
self.SPARadd=None | |||
self.SPARlen=None | |||
self.SPARcal=None | |||
self.SPARnos=None | |||
self.SPARof0=None | |||
self.SPARof1=None | |||
self.SPARswt=None | |||
self.SPARsum=None | |||
self.SPARosc=None | |||
self.SPARtst=None | |||
self.SPARcor=None | |||
self.SPARofs=None | |||
self.SPARhsn=None | |||
self.SPARhsa=None | |||
self.SPARcalibPow_M=None | |||
self.SPARcalibSNR_M=None | |||
self.SPARcalibPow_S=None | |||
self.SPARcalibSNR_S=None | |||
self.SPARrawGate1=None | |||
self.SPARrawGate2=None | |||
self.SPARraw=None | |||
self.SPARprc=None | |||
header = numpy.fromfile(fp, FILE_HEADER,1) | |||
''' numpy.fromfile(file, dtype, count, sep='') | |||
file : file or str | |||
Open file object or filename. | |||
dtype : data-type | |||
Data type of the returned array. For binary files, it is used to determine | |||
the size and byte-order of the items in the file. | |||
count : int | |||
Number of items to read. -1 means all items (i.e., the complete file). | |||
sep : str | |||
Separator between items if file is a text file. Empty ("") separator means | |||
the file should be treated as binary. Spaces (" ") in the separator match zero | |||
or more whitespace characters. A separator consisting only of spaces must match | |||
at least one whitespace. | |||
''' | |||
Hname= str(header['Hname'][0]) | |||
Htime= str(header['Htime'][0]) | |||
Hoper= str(header['Hoper'][0]) | |||
Hplace= str(header['Hplace'][0]) | |||
Hdescr= str(header['Hdescr'][0]) | |||
Hdummy= str(header['Hdummy'][0]) | |||
Msign=header['Msign'][0] | |||
MsizeData=header['MsizeData'][0] | |||
PPARsign=header['PPARsign'][0] | |||
PPARsize=header['PPARsize'][0] | |||
PPARprf=header['PPARprf'][0] | |||
PPARpdr=header['PPARpdr'][0] | |||
PPARsft=header['PPARsft'][0] | |||
PPARavc=header['PPARavc'][0] | |||
PPARihp=header['PPARihp'][0] | |||
PPARchg=header['PPARchg'][0] | |||
PPARpol=header['PPARpol'][0] | |||
#Service DSP parameters | |||
SPARatt=header['SPARatt'][0] | |||
SPARtx=header['SPARtx'][0] | |||
SPARaddGain0=header['SPARaddGain0'][0] | |||
SPARaddGain1=header['SPARaddGain1'][0] | |||
SPARwnd=header['SPARwnd'][0] | |||
SPARpos=header['SPARpos'][0] | |||
SPARadd=header['SPARadd'][0] | |||
SPARlen=header['SPARlen'][0] | |||
SPARcal=header['SPARcal'][0] | |||
SPARnos=header['SPARnos'][0] | |||
SPARof0=header['SPARof0'][0] | |||
SPARof1=header['SPARof1'][0] | |||
SPARswt=header['SPARswt'][0] | |||
SPARsum=header['SPARsum'][0] | |||
SPARosc=header['SPARosc'][0] | |||
SPARtst=header['SPARtst'][0] | |||
SPARcor=header['SPARcor'][0] | |||
SPARofs=header['SPARofs'][0] | |||
SPARhsn=header['SPARhsn'][0] | |||
SPARhsa=header['SPARhsa'][0] | |||
SPARcalibPow_M=header['SPARcalibPow_M'][0] | |||
SPARcalibSNR_M=header['SPARcalibSNR_M'][0] | |||
SPARcalibPow_S=header['SPARcalibPow_S'][0] | |||
SPARcalibSNR_S=header['SPARcalibSNR_S'][0] | |||
SPARrawGate1=header['SPARrawGate1'][0] | |||
SPARrawGate2=header['SPARrawGate2'][0] | |||
SPARraw=header['SPARraw'][0] | |||
SPARprc=header['SPARprc'][0] | |||
SRVI_STRUCTURE = numpy.dtype([ | |||
('frame_cnt','<u4'),# | |||
('time_t','<u4'), # | |||
('tpow','<f4'), # | |||
('npw1','<f4'), # | |||
('npw2','<f4'), # | |||
('cpw1','<f4'), # | |||
('pcw2','<f4'), # | |||
('ps_err','<u4'), # | |||
('te_err','<u4'), # | |||
('rc_err','<u4'), # | |||
('grs1','<u4'), # | |||
('grs2','<u4'), # | |||
('azipos','<f4'), # | |||
('azivel','<f4'), # | |||
('elvpos','<f4'), # | |||
('elvvel','<f4'), # | |||
('northAngle','<f4'), # | |||
('microsec','<u4'), # | |||
('azisetvel','<f4'), # | |||
('elvsetpos','<f4'), # | |||
('RadarConst','<f4'),]) # | |||
JUMP_STRUCTURE = numpy.dtype([ | |||
('jump','<u140'),# | |||
('SizeOfDataBlock1',numpy.str_,32),# | |||
('jump','<i4'),# | |||
('DataBlockTitleSRVI1',numpy.str_,32),# | |||
('SizeOfSRVI1','<i4'),])# | |||
#frame_cnt=0, time_t= 0, tpow=0, npw1=0, npw2=0, | |||
#cpw1=0, pcw2=0, ps_err=0, te_err=0, rc_err=0, grs1=0, | |||
#grs2=0, azipos=0, azivel=0, elvpos=0, elvvel=0, northangle=0, | |||
#microsec=0, azisetvel=0, elvsetpos=0, RadarConst=0 | |||
frame_cnt = frame_cnt | |||
dwell = time_t | |||
tpow = tpow | |||
npw1 = npw1 | |||
npw2 = npw2 | |||
cpw1 = cpw1 | |||
pcw2 = pcw2 | |||
ps_err = ps_err | |||
te_err = te_err | |||
rc_err = rc_err | |||
grs1 = grs1 | |||
grs2 = grs2 | |||
azipos = azipos | |||
azivel = azivel | |||
elvpos = elvpos | |||
elvvel = elvvel | |||
northAngle = northAngle | |||
microsec = microsec | |||
azisetvel = azisetvel | |||
elvsetpos = elvsetpos | |||
RadarConst5 = RadarConst | |||
#print fp | |||
#startFp = open('/home/erick/Documents/Data/huancayo.20161019.22.fdt',"rb") #The method tell() returns the current position of the file read/write pointer within the file. | |||
#startFp = open(fp,"rb") #The method tell() returns the current position of the file read/write pointer within the file. | |||
#RecCounter=0 | |||
#Off2StartNxtRec=811248 | |||
#print 'OffsetStartHeader ',self.OffsetStartHeader,'RecCounter ', self.RecCounter, 'Off2StartNxtRec ' , self.Off2StartNxtRec | |||
#OffRHeader= self.OffsetStartHeader + self.RecCounter*self.Off2StartNxtRec | |||
#startFp.seek(OffRHeader, os.SEEK_SET) | |||
print 'debe ser 48, RecCounter*811248', self.OffsetStartHeader,self.RecCounter,self.Off2StartNxtRec | |||
print 'Posicion del bloque: ',OffRHeader | |||
header = numpy.fromfile(startFp,SRVI_STRUCTURE,1) | |||
self.frame_cnt = header['frame_cnt'][0]# | |||
self.time_t = header['frame_cnt'][0] # | |||
self.tpow = header['frame_cnt'][0] # | |||
self.npw1 = header['frame_cnt'][0] # | |||
self.npw2 = header['frame_cnt'][0] # | |||
self.cpw1 = header['frame_cnt'][0] # | |||
self.pcw2 = header['frame_cnt'][0] # | |||
self.ps_err = header['frame_cnt'][0] # | |||
self.te_err = header['frame_cnt'][0] # | |||
self.rc_err = header['frame_cnt'][0] # | |||
self.grs1 = header['frame_cnt'][0] # | |||
self.grs2 = header['frame_cnt'][0] # | |||
self.azipos = header['frame_cnt'][0] # | |||
self.azivel = header['frame_cnt'][0] # | |||
self.elvpos = header['frame_cnt'][0] # | |||
self.elvvel = header['frame_cnt'][0] # | |||
self.northAngle = header['frame_cnt'][0] # | |||
self.microsec = header['frame_cnt'][0] # | |||
self.azisetvel = header['frame_cnt'][0] # | |||
self.elvsetpos = header['frame_cnt'][0] # | |||
self.RadarConst = header['frame_cnt'][0] # | |||
self.ipp= 0.5*(SPEED_OF_LIGHT/self.PRFhz) | |||
self.RHsize = 180+20*self.nChannels | |||
self.Datasize= self.nProfiles*self.nChannels*self.nHeights*2*4 | |||
#print 'Datasize',self.Datasize | |||
endFp = self.OffsetStartHeader + self.RecCounter*self.Off2StartNxtRec | |||
print '==============================================' | |||
print '==============================================' | |||