resistics.statistics.data module

class resistics.statistics.data.StatisticData(statName: str, refTime: datetime.datetime, sampleFreq: float, winSize: int, winOlap: int, **kwargs)[source]

Bases: resistics.common.base.ResisticsBase

Class for holding information about a statistic

Attributes
statNamestr

The name of the statistic

refTimedatetime.datetime

The reference time of the project

sampleFreqfloat

The sampling frequency of the data

winSizeint

Window size in samples

winOlapint

Window overlap in samples

numWindowsint

Number of windows

winStatsList[str]

Values calculated for the statistic

numStatsPerWindowint

The number of statistics per window (length of winStats)

statsnp.ndarray

The statistic data of size number of windows * number evaluation frequencies * number of window stats

evalFreqList, np.ndarray

The evaluation frequencies for the statistic data

freq2indexDict

Mapping from evaluation frequency to index

globalIndicesList, np.ndarray

Array of global indices. Allows local -> global conversion

global2localMapDict

Dictionary which maps global indices to local. Allows global -> local conversion

commentsList[str]

Statistic comments

dtypestr (default “float”)

The data type of the statistic values

maxcolsint (default 4)

The number of columns in plots

globalDatesStartList, np.ndarray

Global window start datetimes

globalDatesStopList, np.ndarray

Global window stop datetimes

Methods

__init__(sampleFreq, numLevels, evalFreq, kwargs)

Initialise maskData

getStats(includewindows, maskwindows)

Get the statistics array and choose to either include some windows or mask some windows

getUnmaskedIndices(maskwindows)

Return the local indices to use given a set of global indices to exclude

getStatLocal(localIndex)

Get statistic values for a local window index

getStatGlobal(globalIndex)

Get statistic values for a global window index

getGlobalIndex(localIndex)

Get the global window index for a local window index

getLocalIndicesF(globalIndices)

Get local indices for an list or array of global indices

getGlobalDates()

Get the global index dates for all the windows

setStatParams(numWindows, winStats, evalFreq)

Set the statistic parameters and prepare the data arrays

addStat(localIndex, globalIndex, stat)

Add a statistic, providing the local index, the corresponding global index and the statististic values

getComments()

Get a deepcopy of the comments

addComment(comment)

Add a comment to the comments

view(eFreqI, **kwargs)

View statistic values for a evaluation frequency (time on x axis, statistic values on y axis)

histogram(eFreqI, **kwargs)

View a histogram of the statistic values for each statistic component for a single evaluation frequency

crossplot(eFreqI, **kwargs)

View a crossplot of the data

addColourbar(plot, cax, title, plotfonts)

Add a colourbar to a plot

addColourbarDates(plot, cax, title, plotfonts)

Add a coloubar the represents dates to the plot

dateTicks(gIndices, dates, timeNum)

Deal with the dateTicks of the plot

calcColourData(plotData, val, eFreqI, keywords)

Calculate colours

getRowsCols(maxcols, numStats)

Get the number of rows and columns for a plot

printList()

Class status returned as list of strings

addColourbar(self, plot: matplotlib.collections.PathCollection, cax, title: str, plotfonts: Dict) → None[source]

Add a colourbar to a plot

Parameters
plotmatplotlib.collections.PathCollection

A plot e.g. a scatter graph

cax :

Colourbar axis

titlestr

The tital for the colourbar

plotfontsDict

A dictionary with font types as keys and sizes as values

addColourbarDates(self, plot: matplotlib.collections.PathCollection, cax, title: str, plotfonts: Dict)[source]

Make the colourbar show dates for identifying window times where there is not date axis

Parameters
plotmatplotlib.collections.PathCollection

A plot e.g. a scatter graph

cax :

Colourbar axis

titlestr

The tital for the colourbar

plotfontsDict

A dictionary with font types as keys and sizes as values

addComment(self, comment: str) → None[source]

Add a new comment

Parameters
commentfloat

A new comment

addStat(self, localIndex: int, globalIndex: int, stat) → None[source]

Add statistic values for a window for all evaluation frequencies

Parameters
localIndexint

Local index of the window

globalIndexint

Global index of the window

statDict

An dictionary of dictionaries. First set of key, values are evaluationFrequencies and dictionaries, second set of key, values are statistic names in winStats and their corresponding value for the window

calcColourData(self, plotData, val, eFreqI, keywords)[source]

Calculate the colour data

Todo

Write more complete documentation

crossplot(self, eFreqI: int, **kwargs) → matplotlib.figure.Figure[source]

Plots crossplots of statistic components for evaluation frequency index

Parameters
eFreqIint

Evaluation frequency index

maskwindowsList, np.ndarray

Global windows to exclude

crossplotsList[List[str]], optional

The parameters to crossplot

figmatplotlib.pyplot.figure, optional

A figure object

plotfontsDict, optional

A dictionary of plot fonts

labelstr, optional

Label for the plots

climList, optional

Limits for colourbar axis

xlimList, optional

Limits for the x axis

ylimList, optional

Limits for the y axis

colortitlestr, optional

Title for the colourbar

legenedbool

Boolean flag for adding a legend

Returns
plt.figure

Matplotlib figure object

Notes

By default, the crossplots plotted are statistic component 1 vs statistic component 2 statistic component 3 vs statistic component 4 etc

But crossplots can be explicity set by using the crossplots keyword. They should be specified as a list of a list of strings e.g. crossplots = [[component2, component3], [component1, component4]]

dateTicks(self, gIndices, dates, timeNum)[source]

Format dateticks

Todo

Write more complete documentation

densityplot(self, eFreqI: int, **kwargs) → matplotlib.figure.Figure[source]

Plots density plots of statistic components for evaluation frequency index

Parameters
eFreqIint

Evaluation frequency index

maskwindowsList, np.ndarray

Global windows to exclude

crossplotsList[List[str]], optional

The parameters to crossplot

figmatplotlib.pyplot.figure, optional

A figure object

plotfontsDict, optional

A dictionary of plot fonts

labelstr, optional

Label for the plots

xlimList, optional

Limits for the x axis

ylimList, optional

Limits for the y axis

colortitlestr, optional

Title for the colourbar

legenedbool

Boolean flag for adding a legend

Returns
plt.figure

Matplotlib figure object

Notes

By default, the density plots plotted are statistic component 1 vs statistic component 2 statistic component 3 vs statistic component 4 etc

But density plots can be explicity set by using the crossplots keyword. They should be specified as a list of a list of strings e.g. crossplots = [[component2, component3], [component1, component4]]

getComments(self) → List[str][source]

Get a deepcopy of the comments

Returns
List[str]

Dataset comments as a list of strings

getGlobalDates(self)[source]

Get the global start dates and end dates for each window

Returns
np.ndarray

The global window start times

getGlobalIndex(self, localIndex)[source]

Get global index for local index

Parameters
localIndexint

Local index of the window

Returns
globalIndexint

Global index for local index

getLocalIndices(self, globalIndices: Tuple[List[int], numpy.ndarray]) → List[int][source]

Converts a list or array of global indices to local indices

Parameters
globalIndicesList, np.ndarray

Global indices to convert into local indices

Returns
List

List of local indices

getRowsCols(self, maxcols: int, numStats: int = 0) → Tuple[int, int][source]

Get the numbers of rows and columns for the plots

Parameters
maxcolsint

The maximum number of columns

numStatsint

The number of statistics to plot (in case this is not all of the winStats)

getStatGlobal(self, globalIndex: int) → numpy.ndarray[source]

Get statistics for a local window index

Parameters
globalIndexint

Global index of the window

Returns
outnp.ndarray

Statistics for the local window

getStatLocal(self, localIndex: int) → numpy.ndarray[source]

Get statistics for a local window index

Parameters
localIndexint

Local index of the window

Returns
outnp.ndarray

Statistics for the local window

getStats(self, includewindows: Union[numpy.ndarray, List, NoneType] = None, maskwindows: Union[numpy.ndarray, List, NoneType] = None) → numpy.ndarray[source]

Get statistics when either selecting a set of indices or wanting to mask a set of indices

Parameters
includewindowsList, np.ndarray, optional

Windows to get. This should be a list of numpy array of global indices.

maskwindowsList, np.ndarray, optional

Windows to exclude. This is expected to be a list, set or numpy array of global indices.

Returns
np.ndarray

Statistics limited by the window selection options

getUnmaskedIndices(self, maskWindows: Union[List, numpy.ndarray]) → Union[List, NoneType][source]

Given a list of global windows to mask, returns the set of indices to include in the plot

Parameters
maskWindowsList, np.ndarray

Global indices of windows to mask

Returns
List, None

List of indices to include. None if all windows should be included

histogram(self, eFreqI: int, **kwargs) → matplotlib.figure.Figure[source]

Plot statistics for evaluation frequency index

Plots a histogram of each statistic with bins on the xaxis and count on the yaxis. Ideal for exploring the distribution of statistic values over the windows.

Parameters
eFreqIint

Evaluation frequency index

maskwindowsList, np.ndarray

Global windows to exclude

numbinsint

The number of bins for the histogram data binning

figmatplotlib.pyplot.figure, optional

A figure object

plotfontsDict, optional

A dictionary of plot fonts

labelstr, optional

Label for the plots

xlimList, optional

Limits for the x axis

legenedbool

Boolean flag for adding a legend

Returns
plt.figure

Matplotlib figure object

initialiseFromKeywords(self, keywords)[source]

Initialise object properties using the keywords

printList(self) → List[str][source]

Class information as a list of strings

Returns
outList[str]

List of strings with information

setStatParams(self, numWindows: int, winStats: List[str], evalFreq, dtype: Any = None)[source]

Set the statistic parameters

Parameters
numWindowsint

Number of windows for which the statistic has been or will be calculated

winStatsint

The parameters in the statistic

evalFreqList

A list of evaluation frequencies

dtypestr, optional

The datatype of the statistic values

view(self, eFreqI: int, **kwargs) → matplotlib.figure.Figure[source]

Plot statistics for evaluation frequency index

Plots a simple scatter of each statistic with datetime on the xaxis (datetime of the window start dates). Number of subplots is equal to numStaStatPerWindow.

Parameters
eFreqIint

Evaluation frequency index

maskwindowsList, np.ndarray

Global windows to exclude

figmatplotlib.pyplot.figure, optional

A figure object

plotfontsDict, optional

A dictionary of plot fonts

labelstr, optional

Label for the plots

climList, optional

Limits for colourbar axis

xlimList, optional

Limits for the x axis

ylimList, optional

Limits for the y axis

colortitlestr, optional

Title for the colourbar

legenedbool

Boolean flag for adding a legend

Returns
plt.figure

Matplotlib figure object