smashbox.tutorial_python
Created on Thu Aug 21 12:03:55 2025
@author: maxime
1#!/usr/bin/env python3 2# -*- coding: utf-8 -*- 3""" 4Created on Thu Aug 21 12:03:55 2025 5 6@author: maxime 7""" 8 9 10if __name__ == "__main__": 11 12 import smashbox 13 14 bbox = {"left": 875000.0, "bottom": 6228000.0, "right": 1001000.0, "top": 6320000.0} 15 16 sb = smashbox.SmashBox() 17 18 sb.myparam.set_param("bbox", bbox) 19 sb.myparam.set_param("outlets_database", "db_sites") 20 sb.myparam.set_param("smash_parameters_dt", 3600.0) 21 22 # RHAX 23 sb.myparam.set_param( 24 "outlets_shapefile", 25 "/nas/RHAX/DONNEES/SIG/BASSINS/CONTOUR/SITES_L93/Hydro_Bassins.shp", 26 ) 27 28 sb.newmodel("rex") 29 30 sb.rex.mysetup.update_setup( 31 { 32 "start_time": "2014-01-01 00:00", 33 "end_time": "2014-02-01 00:00", 34 } 35 ) 36 37 # MAX 38 # sb.myparam.set_param( 39 # "outlets_shapefile", 40 # "/home/maxime/DEV/easysmash/smashbox/smashbox/asset/shapefile/Hydro_Bassins.shp", 41 # ) 42 43 # sb.newmodel("rex") 44 45 # sb.rex.mysetup.update_setup( 46 # { 47 # "pet_directory": "/home/maxime/DATA/ETP-SFR-FRA-INTERA_L93", 48 # "prcp_directory": "/home/maxime/DATA/PLUIE", 49 # "qobs_directory": "/home/maxime/DATA/QOBS_SITE_60M", 50 # "start_time": "2014-01-01 00:00", 51 # "end_time": "2014-02-01 00:00", 52 # } 53 # ) 54 55 sb.rex.generate_mesh( 56 query="(SURF>40) & (INFLUENCE=='Influence nulle ou faible')", area_error_th=0.2 57 ) 58 59 # optimize parameters if required 60 # sb.rex.optimize() 61 62 sb.rex.myplot.plot_mesh(fig_settings={"figname": "output/mesh.png"}) 63 sb.rex.myplot.plot_catchment_surface_error( 64 fig_settings={"figname": "output/mesh_surface_error.png"} 65 ) 66 sb.rex.myplot.plot_catchment_surface_consistency( 67 fig_settings={"figname": "output/mesh_surface_consistency.png"} 68 ) 69 70 sb.rex.model() 71 sb.rex.forward_run(return_options={"q_domain": True}, warmup=100) 72 73 sb.rex.mystats.foutlets_stats() 74 sb.rex.mystats.fspatial_stats() 75 sb.rex.mystats.fmisfit_stats() 76 77 sb.rex.myplot.multiplot_parameters( 78 fig_settings={"figname": "output/muliplot_parameters.png"} 79 ) 80 sb.rex.myplot.plot_parameters(fig_settings={"figname": "output/cp_parameters.png"}) 81 82 sb.rex.myplot.plot_outlet_stats( 83 fig_settings={"figname": "output/outlets_max_discharges.png"} 84 ) 85 sb.rex.myplot.plot_hydrograph( 86 fig_settings={"figname": "output/outlet_discharges.png"} 87 ) 88 sb.rex.myplot.plot_spatial_stats( 89 fig_settings={"figname": "output/spatial_max_discharges.png"} 90 ) 91 92 sb.rex.myplot.multiplot_misfit( 93 fig_settings={ 94 "figname": "output/multiplot_nse_misfit.png", 95 "xsize": 15, 96 "ysize": 15, 97 } 98 ) 99 sb.rex.myplot.plot_misfit( 100 misfit="nnse", fig_settings={"figname": "output/nnse_misfit.png"} 101 ) 102 sb.rex.myplot.plot_misfit_map(fig_settings={"figname": "output/map_nse_misfit.png"})