#!/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, save_weekly_avg_agg_data from da.analysis.expand_molefractions import write_mole_fractions from da.analysis.summarize_obs import summarize_obs from da.analysis.time_avg_fluxes import time_avg ################################################################################################# # 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) try: save_weekly_avg_1x1_data(dacycle, statevector) save_weekly_avg_state_data(dacycle, statevector) except: pass try: save_weekly_avg_tc_data(dacycle, statevector) save_weekly_avg_ext_tc_data(dacycle) except: pass try: save_weekly_avg_agg_data(dacycle,region_aggregate='flux1x1') save_weekly_avg_agg_data(dacycle,region_aggregate='transcom') save_weekly_avg_agg_data(dacycle,region_aggregate='olson') except: pass try: time_avg(dacycle,'flux1x1') time_avg(dacycle,'transcom') time_avg(dacycle,'olson') except: pass try: write_mole_fractions(dacycle) summarize_obs(dacycle) except: pass sys.exit(0)