##// END OF EJS Templates
Add localtime anf fix pause figs
Add localtime anf fix pause figs

File last commit:

r965:156d7465eee3
r1089:d97088881fbc
Show More
MIRAtest.py
320 lines | 11.7 KiB | text/x-python | PythonLexer
ebocanegra
first commit
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 '=============================================='