Populating the interactive namespace from numpy and matplotlib
Similarly to the "ADCP class" and the "Drifter class", the "TideGauge class" is a measurement-based object.
As any other library in Python-dvt, PySeidon has to be first imported before to be used. Here we will use an alternative import statement compared to the one previoulsy presented:
from pyseidon_dvt import *
Star here means all. Usually this form of statements would import the entire library. In the case of PySeidon-dvt, this statement will import the following object classes: FVCOM, Station, Validation, ADCP, Tidegauge and Drifter. Only the TideGauge class will be tackle in this tutorial. However note should note that the architecture design and functioning between each classes are very similar.
Python is by definition an object oriented language...and so is matlab. PySeidon-dvt is based on this notion of object, so let us define our first "Tidegauge" object.
According to the documentation, in order to define a TideGauge object, the only required input is a *filename. This string input represents path to a file (e.g. testAdcp=TideGauge('./path_to_matlab_file/filename') and whose file must be a matlab file (i.e. *.mat).
Note that, at the current stage, the package only handle a certain type of file and data format. A template for the TideGauge file/data format is provided in the package under data4tutorial
tg = TideGauge('./data4tutorial/tidegauge_GP_01aug2013.mat')
The TideGauge object possesses 3 attributes and 3 methods. They would appear by typing tg. Tab for instance.
An attribute is a quantity intrinsic to its object. A method is an intrinsic function which changes an attribute of its object. Contrarily a function will generate its own output:
The Station attributes are:
The Station methods & functions are:
harmo = tg.Utils.harmonics() recons = tg.Utils.reconstr(harmo) times = map(tg.Utils.mattime2datetime, tg.Variables.matlabTime[:]) ini_minus_recons = ini_minus_recons = tg.Variables.el - recons['h'] tg.Plots.plot_xy(times, ini_minus_recons, title='Residual tidal signal', xLabel='Time', yLabel='Elevation (m)')
solve: matrix prep ... Solution ... diagnostics... Done. reconstruct: prep/calcs... Done.
/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py:387: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure "matplotlib is currently using a non-GUI backend, "
tg.dump_profile_data(times, ini_minus_recons, title='Residual_tidal_signal', xLabel='Time', yLabel='Elevation (m)')
As beta tester, your first assignement is to report bugs...yet not everything is a bug. The first thing to check before to report a bug is to verify that your version of PySeidon-dvt is up-to-date. The best way to keep up with the package evolution is to git to clone the repository, use pull to update it and re-install it if needed.
The second thing to check before to report a bug is to verify that the bug is reproducible. When running into a bug, double check that your inputs fit the description of the documentation then turn the debug flag on (e.g. output = tidegaugeobject.function(inputs, debug=True)) and submit the command again. If the error re-occurs then report it (i.e. copy entire error message + command and send it to package administrator)
Your second role as beta-tester is to submit suggestions and critics to the developpers regarding the functioning and functionality of the package. Beta testing phase is the best opportunity to steer a project towards the applications you would like to be tackled...