#!/usr/bin/env python ################################################################################################# # First order of business is always to make all other python modules accessible through the path ################################################################################################# import sys import os import logging sys.path.append(os.getcwd()) ################################################################################################# # Next, import the tools needed to initialize a data assimilation cycle ################################################################################################# from da.tools.initexit import start_logger, validate_opts_args, parse_options, CycleControl from da.tools.pipeline import ensemble_smoother_pipeline, header, footer from da.platform.huygens import HuygensPlatform from da.carbondioxide.dasystem import CO2DaSystem from da.carbondioxide.optimizer import CO2Optimizer from da.carbondioxide.obspack_geocarbon import ObsPackObservations #from da.carbondioxide.statevector import CO2StateVector from da.co2gridded.statevector import CO2GriddedStateVector #from da.carbondioxide.obspack import ObsPackObservations #from da.carbondioxide.obs import CO2Observations from da.tm5.observationoperator import TM5ObservationOperator from da.analysis.expand_fluxes import save_weekly_avg_1x1_data, save_weekly_avg_state_data, save_weekly_avg_tc_data, save_weekly_avg_ext_tc_data from da.analysis.expand_mixingratios import write_mixing_ratios from da.analysis.summarize_obs import summarize_obs ################################################################################################# # Parse and validate the command line options, start logging ################################################################################################# start_logger() opts, args = parse_options() opts, args = validate_opts_args(opts, args) ################################################################################################# # Create the Cycle Control object for this job ################################################################################################# DaCycle = CycleControl(opts, args) ########################################################################################### ### IMPORT THE APPLICATION SPECIFIC MODULES HERE, TO BE PASSED INTO THE MAIN PIPELINE!!! ## ########################################################################################### Platform = HuygensPlatform() DaSystem = CO2DaSystem(DaCycle['da.system.rc']) ObsOperator = TM5ObservationOperator(DaCycle['da.obsoperator.rc']) Samples = ObsPackObservations() #Samples = CtObservations() StateVector = CO2GriddedStateVector() Optimizer = CO2Optimizer() ########################################################################################## ################### ENTER THE PIPELINE WITH THE OBJECTS PASSED BY THE USER ############### ########################################################################################## logging.info(header + "Entering Pipeline " + footer) ensemble_smoother_pipeline(DaCycle, Platform, DaSystem, Samples, StateVector, ObsOperator, Optimizer) ########################################################################################## ################### All done, extra stuff can be added next, such as analysis ########################################################################################## logging.info(header + "Starting analysis" + footer) save_weekly_avg_1x1_data(DaCycle, StateVector) save_weekly_avg_state_data(DaCycle, StateVector) save_weekly_avg_tc_data(DaCycle, StateVector) save_weekly_avg_ext_tc_data(DaCycle) write_mixing_ratios(DaCycle) summarize_obs(DaCycle) sys.exit(0)