SLiCAPplots.py
SLiCAP module with plot functions.
- Cadence2traces(csvFile, absx=False, logx=False, absy=False, logy=False, selection=['all'], assignID=True)
Generates a dictionary with traces (key = label, value = trace object) from data from a csv file generated in Cadence. :param csvFile: name of the csv file (in the ini.csv_path directory) :type csvFile: str :param absx: if ‘True’, it applies the absolute (abs) function to the indpendent variable data (xData) :type absx: bool :param logx: if ‘True’, it applies the logarithm in base 10 (log10) function to the independent variable data (xData) :type logx: bool :param absy: if ‘True’, it applies the absolute (abs) function to the dependent variable data (yData) :type absy: bool :param logy: if ‘True’, it applies the logarithm in base 10 (log10) function to the dependent variable data (yData) :type logy: bool :param selection: if:
selection=[‘all’]: Selects all traces in the dictionary and does not replace any label
selection=[‘all’,(“Var1”,”Variable”),(“Var2”,”Variable2”)]: selects all traces and replaces all character strings mentioned in the first element of the tuples (e.g. “Var1” and “Var2”) with the strings in the second element of the tuples (“Variable” and “Variable2”).
selection=[(‘Var1 (SweepVar=1e-06) Y’,”New Label”),(‘Var2 (SweepVar=1e-06) Y’,””)]: selects only the traces that are explicitly mentioned in the first element of the tuple (e.g. ‘Var1 (SweepVar=1e-06) Y’ and ‘Var2 (SweepVar=1e-06) Y’) and replaces its label with the second element of the tuple unless it is “”.
- Parameters:
assignID (bool) – if ‘True’, it generates an ID for each processed trace to avoid overwriting when merging dictionaries.
- Returns:
dictionary with key-value pairs: - key: str: label of the trace - value: SLiCAPplots.trace trace object
- Return type:
dict
- LTspiceAC2SLiCAPtraces(fileName, dB=False, color='c')
This function converts the results of a single-run LTspice AC analysis into two traces (mag, phase) that can be added to SLiCAP plots. Stepping is not (yet) supported.
- Parameters:
fileName (str) – Name of the file. The file should be located in the ditectory given in ini.txt_path.
dB (bool) – True if the trace magnitude should be in dB, else False. Default value = False
color (str) – Matplotlib color name. Valid names can be found at: https://matplotlib.org/stable/gallery/color/named_colors.html Default value is cyan (c); this does not correspond with one of the standard gain colors of the asymptotic-gain model.
- Returns:
a list with two trace dicts, magnitude and phase, respectively.
- Return type:
list
- Example:
>>> LTmag, LTphase = LTspiceAC2SLiCAPtraces('LTspiceACdata.txt')
- LTspiceData2Traces(txtFile)
Generates a dictionary with traces (key = label, value = trace object) from LTspice plot data (saved as .txt file).
- Parameters:
txtFile (str) – Name of the text file stored in the ini.txt_path directory
- Returns:
Dictionary with key-value pairs:
key: str: label of the trace
value: SLiCAPplots.trace trace object
- Return type:
dict
- addTraces(figObj, traceDict)
Adds the traces in the dictionary ‘traceDict’ to the figure object ‘figObj’.
- Parameters:
figObj – SLiCAP figure object to which the traces will be added.
traceDict (dict) – dictionary with traces (result from csv2traces)
- Returns:
updated figure object (traces addad)
- Return type:
SLiCAP figure object
- class axis(title)
Axis prototype.
- Parameters:
title (str) – Title of the axis. The title will be placed on top of the axis.
- makeTraceDict()
Returns a dict with data of all the traces on the axis.
- Returns:
dictionary with key-value pairs:
key: str label of the trace
value: SLiCAPplots.trace trace object
- Return type:
dict
- polar
(bool) True if a polar axis is required. Defaults to False.
- text
Text ([int, int, str]) with relative plot position: [<xPos>, <yPos>, <text>]. Defaults to [0, 0, ‘’].
- title
Title (str) of the axis, will be placed on top of the axis
- traces
List with SLiCAPplots.trace objects to be plotted on this axis: [<trace1>(,<trace2>,…,<traceN>)]. Defaults to [].
- xLabel
Label (str) for the x-axis, e.g. ‘frequency [Hz]’. Defaults to False.
- xLim
Limits (list) for the x-scale: [<xMin>, <xMax>]. Defaults to [].
- xScale
Scale (str) for the x-axis can be ‘lin’ or ‘log’. Defaults to ‘lin’.
- xScaleFactor
Scale factor (str) for the x-scale; e.g. M for 1E6. Defaults to ‘’.
- yLabel
Label (str) for the x-axis, e.g. ‘voltage [V]’. Defaults to False.
- yLim
Limits (list) for the y-scale: [<yMin>, <yMax>]. Defaults to [].
- yScale
Scale (str) for the y-axis can be ‘lin’ or ‘log’. Defaults to ‘lin’.
- yScaleFactor
Scale factor (str) for the y-scale; e.g. M for 1E6. Defaults to ‘’.
- csv2traces(csvFile)
Generates a dictionary with traces (key = label, value = trace object) from data from a csv file. The CSV file should have the following structure:
x0_label, y0_label, x1_label, y1_label, … x0_0 , y0_0 , x1_0 , y1_0 , … x0_1 , y0_1 , x1_1 , y1_1 , … … , … , … , … , …
The traces will be named with their y label.
- Parameters:
csvFile (str) – name of the csv file (in the ini.csv_path directory)
- Returns:
dictionary with key-value pairs:
key: str: label of the trace
value: SLiCAPplots.trace trace object
- Return type:
dict
- defaultsPlot()
Applies default settings for plots.
- class figure(fileName)
Prototype SLiCAP figure object.
- Parameters:
fileName (str) – Name of the file for saving the figure.
- axes
List with SLiCAPplots.axis objects to be plotted on this figure. Defaults to [].
- axisHeight
Relative height (int, float) of a single axis. Defaults to ini.axis_height.
To do: absolute measures in inch or cm.
- axisWidth
Relative width (int, float) of a single axis. Defaults to ini.axis_width.
To do: absolute measures in inch or cm.
- fileName
File name of the figure. Defaults to: fileName + ‘.’ + ini.plot_file_type.
- fileType
Graphic file type (str) for saving the figure. Defaults to fileName
- plot()
Creates the figure, displays it if SLiCAPplots.figure.show == True, and saves it to disk.
- show
(bool) if ‘True’ the figure will be displayed with the method SLiCAPplots.figure.plot(). Defaults to [].
- plot(fileName, title, axisType, plotData, xName='', xScale='', xUnits='', yName='', yScale='', yUnits='', xLim=[], yLim=[], show=False)
Plots x-y data, or multiple pairs of x-y data.
- Parameters:
fileName (str) – Name of the file for saving it to disk.
title (str) – Title of the figure.
axisType (str) – Type of axis: ‘lin’, ‘log’, ‘semilogx’, ‘semilogy’ or ‘polar’.
plotData (dict, SLiCAPplots.trace) –
dictionary with key-value pairs or dictionary with traces
key: str label for the trace
value:
list [<xData>, <yData>]
xData: list: x values
yData: list: y values
SLiCAPplots.trace object
xName (str) – Name of the variable to be plotted along the x axis. Defaults to ‘’.
xScale (str) – Scale factor of the x axis variable. Defaults to ‘’.
xUnits (str) – Units of the x axis variable. Defaults to ‘’.
xLim (list) – Limits for the x-axis scale: [<xmin>, <xmax>]
yName – Name of the variable to be plotted along the y axis. Defaults to ‘’.
yScale (str) – Scale factor of the y axis variable. Defaults to ‘’.
yUnits (str) – Units of the y axis variable. Defaults to ‘’.
yLim (list) – Limits for the y-axis scale: [<ymin>, <ymax>]
show (bool) – If ‘True’ the plot will be shown in the workspace.
- Returns:
fig
- Return type:
- plotPZ(fileName, title, results, xmin=None, xmax=None, ymin=None, ymax=None, xscale='', yscale='', show=False)
Creates a pole-zero scatter plot.
If parameter stepping of the instruction is enabled, a root locus is drawn with the parameter as root locus variable.
In such cases special begin end endpoint markers are used:
poles begin of root locus: ‘x’
poles end of root locus: ‘+’
zeros begin of root locus: ‘o’
zeros end of root locus: ‘square’
The root locus itself is drawn with dots for each position of a pole or zero.
Results of multiple analysis can be combined in one plot by putting them in a list.
The type of the axis is ‘lin’.
- Parameters:
fileName (str) – Name of the file for saving it to disk.
title (str) – Title of the figure.
results (list, SLiCAPprotos.allResults) – Results of the execution of an instruction, or a list with SLiCAPprotos.allResults objects. The data type of these instructions should be ‘poles’, ‘zeros’ or ‘pz’.
xmin (int, float, str) – Minimum value of the x axis; defaults to None.
xmax (int, float, str) – Maximum value of the x axis; defaults to None.
ymin (int, float, str) – Minimum value of the y axis; defaults to None.
ymax (int, float, str) – Maximum value of the y axis; defaults to None.
xscale (str) – x axis scale factor; defaults to ‘’.
yscale (str) – y axis scale factor; defaults to ‘’.
show (bool) – If ‘True’ the plot will be shown in the workspace. Defaults to False.
- Returns:
fig
- Return type:
- plotSweep(fileName, title, results, sweepStart, sweepStop, sweepNum, sweepVar='auto', sweepScale='', xVar='auto', xScale='', xUnits='', xLim=[], yLim=[], axisType='auto', funcType='auto', yVar='auto', yScale='', yUnits='', noiseSources=None, show=False)
Plots a function by sweeping one variable and optionally stepping another.
The function to be plotted depends on the arguments ‘yVar’ and ‘funcType’:
If funcType == ‘params’, the variable ‘yVar’ must be the name of a circuit parameter, or a list with circuit parameters.
If funcType == ‘auto’, the default function that will be plotted depends on the data type of the instruction:
data type == ‘noise’: funcType = ‘onoise’
data type == ‘laplace’, ‘numer’ or ‘denom’: funcType = ‘mag’
data type == ‘time’, ‘impulse’ or ‘step’: funcType = ‘time’
The variable plotted along the x-axis defaults to the sweep variable. However, for multivariate functions obtained with data type ‘params’, the x variable can be choosen from all circuit parameters.
If sweepVar == ‘auto’, the sweep variable will be determined from the data type:
data type == ‘noise’, ‘laplace’, ‘numer’ or ‘denom’: sweepVar = ini.frequency for data types ‘laplace’, ‘numer’ or ‘denom’ the laplace variable will be replaced with sympy.i*ini.frequency or with 2*sympy.pi*sympy.i*ini.frequency before sweeping, when ini.frequency == False, or ini.frequency== True, respectively.
dataType == ‘time’, ‘impulse’ or ‘step’: sweepVar = sympy.Symbol(‘t’)
The type of axis can be ‘lin’, ‘log’, ‘semilogx’, ‘semilogy’ or ‘polar’.
- Parameters:
fileName (str) – Name of the file for saving it to disk.
title (str) – Title of the figure.
results (list, SLiCAPprotos.allResults) – Results of the execution of an instruction, or a list with SLiCAPprotos.allResults objects.
sweepStart (float, int, str) – Start value of the sweep parameter
sweepStop (float, int, str) – Stop value of the sweep parameter
sweepNum (int) – Number of points of the sweep parameter
sweepVar (sympy.Symbol, str) – Name of the sweep variable
sweepScale (str) – Scale factor of the sweep variable. Both the start and the stop value will be multiplied with a factor that corresponds with this scale factor.
xVar – Name of the variable to be plotted along the x axis
xScale (str) – Scale factor of the x axis variable.
xUnits (str) – Units of the x axis variable.
xLim (list) – Limits for the x-axis scale: [<xmin>, <xmax>]
axisType (str) – Type of axis: ‘lin’, ‘log’, ‘semilogx’, ‘semilogy’ or ‘polar’.
funcType (str) – Type of function can be: ‘mag’, ‘dBmag’, ‘phase’, ‘delay’, ‘time’, ‘onoise’, ‘inoise’ or ‘param’.
yVar (str, list) – if funcType = param, yVar should be the name of a circuit parameter or list with names of circuit parameters. In other cases yVar should be ‘auto’.
yScale (str) – Scale factor of the y axis variable.
yUnits (str) – Units of the y axis variable.
yLim (list) – Limits for the y-axis scale: [<ymin>, <ymax>]
noiseSources (list, str) – Noise sources of which the contribution to the detector- referred noise (funcType = ‘onoise’) or the source- referred noise (funcType = ‘inoise’) should be plotted. Can be ‘all’, a list with names of noise sources or an ID of a noise source.
show (bool) – If ‘True’ the plot will be shown in the workspace.
- Returns:
fig
- Return type:
- stepParams(results, xVar, yVar, sVar, sweepList)
Returns parameter values as a result of sweeping and stepping parameters.
Called by SLiCAPplots.plotSweep() in cases in which funcType = ‘param’.
If parameter stepping is enabled it returns a tuple with two dictionaries:
{stepVal[j]: [xVal[i] for i in range(len(sweepValues))], …}
{stepVal[j]: [yVal[i] for i in range(len(sweepValues))], …}
If parameter stepping is disabled it returns a tuple with two lists:
[xVal[i] for i in range(len(sweepValues))]
[yVal[i] for i in range(len(sweepValues))]
- Parameters:
results (SLiCAPprotos.allResults) – Results of the execution of an instruction with data type ‘params’.
xVar – Name of the parameter to be plotted along the x axis
yVar – Name of the parameter to be plotted along the y axis
sVar – Name of the sweep parameter
sweepList (list, numpy.array) – Array-like sweep values.
- Returns:
parameter values as a result of sweeping and stepping parameters.
- Return type:
tuple
- class trace(traceData)
Trace prototype.
Traces are plotted on axes, which are part of a figure.
- Parameters:
traceData (list) – list with list array-like X and Y data of the trace.
- Example:
>>> x_data = np.linspace(0, 2*np.pi, 50) >>> y_data = np.sin(x_data) >>> sin_trace = trace([x_data, y_data])
- color
Trace color (str) in matplotlib format. Defaults to False.
- label
Trace label (str) that will be displayed in legend box. Defaults to ‘’.
- lineType
Line type (str) in matplotlib format. Defaults to ‘-‘.
- lineWidth
Line width (int) in pixels. Defaults to 2.
- makeTable()
Returns a table with trace data in CSV format.
- Returns:
table: CSV table with column headings and x-data and y-data in columns
- Return type:
str
- Example:
>>> x_data = np.linspace(0, 2*np.pi, 10) >>> y_data = np.sin(x_data) >>> sin_trace = trace([x_data, y_data]) >>> sin_trace.yName = 'sin(x)' >>> print(sin_trace.makeTable()) x,sin(x) 0.000000000000e+00, 0.000000000000e+00 6.981317007977e-01, 6.427876096865e-01 1.396263401595e+00, 9.848077530122e-01 2.094395102393e+00, 8.660254037844e-01 2.792526803191e+00, 3.420201433257e-01 3.490658503989e+00, -3.420201433257e-01 4.188790204786e+00, -8.660254037844e-01 4.886921905584e+00, -9.848077530122e-01 5.585053606382e+00, -6.427876096865e-01 6.283185307180e+00, -2.449293598295e-16
- marker
Marker type (str) in matplotlib format. Defaults to False.
- markerColor
Marker color (str) in matplotlib format. Defaults to False.
- markerFaceColor
Marker face color (str) in matplotlib format. Defaults to ‘none’.
- markerSize
Marker size (int). Defaults to 7.
- xData
Array-like data for the x-axis of the trace. On a polar axes this is the angle in radians.
- xName
Heading (str) for the x column of a table. Defaults to ‘x’.
- yData
Array-like data for the y-axis of the trace. On a polar axes this is the radius.
- yName
Heading (str) for the y column of a table. Defaults to ‘y’.
- traces2fig(traceDict, figObject, axis=[0, 0])
Adds traces generated from another application to an existing figure.
- Parameters:
traceDict (dict) –
Dictionary with key-value pairs:
key: str: label of the trace
value: SLiCAPplots.trace trace object
figObject (SLiCAPplots.figure) – figure object to which the traces must be added
axis (list) – List with x position and y position of the axis to which the traces must be added. Defaults to [0, 0]
- Returns:
Updated figure object
- Return type: