{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2019-08-28T00:37:53.304843Z",
"start_time": "2019-08-28T00:37:53.302842Z"
}
},
"source": [
"# Usage with examples"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.451100Z",
"start_time": "2021-12-07T18:39:37.330439Z"
}
},
"outputs": [],
"source": [
"%matplotlib inline \n",
"import numpy as np\n",
"import pandas as pd\n",
"import pyhecdss"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setting message level and program name\n",
"\n",
"The HEC-DSS libraries output messaging to the console. To set the logging level of those libraries use the `set_message_level(int)` method\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.466034Z",
"start_time": "2021-12-07T18:39:39.453092Z"
},
"tags": []
},
"outputs": [],
"source": [
"pyhecdss.set_message_level(10) # highest level with debug level of output\n",
"pyhecdss.set_message_level(0) # quiets messages to only aborts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The program name can be set which inserts the name in the meta information for the file on writes only"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.481966Z",
"start_time": "2021-12-07T18:39:39.467030Z"
},
"tags": []
},
"outputs": [],
"source": [
"pyhecdss.set_program_name('PYTHON') # name used when writing to DSS files"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The version supported by the native heclib is printed out here. pyhecdss is linked with version 6"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.496898Z",
"start_time": "2021-12-07T18:39:39.483955Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Version of DSS file sample.dss : ['6-VE', 6]\n"
]
}
],
"source": [
"fname=r'sample.dss'\n",
"print('Version of DSS file ',fname,': ',pyhecdss.get_version(fname)) # version of DSS file format as a string and integer tuple"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example of writing a DSS File\n",
"\n",
"This notebook is an example of how to interact with the features of pyhecdss\n",
"pyhecdss is a C-Python interface to HECLIB and in particular HECDSS. The plan is to only support reading regular and irregular time series into pandas DataFrame structure."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Opening and closing a DSS File\n",
"\n",
"Use the with statement as it takes care of closing the file handle and other resources"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.512831Z",
"start_time": "2021-12-07T18:39:39.497894Z"
}
},
"outputs": [],
"source": [
"fname=r'sample.dss'\n",
"with pyhecdss.DSSFile(fname) as d:\n",
" d.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A regular time series\n",
"\n",
"Create a pandas DataFrame of a sin wave and then write it out a pathname.\n",
"\n",
"The concepts of regular time series is defined in HEC-DSS documentation. I would direct you there. There a limited number of period intervals supported by HEC-DSS formats. \n",
"\n",
"In addition to the pathname concept (pathnames consist of 6 parts A-F represented in a path like format /A/B/C/D/E/F/) the DSS format also stores units and the type of period (instantaneous or period and value or average as INST-VAL, PER-AVG, PER-VAL). \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create a new dataframe \n",
"\n",
"A dataframe with single column of values in the first column and indexed by datetime is what is required for HEC-DSS libraries for storage. It is limited to 1-dimensional time series"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.528758Z",
"start_time": "2021-12-07T18:39:39.513824Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 1990-01-01 01:00:00 \n",
" -1.224647e-16 \n",
" \n",
" \n",
" 1990-01-01 01:15:00 \n",
" -3.141076e-02 \n",
" \n",
" \n",
" 1990-01-01 01:30:00 \n",
" -6.279052e-02 \n",
" \n",
" \n",
" 1990-01-01 01:45:00 \n",
" -9.410831e-02 \n",
" \n",
" \n",
" 1990-01-01 02:00:00 \n",
" -1.253332e-01 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"1990-01-01 01:00:00 -1.224647e-16\n",
"1990-01-01 01:15:00 -3.141076e-02\n",
"1990-01-01 01:30:00 -6.279052e-02\n",
"1990-01-01 01:45:00 -9.410831e-02\n",
"1990-01-01 02:00:00 -1.253332e-01"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sina=np.sin(np.linspace(-np.pi, np.pi, 201))\n",
"dfr=pd.DataFrame(sina,index=pd.date_range('01jan1990 0100',periods=len(sina),freq='15T'))\n",
"dfr.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Writing out this in-memory dataframe to a dss file requires defining the \n",
" * pathname (str, format of /A/B/C/D/E/F)\n",
" * where the D part is reserved for timewindow\n",
" * E part matches the time interval for a regular timeseries\n",
" * units (str, e.g. 'CFS')\n",
" * period_type (str one of INST-VAL or PER-*)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.543693Z",
"start_time": "2021-12-07T18:39:39.529754Z"
}
},
"outputs": [],
"source": [
"with pyhecdss.DSSFile(fname) as d:\n",
" d.write_rts('/SAMPLE/SIN/WAVE//15MIN/SAMPLE1/',dfr,'UNIT-X','INST-VAL')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## An irregular time series\n",
"\n",
"Create a pandas DataFrame and write it out as a pathname\n",
"\n",
"Again very similar to the regular time series. For details on the concepts please refer to documentation for HEC-DSS\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create an irregular time series\n",
"\n",
"This is similar to the regular time series with the difference that there is no periodic frequency and so both values and index is specified by arrays. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.558627Z",
"start_time": "2021-12-07T18:39:39.544688Z"
}
},
"outputs": [],
"source": [
"dfi=pd.DataFrame([1.5, 3.2, 2.7], index=pd.to_datetime(['01jan1990 0317', '09apr1991 0520', '05sep1992 2349']))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The additional values needed to write are the pathname, units and period-type. See the section on regular time series above for details"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.574557Z",
"start_time": "2021-12-07T18:39:39.560618Z"
}
},
"outputs": [],
"source": [
"with pyhecdss.DSSFile(fname) as d:\n",
" d.write_its('/SAMPLE/ITS1/RANDOM//IR-YEAR/SAMPLE2/',dfi,'YYY','INST-VAL')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Reading DSS Files\n",
"\n",
"After opening the dss file, the catalog is the first thing to read if you don't know what to expect. \n",
"The catalog is read in as a dataframe of A-F parts\n",
"\n",
"NOTE: This version of DSS is limited to a single catalog across all cataloging on this machine "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.635288Z",
"start_time": "2021-12-07T18:39:39.576547Z"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" T \n",
" A \n",
" B \n",
" C \n",
" F \n",
" E \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" T4 \n",
" SAMPLE \n",
" ITS1 \n",
" RANDOM \n",
" SAMPLE2 \n",
" IR-YEAR \n",
" 01JAN1990 - 01JAN1992 \n",
" \n",
" \n",
" 1 \n",
" T4 \n",
" SAMPLE \n",
" SIN \n",
" WAVE \n",
" SAMPLE1 \n",
" 15MIN \n",
" 01JAN1990 - 01JAN1990 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" T A B C F E D\n",
"0 T4 SAMPLE ITS1 RANDOM SAMPLE2 IR-YEAR 01JAN1990 - 01JAN1992\n",
"1 T4 SAMPLE SIN WAVE SAMPLE1 15MIN 01JAN1990 - 01JAN1990"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Catalog reading\n",
"with pyhecdss.DSSFile(fname) as d:\n",
" catdf=d.read_catalog()\n",
" display(catdf)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Catalog filtering\n",
"\n",
"The catalog dataframe from the read_catalog method can use the pandas DataFrame filtering/indexing features to create a filtered data frame. \n",
"\n",
"The filtered catalog can be then turned into a list of pathnames with `get_pathnames(dfcat)`\n",
"\n",
"That list of pathnames can then be used to retrieve the data for each pathname"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.665159Z",
"start_time": "2021-12-07T18:39:39.636284Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\"Catalog filtered for B == 'ITS1' & C=='RANDOM'\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" T \n",
" A \n",
" B \n",
" C \n",
" F \n",
" E \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" T4 \n",
" SAMPLE \n",
" ITS1 \n",
" RANDOM \n",
" SAMPLE2 \n",
" IR-YEAR \n",
" 01JAN1990 - 01JAN1992 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" T A B C F E D\n",
"0 T4 SAMPLE ITS1 RANDOM SAMPLE2 IR-YEAR 01JAN1990 - 01JAN1992"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"\"Catalog filtered for B == 'SIN'\""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" T \n",
" A \n",
" B \n",
" C \n",
" F \n",
" E \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" T4 \n",
" SAMPLE \n",
" SIN \n",
" WAVE \n",
" SAMPLE1 \n",
" 15MIN \n",
" 01JAN1990 - 01JAN1990 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" T A B C F E D\n",
"1 T4 SAMPLE SIN WAVE SAMPLE1 15MIN 01JAN1990 - 01JAN1990"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fdf1=catdf[(catdf.B=='ITS1') & (catdf.C=='RANDOM')]\n",
"display(\"Catalog filtered for B == 'ITS1' & C=='RANDOM'\")\n",
"display(fdf1)\n",
"display(\"Catalog filtered for B == 'SIN'\")\n",
"fdf2=catdf[catdf.B=='SIN']\n",
"display(fdf2.head())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Reading Timeseries Data\n",
"\n",
"The filtered catalog dataframe from the previous cell can be used with get_pathnames() to get a list of pathnames for that catalog dataframe. \n",
"\n",
"The read_its and read_ts function returns a DSSData tuple of (data, units, type) where the \n",
" * data is the dataframe of the data indexed by time\n",
" * units is a string value e.g. cfs for flow\n",
" * type is a string value of either INST-VAL or PER-* representing period values\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.697023Z",
"start_time": "2021-12-07T18:39:39.666158Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Units: YYY Period Type: INST-VAL\n",
"Sample values: \n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" /SAMPLE/ITS1/RANDOM/01JAN1990 - 01JAN1992/IR-YEAR/SAMPLE2/ \n",
" \n",
" \n",
" \n",
" \n",
" 1990-01-01 03:17:00 \n",
" 1.5 \n",
" \n",
" \n",
" 1991-04-09 05:20:00 \n",
" 3.2 \n",
" \n",
" \n",
" 1992-09-05 23:49:00 \n",
" 2.7 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" /SAMPLE/ITS1/RANDOM/01JAN1990 - 01JAN1992/IR-YEAR/SAMPLE2/\n",
"1990-01-01 03:17:00 1.5 \n",
"1991-04-09 05:20:00 3.2 \n",
"1992-09-05 23:49:00 2.7 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sample values: \n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" /SAMPLE/SIN/WAVE/01JAN1990 - 01JAN1990/15MIN/SAMPLE1/ \n",
" \n",
" \n",
" \n",
" \n",
" 1990-01-01 01:00:00 \n",
" -1.224647e-16 \n",
" \n",
" \n",
" 1990-01-01 01:15:00 \n",
" -3.141076e-02 \n",
" \n",
" \n",
" 1990-01-01 01:30:00 \n",
" -6.279052e-02 \n",
" \n",
" \n",
" 1990-01-01 01:45:00 \n",
" -9.410831e-02 \n",
" \n",
" \n",
" 1990-01-01 02:00:00 \n",
" -1.253332e-01 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" /SAMPLE/SIN/WAVE/01JAN1990 - 01JAN1990/15MIN/SAMPLE1/\n",
"1990-01-01 01:00:00 -1.224647e-16 \n",
"1990-01-01 01:15:00 -3.141076e-02 \n",
"1990-01-01 01:30:00 -6.279052e-02 \n",
"1990-01-01 01:45:00 -9.410831e-02 \n",
"1990-01-01 02:00:00 -1.253332e-01 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with pyhecdss.DSSFile(fname) as d:\n",
" plist1=d.get_pathnames(fdf1)\n",
" dfr1,units1,ptype1=d.read_its(plist1[0])\n",
" print('Units: %s'%units1, 'Period Type: %s'%ptype1)\n",
" print('Sample values: ')\n",
" display(dfr1.head())\n",
" plist2=d.get_pathnames(fdf2)\n",
" dfi1,units2,ptype2=d.read_rts(plist2[0])\n",
" print('Sample values: ')\n",
" display(dfi1.head())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Closing DSS File\n",
"Closing the DSS File is important as multi user access is possible but might hang if the other thread is writing and holding on to an open handle\n",
"\n",
"__Warning__ \n",
" Just use the \"with\" statement. \n",
" If you using open and close it is much better to use try: finally: close block "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.711957Z",
"start_time": "2021-12-07T18:39:39.699015Z"
}
},
"outputs": [],
"source": [
"try:\n",
" d=pyhecdss.DSSFile(fname)\n",
"finally:\n",
" d.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Best way to work with DSS Files\n",
"Using context managers allows the cleanup of the open dss file handle without explicitly closing it."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.757756Z",
"start_time": "2021-12-07T18:39:39.712952Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" T \n",
" A \n",
" B \n",
" C \n",
" F \n",
" E \n",
" D \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" T4 \n",
" SAMPLE \n",
" ITS1 \n",
" RANDOM \n",
" SAMPLE2 \n",
" IR-YEAR \n",
" 01JAN1990 - 01JAN1992 \n",
" \n",
" \n",
" 1 \n",
" T4 \n",
" SAMPLE \n",
" SIN \n",
" WAVE \n",
" SAMPLE1 \n",
" 15MIN \n",
" 01JAN1990 - 01JAN1990 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" T A B C F E D\n",
"0 T4 SAMPLE ITS1 RANDOM SAMPLE2 IR-YEAR 01JAN1990 - 01JAN1992\n",
"1 T4 SAMPLE SIN WAVE SAMPLE1 15MIN 01JAN1990 - 01JAN1990"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with pyhecdss.DSSFile('sample.dss') as d:\n",
" display(d.read_catalog())\n",
"# d is closed once out of the context of the with statement above"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Convenience methods for matching partnames\n",
"\n",
"If you know the patterns of pathnames expected in the dss file and don't worry about the overhead of opening and closing dss files then the follow methods are quite convenient\n",
"\n",
" The get* methods are generators so if you don't know or don't have a large number of expected pathnames you can simply surround the method call with list() \n",
"\n",
"The [`get_ts`](../pyhecdss.html#pyhecdss.pyhecdss.get_ts)\n",
"See the returned tuple by the `get_ts` method consisting of :-\n",
" * the dataframe\n",
" * the units \n",
" * the period_type"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.803554Z",
"start_time": "2021-12-07T18:39:39.759746Z"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" /SAMPLE/SIN/WAVE/01JAN1990 - 01JAN1990/15MIN/SAMPLE1/ \n",
" \n",
" \n",
" \n",
" \n",
" 1990-01-01 01:00:00 \n",
" -1.224647e-16 \n",
" \n",
" \n",
" 1990-01-01 01:15:00 \n",
" -3.141076e-02 \n",
" \n",
" \n",
" 1990-01-01 01:30:00 \n",
" -6.279052e-02 \n",
" \n",
" \n",
" 1990-01-01 01:45:00 \n",
" -9.410831e-02 \n",
" \n",
" \n",
" 1990-01-01 02:00:00 \n",
" -1.253332e-01 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" /SAMPLE/SIN/WAVE/01JAN1990 - 01JAN1990/15MIN/SAMPLE1/\n",
"1990-01-01 01:00:00 -1.224647e-16 \n",
"1990-01-01 01:15:00 -3.141076e-02 \n",
"1990-01-01 01:30:00 -6.279052e-02 \n",
"1990-01-01 01:45:00 -9.410831e-02 \n",
"1990-01-01 02:00:00 -1.253332e-01 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"UNIT-X\n",
"INST-VAL\n"
]
}
],
"source": [
"for t in pyhecdss.get_ts('sample.dss','/SAMPLE/SIN/////'):\n",
" display(t.data.head())\n",
" print(t.units)\n",
" print(t.period_type)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Use regular expressions for more powerful filtering\n",
"\n",
"Use `get_matching_ts` to filter the path parts (between //) as regular expressions to filter pathnames to retrieve data from.\n",
"\n",
"This method also returns a generator of matching pathnames so surround with list() if you don't expect a large number returned\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:39.849352Z",
"start_time": "2021-12-07T18:39:39.804549Z"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" /SAMPLE/ITS1/RANDOM/01JAN1990 - 01JAN1992/IR-YEAR/SAMPLE2/ \n",
" \n",
" \n",
" \n",
" \n",
" 1990-01-01 03:17:00 \n",
" 1.5 \n",
" \n",
" \n",
" 1991-04-09 05:20:00 \n",
" 3.2 \n",
" \n",
" \n",
" 1992-09-05 23:49:00 \n",
" 2.7 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" /SAMPLE/ITS1/RANDOM/01JAN1990 - 01JAN1992/IR-YEAR/SAMPLE2/\n",
"1990-01-01 03:17:00 1.5 \n",
"1991-04-09 05:20:00 3.2 \n",
"1992-09-05 23:49:00 2.7 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"YYY INST-VAL\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" /SAMPLE/SIN/WAVE/01JAN1990 - 01JAN1990/15MIN/SAMPLE1/ \n",
" \n",
" \n",
" \n",
" \n",
" 1990-01-01 01:00:00 \n",
" -1.224647e-16 \n",
" \n",
" \n",
" 1990-01-01 01:15:00 \n",
" -3.141076e-02 \n",
" \n",
" \n",
" 1990-01-01 01:30:00 \n",
" -6.279052e-02 \n",
" \n",
" \n",
" 1990-01-01 01:45:00 \n",
" -9.410831e-02 \n",
" \n",
" \n",
" 1990-01-01 02:00:00 \n",
" -1.253332e-01 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" /SAMPLE/SIN/WAVE/01JAN1990 - 01JAN1990/15MIN/SAMPLE1/\n",
"1990-01-01 01:00:00 -1.224647e-16 \n",
"1990-01-01 01:15:00 -3.141076e-02 \n",
"1990-01-01 01:30:00 -6.279052e-02 \n",
"1990-01-01 01:45:00 -9.410831e-02 \n",
"1990-01-01 02:00:00 -1.253332e-01 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"UNIT-X INST-VAL\n"
]
}
],
"source": [
"for t in pyhecdss.get_matching_ts('sample.dss','//.*/////'):\n",
" display(t.data.head())\n",
" print(t.units, t.period_type)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting and other features\n",
"Once the data is available as a pandas DataFrame, all the features such as plotting and analysis is available through other libraries such as matplotlib (see example below)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2021-12-07T18:39:40.731940Z",
"start_time": "2021-12-07T18:39:39.850347Z"
}
},
"outputs": [
{
"data": {
"image/png": "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zbN69Wq6dOli+2ylp6fb/m+yzpv5c/78edu8uX3ufX19adu2La1ateKjjz6ye724uDj69+9PRkYGjz/+OIGBgQQFBdGxY0f+/PNP23RnzpzB09PT9r+aqVGjRvTo0cNuWNu2bW2f38zvjXbt2tG6dWveeOMN2/Bbb7W7Nyjwv++kzPd31113AfDhhx8SEBBAcHAwffr04ejRo3bzZX433IgSURSioqIq9u7d+9KDDz7Y+Isvvji6d+/e3fv37981atSohMxpMjIyWLRoEQ0aNGDDhg128wcFBdl96ObOnUtISIjdNHPmzGH79u3ce++9PPvss3nm6dGjB9HR0bafvn372sZt3ryZzp072x4vWrSI6Ohopk2bZjdfx44dCQsLY9myZWzfvp1t27bZ/mH9/f2ZPn0699xzzzWvffnyZRISEqhfv75d7scee8wud17Lw8/Pj7fffjvX97d+/Xp27tzJH3/8wcFDh3jgoYcp5+FGzfJw2223MXHiRPbv38/27dvZtGkTU6ZMsc1bkGUdERHBwIEDWblyJQcOHODAgQNMnTqVRx991DbNfffdR0RERK4ZM4WHh9O9e/drvlS8vLxYuHCh3ZdpptyW7w8//EBUVBTR0dFs3ryZ999/nwsXLpCRkcG9997L3LlziYmJoWHDhrYv77zeQ0EkJCTwxhtvsHnzZv744w/eeOMNzp07B0C3bt1Yu3YtDRvmfS+p1atX07JlS7777juynzhy+vRpVq5cec083t7evPnmm3zwwQd2w+Pj43n22WdZt24du3bt4tSpU7Yi/8wzzzBmzBh27NjBq6++aitCFSpUYObMmezatYuIiAiefPJJuy/pzPWd3VNPPUV0dDRLlixh7NixpKam2sb179+fhg0b8tVXXwHw6aef0rFjR7p27Wo3b+ZPtWrVgLw/93fffTfR0dFs3LiRt99+m2PH/nertYiICAYMGMC8efM4ceIEO3bsYOfOnSxatMj23ADff/89nTt3vubzBpCUlGR7zj179lwzvkePHmzbto2tW7cye/ZsIiMjr5kmqzlz5tjeX+bGS7t27di6dSs7duzgrrvusiva2b8brpfLF4WoqCjvJk2aXPHw8CAhIcHD398/FcDDw4MOHTrYDpatX7+ewMBAHn300WtWWI8ePfjjjz9ITU3l4sWLHDx4kLZt2+b4en/72984ePDg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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"axes1=dfr1.plot()\n",
"axes2=dfi1.plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"hide_input": false,
"kernelspec": {
"display_name": "Python [conda env:dev_pydelmod]",
"language": "python",
"name": "conda-env-dev_pydelmod-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.11"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}