This diff has been collapsed as it changes many lines, (614 lines changed) Show them Hide them | |||||
@@ -21,34 +21,32 from DataIO import DataWriter | |||||
21 |
|
21 | |||
22 | from Model.Spectra import Spectra |
|
22 | from Model.Spectra import Spectra | |
23 |
|
23 | |||
24 |
|
24 | def isThisFileinRange(filename, startUTSeconds, endUTSeconds): | ||
25 | def isThisFileinRange( filename, startUTSeconds, endUTSeconds ): |
|
25 | """ | |
26 | """ |
|
26 | Esta funcion determina si un archivo de datos en formato Jicamarca(.r) se encuentra | |
27 | Desc : |
|
27 | o no dentro del rango de fecha especificado. | |
28 | Esta funcion determina si un archivo de datos en formato Jicamarca(.r) se encuentra |
|
28 | ||
29 | o no dentro del rango de fecha especificado. |
|
29 | Inputs: | |
30 |
|
||||
31 | Inputs : |
|
|||
32 | filename : nombre completo del archivo de datos en formato Jicamarca (.r) |
|
30 | filename : nombre completo del archivo de datos en formato Jicamarca (.r) | |
33 |
|
31 | |||
34 | startUTSeconds : fecha inicial del rango seleccionado. La fecha esta dada en |
|
32 | startUTSeconds : fecha inicial del rango seleccionado. La fecha esta dada en | |
35 | segundos contados desde 01/01/1970. |
|
33 | segundos contados desde 01/01/1970. | |
36 |
|
||||
37 | endUTSeconds : fecha final del rango seleccionado. La fecha esta dada en |
|
34 | endUTSeconds : fecha final del rango seleccionado. La fecha esta dada en | |
38 | segundos contados desde 01/01/1970. |
|
35 | segundos contados desde 01/01/1970. | |
39 |
|
|
36 | ||
40 |
Return |
|
37 | Return: | |
41 | Boolean : Retorna True si el archivo de datos contiene datos en el rango de |
|
38 | Boolean : Retorna True si el archivo de datos contiene datos en el rango de | |
42 | fecha especificado, de lo contrario retorna False. |
|
39 | fecha especificado, de lo contrario retorna False. | |
43 |
|
|
40 | ||
44 |
Excepciones |
|
41 | Excepciones: | |
45 | Si el archivo no existe o no puede ser abierto |
|
42 | Si el archivo no existe o no puede ser abierto | |
46 | Si la cabecera no puede ser leida. |
|
43 | Si la cabecera no puede ser leida. | |
|
44 | ||||
47 | """ |
|
45 | """ | |
48 | m_BasicHeader = BasicHeader() |
|
46 | m_BasicHeader = BasicHeader() | |
49 |
|
47 | |||
50 | try: |
|
48 | try: | |
51 |
fp = open( |
|
49 | fp = open(filename,'rb') | |
52 | except: |
|
50 | except: | |
53 | raise IOError, "The file %s can't be opened" %(filename) |
|
51 | raise IOError, "The file %s can't be opened" %(filename) | |
54 |
|
52 | |||
@@ -63,19 +61,19 def isThisFileinRange( filename, startUTSeconds, endUTSeconds ): | |||||
63 | return 1 |
|
61 | return 1 | |
64 |
|
62 | |||
65 |
|
63 | |||
66 |
class SpectraReader( |
|
64 | class SpectraReader(DataReader): | |
67 |
""" |
|
65 | """ | |
68 | Desc : |
|
66 | Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura | |
69 | Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura |
|
67 | de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones: | |
70 | de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones) |
|
68 | perfiless*alturas*canales) son almacenados en la variable "buffer". | |
71 | son almacenados en tres buffer's para el Self Spectra, el Cross Spectra y el DC Channel. |
|
69 | ||
72 |
|
70 | Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, | ||
73 | Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, |
|
71 | RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la | |
74 | RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la |
|
72 | cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de | |
75 | cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de |
|
73 | datos desde el "buffer" cada vez que se ejecute el metodo "getData". | |
76 | datos desde el "buffer" cada vez que se ejecute el metodo "getData". |
|
74 | ||
|
75 | Example: | |||
77 |
|
76 | |||
78 | Example : |
|
|||
79 | dpath = "/home/myuser/data" |
|
77 | dpath = "/home/myuser/data" | |
80 |
|
78 | |||
81 | startTime = datetime.datetime(2010,1,20,0,0,0,0,0,0) |
|
79 | startTime = datetime.datetime(2010,1,20,0,0,0,0,0,0) | |
@@ -100,28 +98,29 class SpectraReader( DataReader ): | |||||
100 | #speed of light |
|
98 | #speed of light | |
101 | __c = 3E8 |
|
99 | __c = 3E8 | |
102 |
|
100 | |||
103 |
|
||||
104 | def __init__( self, m_Spectra = None ): |
|
101 | def __init__( self, m_Spectra = None ): | |
105 |
""" |
|
102 | """ | |
106 | Desc : |
|
103 | Inicializador de la clase SpectraReader para la lectura de datos de espectros. | |
107 | Inicializador de la clase SpectraReader para la lectura de datos de espectros. |
|
104 | ||
108 |
|
105 | Input: | ||
109 | Inputs : |
|
|||
110 | m_Spectra : Objeto de la clase Spectra. Este objeto sera utilizado para |
|
106 | m_Spectra : Objeto de la clase Spectra. Este objeto sera utilizado para | |
111 | almacenar un perfil de datos cada vez que se haga un requerimiento |
|
107 | almacenar un perfil de datos cada vez que se haga un requerimiento | |
112 | (getData). El perfil sera obtenido a partir del buffer de datos, |
|
108 | (getData). El perfil sera obtenido a partir del buffer de datos, | |
113 | si el buffer esta vacio se hara un nuevo proceso de lectura de un |
|
109 | si el buffer esta vacio se hara un nuevo proceso de lectura de un | |
114 | bloque de datos. |
|
110 | bloque de datos. | |
115 | Si este parametro no es pasado se creara uno internamente. |
|
111 | Si este parametro no es pasado se creara uno internamente. | |
116 |
|
|
112 | ||
117 | Affected : |
|
113 | Variables afectadas: | |
118 | self.m_Spectra |
|
114 | self.m_Spectra | |
119 | self.m_BasicHeader |
|
115 | self.m_BasicHeader | |
120 | self.m_SystemHeader |
|
116 | self.m_SystemHeader | |
121 | self.m_RadarControllerHeader |
|
117 | self.m_RadarControllerHeader | |
122 | self.m_ProcessingHeader |
|
118 | self.m_ProcessingHeader | |
123 |
|
119 | |||
124 | Return : Nada |
|
120 | ||
|
121 | Return: | |||
|
122 | Void | |||
|
123 | ||||
125 | """ |
|
124 | """ | |
126 | if m_Spectra == None: |
|
125 | if m_Spectra == None: | |
127 | m_Spectra = Spectra() |
|
126 | m_Spectra = Spectra() | |
@@ -181,13 +180,7 class SpectraReader( DataReader ): | |||||
181 |
|
180 | |||
182 | self.__buffer_spc = None |
|
181 | self.__buffer_spc = None | |
183 | self.__buffer_cspc = None |
|
182 | self.__buffer_cspc = None | |
184 | self.__buffer_dc = None |
|
183 | self.__buffer_dc = None | |
185 |
|
||||
186 | self.Npair_SelfSpectra = 0 |
|
|||
187 | self.Npair_CrossSpectra = 0 |
|
|||
188 |
|
||||
189 | self.pts2read_SelfSpectra = 0 |
|
|||
190 | self.pts2read_CrossSpectra = 0 |
|
|||
191 |
|
184 | |||
192 | self.__buffer_id = 0 |
|
185 | self.__buffer_id = 0 | |
193 |
|
186 | |||
@@ -199,105 +192,38 class SpectraReader( DataReader ): | |||||
199 |
|
192 | |||
200 | self.nChannels = 0 |
|
193 | self.nChannels = 0 | |
201 |
|
194 | |||
|
195 | self.__path = None | |||
|
196 | self.__startDateTime = None | |||
|
197 | self.__endDateTime = None | |||
|
198 | self.__expLabel = None | |||
|
199 | self.__set = None | |||
|
200 | self.__ext = None | |||
202 |
|
201 | |||
203 | def __rdSystemHeader( self, fp=None ): |
|
202 | def __rdSystemHeader( self, fp=None ): | |
204 | """ |
|
|||
205 | Desc : |
|
|||
206 | Lectura del System Header |
|
|||
207 |
|
||||
208 | Inputs : |
|
|||
209 | fp : file pointer |
|
|||
210 |
|
||||
211 | Affected : Nada |
|
|||
212 | self.m_SystemHeader |
|
|||
213 |
|
||||
214 | Return : Nada |
|
|||
215 | """ |
|
|||
216 | if fp == None: |
|
203 | if fp == None: | |
217 | fp = self.__fp |
|
204 | fp = self.__fp | |
218 |
|
205 | |||
219 | self.m_SystemHeader.read( fp ) |
|
206 | self.m_SystemHeader.read( fp ) | |
220 |
|
||||
221 |
|
207 | |||
222 | def __rdRadarControllerHeader( self, fp=None ): |
|
208 | def __rdRadarControllerHeader( self, fp=None ): | |
223 | """ |
|
|||
224 | Desc : |
|
|||
225 | Lectura del Radar Controller Header |
|
|||
226 |
|
||||
227 | Inputs : |
|
|||
228 | fp : file pointer |
|
|||
229 |
|
||||
230 | Affected : |
|
|||
231 | self.m_RadarControllerHeader |
|
|||
232 |
|
||||
233 | Return : Nada |
|
|||
234 | """ |
|
|||
235 | if fp == None: |
|
209 | if fp == None: | |
236 | fp = self.__fp |
|
210 | fp = self.__fp | |
237 |
|
211 | |||
238 | self.m_RadarControllerHeader.read(fp) |
|
212 | self.m_RadarControllerHeader.read(fp) | |
239 |
|
||||
240 |
|
213 | |||
241 | def __rdProcessingHeader( self,fp=None ): |
|
214 | def __rdProcessingHeader( self,fp=None ): | |
242 | """ |
|
|||
243 | Desc : |
|
|||
244 | Lectura del Processing Header |
|
|||
245 |
|
||||
246 | Inputs : |
|
|||
247 | fp : file pointer |
|
|||
248 |
|
||||
249 | Affected : |
|
|||
250 | self.m_ProcessingHeader |
|
|||
251 |
|
||||
252 | Return : Nada |
|
|||
253 | """ |
|
|||
254 | if fp == None: |
|
215 | if fp == None: | |
255 | fp = self.__fp |
|
216 | fp = self.__fp | |
256 |
|
217 | |||
257 | self.m_ProcessingHeader.read(fp) |
|
218 | self.m_ProcessingHeader.read(fp) | |
258 |
|
219 | |||
259 |
|
||||
260 | def __rdBasicHeader( self, fp=None ): |
|
220 | def __rdBasicHeader( self, fp=None ): | |
261 | """ |
|
|||
262 | Desc : |
|
|||
263 | Lectura del Basic Header |
|
|||
264 |
|
||||
265 | Inputs : |
|
|||
266 | fp : file pointer |
|
|||
267 |
|
||||
268 | Affected : |
|
|||
269 | self.m_BasicHeader |
|
|||
270 |
|
||||
271 | Return : Nada |
|
|||
272 | """ |
|
|||
273 | if fp == None: |
|
221 | if fp == None: | |
274 | fp = self.__fp |
|
222 | fp = self.__fp | |
275 |
|
223 | |||
276 | self.m_BasicHeader.read(fp) |
|
224 | self.m_BasicHeader.read(fp) | |
277 |
|
||||
278 |
|
225 | |||
279 | def __readFirstHeader( self ): |
|
226 | def __readFirstHeader( self ): | |
280 | """ |
|
|||
281 | Desc : |
|
|||
282 | Lectura del First Header, es decir el Basic Header y el Long Header |
|
|||
283 |
|
||||
284 | Affected : Nada |
|
|||
285 | self.m_BasicHeader |
|
|||
286 | self.m_SystemHeader |
|
|||
287 | self.m_RadarControllerHeader |
|
|||
288 | self.m_ProcessingHeader |
|
|||
289 | self.firstHeaderSize |
|
|||
290 | self.__heights |
|
|||
291 | self.__dataType |
|
|||
292 | self.__fileSizeByHeader |
|
|||
293 | self.__ippSeconds |
|
|||
294 | self.Npair_SelfSpectra |
|
|||
295 | self.Npair_CrossSpectra |
|
|||
296 | self.pts2read_SelfSpectra |
|
|||
297 | self.pts2read_CrossSpectra |
|
|||
298 |
|
||||
299 | Return : None |
|
|||
300 | """ |
|
|||
301 | self.__rdBasicHeader() |
|
227 | self.__rdBasicHeader() | |
302 | self.__rdSystemHeader() |
|
228 | self.__rdSystemHeader() | |
303 | self.__rdRadarControllerHeader() |
|
229 | self.__rdRadarControllerHeader() | |
@@ -335,43 +261,68 class SpectraReader( DataReader ): | |||||
335 | self.__fileSizeByHeader = self.m_ProcessingHeader.dataBlocksPerFile * self.m_ProcessingHeader.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.m_ProcessingHeader.dataBlocksPerFile - 1) |
|
261 | self.__fileSizeByHeader = self.m_ProcessingHeader.dataBlocksPerFile * self.m_ProcessingHeader.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.m_ProcessingHeader.dataBlocksPerFile - 1) | |
336 | self.__ippSeconds = 2 * 1000 * self.m_RadarControllerHeader.ipp/self.__c |
|
262 | self.__ippSeconds = 2 * 1000 * self.m_RadarControllerHeader.ipp/self.__c | |
337 |
|
263 | |||
338 | self.Npair_SelfSpectra = 0 |
|
264 | def __setNextFileOnline(self, delay = 60 ): | |
339 | self.Npair_CrossSpectra = 0 |
|
265 | """ | |
340 |
|
|
266 | ||
341 | for i in range( 0, self.m_ProcessingHeader.totalSpectra*2, 2 ): |
|
|||
342 | if self.m_ProcessingHeader.spectraComb[i] == self.m_ProcessingHeader.spectraComb[i+1]: |
|
|||
343 | self.Npair_SelfSpectra = self.Npair_SelfSpectra + 1 |
|
|||
344 | else: |
|
|||
345 | self.Npair_CrossSpectra = self.Npair_CrossSpectra + 1 |
|
|||
346 |
|
|
267 | ||
347 | pts2read = self.m_ProcessingHeader.profilesPerBlock * self.m_ProcessingHeader.numHeights |
|
268 | return: | |
348 | self.pts2read_SelfSpectra = int( pts2read * self.Npair_SelfSpectra ) |
|
269 | bool | |
349 | self.pts2read_CrossSpectra = int( pts2read * self.Npair_CrossSpectra ) |
|
|||
350 |
|
||||
351 |
|
||||
352 | def __setNextFileOnline( self ): |
|
|||
353 | return 1 |
|
|||
354 |
|
||||
355 |
|
||||
356 | def __setNextFileOffline( self ): |
|
|||
357 | """ |
|
|||
358 | Desc : |
|
|||
359 | Busca el siguiente file dentro de un folder que tenga suficiente data para ser leida |
|
|||
360 |
|
||||
361 | Affected : |
|
|||
362 | self.__flagIsNewFile |
|
|||
363 | self.__idFile |
|
|||
364 | self.filename |
|
|||
365 | self.fileSize |
|
|||
366 | self.__fp |
|
|||
367 |
|
||||
368 | Return : |
|
|||
369 | 0 : si un determinado file no puede ser abierto |
|
|||
370 | 1 : si el file fue abierto con exito |
|
|||
371 |
|
270 | |||
372 | Excepciones : |
|
|||
373 | Si un determinado file no puede ser abierto |
|
|||
374 | """ |
|
271 | """ | |
|
272 | nFiles = 3 | |||
|
273 | nTries = 3 | |||
|
274 | ||||
|
275 | countFiles = 0 | |||
|
276 | countTries = 0 | |||
|
277 | ||||
|
278 | fileStatus = False | |||
|
279 | ||||
|
280 | while(True): | |||
|
281 | countFiles += 1 | |||
|
282 | ||||
|
283 | if countFiles > nFiles+1: | |||
|
284 | break | |||
|
285 | ||||
|
286 | self.set += 1 | |||
|
287 | ||||
|
288 | if countFiles > nFiles: | |||
|
289 | self.doy += 1 | |||
|
290 | self.set = 0 | |||
|
291 | ||||
|
292 | doypath = "D%04d%04d" %(self.year, self.doy) | |||
|
293 | filename = "D%04d%04d%03d%s" %(self.year, self.doy, self.set, self.__ext) | |||
|
294 | file = os.path.join(self.filepath, doypath, filename) | |||
|
295 | fileSize = os.path.getsize(file) | |||
|
296 | ||||
|
297 | try: | |||
|
298 | fp = open(file) | |||
|
299 | except: | |||
|
300 | raise IOError, "The file %s can't be opened" %file | |||
|
301 | ||||
|
302 | while(True): | |||
|
303 | countTries += 1 | |||
|
304 | if countTries > nTries: | |||
|
305 | break | |||
|
306 | ||||
|
307 | currentSize = fileSize - fp.tell() | |||
|
308 | neededSize = self.m_ProcessingHeader.blockSize + self.firstHeaderSize | |||
|
309 | ||||
|
310 | if (currentSize < neededSize): | |||
|
311 | #waiting for this block | |||
|
312 | time.sleep(delay) | |||
|
313 | else: | |||
|
314 | fileStatus = True | |||
|
315 | break | |||
|
316 | ||||
|
317 | if fileStatus: | |||
|
318 | break | |||
|
319 | ||||
|
320 | print "Skipping the file %s due to it hasn't enough data" %filename | |||
|
321 | fp.close() | |||
|
322 | ||||
|
323 | return fileStatus | |||
|
324 | ||||
|
325 | def __setNextFileOffline( self ): | |||
375 | idFile = self.__idFile |
|
326 | idFile = self.__idFile | |
376 |
|
327 | |||
377 | while(True): |
|
328 | while(True): | |
@@ -394,6 +345,7 class SpectraReader( DataReader ): | |||||
394 |
|
345 | |||
395 | if (currentSize < neededSize): |
|
346 | if (currentSize < neededSize): | |
396 | print "Skipping the file %s due to it hasn't enough data" %filename |
|
347 | print "Skipping the file %s due to it hasn't enough data" %filename | |
|
348 | fp.close() | |||
397 | continue |
|
349 | continue | |
398 |
|
350 | |||
399 | break |
|
351 | break | |
@@ -408,23 +360,11 class SpectraReader( DataReader ): | |||||
408 |
|
360 | |||
409 | return 1 |
|
361 | return 1 | |
410 |
|
362 | |||
411 |
|
363 | def __setNextFile(self): | ||
412 | def __setNextFile( self ): |
|
364 | ||
413 | """ |
|
365 | if self.__fp != None: | |
414 | Desc : |
|
366 | self.__fp.close() | |
415 | Determina el siguiente file a leer y si hay uno disponible lee el First Header |
|
367 | ||
416 |
|
||||
417 | Affected : |
|
|||
418 | self.m_BasicHeader |
|
|||
419 | self.m_SystemHeader |
|
|||
420 | self.m_RadarControllerHeader |
|
|||
421 | self.m_ProcessingHeader |
|
|||
422 | self.firstHeaderSize |
|
|||
423 |
|
||||
424 | Return : |
|
|||
425 | 0 : Si no hay files disponibles |
|
|||
426 | 1 : Si hay mas files disponibles |
|
|||
427 | """ |
|
|||
428 | if self.online: |
|
368 | if self.online: | |
429 | newFile = self.__setNextFileOnline() |
|
369 | newFile = self.__setNextFileOnline() | |
430 | else: |
|
370 | else: | |
@@ -437,20 +377,7 class SpectraReader( DataReader ): | |||||
437 |
|
377 | |||
438 | return 1 |
|
378 | return 1 | |
439 |
|
379 | |||
440 |
|
||||
441 | def __setNewBlock( self ): |
|
380 | def __setNewBlock( self ): | |
442 | """ |
|
|||
443 | Desc : |
|
|||
444 | Lee el Basic Header y posiciona le file pointer en la posicion inicial del bloque a leer |
|
|||
445 |
|
||||
446 | Affected : |
|
|||
447 | self.flagResetProcessing |
|
|||
448 | self.ns |
|
|||
449 |
|
||||
450 | Return : |
|
|||
451 | 0 : Si el file no tiene un Basic Header que pueda ser leido |
|
|||
452 | 1 : Si se pudo leer el Basic Header |
|
|||
453 | """ |
|
|||
454 | if self.__fp == None: |
|
381 | if self.__fp == None: | |
455 | return 0 |
|
382 | return 0 | |
456 |
|
383 | |||
@@ -480,48 +407,66 class SpectraReader( DataReader ): | |||||
480 | return 1 |
|
407 | return 1 | |
481 |
|
408 | |||
482 |
|
409 | |||
|
410 | ||||
483 | def __readBlock(self): |
|
411 | def __readBlock(self): | |
484 | """ |
|
412 | """ | |
485 | Desc : |
|
413 | __readBlock lee el bloque de datos desde la posicion actual del puntero del archivo | |
486 | __readBlock lee el bloque de datos desde la posicion actual del puntero del archivo |
|
414 | (self.__fp) y actualiza todos los parametros relacionados al bloque de datos | |
487 | (self.__fp) y actualiza todos los parametros relacionados al bloque de datos |
|
415 | (metadata + data). La data leida es almacenada en el buffer y el contador del buffer | |
488 | (metadata + data). La data leida es almacenada en el buffer y el contador del buffer |
|
416 | es seteado a 0 | |
489 | es seteado a 0 |
|
|||
490 |
|
417 | |||
|
418 | Inputs: | |||
|
419 | None | |||
|
420 | ||||
491 | Return: |
|
421 | Return: | |
492 | None |
|
422 | None | |
493 |
|
423 | |||
494 | Variables afectadas: |
|
424 | Variables afectadas: | |
|
425 | ||||
495 | self.__buffer_id |
|
426 | self.__buffer_id | |
|
427 | ||||
|
428 | self.__buffer_sspc | |||
|
429 | ||||
496 | self.__flagIsNewFile |
|
430 | self.__flagIsNewFile | |
|
431 | ||||
497 | self.flagIsNewBlock |
|
432 | self.flagIsNewBlock | |
|
433 | ||||
498 | self.nReadBlocks |
|
434 | self.nReadBlocks | |
499 | self.__buffer_spc |
|
435 | ||
500 | self.__buffer_cspc |
|
|||
501 | self.__buffer_dc |
|
|||
502 | """ |
|
436 | """ | |
|
437 | Npair_SelfSpectra = 0 | |||
|
438 | Npair_CrossSpectra = 0 | |||
|
439 | ||||
|
440 | for i in range( 0,self.m_ProcessingHeader.totalSpectra*2,2 ): | |||
|
441 | if self.m_ProcessingHeader.spectraComb[i] == self.m_ProcessingHeader.spectraComb[i+1]: | |||
|
442 | Npair_SelfSpectra = Npair_SelfSpectra + 1 | |||
|
443 | else: | |||
|
444 | Npair_CrossSpectra = Npair_CrossSpectra + 1 | |||
|
445 | ||||
|
446 | # self.__buffer_sspc = numpy.concatenate( (data_sspc,data_cspc,data_dcc), axis=0 ) | |||
|
447 | ||||
503 | self.__buffer_id = 0 |
|
448 | self.__buffer_id = 0 | |
504 | self.__flagIsNewFile = 0 |
|
449 | self.__flagIsNewFile = 0 | |
505 | self.flagIsNewBlock = 1 |
|
450 | self.flagIsNewBlock = 1 | |
506 |
|
451 | |||
507 | spc = numpy.fromfile( self.__fp, self.__dataType[0], self.pts2read_SelfSpectra ) |
|
452 | pts2read = self.m_ProcessingHeader.profilesPerBlock*self.m_ProcessingHeader.numHeights | |
508 | cspc = numpy.fromfile( self.__fp, self.__dataType, self.pts2read_CrossSpectra ) |
|
453 | ||
509 |
|
|
454 | spc = numpy.fromfile(self.__fp, self.__dataType[0], int(pts2read*Npair_SelfSpectra)) | |
|
455 | cspc = numpy.fromfile(self.__fp, self.__dataType, int(pts2read*Npair_CrossSpectra)) | |||
|
456 | dc = numpy.fromfile(self.__fp, self.__dataType, int(self.m_ProcessingHeader.numHeights*self.m_SystemHeader.numChannels) ) | |||
510 |
|
457 | |||
511 |
spc = spc.reshape( |
|
458 | spc = spc.reshape((Npair_SelfSpectra, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock)) | |
512 |
|
459 | cspc = cspc.reshape((Npair_CrossSpectra, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock)) | ||
513 | cspc = cspc.reshape( (self.Npair_CrossSpectra, self.m_ProcessingHeader.numHeights, self.m_ProcessingHeader.profilesPerBlock) ) #transforma a un arreglo 3D |
|
460 | dc = dc.reshape((self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights)) | |
514 | dc = dc.reshape( (self.m_SystemHeader.numChannels, self.m_ProcessingHeader.numHeights) ) #transforma a un arreglo 2D |
|
|||
515 |
|
461 | |||
516 |
if not( |
|
462 | if not(self.m_ProcessingHeader.shif_fft): | |
517 |
spc = numpy.roll( |
|
463 | spc = numpy.roll(spc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2) | |
518 |
cspc = numpy.roll( |
|
464 | cspc = numpy.roll(cspc, self.m_ProcessingHeader.profilesPerBlock/2, axis=2) | |
519 |
|
465 | |||
520 |
spc = numpy.transpose( |
|
466 | spc = numpy.transpose(spc, (0,2,1)) | |
521 |
cspc = numpy.transpose( |
|
467 | cspc = numpy.transpose(cspc, (0,2,1)) | |
522 | #dc = numpy.transpose(dc, (0,2,1)) |
|
468 | #dc = numpy.transpose(dc, (0,2,1)) | |
523 |
|
469 | |||
524 | """ |
|
|||
525 | data_spc = spc |
|
470 | data_spc = spc | |
526 | data_cspc = cspc['real'] + cspc['imag']*1j |
|
471 | data_cspc = cspc['real'] + cspc['imag']*1j | |
527 | data_dc = dc['real'] + dc['imag']*1j |
|
472 | data_dc = dc['real'] + dc['imag']*1j | |
@@ -529,11 +474,7 class SpectraReader( DataReader ): | |||||
529 | self.__buffer_spc = data_spc |
|
474 | self.__buffer_spc = data_spc | |
530 | self.__buffer_cspc = data_cspc |
|
475 | self.__buffer_cspc = data_cspc | |
531 | self.__buffer_dc = data_dc |
|
476 | self.__buffer_dc = data_dc | |
532 |
|
|
477 | ||
533 | self.__buffer_spc = spc |
|
|||
534 | self.__buffer_cspc = cspc['real'] + cspc['imag']*1j |
|
|||
535 | self.__buffer_dc = dc['real'] + dc['imag']*1j |
|
|||
536 |
|
||||
537 | self.__flagIsNewFile = 0 |
|
478 | self.__flagIsNewFile = 0 | |
538 |
|
479 | |||
539 | self.flagIsNewBlock = 1 |
|
480 | self.flagIsNewBlock = 1 | |
@@ -541,22 +482,40 class SpectraReader( DataReader ): | |||||
541 | self.nReadBlocks += 1 |
|
482 | self.nReadBlocks += 1 | |
542 |
|
483 | |||
543 |
|
484 | |||
544 |
def __hasNotDataInBuffer( |
|
485 | def __hasNotDataInBuffer(self): | |
545 | return 1 |
|
486 | return 1 | |
546 |
|
||||
547 |
|
487 | |||
548 |
def __searchFiles( |
|
488 | def __searchFilesOnline(self, path, startDateTime, expLabel = "", ext = ".pdata"): | |
549 | """ |
|
489 | """ | |
550 | Desc : |
|
|||
551 | __searchFiles realiza una busqueda de los archivos que coincidan con los parametros |
|
|||
552 | especificados y se encuentren ubicados en el path indicado. Para realizar una busqueda |
|
|||
553 | correcta la estructura de directorios debe ser la siguiente: |
|
|||
554 |
|
490 | |||
555 | ...path/D[yyyy][ddd]/expLabel/D[yyyy][ddd][sss].ext |
|
|||
556 |
|
491 | |||
557 | [yyyy]: anio |
|
492 | Return: | |
558 | [ddd] : dia del anio |
|
493 | ||
559 | [sss] : set del archivo |
|
494 | filepath | |
|
495 | ||||
|
496 | filename | |||
|
497 | ||||
|
498 | year | |||
|
499 | ||||
|
500 | doy | |||
|
501 | ||||
|
502 | set | |||
|
503 | ||||
|
504 | """ | |||
|
505 | ||||
|
506 | pass | |||
|
507 | ||||
|
508 | def __searchFilesOffline(self, path, startDateTime, endDateTime, set=None, expLabel = "", ext = ".pdata"): | |||
|
509 | """ | |||
|
510 | __searchFiles realiza una busqueda de los archivos que coincidan con los parametros | |||
|
511 | especificados y se encuentren ubicados en el path indicado. Para realizar una busqueda | |||
|
512 | correcta la estructura de directorios debe ser la siguiente: | |||
|
513 | ||||
|
514 | ...path/D[yyyy][ddd]/expLabel/D[yyyy][ddd][sss].ext | |||
|
515 | ||||
|
516 | [yyyy]: anio | |||
|
517 | [ddd] : dia del anio | |||
|
518 | [sss] : set del archivo | |||
560 |
|
519 | |||
561 | Inputs: |
|
520 | Inputs: | |
562 | path : Directorio de datos donde se realizara la busqueda. Todos los |
|
521 | path : Directorio de datos donde se realizara la busqueda. Todos los | |
@@ -589,6 +548,9 class SpectraReader( DataReader ): | |||||
589 | como fuente para leer los bloque de datos, si se termina |
|
548 | como fuente para leer los bloque de datos, si se termina | |
590 | de leer todos los bloques de datos de un determinado |
|
549 | de leer todos los bloques de datos de un determinado | |
591 | archivo se pasa al siguiente archivo de la lista. |
|
550 | archivo se pasa al siguiente archivo de la lista. | |
|
551 | ||||
|
552 | Excepciones: | |||
|
553 | ||||
592 | """ |
|
554 | """ | |
593 |
|
555 | |||
594 | print "Searching files ..." |
|
556 | print "Searching files ..." | |
@@ -631,14 +593,22 class SpectraReader( DataReader ): | |||||
631 | return pathList, filenameList |
|
593 | return pathList, filenameList | |
632 |
|
594 | |||
633 |
|
595 | |||
|
596 | def __searchFiles(self, path, startDateTime, endDateTime, set, expLabel, ext, online): | |||
|
597 | ||||
|
598 | if online: | |||
|
599 | pathList, filenameList = self.__searchFilesOnline(path, startDateTime, endDateTime, set, expLabel, ext) | |||
|
600 | else: | |||
|
601 | pathList, filenameList = self.__searchFilesOffline(path, startDateTime, endDateTime, set, expLabel, ext) | |||
|
602 | ||||
|
603 | return 1 | |||
|
604 | ||||
634 | def setup( self, path, startDateTime, endDateTime=None, set=None, expLabel = "", ext = ".pdata", online = 0 ): |
|
605 | def setup( self, path, startDateTime, endDateTime=None, set=None, expLabel = "", ext = ".pdata", online = 0 ): | |
635 | """ |
|
606 | """ | |
636 | Desc : |
|
607 | setup configura los parametros de lectura de la clase SpectraReader. | |
637 | setup configura los parametros de lectura de la clase SpectraReader. |
|
|||
638 |
|
608 | |||
639 |
|
|
609 | Si el modo de lectura es offline, primero se realiza una busqueda de todos los archivos | |
640 |
|
|
610 | que coincidan con los parametros especificados; esta lista de archivos son almacenados en | |
641 |
|
|
611 | self.filenameList. | |
642 |
|
612 | |||
643 | Input: |
|
613 | Input: | |
644 | path : Directorios donde se ubican los datos a leer. Dentro de este |
|
614 | path : Directorios donde se ubican los datos a leer. Dentro de este | |
@@ -658,31 +628,28 class SpectraReader( DataReader ): | |||||
658 |
|
628 | |||
659 | ext : Extension de los archivos a leer. Por defecto .r |
|
629 | ext : Extension de los archivos a leer. Por defecto .r | |
660 |
|
630 | |||
661 | online : Si es == a 0 entonces busca files que cumplan con las condiciones dadas |
|
631 | online : | |
662 |
|
632 | |||
663 | Return: |
|
633 | Return: | |
664 | 0 : Si no encuentra files que cumplan con las condiciones dadas |
|
|||
665 | 1 : Si encuentra files que cumplan con las condiciones dadas |
|
|||
666 |
|
634 | |||
667 | Affected: |
|
635 | Affected: | |
668 | self.startUTCSeconds |
|
|||
669 | self.endUTCSeconds |
|
|||
670 | self.startYear |
|
|||
671 | self.endYear |
|
|||
672 | self.startDoy |
|
|||
673 | self.endDoy |
|
|||
674 | self.__pathList |
|
|||
675 | self.filenameList |
|
|||
676 | self.online |
|
|||
677 | """ |
|
|||
678 | if online == 0: |
|
|||
679 | pathList, filenameList = self.__searchFiles( path, startDateTime, endDateTime, set, expLabel, ext ) |
|
|||
680 |
|
|
636 | ||
681 | self.__idFile = -1 |
|
637 | Excepciones: | |
682 |
|
|
638 | ||
|
639 | Example: | |||
|
640 | ||||
|
641 | """ | |||
|
642 | if online == 0: | |||
|
643 | pathList, filenameList = self.__searchFilesOffline(path, startDateTime, endDateTime, set, expLabel, ext) | |||
|
644 | self.__idFile = -1 | |||
|
645 | ||||
|
646 | else: | |||
|
647 | filepath, filename, year, doy, set = self.__searchFilesOnline() | |||
|
648 | set -= 1 | |||
|
649 | ||||
683 | if not(self.__setNextFile()): |
|
650 | if not(self.__setNextFile()): | |
684 | print "No files in range: %s - %s" %(startDateTime.ctime(), endDateTime.ctime()) |
|
651 | print "No files in range: %s - %s" %(startDateTime.ctime(), endDateTime.ctime()) | |
685 | return 0 |
|
652 | return 0 | |
686 |
|
653 | |||
687 | self.startUTCSeconds = time.mktime(startDateTime.timetuple()) |
|
654 | self.startUTCSeconds = time.mktime(startDateTime.timetuple()) | |
688 | self.endUTCSeconds = time.mktime(endDateTime.timetuple()) |
|
655 | self.endUTCSeconds = time.mktime(endDateTime.timetuple()) | |
@@ -698,19 +665,15 class SpectraReader( DataReader ): | |||||
698 | self.filenameList = filenameList |
|
665 | self.filenameList = filenameList | |
699 | self.online = online |
|
666 | self.online = online | |
700 |
|
667 | |||
|
668 | self.__startDateTime = startDateTime | |||
|
669 | ||||
701 | return 1 |
|
670 | return 1 | |
702 |
|
||||
703 |
|
671 | |||
704 | def readNextBlock(self): |
|
672 | def readNextBlock(self): | |
705 |
""" |
|
673 | """ | |
706 | Desc: |
|
674 | readNextBlock establece un nuevo bloque de datos a leer y los lee, si es que no existiese | |
707 | Establece un nuevo bloque de datos a leer y los lee, si es que no existiese |
|
675 | mas bloques disponibles en el archivo actual salta al siguiente. | |
708 | mas bloques disponibles en el archivo actual salta al siguiente. |
|
676 | ||
709 |
|
||||
710 | Affected: |
|
|||
711 | self.__lastUTTime |
|
|||
712 |
|
||||
713 | Return: None |
|
|||
714 | """ |
|
677 | """ | |
715 |
|
678 | |||
716 | if not( self.__setNewBlock() ): |
|
679 | if not( self.__setNewBlock() ): | |
@@ -725,20 +688,23 class SpectraReader( DataReader ): | |||||
725 |
|
688 | |||
726 | def getData(self): |
|
689 | def getData(self): | |
727 | """ |
|
690 | """ | |
728 | Desc: |
|
691 | getData copia el buffer de lectura a la clase "Spectra", | |
729 | Copia el buffer de lectura a la clase "Spectra", |
|
692 | con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de | |
730 | con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de |
|
693 | lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock" | |
731 | lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock" |
|
|||
732 |
|
694 | |||
|
695 | Inputs: | |||
|
696 | None | |||
|
697 | ||||
733 | Return: |
|
698 | Return: | |
734 | 0 : Si no hay mas archivos disponibles |
|
699 | data : retorna un bloque de datos (nFFTs * alturas * canales) copiados desde el | |
735 | 1 : Si hizo una buena copia del buffer |
|
700 | buffer. Si no hay mas archivos a leer retorna None. | |
736 |
|
701 | |||
737 | Variables afectadas: |
|
702 | Variables afectadas: | |
738 | self.m_Spectra |
|
703 | self.m_Spectra | |
739 | self.__buffer_id |
|
704 | self.__buffer_id | |
740 | self.flagResetProcessing |
|
705 | ||
741 | self.flagIsNewBlock |
|
706 | Excepciones: | |
|
707 | ||||
742 | """ |
|
708 | """ | |
743 |
|
709 | |||
744 | self.flagResetProcessing = 0 |
|
710 | self.flagResetProcessing = 0 | |
@@ -759,6 +725,7 class SpectraReader( DataReader ): | |||||
759 | return 0 |
|
725 | return 0 | |
760 |
|
726 | |||
761 | #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) |
|
727 | #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) | |
|
728 | #print type(self.__buffer_sspc) | |||
762 |
|
729 | |||
763 | time = self.m_BasicHeader.utc + self.__buffer_id*self.__ippSeconds |
|
730 | time = self.m_BasicHeader.utc + self.__buffer_id*self.__ippSeconds | |
764 |
|
731 | |||
@@ -768,30 +735,13 class SpectraReader( DataReader ): | |||||
768 | self.m_Spectra.data_dc = self.__buffer_dc |
|
735 | self.m_Spectra.data_dc = self.__buffer_dc | |
769 |
|
736 | |||
770 | #call setData - to Data Object |
|
737 | #call setData - to Data Object | |
|
738 | ||||
771 | return 1 |
|
739 | return 1 | |
772 |
|
740 | |||
773 |
|
741 | |||
774 |
class SpectraWriter( |
|
742 | class SpectraWriter(DataWriter): | |
775 | """ |
|
|||
776 | Desc: |
|
|||
777 | Esta clase permite escribir datos de espectros a archivos procesados (.pdata). La escritura |
|
|||
778 | de los datos siempre se realiza por bloques. |
|
|||
779 | """ |
|
|||
780 |
|
743 | |||
781 | def __init__(self): |
|
744 | def __init__(self): | |
782 | """ |
|
|||
783 | Desc : |
|
|||
784 | Inicializador de la clase SpectraWriter para la escritura de datos de espectros. |
|
|||
785 |
|
||||
786 | Affected : |
|
|||
787 | self.m_Spectra |
|
|||
788 | self.m_BasicHeader |
|
|||
789 | self.m_SystemHeader |
|
|||
790 | self.m_RadarControllerHeader |
|
|||
791 | self.m_ProcessingHeader |
|
|||
792 |
|
||||
793 | Return : None |
|
|||
794 | """ |
|
|||
795 | if m_Spectra == None: |
|
745 | if m_Spectra == None: | |
796 | m_Spectra = Spectra() |
|
746 | m_Spectra = Spectra() | |
797 |
|
747 | |||
@@ -805,7 +755,7 class SpectraWriter( DataWriter ): | |||||
805 |
|
755 | |||
806 | self.__flagIsNewFile = 0 |
|
756 | self.__flagIsNewFile = 0 | |
807 |
|
757 | |||
808 | self.__buffer_spc = 0 |
|
758 | self.__buffer_sspc = 0 | |
809 |
|
759 | |||
810 | self.__buffer_id = 0 |
|
760 | self.__buffer_id = 0 | |
811 |
|
761 | |||
@@ -828,31 +778,15 class SpectraWriter( DataWriter ): | |||||
828 | self.m_RadarControllerHeader = RadarControllerHeader() |
|
778 | self.m_RadarControllerHeader = RadarControllerHeader() | |
829 |
|
779 | |||
830 | self.m_ProcessingHeader = ProcessingHeader() |
|
780 | self.m_ProcessingHeader = ProcessingHeader() | |
831 |
|
||||
832 |
|
781 | |||
833 | def __setNextFile(self): |
|
782 | def __setNextFile(self): | |
834 | """ |
|
|||
835 | Desc: |
|
|||
836 | Determina el siguiente file que sera escrito |
|
|||
837 |
|
||||
838 | Affected: |
|
|||
839 | self.filename |
|
|||
840 | self.__subfolder |
|
|||
841 | self.__fp |
|
|||
842 | self.__setFile |
|
|||
843 | self.__flagIsNewFile |
|
|||
844 |
|
||||
845 | Return: |
|
|||
846 | 0 : Si el archivo no puede ser escrito |
|
|||
847 | 1 : Si el archivo esta listo para ser escrito |
|
|||
848 | """ |
|
|||
849 | setFile = self.__setFile |
|
783 | setFile = self.__setFile | |
850 | ext = self.__ext |
|
784 | ext = self.__ext | |
851 | path = self.__path |
|
785 | path = self.__path | |
852 |
|
786 | |||
853 | setFile += 1 |
|
787 | setFile += 1 | |
854 |
|
788 | |||
855 |
if not( |
|
789 | if not(self.__blocksCounter >= self.m_ProcessingHeader.dataBlocksPerFile): | |
856 | self.__fp.close() |
|
790 | self.__fp.close() | |
857 | return 0 |
|
791 | return 0 | |
858 |
|
792 | |||
@@ -877,16 +811,9 class SpectraWriter( DataWriter ): | |||||
877 |
|
811 | |||
878 | return 1 |
|
812 | return 1 | |
879 |
|
813 | |||
|
814 | ||||
880 |
|
815 | |||
881 |
def __setNewBlock( |
|
816 | def __setNewBlock(self): | |
882 | """ |
|
|||
883 | Desc: |
|
|||
884 | Si es un nuevo file escribe el First Header caso contrario escribe solo el Basic Header |
|
|||
885 |
|
||||
886 | Return: |
|
|||
887 | 0 : si no pudo escribir nada |
|
|||
888 | 1 : Si escribio el Basic el First Header |
|
|||
889 | """ |
|
|||
890 | if self.__fp == None: |
|
817 | if self.__fp == None: | |
891 | return 0 |
|
818 | return 0 | |
892 |
|
819 | |||
@@ -904,28 +831,12 class SpectraWriter( DataWriter ): | |||||
904 | self.__writeFirstHeader() |
|
831 | self.__writeFirstHeader() | |
905 |
|
832 | |||
906 | return 1 |
|
833 | return 1 | |
907 |
|
||||
908 |
|
834 | |||
909 | def __writeBlock(self): |
|
835 | def __writeBlock(self): | |
910 | """ |
|
|||
911 | Desc: |
|
|||
912 | Escribe el buffer en el file designado |
|
|||
913 |
|
||||
914 | Return: None |
|
|||
915 |
|
836 | |||
916 | Affected: |
|
837 | numpy.save(self.__fp,self.__buffer_sspc) | |
917 | self.__buffer_spc |
|
|||
918 | self.__buffer_id |
|
|||
919 | self.__flagIsNewFile |
|
|||
920 | self.flagIsNewBlock |
|
|||
921 | self.nWriteBlocks |
|
|||
922 | self.__blocksCounter |
|
|||
923 |
|
||||
924 | Return: None |
|
|||
925 | """ |
|
|||
926 | numpy.save(self.__fp,self.__buffer_spc) |
|
|||
927 |
|
838 | |||
928 | self.__buffer_spc = numpy.array([],self.__dataType) |
|
839 | self.__buffer_sspc = numpy.array([],self.__dataType) | |
929 |
|
840 | |||
930 | self.__buffer_id = 0 |
|
841 | self.__buffer_id = 0 | |
931 |
|
842 | |||
@@ -937,52 +848,21 class SpectraWriter( DataWriter ): | |||||
937 |
|
848 | |||
938 | self.__blocksCounter += 1 |
|
849 | self.__blocksCounter += 1 | |
939 |
|
850 | |||
940 |
|
||||
941 | def writeNextBlock(self): |
|
851 | def writeNextBlock(self): | |
942 | """ |
|
|||
943 | Desc: |
|
|||
944 | Selecciona el bloque siguiente de datos y los escribe en un file |
|
|||
945 |
|
||||
946 | Return: |
|
|||
947 | 0 : Si no hizo pudo escribir el bloque de datos |
|
|||
948 | 1 : Si no pudo escribir el bloque de datos |
|
|||
949 | """ |
|
|||
950 | if not(self.__setNewBlock()): |
|
852 | if not(self.__setNewBlock()): | |
951 | return 0 |
|
853 | return 0 | |
952 |
|
854 | |||
953 | self.__writeBlock() |
|
855 | self.__writeBlock() | |
954 |
|
856 | |||
955 | return 1 |
|
857 | return 1 | |
956 |
|
||||
957 |
|
858 | |||
958 |
def __hasAllDataInBuffer( |
|
859 | def __hasAllDataInBuffer(self): | |
959 | """ |
|
|||
960 | Desc: |
|
|||
961 | Determina si se tiene toda la data en el buffer |
|
|||
962 |
|
||||
963 | Return: |
|
|||
964 | 0 : Si no tiene toda la data |
|
|||
965 | 1 : Si tiene toda la data |
|
|||
966 | """ |
|
|||
967 | if self.__buffer_id >= self.m_ProcessingHeader.profilesPerBlock: |
|
860 | if self.__buffer_id >= self.m_ProcessingHeader.profilesPerBlock: | |
968 | return 1 |
|
861 | return 1 | |
969 |
|
862 | |||
970 | return 0 |
|
863 | return 0 | |
971 |
|
||||
972 |
|
864 | |||
973 |
def putData( |
|
865 | def putData(self): | |
974 | """ |
|
|||
975 | Desc: |
|
|||
976 | Setea un bloque de datos y luego los escribe en un file |
|
|||
977 |
|
||||
978 | Return: |
|
|||
979 | None : Si no hay data o no hay mas files que puedan escribirse |
|
|||
980 | 1 : Si se escribio la data de un bloque en un file |
|
|||
981 |
|
||||
982 | Affected: |
|
|||
983 | self.__buffer_spc |
|
|||
984 | self.__buffer_id |
|
|||
985 | """ |
|
|||
986 | self.flagIsNewBlock = 0 |
|
866 | self.flagIsNewBlock = 0 | |
987 |
|
867 | |||
988 | if self.m_Spectra.noData: |
|
868 | if self.m_Spectra.noData: | |
@@ -994,12 +874,13 class SpectraWriter( DataWriter ): | |||||
994 | data['imag'] = self.m_Spectra.data.imag |
|
874 | data['imag'] = self.m_Spectra.data.imag | |
995 | data = data.reshape((-1)) |
|
875 | data = data.reshape((-1)) | |
996 |
|
876 | |||
997 | self.__buffer_spc = numpy.hstack((self.__buffer_spc,data)) |
|
877 | self.__buffer_sspc = numpy.hstack((self.__buffer_sspc,data)) | |
998 |
|
878 | |||
999 | self.__buffer_id += 1 |
|
879 | self.__buffer_id += 1 | |
1000 |
|
880 | |||
1001 | if __hasAllDataInBuffer(): |
|
881 | if __hasAllDataInBuffer(): | |
1002 |
self.writeNextBlock() |
|
882 | self.writeNextBlock() | |
|
883 | ||||
1003 |
|
884 | |||
1004 | if self.noMoreFiles: |
|
885 | if self.noMoreFiles: | |
1005 | print 'Process finished' |
|
886 | print 'Process finished' | |
@@ -1008,15 +889,8 class SpectraWriter( DataWriter ): | |||||
1008 | return 1 |
|
889 | return 1 | |
1009 |
|
890 | |||
1010 |
|
891 | |||
1011 |
def setup( |
|
892 | def setup(self,path,set=None,format=None): | |
1012 |
|
|
893 | ||
1013 | Desc: |
|
|||
1014 | Setea el tipo de formato en la cual sera guardada la data y escribe el First Header |
|
|||
1015 |
|
||||
1016 | Inputs: |
|
|||
1017 | set : el seteo del file a salvar |
|
|||
1018 | format : formato en el cual sera salvado un file |
|
|||
1019 | """ |
|
|||
1020 | if set == None: |
|
894 | if set == None: | |
1021 | set = -1 |
|
895 | set = -1 | |
1022 | else: |
|
896 | else: | |
@@ -1034,18 +908,18 class SpectraWriter( DataWriter ): | |||||
1034 |
|
908 | |||
1035 | self.__setFile = set |
|
909 | self.__setFile = set | |
1036 |
|
910 | |||
1037 |
if not( |
|
911 | if not(self.__setNextFile()): | |
1038 | print "zzzzzzzzzzzz" |
|
912 | print "zzzzzzzzzzzz" | |
1039 | return 0 |
|
913 | return 0 | |
1040 |
|
914 | |||
1041 | self.__writeFirstHeader() # dentro de esta funcion se debe setear e __dataType |
|
915 | self.__writeFirstHeader() # dentro de esta funcion se debe setear e __dataType | |
1042 |
|
916 | |||
1043 |
self.__buffer_spc = numpy.array( |
|
917 | self.__buffer_sspc = numpy.array([],self.__dataType) | |
1044 |
|
918 | |||
1045 |
|
919 | |||
|
920 | ||||
1046 | def __writeBasicHeader(self): |
|
921 | def __writeBasicHeader(self): | |
1047 | pass |
|
922 | pass | |
1048 |
|
923 | |||
1049 |
|
||||
1050 | def __writeFirstHeader(self): |
|
924 | def __writeFirstHeader(self): | |
1051 | pass |
|
925 | pass |
General Comments 0
You need to be logged in to leave comments.
Login now