##// END OF EJS Templates
Modificaciones para escribir datos en formato FITS
Daniel Valdez -
r340:967f28151148
parent child
Show More
@@ -10,6 +10,7 import time
10 10 import numpy
11 11 import fnmatch
12 12 import time, datetime
13 import pyfits
13 14
14 15 from jrodata import *
15 16 from jroheaderIO import *
@@ -2533,14 +2534,24 class SpectraWriter(JRODataWriter):
2533 2534
2534 2535 self.processingHeaderObj.size = processingHeaderSize
2535 2536
2536 class SpectraHeisWriter():
2537
2538 i=0
2537 class SpectraHeisWriter(Operation):
2538 # set = None
2539 setFile = None
2540 idblock = None
2541 doypath = None
2542 subfolder = None
2539 2543
2540 def __init__(self, dataOut):
2541
2544 def __init__(self):
2542 2545 self.wrObj = FITS()
2543 self.dataOut = dataOut
2546 # self.dataOut = dataOut
2547 self.nTotalBlocks=0
2548 # self.set = None
2549 self.setFile = None
2550 self.idblock = 0
2551 self.wrpath = None
2552 self.doypath = None
2553 self.subfolder = None
2554 self.isConfig = False
2544 2555
2545 2556 def isNumber(str):
2546 2557 """
@@ -2559,59 +2570,96 class SpectraHeisWriter():
2559 2570 float( str )
2560 2571 return True
2561 2572 except:
2562 return False
2573 return False
2563 2574
2564 def setup(self, wrpath,):
2575 def setup(self, dataOut, wrpath):
2565 2576
2566 2577 if not(os.path.exists(wrpath)):
2567 2578 os.mkdir(wrpath)
2568 2579
2569 2580 self.wrpath = wrpath
2570 self.setFile = 0
2581 # self.setFile = 0
2582 self.dataOut = dataOut
2571 2583
2572 2584 def putData(self):
2573 # self.wrObj.writeHeader(nChannels=self.dataOut.nChannels, nFFTPoints=self.dataOut.nFFTPoints)
2574 #name = self.dataOut.utctime
2575 2585 name= time.localtime( self.dataOut.utctime)
2576 ext=".fits"
2577 #folder='D%4.4d%3.3d'%(name.tm_year,name.tm_yday)
2578 subfolder = 'D%4.4d%3.3d' % (name.tm_year,name.tm_yday)
2586 ext=".fits"
2587
2588 if self.doypath == None:
2589 self.subfolder = 'F%4.4d%3.3d_%d' % (name.tm_year,name.tm_yday,time.mktime(datetime.datetime.now().timetuple()))
2590 self.doypath = os.path.join( self.wrpath, self.subfolder )
2591 os.mkdir(self.doypath)
2592
2593 if self.setFile == None:
2594 # self.set = self.dataOut.set
2595 self.setFile = 0
2596 # if self.set != self.dataOut.set:
2597 ## self.set = self.dataOut.set
2598 # self.setFile = 0
2599
2600 #make the filename
2601 file = 'D%4.4d%3.3d_%3.3d%s' % (name.tm_year,name.tm_yday,self.setFile,ext)
2579 2602
2580 fullpath = os.path.join( self.wrpath, subfolder )
2581 if not( os.path.exists(fullpath) ):
2582 os.mkdir(fullpath)
2603 filename = os.path.join(self.wrpath,self.subfolder, file)
2604
2605 idblock = numpy.array([self.idblock],dtype="int64")
2606 header=self.wrObj.cFImage(idblock=idblock,
2607 year=time.gmtime(self.dataOut.utctime).tm_year,
2608 month=time.gmtime(self.dataOut.utctime).tm_mon,
2609 day=time.gmtime(self.dataOut.utctime).tm_mday,
2610 hour=time.gmtime(self.dataOut.utctime).tm_hour,
2611 minute=time.gmtime(self.dataOut.utctime).tm_min,
2612 second=time.gmtime(self.dataOut.utctime).tm_sec)
2613
2614 c=3E8
2615 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
2616 freq=numpy.arange(-1*self.dataOut.nHeights/2.,self.dataOut.nHeights/2.)*(c/(2*deltaHeight*1000))
2617
2618 colList = []
2619
2620 colFreq=self.wrObj.setColF(name="freq", format=str(self.dataOut.nFFTPoints)+'E', array=freq)
2621
2622 colList.append(colFreq)
2623
2624 nchannel=self.dataOut.nChannels
2625
2626 for i in range(nchannel):
2627 col = self.wrObj.writeData(name="PCh"+str(i+1),
2628 format=str(self.dataOut.nFFTPoints)+'E',
2629 data=10*numpy.log10(self.dataOut.data_spc[i,:]))
2630
2631 colList.append(col)
2632
2633 data=self.wrObj.Ctable(colList=colList)
2634
2635 self.wrObj.CFile(header,data)
2636
2637 self.wrObj.wFile(filename)
2638
2639 #update the setFile
2583 2640 self.setFile += 1
2584 file = 'D%4.4d%3.3d%3.3d%s' % (name.tm_year,name.tm_yday,self.setFile,ext)
2585
2586 filename = os.path.join(self.wrpath,subfolder, file)
2587
2588 # print self.dataOut.ippSeconds
2589 freq=numpy.arange(-1*self.dataOut.nHeights/2.,self.dataOut.nHeights/2.)/(2*self.dataOut.ippSeconds)
2590
2591 col1=self.wrObj.setColF(name="freq", format=str(self.dataOut.nFFTPoints)+'E', array=freq)
2592 col2=self.wrObj.writeData(name="P_Ch1",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[0,:]))
2593 col3=self.wrObj.writeData(name="P_Ch2",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[1,:]))
2594 col4=self.wrObj.writeData(name="P_Ch3",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[2,:]))
2595 col5=self.wrObj.writeData(name="P_Ch4",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[3,:]))
2596 col6=self.wrObj.writeData(name="P_Ch5",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[4,:]))
2597 col7=self.wrObj.writeData(name="P_Ch6",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[5,:]))
2598 col8=self.wrObj.writeData(name="P_Ch7",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[6,:]))
2599 col9=self.wrObj.writeData(name="P_Ch8",format=str(self.dataOut.nFFTPoints)+'E',data=10*numpy.log10(self.dataOut.data_spc[7,:]))
2600 #n=numpy.arange((100))
2601 n=self.dataOut.data_spc[6,:]
2602 a=self.wrObj.cFImage(n)
2603 b=self.wrObj.Ctable(col1,col2,col3,col4,col5,col6,col7,col8,col9)
2604 self.wrObj.CFile(a,b)
2605 self.wrObj.wFile(filename)
2641 self.idblock += 1
2642
2606 2643 return 1
2644
2645 def run(self, dataOut, **kwargs):
2646
2647 if not(self.isConfig):
2648
2649 self.setup(dataOut, **kwargs)
2650 self.isConfig = True
2651
2652 self.putData()
2653
2607 2654
2608 2655 class FITS:
2609
2610 2656 name=None
2611 2657 format=None
2612 2658 array =None
2613 2659 data =None
2614 2660 thdulist=None
2661 prihdr=None
2662 hdu=None
2615 2663
2616 2664 def __init__(self):
2617 2665
@@ -2633,9 +2681,7 class FITS:
2633 2681 # self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
2634 2682 # return self.col2
2635 2683
2636 def writeHeader(self,):
2637 pass
2638
2684
2639 2685 def writeData(self,name,format,data):
2640 2686 self.name=name
2641 2687 self.format=format
@@ -2644,17 +2690,27 class FITS:
2644 2690 self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
2645 2691 return self.col2
2646 2692
2647 def cFImage(self,n):
2648 self.hdu= pyfits.PrimaryHDU(n)
2649 return self.hdu
2650
2651 def Ctable(self,col1,col2,col3,col4,col5,col6,col7,col8,col9):
2652 self.cols=pyfits.ColDefs( [col1,col2,col3,col4,col5,col6,col7,col8,col9])
2693 def cFImage(self,idblock,year,month,day,hour,minute,second):
2694 self.hdu= pyfits.PrimaryHDU(idblock)
2695 self.hdu.header.set("Year",year)
2696 self.hdu.header.set("Month",month)
2697 self.hdu.header.set("Day",day)
2698 self.hdu.header.set("Hour",hour)
2699 self.hdu.header.set("Minute",minute)
2700 self.hdu.header.set("Second",second)
2701 return self.hdu
2702
2703
2704 def Ctable(self,colList):
2705 self.cols=pyfits.ColDefs(colList)
2653 2706 self.tbhdu = pyfits.new_table(self.cols)
2654 2707 return self.tbhdu
2655 2708
2709
2656 2710 def CFile(self,hdu,tbhdu):
2657 2711 self.thdulist=pyfits.HDUList([hdu,tbhdu])
2658
2712
2659 2713 def wFile(self,filename):
2660 self.thdulist.writeto(filename) No newline at end of file
2714 if os.path.isfile(filename):
2715 os.remove(filename)
2716 self.thdulist.writeto(filename)
@@ -1613,4 +1613,9 class IncohInt4SpectraHeis(Operation):
1613 1613 dataOut.utctime = avgdatatime
1614 1614 dataOut.timeInterval = dataOut.ippSeconds * dataOut.nIncohInt
1615 1615 # dataOut.timeInterval = self.__timeInterval*self.n
1616 dataOut.flagNoData = False No newline at end of file
1616 dataOut.flagNoData = False
1617
1618
1619
1620
1621 No newline at end of file
@@ -59,6 +59,10 opObj11.addParameter(name='figpath', value='/Users/dsuarez/Pictures/sun_pics', f
59 59 opObj11.addParameter(name='ftp', value='1', format='int')
60 60 opObj11.addParameter(name='ftpratio', value='10', format='int')
61 61
62 opObj11 = procUnitConfObj1.addOperation(name='SpectraHeisWriter', optype='other')
63 opObj11.addParameter(name='wrpath', value='/Users/dsuarez/Remote', format='str')
64 #opObj11.addParameter(name='blocksPerFile', value='200', format='int')
65
62 66
63 67 print "Escribiendo el archivo XML"
64 68 controllerObj.writeXml(filename)
General Comments 0
You need to be logged in to leave comments. Login now