Пример #1
0
def build_output_graph():
    from awrams.utils.nodegraph import nodes,graph

    from awrams.models import awral
    from awrams.models.awral import ffi_wrapper as fw
    from awrams.models.awral.template import DEFAULT_TEMPLATE

    output_map = awral.get_output_nodes(DEFAULT_TEMPLATE)
    print(output_map)

    outpath = '/data/cwd_awra_data/awra_test_outputs/sbaronha/sim_test_outputs/'
    output_map.mapping.update({
        's0_avg': nodes.transform(nodes.average,['s0_dr','s0_sr']),
        's0_avg_save': nodes.write_to_annual_ncfile(outpath,'s0_avg'),

        'ss_avg': nodes.transform(nodes.average,['ss_dr','ss_sr']),
        'ss_avg_save': nodes.write_to_annual_ncfile(outpath,'ss_avg'),

        # 'sd_avg': nodes.transform(nodes.average,['s0_dr','s0_sr']),
        # 'sd_avg_save': nodes.write_to_annual_ncfile('./','s0_avg'),
        #
        # 'qtot_avg_save': nodes.write_to_annual_ncfile('./','qtot'),
        # 'etot_avg_save': nodes.write_to_annual_ncfile('./','etot')
        })
    outputs = graph.OutputGraph(output_map.mapping)
    # print(outputs.get_dataspecs())
    # print(outputs.get_dataspecs(flat=True))
    return outputs
Пример #2
0
def setup_v5():
    from awrams.utils import config_manager

    sys_settings = config_manager.get_system_profile('default').get_settings()
    model_profile = config_manager.get_model_profile('awral','v5_default')
    model_settings = model_profile.get_settings()
    
    
    global awral
    awral = model_profile.get_model(model_settings)
    
    global period
    period = dt.dates('dec 2010 - jan 2011')

    global input_map
    input_map = model_profile.get_input_mapping(model_settings)
    model_settings['CLIMATE_DATASET'] = sys_settings['CLIMATE_DATASETS']['TESTING']

    global output_map
    output_map = awral.get_output_mapping()

    global outpath
    outpath = join(dirname(__file__),'..','..','test_data','simulation','outputs')

    output_map['s0_ncsave'] = nodes.write_to_annual_ncfile(outpath,'s0')

    output_map['mleaf_hrudr_state'] = nodes.write_to_ncfile_snapshot(outpath,'mleaf_hrudr')
Пример #3
0
def test_SplitFileWriterNode():
    from awrams.utils import extents
    from awrams.utils import datetools as dt

    import awrams.models.awral.description
    awrams.models.awral.description.CLIMATE_DATA = os.path.join(
        os.path.dirname(__file__), '..', '..', 'test_data', 'simulation')

    from awrams.utils.nodegraph import nodes
    from awrams.simulation.ondemand import OnDemandSimulator
    from awrams.models import awral

    input_map = awral.get_default_mapping()

    from awrams.utils.nodegraph import nodes
    from awrams.utils.metatypes import ObjectDict

    # output_path = './'
    mapping = {}
    mapping['qtot'] = nodes.write_to_annual_ncfile('./', 'qtot')

    output_map = ObjectDict(
        mapping=ObjectDict(mapping))  #,output_path=output_path)

    runner = OnDemandSimulator(awral,
                               input_map.mapping,
                               omapping=output_map.mapping)

    period = dt.dates('2010-2011')
    extent = extents.from_cell_offset(200, 200)
    r = runner.run(period, extent)
Пример #4
0
def test_output_graph_processing_splitfm_B():
    from awrams.utils import extents
    from awrams.utils import datetools as dt

    import awrams.models.awral.description
    awrams.models.awral.description.CLIMATE_DATA = os.path.join(
        os.path.dirname(__file__), '..', '..', 'test_data', 'simulation')

    from awrams.utils.nodegraph import nodes, graph
    from awrams.simulation.ondemand import OnDemandSimulator
    from awrams.models import awral

    input_map = awral.get_default_mapping()
    output_map = {
        's0_save':
        nodes.write_to_annual_ncfile(os.path.dirname(__file__), 's0', mode='w')
    }
    # outputs = graph.OutputGraph(output_map)
    runner = OnDemandSimulator(awral, input_map.mapping, omapping=output_map)

    print("RUNNER NEW (FILES EXISTING): multiple cells, multiple years")
    period = dt.dates('2010-2011')
    extent = extents.from_boundary_offset(200, 200, 201, 201)
    r = runner.run(period, extent)

    print("RUNNER OLD (FILES EXISTING): single cell, single year")
    period = dt.dates('2015')
    extent = extents.from_cell_offset(202, 202)
    r = runner.run(period, extent)
Пример #5
0
def build_output_mapping(model,outpath,save_vars=None,mode='a',dtype=np.float32,save_states_freq=None):
    '''
    Convenience function to save all models outputs to outpath as annual netCDF files
    '''

    ### populate output map with all model outputs
    io_settings = config_manager.get_system_profile().get_settings()['IO_SETTINGS']
    
    output_mapping = model.get_output_mapping()

    output_map_ncwrite = output_mapping.copy()
    
    if save_vars is None:
        save_vars = list(output_mapping)
    
    for k in save_vars:
        if k not in output_mapping:
            raise Exception("Variable %s not activated in model output settings" %k)

        output_map_ncwrite[k+'_ncsave'] = nodes.write_to_annual_ncfile(outpath,k,mode=mode,dtype=dtype)
        
    if save_states_freq is not None:
        state_keys = model.get_state_keys()
        state_path = os.path.join(outpath,'states')
        spatial_chunk = io_settings['CHUNKSIZES']['SPATIAL']
        for k in state_keys:
            if k not in output_mapping:
                raise Exception("State %s not activated in model output settings" %k)
            output_map_ncwrite[k+'_statesave'] = nodes.write_to_ncfile_snapshot(state_path,k,mode=mode, \
                                                                                freq=save_states_freq,dtype=np.float64, \
                                                                                chunksizes = (1,spatial_chunk,spatial_chunk))

    return output_map_ncwrite
Пример #6
0
def test_output_graph_processing_splitfm_B():
    from awrams.utils import extents
    from awrams.utils import datetools as dt

    e_all = extents.get_default_extent()

    from awrams.utils.nodegraph import nodes, graph
    from awrams.simulation.ondemand import OnDemandSimulator

    input_map = awral.get_default_mapping()
    climate_mod(input_map)
    output_map = awral.get_output_mapping()
    output_map['s0_save'] = nodes.write_to_annual_ncfile(
        os.path.dirname(__file__), 's0', mode='w')

    runner = OnDemandSimulator(awral, input_map, omapping=output_map)

    print("RUNNER NEW (FILES EXISTING): multiple cells, multiple years")
    period = dt.dates('2010-2011')
    extent = e_all.ioffset[200:202, 200:202]
    r = runner.run(period, extent)

    clear_files()

    print("RUNNER OLD (FILES EXISTING): single cell, single year")
    period = dt.dates('2015')
    extent = e_all.ioffset[202, 202]
    r = runner.run(period, extent)
Пример #7
0
def setup():
    from os.path import join, dirname

    from awrams.utils import datetools as dt

    from awrams.utils.nodegraph import nodes, graph
    from awrams.models.awral.model import AWRALModel
    from awrams.utils.mapping_types import period_to_tc

    global awral

    awral = AWRALModel()

    global period
    period = dt.dates('dec 2010 - jan 2011')

    global input_map
    input_map = awral.get_default_mapping()
    change_path_to_forcing(input_map)

    global output_map
    output_map = awral.get_output_mapping()

    global outpath
    outpath = join(dirname(__file__), '..', '..', 'test_data', 'simulation',
                   'outputs')

    output_map['s0_ncsave'] = nodes.write_to_annual_ncfile(outpath, 's0')
Пример #8
0
def build_output_graph():
    from awrams.utils.nodegraph import nodes, graph

    from awrams.models import awral
    from awrams.models.awral import ffi_wrapper as fw
    from awrams.models.awral.template import DEFAULT_TEMPLATE

    output_map = awral.get_output_nodes(DEFAULT_TEMPLATE)
    print(output_map)

    output_map.mapping.update({
        's0_avg':
        nodes.transform(nodes.average, ['s0_dr', 's0_sr']),
        's0_avg_save':
        nodes.write_to_annual_ncfile('./', 's0_avg')
    })
    outputs = graph.OutputGraph(output_map.mapping)
    print(outputs.get_dataspecs())
    print(outputs.get_dataspecs(flat=True))
    return outputs
Пример #9
0
def test_output_graph_processing_splitfm_G():
    from awrams.utils import extents
    from awrams.utils import datetools as dt

    e_all = extents.get_default_extent()

    from awrams.utils.nodegraph import nodes,graph
    from awrams.simulation.ondemand import OnDemandSimulator


    print("RUNNER NEW: single cell ncf, multiple years")
    period = dt.dates('2010-2011')
    extent = e_all.ioffset[202,202]

    #input_map = awral.get_default_mapping()
    output_map = awral.get_output_mapping()
    output_map['s0_save'] = nodes.write_to_annual_ncfile(os.path.dirname(__file__),'s0')
    # outputs = graph.OutputGraph(output_map)
    runner = OnDemandSimulator(awral,input_map,omapping=output_map)
    r = runner.run(period,extent)
Пример #10
0
def test_SplitFileWriterNode():
    from awrams.utils import extents
    from awrams.utils import datetools as dt

    extent = extents.get_default_extent()

    from awrams.utils.nodegraph import nodes
    from awrams.simulation.ondemand import OnDemandSimulator

    input_map = awral.get_default_mapping()
    climate_mod(input_map)

    from awrams.utils.nodegraph import nodes
    from awrams.utils.metatypes import ObjectDict

    # output_path = './'
    output_map = awral.get_output_mapping()
    output_map['qtot_save'] = nodes.write_to_annual_ncfile('./', 'qtot')

    runner = OnDemandSimulator(awral, input_map, omapping=output_map)

    period = dt.dates('2010-2011')
    extent = extent.ioffset[200, 200:202]
    r = runner.run(period, extent)