def scientific_processing(self): LOGGER.info("Starting ScientifiqProcessing") l_InitMode = False l_BackwardMode = False l_Sat = self._l1product.Satellite """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Get and registers the L2COMM GIPP file L2COMM parameters have been read in the L1ImaegFileReader !! ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2COMM_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2COMM", l_Sat) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2COMM parameters...") l_GIP_L2COMM_Filename = file_utils.copy_file_to_directory( l_GIP_L2COMM_Filename, self._apphandler.get_working_directory(), notestmode=True) translate_xsl(l_GIP_L2COMM_Filename, self._apphandler._stylesheet) LOGGER.info("The GIP_L2COMM file detected for the satellite '" + l_Sat + "' is <" + l_GIP_L2COMM_Filename + ">.") l_GIPPL2COMMHandler = GippL2COMMEarthExplorerXMLFileHandler( l_GIP_L2COMM_Filename) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Register the GIPP file "GIP_L2SITE" */ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2SITE_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2SITE", self._l1product.UniqueSatellite) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2SITE parameters...") l_GIP_L2SITE_Filename = file_utils.copy_file_to_directory( l_GIP_L2SITE_Filename, self._apphandler.get_working_directory(), notestmode=True) translate_xsl(l_GIP_L2SITE_Filename, self._apphandler._stylesheet) LOGGER.info("The GIP_L2SITE file detected for the satellite '" + self._l1product.UniqueSatellite + "' is <" + l_GIP_L2SITE_Filename + ">.") # Get the athmospheric/CAMS # --------------------------------------------------------------------------------------------- if l_GIPPL2COMMHandler.get_value_b("UseCamsData"): l_modelList = l_GIPPL2COMMHandler.get_value("ListOfModels").split() l_avgTime = date_utils.get_julianday_as_double( self._l1product.ProductDate) LOGGER.info("Cams data requested") # Verify if cams file are available before anything if self._CAMS_Files_HandlersMAP[l_Sat].has_cams_data(l_avgTime): self._CAMS_Files_HandlersMAP[l_Sat].extract_cams_datas( self._l1product.CenterCorner.latitude, self._l1product.CenterCorner.longitude, l_avgTime) if self._CAMS_Files_HandlersMAP[l_Sat].valid: self._AthmosphericLutHandlerMap[l_Sat].set_proportions( self._CAMS_Files_HandlersMAP[l_Sat].proportions) LOGGER.info("CAMS found, sampling : " + str( self._CAMS_Files_HandlersMAP[l_Sat].out_rh_sampling)) for m in l_modelList: l_use_rh = self._CAMS_Files_HandlersMAP[ l_Sat].get_extinction_map()[m]["rh_dep"] self._AthmosphericLutHandlerMap[ l_Sat].add_lut_for_model( self._apphandler.get_input_directory(), self._apphandler.get_working_directory(), l_Sat, m, self._validate_schemas, os.path.join( self._apphandler. get_schemas_root_install_dir(), self.plugin.MAJA_INSTALL_SCHEMAS_DIR), p_userh=l_use_rh, p_rh=self._CAMS_Files_HandlersMAP[l_Sat]. out_rh_sampling) tmp_atmolut = self._apphandler.get_directory_manager( ).get_temporary_directory("AtmoLut_", do_always_remove=True) self._AthmosphericLutHandlerMap[ l_Sat].gen_synthetised_luts(tmp_atmolut) self._cams_status = CAMSStatus.ACTIVATED_OK else: LOGGER.warn( "No valid cam data found for product, using constant model" ) self._cams_status = CAMSStatus.ACTIVATED_NOAVAILABLEDATA else: LOGGER.warn("No valid cam data found for product at time " + date_utils.get_date_yyyymmdd_from_tm( self._l1product.ProductDate) + ", using constant model") self._cams_status = CAMSStatus.ACTIVATED_NOAVAILABLEDATA # --------------------------------------------------------------------------------------------- # Initialize L1 image reader l_UniqueSatelliteD = self._l1product.UniqueSatellite l1_image_reader = L1ImageReaderProvider.create( self._l1product.PluginName, self._l1product, self._apphandler, l_GIPPL2COMMHandler, self.DataDEMMap.get(l_UniqueSatelliteD), constants.ReadL1Mode.READ_L1_MODE_FOR_ALGORITHMS) # ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** # Initialize the L2 Image file reader # Only in Nominal and Backward mode # ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** LOGGER.debug( "Starting L2NominalProcessor::ScientificProcessing(): get the L2 product filename in the input directory..." ) l2_image_reader = product_utils.get_input_l2_image_product( self._apphandler.get_input_directory(), self._apphandler, False, self.DataDEMMap.get(l_UniqueSatelliteD)) LOGGER.info("The L2 product found is <" + l2_image_reader.ProductFilename + ">.") # ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** # Initialize the Output L2 Image product filename if self._apphandler.get_output_plugin() is not None: l2_image_file_writer = L2ImageWriterProvider.create( self._apphandler.get_output_plugin()) else: l2_image_file_writer = L2ImageWriterProvider.create( MAJAPluginProvider.auto_tm(self._l1product.PluginName)) if not l2_image_file_writer.can_write(self._l1product.PluginName): raise MajaChainException("Plugin '" + self._apphandler.get_output_plugin() + "' can not write product from '" + self._l1product.PluginName + "' products ") # --------------------------------------------------------------------------------------------- # Get the ozone value l_UseDefaultConstantOzoneAmount = self.plugin.ConfigUserCamera.get_Algorithms(). \ get_Atmospheric_Absorption_Correction().get_Use_Default_Constant_Ozone_Amount() # l_UseDefaultConstantOzoneAmount = True l_OzoneAmountValue = 0.0 if not l_UseDefaultConstantOzoneAmount: l_OzoneAmountValue = get_ozone_amount( gipp_utils.get_gipp_filename( self._apphandler.get_input_directory(), "EXO_METDTA"), self._l1product.CenterCorner) else: l_OzoneAmountValue = float( l_GIPPL2COMMHandler.l2_comm_values["OzoneAmountDefaultValue"]) LOGGER.info("The 'OzoneAmount' used is " + str(l_OzoneAmountValue)) # Log system infos LOGGER.info(self._apphandler.get_system_infos()) # check conditional clouds ? self._checking_conditional_clouds = True LOGGER.info( "Starting from L2InitProcessor, the main ScientificSingleProductProcessing() method..." ) l_enableL2resolution = self._apphandler.get_user_conf().get_Computing( ).get_EnableL2ResolutionProcessing() super(L2NominalProcessor, self).process_one_product(l_InitMode, l_BackwardMode, l_enableL2resolution, False, True, True, self._l1product, l1_image_reader, l_OzoneAmountValue, self._cams_status, l2_image_reader, l2_image_file_writer) LOGGER.info("Ending ScientifiqProcessing") # Log system infos LOGGER.info(self._apphandler.get_system_infos())
def scientific_processing(self): LOGGER.info("Starting ScientifiqProcessing") # Scientific processing mode. Set to INIT, NOMINAL or BACKWARD value l_NumberOfL1Product = len(self._listofl1product) LOGGER.debug(self._listofl1product) # Check if more than one valid input is in the list if l_NumberOfL1Product == 1: raise MajaDataException( "L2BackwardProcessing need more than one input L1 image product." ) # Process the last product in the list with INIT MODE # Initialize the mode l_InitMode = True l_BackwardMode = True l_IndexOfL1Product = l_NumberOfL1Product l_finalize_backward = False l_EnableL2ResolutionProcessing = self._apphandler.get_user_conf( ).get_Computing().get_EnableL2ResolutionProcessing() if not l_EnableL2ResolutionProcessing: LOGGER.info( "*************************************************************************************************" ) LOGGER.info( "ATTENTION: L2BACKWARD PROCESSING: The option to Write product to L2 resolution has been DISABLE !!!" ) LOGGER.info( "**************************************************************************************************" ) # ---------------------------------------------------------------- # Initialize the flag to validate the clouds probably # ---------------------------------------------------------------- self._checking_conditional_clouds = False l_conditional_loop = False l_write_earthexplorer_headers = False l_write_temporary_l2_product = True l_write_l2_product_to_l2resolution = False l_InputL2ImageFilename = "" while not l_conditional_loop: l_InputL1ProductInfo = self._listofl1product[l_IndexOfL1Product - 1] l_Sat = l_InputL1ProductInfo.Satellite # If last L1 product, write headers and write in the output directory # ---------------------------------------------------------------- if l_IndexOfL1Product == 1: l_write_earthexplorer_headers = True l_write_l2_product_to_l2resolution = l_EnableL2ResolutionProcessing l_write_temporary_l2_product = False l_finalize_backward = True LOGGER.warn( "L2Backward processing: the input L1 product valid for the Init mode is the last product. The Standard mode is disable !" ) # ************************************************************************************************************* # Init the current PluginBase pointer for the satellite in the MAIN global DataApplicationHandler Instance # ************************************************************************************************************* self.plugin = MAJAPluginProvider.create( l_InputL1ProductInfo.PluginName, self._apphandler) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Get and registers the L2COMM GIPP file L2COMM parameters have been read in the L1ImaegFileReader !! ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2COMM_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2COMM", l_Sat) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2COMM parameters...") l_GIP_L2COMM_Filename = file_utils.copy_file_to_directory( l_GIP_L2COMM_Filename, self._apphandler.get_working_directory(), notestmode=True) translate_xsl(l_GIP_L2COMM_Filename, self._apphandler._stylesheet) LOGGER.info("The GIP_L2COMM file detected for the satellite '" + l_Sat + "' is <" + l_GIP_L2COMM_Filename + ">.") l_GIPPL2COMMHandler = GippL2COMMEarthExplorerXMLFileHandler( l_GIP_L2COMM_Filename) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Register the GIPP file "GIP_L2SITE" */ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2SITE_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2SITE", l_InputL1ProductInfo.UniqueSatellite) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2SITE parameters...") l_GIP_L2SITE_Filename = file_utils.copy_file_to_directory( l_GIP_L2SITE_Filename, self._apphandler.get_working_directory(), notestmode=True) translate_xsl(l_GIP_L2SITE_Filename, self._apphandler._stylesheet) LOGGER.info("The GIP_L2SITE file detected for the satellite '" + l_InputL1ProductInfo.UniqueSatellite + "' is <" + l_GIP_L2SITE_Filename + ">.") # ************************************************************************************************************* # Initialize the L1 Image file reader # ************************************************************************************************************* l_UniqueSatelliteD = l_InputL1ProductInfo.UniqueSatellite l1_image_reader = L1ImageReaderProvider.create( l_InputL1ProductInfo.PluginName, l_InputL1ProductInfo, self._apphandler, l_GIPPL2COMMHandler, self.DataDEMMap.get(l_UniqueSatelliteD), constants.ReadL1Mode.READ_L1_MODE_FOR_ALGORITHMS) # ************************************************************************************************************* # Initialize the L2 Image file writer # ************************************************************************************************************* if self._apphandler.get_output_plugin() is not None: l2_image_file_writer = L2ImageWriterProvider.create( self._apphandler.get_output_plugin()) else: l2_image_file_writer = L2ImageWriterProvider.create( MAJAPluginProvider.auto_tm( l_InputL1ProductInfo.PluginName)) if not l2_image_file_writer.can_write( l_InputL1ProductInfo.PluginName): raise MajaDriverException( "Plugin '" + self._apphandler.get_output_plugin() + "' can not write product from '" + l_InputL1ProductInfo.PluginName + "' products ") # Log system infos LOGGER.info(self._apphandler.get_system_infos()) # Compute the Single product # ---------------------------------------------------------------- self.single_product_processing( l_InitMode, l_BackwardMode, l_finalize_backward, l_InputL1ProductInfo, l1_image_reader, l_write_earthexplorer_headers, l_write_temporary_l2_product, l_write_l2_product_to_l2resolution, None, l2_image_file_writer, l_GIPPL2COMMHandler) LOGGER.debug(" -> self._productIsValid = " + str(self._productIsValid)) LOGGER.debug(" -> p_checking_conditional_clouds = " + str(self._checking_conditional_clouds)) if (self._checking_conditional_clouds is True) and (self._productIsValid is True): l_conditional_loop = True elif l_IndexOfL1Product == 1: l_conditional_loop = True else: l_conditional_loop = False # Store the output file name for the following loop # ---------------------------------------------------------------- l_InputL2ImageFilename = l2_image_file_writer.get_global_product_filename( ) # Decrement the input L1 index product l_IndexOfL1Product = l_IndexOfL1Product - 1 # Log system infos LOGGER.info(self._apphandler.get_system_infos()) # Check the Init mode # ---------------------------------------------------------------- # LAIG-DM-MAC-143599-CS # LAIG-FA-MAC-1658-CNES if (self._checking_conditional_clouds == False) or (self._productIsValid == False): LOGGER.warn( "The INIT mode in Backward processing fail: all L1 products are not valid (too cloudy or too cirrus)" " or the output L2 product generated contains too NoData values! " "See previous [W] messages for more details.") # ************************************************************************************************************* # ************************************************************************************************************* # Process the Nominal mode # ************************************************************************************************************* # ************************************************************************************************************* if l_IndexOfL1Product > 0: l_InitMode = False l_write_earthexplorer_headers = False l_write_l2_product_to_l2resolution = False l_write_temporary_l2_product = True while l_IndexOfL1Product > 1: l_InputL1ProductInfo = self._listofl1product[l_IndexOfL1Product - 1] l_Sat = l_InputL1ProductInfo.Satellite # ************************************************************************************************************* # Init the current PluginBase pointer for the satellite in the MAIN global DataApplicationHandler Instance # ************************************************************************************************************* plugin = MAJAPluginProvider.create( l_InputL1ProductInfo.PluginName, self._apphandler) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Get and registers the L2COMM GIPP file L2COMM parameters have been read in the L1ImaegFileReader !! ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2COMM_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2COMM", l_Sat) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2COMM parameters...") translate_xsl(l_GIP_L2COMM_Filename, self._apphandler._stylesheet) LOGGER.info( "The GIP_L2COMM file detected for the satellite '" + l_Sat + "' is <" + l_GIP_L2COMM_Filename + ">.") l_GIPPL2COMMHandler = GippL2COMMEarthExplorerXMLFileHandler( l_GIP_L2COMM_Filename) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Register the GIPP file "GIP_L2SITE" */ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2SITE_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2SITE", l_InputL1ProductInfo.UniqueSatellite) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2COMM parameters...") translate_xsl(l_GIP_L2SITE_Filename, self._apphandler._stylesheet) LOGGER.info( "The GIP_L2SITE file detected for the satellite '" + l_InputL1ProductInfo.UniqueSatellite + "' is <" + l_GIP_L2SITE_Filename + ">.") # ************************************************************************************************************* # Initialize the L1 Image file reader # ************************************************************************************************************* l_UniqueSatelliteD = l_InputL1ProductInfo.UniqueSatellite l1_image_reader = L1ImageReaderProvider.create( l_InputL1ProductInfo.PluginName, l_InputL1ProductInfo, self._apphandler, l_GIPPL2COMMHandler, self.DataDEMMap.get(l_UniqueSatelliteD), constants.ReadL1Mode.READ_L1_MODE_FOR_ALGORITHMS) # ************************************************************************************************************* # Initialize the L2 Image file reader # ************************************************************************************************************* LOGGER.debug( "Starting L2NominalProcessor::ScientificProcessing(): get the L2 product filename in the input directory..." ) l2_image_reader = L2ImageReaderProvider.create( l_InputL2ImageFilename, self._apphandler, False, self.DataDEMMap.get(l_UniqueSatelliteD)) LOGGER.info("The L2 product found is <" + l2_image_reader.ProductFilename + ">.") # ************************************************************************************************************* # Initialize the L2 Image file writer # ************************************************************************************************************* if self._apphandler.get_output_plugin() is not None: l2_image_file_writer = L2ImageWriterProvider.create( self._apphandler.get_output_plugin()) else: l2_image_file_writer = L2ImageWriterProvider.create( MAJAPluginProvider.auto_tm( l_InputL1ProductInfo.PluginName)) if not l2_image_file_writer.can_write( l_InputL1ProductInfo.PluginName): raise MajaDriverException( "Plugin '" + self._apphandler.get_output_plugin() + "' can not write product from '" + l_InputL1ProductInfo.PluginName + "' products ") # Log system infos LOGGER.info(self._apphandler.get_system_infos()) # Compute the L2 temporary product # ---------------------------------------------------------------- self.single_product_processing( l_InitMode, l_BackwardMode, l_finalize_backward, l_InputL1ProductInfo, l1_image_reader, l_write_earthexplorer_headers, l_write_temporary_l2_product, l_write_l2_product_to_l2resolution, l2_image_reader, l2_image_file_writer, l_GIPPL2COMMHandler) # Store the output file name for the following loop # ---------------------------------------------------------------- l_InputL2ImageFilename = l2_image_file_writer.get_global_product_filename( ) # Decrement Index of L1 image input # ---------------------------------------------------------------- l_IndexOfL1Product = l_IndexOfL1Product - 1 # Log system infos LOGGER.info(self._apphandler.get_system_infos()) # Finalize the product # Compute the last L2 product # ---------------------------------------------------------------- l_write_earthexplorer_headers = True l_write_l2_product_to_l2resolution = self._apphandler.get_user_conf( ).get_Computing().get_EnableL2ResolutionProcessing() l_write_temporary_l2_product = False l_finalize_backward = True l_InputL1ProductInfo = self._listofl1product[l_IndexOfL1Product - 1] l_Sat = l_InputL1ProductInfo.Satellite # ************************************************************************************************************* # Init the current PluginBase pointer for the satellite in the MAIN global DataApplicationHandler Instance # ************************************************************************************************************* plugin = MAJAPluginProvider.create(l_InputL1ProductInfo.PluginName, self._apphandler) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Get and registers the L2COMM GIPP file L2COMM parameters have been read in the L1ImaegFileReader !! ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2COMM_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2COMM", l_Sat) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2COMM parameters...") translate_xsl(l_GIP_L2COMM_Filename, self._apphandler._stylesheet) LOGGER.info("The GIP_L2COMM file detected for the satellite '" + l_Sat + "' is <" + l_GIP_L2COMM_Filename + ">.") l_GIPPL2COMMHandler = GippL2COMMEarthExplorerXMLFileHandler( l_GIP_L2COMM_Filename) """ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Register the GIPP file "GIP_L2SITE" */ ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *""" l_GIP_L2SITE_Filename = gipp_utils.get_gipp_filename_with_mission( self._apphandler.get_input_directory(), "GIP_L2SITE", l_InputL1ProductInfo.UniqueSatellite) if self._apphandler._stylesheet is not None: LOGGER.debug("Overloading L2COMM parameters...") translate_xsl(l_GIP_L2SITE_Filename, self._apphandler._stylesheet) LOGGER.info("The GIP_L2SITE file detected for the satellite '" + l_InputL1ProductInfo.UniqueSatellite + "' is <" + l_GIP_L2SITE_Filename + ">.") # ************************************************************************************************************* # Initialize the L1 Image file reader # ************************************************************************************************************* l_UniqueSatelliteD = l_InputL1ProductInfo.UniqueSatellite l1_image_reader = L1ImageReaderProvider.create( l_InputL1ProductInfo.PluginName, l_InputL1ProductInfo, self._apphandler, l_GIPPL2COMMHandler, self.DataDEMMap.get(l_UniqueSatelliteD), constants.ReadL1Mode.READ_L1_MODE_FOR_ALGORITHMS) # ************************************************************************************************************* # Initialize the L2 Image file reader # ************************************************************************************************************* LOGGER.debug( "Starting L2NominalProcessor::ScientificProcessing(): get the L2 product filename in the input directory..." ) l2_image_reader = L2ImageReaderProvider.create( l_InputL2ImageFilename, self._apphandler, False, self.DataDEMMap.get(l_UniqueSatelliteD)) LOGGER.info("The L2 product found is <" + l2_image_reader.ProductFilename + ">.") # ************************************************************************************************************* # Initialize the L2 Image file writer # ************************************************************************************************************* if self._apphandler.get_output_plugin() is not None: l2_image_file_writer = L2ImageWriterProvider.create( self._apphandler.get_output_plugin()) else: l2_image_file_writer = L2ImageWriterProvider.create( MAJAPluginProvider.auto_tm( l_InputL1ProductInfo.PluginName)) if not l2_image_file_writer.can_write( l_InputL1ProductInfo.PluginName): raise MajaDriverException( "Plugin '" + self._apphandler.get_output_plugin() + "' can not write product from '" + l_InputL1ProductInfo.PluginName + "' products ") # Log system infos LOGGER.info(self._apphandler.get_system_infos()) self.single_product_processing( l_InitMode, l_BackwardMode, l_finalize_backward, l_InputL1ProductInfo, l1_image_reader, l_write_earthexplorer_headers, l_write_temporary_l2_product, l_write_l2_product_to_l2resolution, l2_image_reader, l2_image_file_writer, l_GIPPL2COMMHandler) # end if it is not the last product else: LOGGER.debug( "L1ImageInformationProvider initialized during backward but no associated valid L2 product. No more products." ) LOGGER.info("L2BackwardProcessor::ScientificProcessing() done.") # Log system infos LOGGER.info(self._apphandler.get_system_infos())