Ejemplo n.º 1
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')
Ejemplo n.º 2
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
Ejemplo n.º 3
0
def test_ondemand_with_mask():
    # Make output map with daily frequency
    output_map['mleaf_hrudr_state'] = nodes.write_to_ncfile_snapshot(outpath,'mleaf_hrudr', freq='D')

    period = dt.dates('25 dec 2010', '26 dec 2010')
    from awrams.simulation.ondemand import OnDemandSimulator
    sim = OnDemandSimulator(awral, input_map, omapping=output_map)
    r = sim.run(period, extents.get_default_extent())

    # Grab a new copy of the default extent in case the simulator mutated it
    default_mask = extents.get_default_extent().mask

    # Check that the results are masked arrays, using the first results and the final states
    # as examples. Then check the masks are the default mask - masked arrays ensure that masked
    # values are not used in computations.
    assert all(type(r[key] == np.ma.core.MaskedArray) for key in r.keys())
    assert all(type(r['final_states'][key] == np.ma.core.MaskedArray) for key in r['final_states'].keys())
    assert all(np.array_equal(r[key].mask[0], default_mask) for key in r.keys() if key != 'final_states')
    assert all(np.array_equal(r['final_states'][key].mask, default_mask) for key in r['final_states'].keys())
Ejemplo n.º 4
0
def test_output_graph_processing_snapshotfm_A():
    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()
    output_map = awral.get_output_mapping()
    output_map['s0_save'] = nodes.write_to_ncfile_snapshot(
                            os.path.dirname(__file__), 's0')

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

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