@@ -119,7 +119,8 class SpectraPlot(Figure): | |||
|
119 | 119 | |
|
120 | 120 | factor = dataOut.normFactor |
|
121 | 121 | |
|
122 |
x = dataOut.get |
|
|
122 | x = dataOut.getFreqRange(1)/1000 | |
|
123 | # x = dataOut.getVelRange(1) | |
|
123 | 124 | y = dataOut.getHeiRange() |
|
124 | 125 | |
|
125 | 126 | z = dataOut.data_spc/factor |
@@ -137,7 +138,7 class SpectraPlot(Figure): | |||
|
137 | 138 | if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)): |
|
138 | 139 | title = title + '_' + 'azimuth,zenith=%2.2f,%2.2f'%(dataOut.azimuth, dataOut.zenith) |
|
139 | 140 | |
|
140 |
xlabel = " |
|
|
141 | xlabel = "Frequency (KHz)" | |
|
141 | 142 | ylabel = "Range (Km)" |
|
142 | 143 | |
|
143 | 144 | if not self.isConfig: |
@@ -360,24 +361,28 class CrossSpectraPlot(Figure): | |||
|
360 | 361 | |
|
361 | 362 | for i in range(self.nplots): |
|
362 | 363 | pair = dataOut.pairsList[pairsIndexList[i]] |
|
364 | ||
|
365 | chan_index0 = dataOut.channelList.index(pair[0]) | |
|
366 | chan_index1 = dataOut.channelList.index(pair[1]) | |
|
367 | ||
|
363 | 368 | str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S")) |
|
364 |
title = "Ch%d: %4.2fdB: %s" %(pair[0], noisedB[ |
|
|
365 |
zdB = 10.*numpy.log10(dataOut.data_spc[ |
|
|
369 | title = "Ch%d: %4.2fdB: %s" %(pair[0], noisedB[chan_index0], str_datetime) | |
|
370 | zdB = 10.*numpy.log10(dataOut.data_spc[chan_index0,:,:]/factor) | |
|
366 | 371 | axes0 = self.axesList[i*self.__nsubplots] |
|
367 | 372 | axes0.pcolor(x, y, zdB, |
|
368 | 373 | xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax, |
|
369 | 374 | xlabel=xlabel, ylabel=ylabel, title=title, |
|
370 | 375 | ticksize=9, colormap=power_cmap, cblabel='') |
|
371 | 376 | |
|
372 |
title = "Ch%d: %4.2fdB: %s" %(pair[1], noisedB[ |
|
|
373 |
zdB = 10.*numpy.log10(dataOut.data_spc[ |
|
|
377 | title = "Ch%d: %4.2fdB: %s" %(pair[1], noisedB[chan_index1], str_datetime) | |
|
378 | zdB = 10.*numpy.log10(dataOut.data_spc[chan_index1,:,:]/factor) | |
|
374 | 379 | axes0 = self.axesList[i*self.__nsubplots+1] |
|
375 | 380 | axes0.pcolor(x, y, zdB, |
|
376 | 381 | xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax, |
|
377 | 382 | xlabel=xlabel, ylabel=ylabel, title=title, |
|
378 | 383 | ticksize=9, colormap=power_cmap, cblabel='') |
|
379 | 384 | |
|
380 |
coherenceComplex = dataOut.data_cspc[pairsIndexList[i],:,:]/numpy.sqrt(dataOut.data_spc[ |
|
|
385 | coherenceComplex = dataOut.data_cspc[pairsIndexList[i],:,:]/numpy.sqrt(dataOut.data_spc[chan_index0,:,:]*dataOut.data_spc[chan_index1,:,:]) | |
|
381 | 386 | coherence = numpy.abs(coherenceComplex) |
|
382 | 387 | # phase = numpy.arctan(-1*coherenceComplex.imag/coherenceComplex.real)*180/numpy.pi |
|
383 | 388 | phase = numpy.arctan2(coherenceComplex.imag, coherenceComplex.real)*180/numpy.pi |
@@ -933,6 +938,125 class PowerProfilePlot(Figure): | |||
|
933 | 938 | wr_period=wr_period, |
|
934 | 939 | thisDatetime=thisDatetime) |
|
935 | 940 | |
|
941 | class SpectraCutPlot(Figure): | |
|
942 | ||
|
943 | isConfig = None | |
|
944 | __nsubplots = None | |
|
945 | ||
|
946 | WIDTHPROF = None | |
|
947 | HEIGHTPROF = None | |
|
948 | PREFIX = 'spc_cut' | |
|
949 | ||
|
950 | def __init__(self): | |
|
951 | self.isConfig = False | |
|
952 | self.__nsubplots = 1 | |
|
953 | ||
|
954 | self.PLOT_CODE = POWER_CODE | |
|
955 | ||
|
956 | self.WIDTH = 700 | |
|
957 | self.HEIGHT = 500 | |
|
958 | self.counter_imagwr = 0 | |
|
959 | ||
|
960 | def getSubplots(self): | |
|
961 | ncol = 1 | |
|
962 | nrow = 1 | |
|
963 | ||
|
964 | return nrow, ncol | |
|
965 | ||
|
966 | def setup(self, id, nplots, wintitle, show): | |
|
967 | ||
|
968 | self.nplots = nplots | |
|
969 | ||
|
970 | ncolspan = 1 | |
|
971 | colspan = 1 | |
|
972 | ||
|
973 | self.createFigure(id = id, | |
|
974 | wintitle = wintitle, | |
|
975 | widthplot = self.WIDTH, | |
|
976 | heightplot = self.HEIGHT, | |
|
977 | show=show) | |
|
978 | ||
|
979 | nrow, ncol = self.getSubplots() | |
|
980 | ||
|
981 | counter = 0 | |
|
982 | for y in range(nrow): | |
|
983 | for x in range(ncol): | |
|
984 | self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan, colspan, 1) | |
|
985 | ||
|
986 | def run(self, dataOut, id, wintitle="", channelList=None, | |
|
987 | xmin=None, xmax=None, ymin=None, ymax=None, | |
|
988 | save=False, figpath='./', figfile=None, show=True, | |
|
989 | ftp=False, wr_period=1, server=None, | |
|
990 | folder=None, username=None, password=None): | |
|
991 | ||
|
992 | ||
|
993 | if channelList == None: | |
|
994 | channelIndexList = dataOut.channelIndexList | |
|
995 | channelList = dataOut.channelList | |
|
996 | else: | |
|
997 | channelIndexList = [] | |
|
998 | for channel in channelList: | |
|
999 | if channel not in dataOut.channelList: | |
|
1000 | raise ValueError, "Channel %d is not in dataOut.channelList" | |
|
1001 | channelIndexList.append(dataOut.channelList.index(channel)) | |
|
1002 | ||
|
1003 | factor = dataOut.normFactor | |
|
1004 | ||
|
1005 | x = dataOut.getFreqRangeTimeResponse()/1000 | |
|
1006 | y = dataOut.getHeiRange() | |
|
1007 | ||
|
1008 | z = dataOut.data_spc/factor | |
|
1009 | z = numpy.where(numpy.isfinite(z), z, numpy.NAN) | |
|
1010 | ||
|
1011 | hei_index = numpy.arange(30)*4 + 60 | |
|
1012 | ||
|
1013 | zdB = 10*numpy.log10(z[0,:,hei_index]) | |
|
1014 | # zdB = numpy.swapaxes(zdB, 0, 1) | |
|
1015 | ||
|
1016 | ||
|
1017 | thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0]) | |
|
1018 | title = wintitle + " Power Profile %s" %(thisDatetime.strftime("%d-%b-%Y")) | |
|
1019 | xlabel = "Frequency (KHz)" | |
|
1020 | ylabel = "Power (dB)" | |
|
1021 | ||
|
1022 | if not self.isConfig: | |
|
1023 | ||
|
1024 | nplots = 1 | |
|
1025 | ||
|
1026 | self.setup(id=id, | |
|
1027 | nplots=nplots, | |
|
1028 | wintitle=wintitle, | |
|
1029 | show=show) | |
|
1030 | ||
|
1031 | if xmin == None: xmin = numpy.nanmin(x)*0.9 | |
|
1032 | if xmax == None: xmax = numpy.nanmax(x)*1.1 | |
|
1033 | if ymin == None: ymin = numpy.nanmin(zdB) | |
|
1034 | if ymax == None: ymax = numpy.nanmax(zdB) | |
|
1035 | ||
|
1036 | self.isConfig = True | |
|
1037 | ||
|
1038 | self.setWinTitle(title) | |
|
1039 | ||
|
1040 | title = "Spectra Cuts: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S")) | |
|
1041 | axes = self.axesList[0] | |
|
1042 | ||
|
1043 | legendlabels = ["Range = %dKm" %y[i] for i in hei_index] | |
|
1044 | ||
|
1045 | axes.pmultilineyaxis( x, zdB, | |
|
1046 | xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, | |
|
1047 | xlabel=xlabel, ylabel=ylabel, title=title, legendlabels=legendlabels, | |
|
1048 | ytick_visible=True, nxticks=5, | |
|
1049 | grid='x') | |
|
1050 | ||
|
1051 | self.draw() | |
|
1052 | ||
|
1053 | self.save(figpath=figpath, | |
|
1054 | figfile=figfile, | |
|
1055 | save=save, | |
|
1056 | ftp=ftp, | |
|
1057 | wr_period=wr_period, | |
|
1058 | thisDatetime=thisDatetime) | |
|
1059 | ||
|
936 | 1060 | class Noise(Figure): |
|
937 | 1061 | |
|
938 | 1062 | isConfig = None |
General Comments 0
You need to be logged in to leave comments.
Login now