##// END OF EJS Templates
avance spectros en alturas
Alexander Valdez -
r163:dc0275970b25
parent child
Show More
@@ -6,6 +6,8 $Id$
6
6
7 import os, sys
7 import os, sys
8 import numpy
8 import numpy
9
10 import pyfits
9 import glob
11 import glob
10 import fnmatch
12 import fnmatch
11 import time, datetime
13 import time, datetime
@@ -19,6 +21,8 from JRODataIO import JRODataWriter
19
21
20 from Data.JROData import Spectra
22 from Data.JROData import Spectra
21
23
24 from Data.JROData import SpectraHeis
25
22 class SpectraReader(JRODataReader):
26 class SpectraReader(JRODataReader):
23 """
27 """
24 Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura
28 Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura
@@ -448,11 +452,7 class SpectraWriter(JRODataWriter):
448 self.wrPairList = self.dataOutObj.pairsList
452 self.wrPairList = self.dataOutObj.pairsList
449
453
450 self.nWrPairs = self.dataOutObj.nPairs
454 self.nWrPairs = self.dataOutObj.nPairs
451
455
452
453
454
455
456 # self.data_spc = None
456 # self.data_spc = None
457 # self.data_cspc = None
457 # self.data_cspc = None
458 # self.data_dc = None
458 # self.data_dc = None
@@ -778,4 +778,128 class SpectraWriter(JRODataWriter):
778
778
779 self.processingHeaderObj.size = processingHeaderSize
779 self.processingHeaderObj.size = processingHeaderSize
780
780
781 No newline at end of file
781
782
783 class FITS:
784 name=None
785 format=None
786 array =None
787 data =None
788 thdulist=None
789
790 def __init__(self):
791
792 pass
793
794 def setColF(self,name,format,array):
795 self.name=name
796 self.format=format
797 self.array=array
798 a1=numpy.array([self.array],dtype=numpy.float32)
799 self.col1 = pyfits.Column(name=self.name, format=self.format, array=a1)
800 return self.col1
801
802 # def setColP(self,name,format,data):
803 # self.name=name
804 # self.format=format
805 # self.data=data
806 # a2=numpy.array([self.data],dtype=numpy.float32)
807 # self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
808 # return self.col2
809
810 def writeHeader(self,):
811 pass
812
813 def writeData(self,name,format,data):
814 self.name=name
815 self.format=format
816 self.data=data
817 a2=numpy.array([self.data],dtype=numpy.float32)
818 self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
819 return self.col2
820
821 def cFImage(self,n):
822 self.hdu= pyfits.PrimaryHDU(n)
823 return self.hdu
824
825 def Ctable(self,col1,col2,col3,col4,col5,col6,col7,col8,col9):
826 self.cols=pyfits.ColDefs( [col1,col2,col3,col4,col5,col6,col7,col8,col9])
827 self.tbhdu = pyfits.new_table(self.cols)
828 return self.tbhdu
829
830 def CFile(self,hdu,tbhdu):
831 self.thdulist=pyfits.HDUList([hdu,tbhdu])
832
833 def wFile(self,filename):
834 self.thdulist.writeto(filename)
835
836 class SpectraHeisWriter():
837 i=0
838 def __init__(self, dataOutObj):
839 self.wrObj = FITS()
840 self.dataOutObj = dataOutObj
841
842 def isNumber(str):
843 """
844 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
845
846 Excepciones:
847 Si un determinado string no puede ser convertido a numero
848 Input:
849 str, string al cual se le analiza para determinar si convertible a un numero o no
850
851 Return:
852 True : si el string es uno numerico
853 False : no es un string numerico
854 """
855 try:
856 float( str )
857 return True
858 except:
859 return False
860
861 def setup(self, wrpath,):
862
863 if not(os.path.exists(wrpath)):
864 os.mkdir(wrpath)
865
866 self.wrpath = wrpath
867 self.setFile = 0
868
869 def putData(self):
870 # self.wrObj.writeHeader(nChannels=self.dataOutObj.nChannels, nFFTPoints=self.dataOutObj.nFFTPoints)
871 #name = self.dataOutObj.utctime
872 name= time.localtime( self.dataOutObj.utctime)
873 ext=".fits"
874 #folder='D%4.4d%3.3d'%(name.tm_year,name.tm_yday)
875 subfolder = 'D%4.4d%3.3d' % (name.tm_year,name.tm_yday)
876
877 doypath = os.path.join( self.wrpath, subfolder )
878 if not( os.path.exists(doypath) ):
879 os.mkdir(doypath)
880 self.setFile += 1
881 file = 'D%4.4d%3.3d%3.3d%s' % (name.tm_year,name.tm_yday,self.setFile,ext)
882
883 filename = os.path.join(self.wrpath,subfolder, file)
884
885 # print self.dataOutObj.ippSeconds
886 freq=numpy.arange(-1*self.dataOutObj.nHeights/2.,self.dataOutObj.nHeights/2.)/(2*self.dataOutObj.ippSeconds)
887
888 col1=self.wrObj.setColF(name="freq", format=str(self.dataOutObj.nFFTPoints)+'E', array=freq)
889 col2=self.wrObj.writeData(name="P_Ch1",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[0,:]))
890 col3=self.wrObj.writeData(name="P_Ch2",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[1,:]))
891 col4=self.wrObj.writeData(name="P_Ch3",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[2,:]))
892 col5=self.wrObj.writeData(name="P_Ch4",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[3,:]))
893 col6=self.wrObj.writeData(name="P_Ch5",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[4,:]))
894 col7=self.wrObj.writeData(name="P_Ch6",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[5,:]))
895 col8=self.wrObj.writeData(name="P_Ch7",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[6,:]))
896 col9=self.wrObj.writeData(name="P_Ch8",format=str(self.dataOutObj.nFFTPoints)+'E',data=10*numpy.log10(self.dataOutObj.data_spc[7,:]))
897 #n=numpy.arange((100))
898 n=self.dataOutObj.data_spc[6,:]
899 a=self.wrObj.cFImage(n)
900 b=self.wrObj.Ctable(col1,col2,col3,col4,col5,col6,col7,col8,col9)
901 self.wrObj.CFile(a,b)
902 self.wrObj.wFile(filename)
903 return 1
904
905 No newline at end of file
@@ -542,7 +542,28 class SpectraHeisProcessor:
542 self.dataOutObj.flagDeflipData = self.dataInObj.flagDeflipData #asumo q la data esta sin flip
542 self.dataOutObj.flagDeflipData = self.dataInObj.flagDeflipData #asumo q la data esta sin flip
543 self.dataOutObj.flagShiftFFT = self.dataInObj.flagShiftFFT
543 self.dataOutObj.flagShiftFFT = self.dataInObj.flagShiftFFT
544 self.dataOutObj.nIncohInt = 1
544 self.dataOutObj.nIncohInt = 1
545 self.dataOutObj.ippSeconds= self.dataInObj.ippSeconds
545
546
547 # def addWriter(self,wrpath,blocksPerfile):
548 def addWriter(self,wrpath):
549 objWriter=SpectraHeisWriter(self.dataOutObj)
550 objWriter.setup(wrpath)
551 #objWriter.setup(wrpath,blocksPerfile)
552 self.writerObjList.append(objWriter)
553
554 # def writedata(self,wrpath,blocksPerfile):
555 def writedata(self,wrpath):
556 if self.dataOutObj.flagNoData:
557 return 0
558
559 if len(self.writerObjList) <= self.writerObjIndex:
560 #self.addWriter(wrpath, blocksPerFile)
561 self.addWriter(wrpath)
562
563 self.writerObjList[self.writerObjIndex].putData()
564
565 self.writerObjIndex += 1
566
546 def __getFft(self):
567 def __getFft(self):
547
568
548 fft_volt = numpy.fft.fft(self.dataInObj.data, axis=1)
569 fft_volt = numpy.fft.fft(self.dataInObj.data, axis=1)
@@ -649,6 +670,18 class SpectraHeisProcessor:
649
670
650 self.plotObjIndex += 1
671 self.plotObjIndex += 1
651
672
673 def rti(self):
674 if self.dataOutObj.flagNoData:
675 return 0
676
677 data=numpy.average(self.dataOutObj.data_spc,axis=1)
678 data[0]
679 print data[0]
680 x = numpy.arange(100000)
681
682 print "test"
683 #print self.dataOutObj.data_spc.average(axis=1)
684
652 class IncoherentIntegration:
685 class IncoherentIntegration:
653
686
654 integ_counter = None
687 integ_counter = None
General Comments 0
You need to be logged in to leave comments. Login now