#!/usr/bin/env python # coding: utf-8 # # Test `compare_venus_ctd` Module # # Render figure object produced by the `nowcast.figures.publish.compare_venus_ctd` module. # Provides data for visual testing to confirm that refactoring has not adversely changed figure for web page. # # Set-up and function call replicates as nearly as possible what is done in the `nowcast.workers.make_plots` worker. # In[1]: import io import os from pathlib import Path import arrow import netCDF4 as nc import yaml from salishsea_tools import nc_tools from nowcast.figures import research_VENUS from nowcast.figures.comparison import compare_venus_ctd # In[2]: get_ipython().run_line_magic('matplotlib', 'inline') # **NOTE** # # The next cell mounts the `/results` filesystem on `skookum` and the `/ocean` filesystem locally. # It is intended for use if when this notebook is run on a laptop or other # non-Waterhole machine that has `sshfs` installed # and mount points for `/results` and `/ocean` available in its root filesystem. # # Don't execute the cell if that doesn't describe your situation. # !sshfs skookum:/results /results # # !sshfs skookum:/ocean /ocean # In[3]: config = ''' timezone: Canada/Pacific run_types: nowcast: config name: SalishSea bathymetry: /results/nowcast-sys/NEMO-forcing/grid/bathy_meter_SalishSea2.nc mesh_mask: /results/nowcast-sys/NEMO-forcing/grid/mesh_mask_SalishSea2.nc nowcast-green: config name: SOG bathymetry: /results/nowcast-sys/NEMO-forcing/grid/bathy_downonegrid2.nc mesh_mask: /results/nowcast-sys/NEMO-forcing/grid/mesh_mask_downbyone2.nc run: results_archive: nowcast: /results/SalishSea/nowcast/ nowcast-green: /results/SalishSea/nowcast-green/ forecast: /results/SalishSea/forecast/ ''' config = yaml.load(io.StringIO(config)) # In[4]: run_date = arrow.get('2016-07-03') run_type = 'nowcast' dmy = run_date.format('DDMMMYY').lower() start_day = { 'nowcast': run_date.format('YYYYMMDD'), 'forecast': run_date.replace(days=+1).format('YYYYMMDD'), } end_day = { 'nowcast': run_date.format('YYYYMMDD'), 'forecast': run_date.replace(days=+2).format('YYYYMMDD'), } ymd = run_date.format('YYYYMMDD') results_home = Path(config['run']['results_archive'][run_type]) results_dir = results_home/dmy dev_results_home = Path(config['run']['results_archive']['nowcast-green']) dev_results_dir = dev_results_home/dmy # In[5]: bathy = nc.Dataset(config['run_types'][run_type]['bathymetry']) mesh_mask = nc.Dataset(config['run_types'][run_type]['mesh_mask']) dev_mesh_mask = nc.Dataset(config['run_types']['nowcast-green']['mesh_mask']) grid_T_hr = nc.Dataset( str(results_dir/'SalishSea_1h_{0}_{1}_grid_T.nc' .format(start_day[run_type], end_day[run_type]))) dev_grid_T_hr = nc.Dataset( str(dev_results_dir/'SalishSea_1h_{0}_{1}_grid_T.nc' .format(start_day[run_type], end_day[run_type]))) # In[6]: get_ipython().run_cell_magic('timeit', '-n1 -r1', "\n# Reference rendering of figure\n\nfig = research_VENUS.compare_VENUS(\n 'East', grid_T_hr, bathy)\n") # In[18]: get_ipython().run_cell_magic('timeit', '-n1 -r1', "\n# Refactored rendering of figure\n\nfrom importlib import reload\nfrom nowcast.figures import website_theme, shared\nfrom salishsea_tools import places, data_tools\nreload(compare_venus_ctd)\nreload(website_theme)\nreload(shared)\nreload(places)\nreload(data_tools)\n\nfig = compare_venus_ctd.compare_venus_ctd(\n 'East node', grid_T_hr, dev_grid_T_hr, \n config['timezone'], mesh_mask, dev_mesh_mask,\n theme=website_theme)\n") # In[19]: get_ipython().run_cell_magic('timeit', '-n1 -r1', "\n# Refactored rendering of figure\n\nfrom importlib import reload\nfrom nowcast.figures import website_theme, shared\nfrom salishsea_tools import places, data_tools\nreload(compare_venus_ctd)\nreload(website_theme)\nreload(shared)\nreload(places)\nreload(data_tools)\n\nfig = compare_venus_ctd.compare_venus_ctd(\n 'Central node', grid_T_hr, dev_grid_T_hr, \n config['timezone'], mesh_mask, dev_mesh_mask,\n theme=website_theme)\n") # In[20]: get_ipython().run_cell_magic('timeit', '-n1 -r1', "\n# Refactored rendering of figure\n\nfrom importlib import reload\nfrom nowcast.figures import website_theme, shared\nfrom salishsea_tools import places, data_tools\nreload(compare_venus_ctd)\nreload(website_theme)\nreload(shared)\nreload(places)\nreload(data_tools)\n\nfig = compare_venus_ctd.compare_venus_ctd(\n 'Delta BBL node', grid_T_hr, dev_grid_T_hr, \n config['timezone'], mesh_mask, dev_mesh_mask,\n theme=website_theme, figsize=(8, 10))\n") # In[22]: get_ipython().run_cell_magic('timeit', '-n1 -r1', "\n# Refactored rendering of figure\n\nfrom importlib import reload\nfrom nowcast.figures import website_theme, shared\nfrom salishsea_tools import places, data_tools\nreload(compare_venus_ctd)\nreload(website_theme)\nreload(shared)\nreload(places)\nreload(data_tools)\n\nfig = compare_venus_ctd.compare_venus_ctd(\n 'Delta DDL node', grid_T_hr, dev_grid_T_hr, \n config['timezone'], mesh_mask, dev_mesh_mask,\n theme=website_theme, figsize=(8, 10))\n") # In[ ]: