1717from hypernets_processor .data_io .hypernets_ds_builder import HypernetsDSBuilder
1818from hypernets_processor .version import __version__
1919from hypernets_processor .data_io .dataset_util import DatasetUtil as du
20+
2021'''___Authorship___'''
2122__author__ = "Clémence Goyens"
2223__created__ = "12/2/2020"
@@ -57,15 +58,14 @@ def read_header(self, f, headerDef):
5758 data = f .read (headLen )
5859 print (data )
5960 if len (data ) != headLen :
60- print ( "Data length not silimar to headlength " )
61+ self . context . logger . error ( "Spectra length not similar to header length " )
6162 break
6263 continue
63- if version_info > (3 , 0 ):
64- print ("%02X " * headLen % (tuple ([b for b in data ])))
65- else :
66- print ("%02X " * headLen % (tuple ([ord (b ) for b in data ])))
64+ # if version_info > (3, 0):
65+ # print("%02X " * headLen % (tuple([b for b in data])))
66+ # else:
67+ # print("%02X " * headLen % (tuple([ord(b) for b in data])))
6768 var , = unpack (headFormat , data )
68- print (var )
6969 if headName == "Pixel Count" : pixel_count = var
7070 if headName == "Spectrum Type Information" :
7171 specInfo = format (ord (data ), '#010b' )
@@ -76,9 +76,6 @@ def read_header(self, f, headerDef):
7676 # bit 4 for radiance,
7777 # bit 3 for irradiance,
7878 # bits 4 and 3 for dark;
79-
80- print (specInfo )
81-
8279 strInfo = ""
8380
8481 if specInfo [7 ]: strInfo += "VIS " # noqa
@@ -89,22 +86,21 @@ def read_header(self, f, headerDef):
8986 if specInfo [4 ] and not specInfo [3 ]: strInfo += "Rad" # noqa
9087 if specInfo [3 ] and specInfo [4 ]: strInfo += "Error" # noqa
9188
92- print ("Spectrum Type Info : %s " % strInfo )
89+ self . context . logger . info ("Spectrum Type Info : %s " % strInfo )
9390
9491 header [headName ] = var
9592 return header
9693
9794 def read_data (self , f , data_len ):
98- # print(f)
9995 prev = 0
100- print ("Reading Data spectra ..." )
96+ self . context . logger . info ("Reading Data spectra ..." )
10197 dataSpectra = []
10298 print (data_len )
10399 for i in range (int (data_len )): # Last read data is count
104100 # print(i)
105101 data = f .read (2 )
106102 if len (data ) != 2 :
107- print ("Warning : impossible to read 2 bytes" )
103+ self . context . logger . error ("Warning : impossible to read 2 bytes" )
108104 break
109105 continue
110106
@@ -117,28 +113,27 @@ def read_data(self, f, data_len):
117113
118114 def read_footer (self , f , datalength ):
119115 # print(f)
120- print ("Reading CRC32 ..." )
116+ self . context . logger . info ("Reading CRC32 ..." )
121117 data = f .read (datalength )
122118 unpackData , = unpack ('<I' , data )
123- print (unpackData )
124119
125120 def read_wavelength (self , pixcount ):
126121
127122 import numpy as np
128123 print (pixcount )
129124 pix = np .linspace (0 , pixcount , pixcount )
130125 if pixcount == 2048 :
131- print ("Visible spectra, pixel count {}" .format (pix ))
126+ self . context . logger . info ("Visible spectra, pixel count {}" .format (pix ))
132127 cc = self .cc_vis
133128 # or rather have it estimated only once for vis and swir?
134129 wvl = float (cc ['mapping_vis_a' ]) + pix * float (cc ['mapping_vis_b' ]) + pix ** 2 * float (cc ['mapping_vis_c' ])
135130 + pix ** 3 * float (cc ['mapping_vis_d' ]) + pix ** 4 * float (cc ['mapping_vis_e' ])
136131 + pix ** 5 * float (cc ['mapping_vis_f' ])
137- print ("Wavelength range:" , min (wvl ), "-" , max (wvl ))
132+ self . context . logger . info ("Wavelength range:" , min (wvl ), "-" , max (wvl ))
138133
139134 elif pixcount == 256 :
140135 file = '/home/cgoyens/OneDrive/BackUpThinkpadClem/Projects/HYPERNETS/NetworkDesign_D52/DataProcChain/hypernets_processor/hypernets_processor/data_io/tests/reader/SWIR_wvl'
141- print ("SWIR spectra, pixel count {}" .format (pix ))
136+ self . context . logger . info ("SWIR spectra, pixel count {}" .format (pix ))
142137 # or rather have it estimated only once for vis and swir?
143138 wvl = np .loadtxt (file , delimiter = "\t " )
144139
@@ -148,7 +143,6 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
148143
149144 model_name = self .model
150145
151-
152146 # 1. Read header to create template dataset (including wvl and scan dimensions + end of file!!)
153147 # ----------------------------------------
154148
@@ -188,9 +182,9 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
188182 # Header definition with length, description and decoding format
189183
190184 header = self .read_header (f , HEADER_DEF )
191- print (header )
185+ self . context . logger . debugger (header )
192186
193- pixCount = header ['Pixel Count' ]
187+ pixCount = header ['Pixel Count' ]
194188
195189 # if bool(header) == False:
196190 # print("Data corrupt go to next line")
@@ -207,7 +201,6 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
207201 # -----------------------------------
208202 dim_sizes_dict = {"wavelength" : len (wvl ), "scan" : scanDim }
209203
210- print ("Wvl and Scan Dimensions:" , len (wvl ), scanDim )
211204 # use template from variables and metadata in format
212205 ds = HypernetsDSBuilder ().create_ds_template (dim_sizes_dict = dim_sizes_dict , ds_format = fileformat )
213206
@@ -220,11 +213,9 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
220213
221214 # read all spectra (== spe files with concanated files) in a series
222215 for spectra in series :
223- print (spectra )
224216 model = dict (zip (model_name , spectra .split ('_' )[:- 1 ]))
225217 specBlock = model ['series_rep' ] + '_' + model ['series_id' ] + '_' + model ['vaa' ] + '_' + model [
226218 'azimuth_ref' ] + '_' + model ['vza' ]
227- print (specBlock )
228219 # spectra attributes from metadata file
229220 specattr = dict (metadata [specBlock ])
230221
@@ -253,17 +244,16 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
253244 while nextLine :
254245 # if no header comment those lines
255246 header = self .read_header (f , HEADER_DEF )
256- print (header )
257247 if bool (header ) == False :
258- print ("Data corrupt go to next line" )
248+ self . context . logger . error ("Data corrupt go to next line" )
259249 break
260250 continue
261- pixCount = header ['Pixel Count' ]
251+ pixCount = header ['Pixel Count' ]
262252 scan = self .read_data (f , pixCount )
263253 # should include this back again when crc32 is in the headers!
264- #crc32 = self.read_footer(f, 4)
254+ # crc32 = self.read_footer(f, 4)
265255
266- #HypernetsReader(self.context).plot_spectra(spectra, scan)
256+ # HypernetsReader(self.context).plot_spectra(spectra, scan)
267257
268258 # fill in dataset
269259 # maybe xarray has a better way to do - check merge, concat, ...
@@ -320,10 +310,6 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
320310 ds ['acceleration_y_std' ][scan_number ] = header ['acceleration_y_std' ] * a / b
321311 ds ['acceleration_z_mean' ][scan_number ] = header ['acceleration_z_mean' ] * a / b
322312 ds ['acceleration_z_std' ][scan_number ] = header ['acceleration_z_std' ] * a / b
323-
324- print (header ['Pixel Count' ])
325- print (pixCount )
326- print (len (scan ))
327313 ds ['digital_number' ][0 :pixCount , scan_number ] = scan
328314
329315 scan_number += 1
@@ -335,8 +321,8 @@ def read_series(self, seq_dir, series, lat, lon, metadata, flag, fileformat):
335321
336322 def read_metadata (self , seq_dir ):
337323
338- model_name = self .model
339- flag = 0
324+ model_name = self .model
325+ flag = 0
340326 # Spectra name : AA_BBB_CCCC_D_EEEE_FFF_GG_HHHH_II_JJJJ.spe
341327
342328 # A : iterator over "the sequence repeat time"
@@ -372,8 +358,6 @@ def read_metadata(self, seq_dir):
372358
373359 metadata = ConfigParser ()
374360
375- print (os .path .join (seq_dir , "metadata.txt" ))
376-
377361 if os .path .exists (os .path .join (seq_dir , "metadata.txt" )):
378362 metadata .read (os .path .join (seq_dir , "metadata.txt" ))
379363 # ------------------------------
@@ -389,18 +373,18 @@ def read_metadata(self, seq_dir):
389373 elif 'lat' in (globalattr .keys ()):
390374 lat = float (globalattr ['lat' ])
391375 else :
392- print ("Latitude is not given, use default" )
376+ # self.context.logger.error ("Latitude is not given, use default")
393377 lat = self .context .get_config_value ("lat" )
394- flag = flag + 2 ** self .context .get_config_value ("lat_default" ) # du.set_flag(flag, "lat_default") #
378+ flag = flag + 2 ** self .context .get_config_value ("lat_default" ) # du.set_flag(flag, "lat_default") #
395379
396380 if 'longitude' in (globalattr .keys ()):
397381 lon = float (globalattr ['longitude' ])
398382 elif 'lon' in (globalattr .keys ()):
399383 lon = float (globalattr ['lon' ])
400384 else :
401- print ("Longitude is not given, use default" )
385+ # self.context.logger.error ("Longitude is not given, use default")
402386 lon = self .context .get_config_value ("lon" )
403- flag = flag + 2 ** self .context .get_config_value ("lon_default" ) # du.set_flag(flag, "lon_default") #
387+ flag = flag + 2 ** self .context .get_config_value ("lon_default" ) # du.set_flag(flag, "lon_default") #
404388
405389 # 2. Estimate wavelengths - NEED TO CHANGE HERE!!!!!!
406390 # ----------------------
@@ -441,7 +425,7 @@ def read_metadata(self, seq_dir):
441425 # ACTION_NONE : 0x03 (03)
442426 index_action = model_name .index ("action" )
443427 action = [re .split ('_|\.' , i )[index_action ] for i in seriesName ]
444- print (action )
428+ # self.context.logger.info (action)
445429
446430 # this is slow????
447431 seriesIrr = [x for x , y in zip (seriesName , action ) if int (y ) == 8 ]
@@ -450,10 +434,10 @@ def read_metadata(self, seq_dir):
450434
451435
452436 else :
453- print ("Missing metadata file in sequence directory - check sequence directory" )
437+ self . context . logger . error ("Missing metadata file in sequence directory - check sequence directory" )
454438 exit ()
455439
456- return seq , lat , lon , cc , metadata , seriesIrr , seriesRad , seriesBlack , seriesPict ,flag
440+ return seq , lat , lon , cc , metadata , seriesIrr , seriesRad , seriesBlack , seriesPict , flag
457441
458442 def read_sequence (self , seq_dir , setfile = None ):
459443
@@ -462,55 +446,60 @@ def read_sequence(self, seq_dir, setfile=None):
462446 settings_file = setfile
463447
464448 # define data to return none at end of method if does not exist
465- L0_IRR = None
466- L0_RAD = None
467- L0_BLA = None
449+ l0_irr = None
450+ l0_rad = None
451+ l0_bla = None
468452
469453 seq , lat , lon , cc , metadata , seriesIrr , seriesRad , seriesBlack , seriesPict , flag = self .read_metadata (
470454 seq_dir )
471455
472456 if seriesIrr :
473- L0_IRR = self .read_series (seq_dir , seriesIrr , lat , lon , metadata , flag , "L0_IRR" )
474-
457+ l0_irr = self .read_series (seq_dir , seriesIrr , lat , lon , metadata , flag , "l0_irr" )
458+ if self .context .get_config_value ("write_l0" ):
459+ self .writer .write (l0_irr , overwrite = True )
475460 # can't use this when non concatanted spectra
476461 # if all([os.path.isfile(os.path.join(seq_dir,"RADIOMETER/",f)) for f in seriesIrr]):
477- # L0_IRR =read_series(seriesIrr,cc, lat, lon, metadata, "L0_IRR ")
462+ # l0_irr =read_series(seriesIrr,cc, lat, lon, metadata, "l0_irr ")
478463 # else:
479464 # print("Irradiance files listed but don't exist")
480465 else :
481- print ("No irradiance data for this sequence" )
466+ self . context . logger . error ("No irradiance data for this sequence" )
482467
483468 if seriesRad :
484- L0_RAD = self .read_series (seq_dir , seriesRad , lat , lon , metadata ,flag , "L0_RAD" )
469+ l0_rad = self .read_series (seq_dir , seriesRad , lat , lon , metadata , flag , "l0_rad" )
470+ if self .context .get_config_value ("write_l0" ):
471+ self .writer .write (l0_rad , overwrite = True )
485472 # if all([os.path.isfile(os.path.join(seq_dir,"RADIOMETER/",f)) for f in seriesRad]):
486- # L0_RAD =read_series(seriesRad,cc, lat, lon, metadata, "L0_RAD ")
473+ # l0_rad =read_series(seriesRad,cc, lat, lon, metadata, "l0_rad ")
487474 # else:
488475 # print("Radiance files listed but don't exist")
489476 else :
490- print ("No radiance data for this sequence" )
477+ self . context . logger . error ("No radiance data for this sequence" )
491478
492479 if seriesBlack :
493- L0_BLA = self .read_series (seq_dir , seriesBlack , lat , lon , metadata ,flag , "L0_BLA" )
480+ l0_bla = self .read_series (seq_dir , seriesBlack , lat , lon , metadata , flag , "l0_bla" )
481+ if self .context .get_config_value ("write_l0" ):
482+ self .writer .write (l0_bla , overwrite = True )
494483 # if all([os.path.isfile(os.path.join(seq_dir, "RADIOMETER/", f)) for f in seriesBlack]):
495- # L0_BLA = self.read_series(seq_dir, seriesBlack, cc, lat, lon, metadata, "L0_BLA ")
484+ # l0_bla = self.read_series(seq_dir, seriesBlack, cc, lat, lon, metadata, "l0_bla ")
496485 else :
497- print ("No black data for this sequence" )
486+ self . context . logger . error ("No black data for this sequence" )
498487
499488 if seriesPict :
500489 print ("Here we should move the pictures to some place???" )
501490 else :
502- print ("No pictures for this sequence" )
503-
504- return L0_IRR , L0_RAD , L0_BLA
505-
506- def read_flag (self , flagint ):
507- flagarray = 2 ** (np .linspace (0 , 31 , 32 ))
508- flags = []
509- while flagint :
510- r = 2 ** round (math .log2 (flagint ), 0 )
511- flags .append (int (np .where (flagarray == r )[0 ]))
512- flagint -= r
513- return (flags )
491+ self . context . logger . error ("No pictures for this sequence" )
492+
493+ return l0_irr , l0_rad , l0_bla
494+
495+ # def read_flag(self, flagint):
496+ # flagarray = 2 ** (np.linspace(0, 31, 32))
497+ # flags = []
498+ # while flagint:
499+ # r = 2 ** round(math.log2(flagint), 0)
500+ # flags.append(int(np.where(flagarray == r)[0]))
501+ # flagint -= r
502+ # return(flags)
514503
515504
516505if __name__ == '__main__' :
0 commit comments