From: Dan White Date: Fri, 6 Dec 2013 07:32:37 +0000 (-0600) Subject: WIP: diss figure X-Git-Tag: cheetah~42 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=2312c7eb6658a8bb9583d503aa6fad2f9781cfcd;p=430.git WIP: diss figure --- diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-gm.pdf b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-gm.pdf new file mode 100644 index 0000000..f4d9fa1 Binary files /dev/null and b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-gm.pdf differ diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-iout.pdf b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-iout.pdf new file mode 100644 index 0000000..410c5cf Binary files /dev/null and b/python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-iout.pdf differ diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/gm.py b/python-lib/test-data/chip14/arb0/vios-offset-gm/gm.py new file mode 100644 index 0000000..79f5880 --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/gm.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python + +from pylab import * + +from glob import glob +import yaml +import scipy.signal as sig + + + + + +close('all') + + + + + +def mkgm(vd, vout, tint, Cint=50e-12): + dvout = diff(vout / tint) + dvd = diff(vd) + gm = Cint * dvout / dvd + return (vd[:-1], gm) + + +def smooth(x, npoints=21.0): + return sig.filtfilt(ones(npoints)/npoints, [1], x) + + +# collect data to plot sorted by offset value +d = {} +for npz in glob('*.npz'): + data = np.load(npz) + cfg = yaml.load(open(npz.replace('.npz', '.yaml'), 'rb')) + ios = cfg['arb']['harmonics'][0]['otaA']['offset'] + + d[ios] = {'data':data, 'fname':npz} + + + + +if 0: + figure(figsize=(5.0, 3.5)) + subplots_adjust(top=0.98, bottom=0.12, left=0.15, right=0.95) + + for ios in sorted(d.keys()): + if ios == 100: + continue + + data = d[ios]['data'] + tint = data['tint'] + vd = data['vd'] + vout = data['vout'] + + vdgm, dgm = mkgm(vd, vout, tint) + + #plot(vdgm, dgm, 'b.', label='raw') + plot(vdgm, 1e12*smooth(dgm, 15.0), + linewidth=2.0, + label=ios) + + + legend(loc='best', ncol=2) + + #xlim((-2.0, 2.0)) + xlabel('$V_d$ (V)') + ylim((0, 100)) + ylabel('$g_m$ (pA/V)') + + savefig('arb0-chip14-gm.pdf') + + + + + +if 1: + figure(figsize=(5.0, 5.5)) + subplots_adjust(top=0.98, bottom=0.10, left=0.15, right=0.95) + + subplot(212) + for ios in sorted(d.keys()): + if ios == 100: + continue + + data = d[ios]['data'] + tint = data['tint'] + vd = data['vd'] + vout = data['vout'] + + vdgm, dgm = mkgm(vd, vout, tint) + + #plot(vdgm, dgm, 'b.', label='raw') + #plot(vd, 1e12*smooth(50e-12*vout/tint, 15.0)/vd, + plot(vdgm, 1e12*smooth(dgm, 15.0), + label=ios) + + xlim((-2.5, 2.5)) + vlines(0, -1000, 1000, linewidth=0.5) + ylim((0, 100)) + ylabel(r'$g_m = dI_{out}/dV_d$ (pA/V)') + + + + subplot(211) + for ios in sorted(d.keys()): + if ios == 100: + continue + + data = d[ios]['data'] + tint = data['tint'] + vd = data['vd'] + vout = data['vout'] + + iout = 50e-12 * vout / tint + plot(vd, 1e12*iout, + label='%i'%ios) + + + hlines(0, -10, 10, linewidth=0.5) + vlines(0, -1000, 1000, linewidth=0.5) + + legend(title='offset code', + loc='lower right', + ncol=2, + fontsize='medium', + handletextpad=0.2, + labelspacing=0.2) + + xlim((-2.5, 2.5)) + xlabel('$V_d$ (V)') + ylim((-180, 180)) + ylabel('$I_{out}$ (pA)') + + savefig('arb0-chip14-iout.pdf') + diff --git a/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc b/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc new file mode 100644 index 0000000..c3748dd --- /dev/null +++ b/python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc @@ -0,0 +1,322 @@ +### MATPLOTLIBRC FORMAT + +# This is a sample matplotlib configuration file. It should be placed +# in HOME/.matplotlib/matplotlibrc (unix/linux like systems) and +# C:\Documents and Settings\yourname\.matplotlib (win32 systems) +# +# By default, the installer will overwrite the existing file in the +# install path, so if you want to preserve your's, please move it to +# your HOME dir and set the environment variable if necessary. +# +# This file is best viewed in a editor which supports python mode +# syntax highlighting +# +# Blank lines, or lines starting with a comment symbol, are ignored, +# as are trailing comments. Other lines must have the format +# +# key : val # optional comment +# +# Colors: for the color values below, you can either use +# - a matplotlib color string, such as r, k, or b +# - an rgb tuple, such as (1.0, 0.5, 0.0) +# - a hex string, such as ff00ff (no '#' symbol) +# - a scalar grayscale intensity such as 0.75 +# - a legal html color name, eg red, blue, darkslategray + +#### CONFIGURATION BEGINS HERE +# the default backend; one of GTK GTKAgg GTKCairo FltkAgg QtAgg TkAgg +# WX WXAgg Agg Cairo GD GDK Paint PS PDF SVG Template +#backend : GTKCairo +#backend : Qt4Agg +#backend : GTKAgg +backend : pdf +#numerix : numpy # numpy, Numeric or numarray +#maskedarray : False # True to use external maskedarray module + # instead of numpy.ma; this is a temporary + # setting for testing maskedarray. +interactive : False # see http://matplotlib.sourceforge.net/interactive.html +#toolbar : toolbar2 # None | classic | toolbar2 +timezone : US/Chicago # a pytz timezone string, eg US/Central or Europe/Paris + +# Where your matplotlib data lives if you installed to a non-default +# location. This is where the matplotlib fonts, bitmaps, etc reside +#datapath : /home/jdhunter/mpldata + + +### LINES +# See http://matplotlib.sourceforge.net/matplotlib.lines.html for more +# information on line properties. +#lines.linewidth : 1.0 # line width in points +#lines.linestyle : - # solid line +#lines.color : blue +#lines.marker : None # the default marker +#lines.markeredgewidth : 0.5 # the line width around the marker symbol +#lines.markersize : 6 # markersize, in points +#lines.dash_joinstyle : miter # miter|round|bevel +#lines.dash_capstyle : butt # butt|round|projecting +#lines.solid_joinstyle : miter # miter|round|bevel +#lines.solid_capstyle : projecting # butt|round|projecting +#lines.antialiased : True # render lines in antialised (no jaggies) + +### PATCHES +# Patches are graphical objects that fill 2D space, like polygons or +# circles. See +# http://matplotlib.sourceforge.net/matplotlib.patches.html for more +# information on patch properties +#patch.linewidth : 1.0 # edge width in points +#patch.facecolor : blue +#patch.edgecolor : black +#patch.antialiased : True # render patches in antialised (no jaggies) + +### FONT +# +# font properties used by text.Text. See +# http://matplotlib.sourceforge.net/matplotlib.font_manager.html for more +# information on font properties. The 6 font properties used for font +# matching are given below with their default values. +# +# The font.family property has five values: 'serif' (e.g. Times), +# 'sans-serif' (e.g. Helvetica), 'cursive' (e.g. Zapf-Chancery), +# 'fantasy' (e.g. Western), and 'monospace' (e.g. Courier). Each of +# these font families has a default list of font names in decreasing +# order of priority associated with them. +# +# The font.style property has three values: normal (or roman), italic +# or oblique. The oblique style will be used for italic, if it is not +# present. +# +# The font.variant property has two values: normal or small-caps. For +# TrueType fonts, which are scalable fonts, small-caps is equivalent +# to using a font size of 'smaller', or about 83%% of the current font +# size. +# +# The font.weight property has effectively 13 values: normal, bold, +# bolder, lighter, 100, 200, 300, ..., 900. Normal is the same as +# 400, and bold is 700. bolder and lighter are relative values with +# respect to the current weight. +# +# The font.stretch property has 11 values: ultra-condensed, +# extra-condensed, condensed, semi-condensed, normal, semi-expanded, +# expanded, extra-expanded, ultra-expanded, wider, and narrower. This +# property is not currently implemented. +# +# The font.size property is the default font size for text, given in pts. +# 12pt is the standard value. +# +font.family : serif +font.style : Times New Roman +#font.variant : normal +#font.weight : medium +#font.stretch : normal +# note that font.size controls default text sizes. To configure +# special text sizes tick labels, axes, labels, title, etc, see the rc +# settings for axes and ticks. Special text sizes can be defined +# relative to font.size, using the following values: xx-small, x-small, +# small, medium, large, x-large, xx-large, larger, or smaller +#font.size : 12.0 +#font.size : 8 +font.size : 12.0 +#font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif +#font.serif : Times New Roman +font.serif : computer modern roman +#font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif +#font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, cursive +#font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, fantasy +#font.monospace : Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace + +### TEXT +# text properties used by text.Text. See +# http://matplotlib.sourceforge.net/matplotlib.text.html for more +# information on text properties + +#text.color : black + +### LaTeX customizations. See http://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex +#text.usetex : False # use latex for all text handling. The following fonts +text.usetex : True # use latex for all text handling. The following fonts + # are supported through the usual rc parameter settings: + # new century schoolbook, bookman, times, palatino, + # zapf chancery, charter, serif, sans-serif, helvetica, + # avant garde, courier, monospace, computer modern roman, + # computer modern sans serif, computer modern typewriter + # If another font is desired which can loaded using the + # LaTeX \usepackage command, please inquire at the + # matplotlib mailing list +#text.latex.unicode : False # use "ucs" and "inputenc" LaTeX packages for handling + # unicode strings. +#text.latex.preamble : # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES + # AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP + # IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO. + # preamble is a comma separated list of LaTeX statements + # that are included in the LaTeX document preamble. + # An example: + # text.latex.preamble : \usepackage{bm},\usepackage{euler} + # The following packages are always loaded with usetex, so + # beware of package collisions: color, geometry, graphicx, + # type1cm, textcomp. Adobe Postscript (PSSNFS) font packages + # may also be loaded, depending on your font settings +#text.dvipnghack : False # some versions of dvipng don't handle + # alpha channel properly. Use True to correct and flush + # ~/.matplotlib/tex.cache before testing +#text.markup : 'plain' # Affects how text, such as titles and labels, are + # interpreted by default. + # 'plain': As plain, unformatted text + # 'tex': As TeX-like text. Text between $'s will be + # formatted as a TeX math expression. + # This setting has no effect when text.usetex is True. + # In that case, all text will be sent to TeX for + # processing. + +# The following settings allow you to select the fonts in math mode. +# They map from a TeX font name to a fontconfig font pattern. +# These settings are only used if mathtext.fontset is 'custom'. +#mathtext.cal : cursive +#mathtext.rm : serif +#mathtext.tt : monospace +#mathtext.it : serif:italic +#mathtext.bf : serif:bold +#mathtext.sf : sans +#mathtext.fontset : cm # Should be 'cm' (Computer Modern), 'stix', + # 'stixsans' or 'custom' +#mathtext.fallback_to_cm : True # When True, use symbols from the Computer Modern + # fonts when a symbol can not be found in one of + # the custom math fonts. + +### AXES +# default face and edge color, default tick sizes, +# default fontsizes for ticklabels, and so on. See +# http://matplotlib.sourceforge.net/matplotlib.axes.html#Axes +#axes.hold : True # whether to clear the axes by default on +#axes.facecolor : white # axes background color +#axes.edgecolor : black # axes edge color +#axes.linewidth : 1.0 # edge linewidth +axes.grid : False # display grid or not +#axes.titlesize : 14 # fontsize of the axes title +#axes.labelsize : 12 # fontsize of the x any y labels +#axes.labelcolor : black +#axes.axisbelow : False # whether axis gridlines and ticks are below + # the axes elements (lines, text, etc) +axes.formatter.limits : -3, 3 # use scientific notation if log10 + # of the axis range is smaller than the + # first or larger than the second + +#polaraxes.grid : True # display grid on polar axes + +### TICKS +# see http://matplotlib.sourceforge.net/matplotlib.axis.html#Ticks +#xtick.major.size : 4 # major tick size in points +#xtick.minor.size : 2 # minor tick size in points +#xtick.major.pad : 4 # distance to major tick label in points +#xtick.minor.pad : 4 # distance to the minor tick label in points +#xtick.color : k # color of the tick labels +#xtick.labelsize : 12 # fontsize of the tick labels +#xtick.direction : in # direction: in or out + +#ytick.major.size : 4 # major tick size in points +#ytick.minor.size : 2 # minor tick size in points +#ytick.major.pad : 4 # distance to major tick label in points +#ytick.minor.pad : 4 # distance to the minor tick label in points +#ytick.color : k # color of the tick labels +#ytick.labelsize : 12 # fontsize of the tick labels +#ytick.direction : in # direction: in or out + + +### GRIDS +#grid.color : black # grid color +#grid.linestyle : : # dotted +#grid.linewidth : 0.5 # in points + +### Legend +#legend.isaxes : True +#legend.numpoints : 2 # the number of points in the legend line +#legend.fontsize : 14 +#legend.pad : 0.2 # the fractional whitespace inside the legend border +#legend.markerscale : 1.0 # the relative size of legend markers vs. original +# the following dimensions are in axes coords +#legend.labelsep : 0.010 # the vertical space between the legend entries +#legend.handlelen : 0.05 # the length of the legend lines +#legend.handletextsep : 0.02 # the space between the legend line and legend text +#legend.axespad : 0.02 # the border between the axes and legend edge +#legend.shadow : False + +### FIGURE +# See http://matplotlib.sourceforge.net/matplotlib.figure.html#Figure +#figure.figsize : 8, 6 # figure size in inches +#figure.dpi : 80 # figure dots per inch +#figure.facecolor : 0.75 # figure facecolor; 0.75 is scalar gray +#figure.edgecolor : white # figure edgecolor + +# The figure subplot parameters. All dimensions are fraction of the +# figure width or height +#figure.subplot.left : 0.125 # the left side of the subplots of the figure +#figure.subplot.right : 0.9 # the right side of the subplots of the figure +#figure.subplot.bottom : 0.1 # the bottom of the subplots of the figure +#figure.subplot.top : 0.9 # the top of the subplots of the figure +#figure.subplot.wspace : 0.2 # the amount of width reserved for blank space between subplots +#figure.subplot.hspace : 0.2 # the amount of height reserved for white space between subplots + + +### IMAGES +#image.aspect : equal # equal | auto | a number +#image.interpolation : bilinear # see help(imshow) for options +#image.cmap : jet # gray | jet etc... +#image.lut : 256 # the size of the colormap lookup table +#image.origin : upper # lower | upper + + +### CONTOUR PLOTS +#contour.negative_linestyle : dashed # dashed | solid + +### SAVING FIGURES +# the default savefig params can be different for the GUI backends. +# Eg, you may want a higher resolution, or to make the figure +# background white +#savefig.dpi : 100 # figure dots per inch +#savefig.facecolor : white # figure facecolor when saving +#savefig.edgecolor : white # figure edgecolor when saving + +#cairo.format : png # png, ps, pdf, svg + +# tk backend params +#tk.window_focus : False # Maintain shell focus for TkAgg +#tk.pythoninspect : False # tk sets PYTHONINSEPCT + +# ps backend params +#ps.papersize : letter # auto, letter, legal, ledger, A0-A10, B0-B10 +#ps.useafm : False # use of afm fonts, results in small files +#ps.usedistiller : ghostscript # can be: None, ghostscript or xpdf + # Experimental: may produce smaller files. + # xpdf intended for production of publication quality files, + # but requires ghostscript, xpdf and ps2eps +#ps.distiller.res : 6000 # dpi +#ps.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType) + +# pdf backend params +#pdf.compression : 6 # integer from 0 to 9 + # 0 disables compression (good for debugging) +#pdf.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType) + +# svg backend params +#svg.image_inline : True # write raster image data directly into the svg file +#svg.image_noscale : False # suppress scaling of raster data embedded in SVG +#svg.embed_chars : True # embed character outlines in the SVG file + +# Set the verbose flags. This controls how much information +# matplotlib gives you at runtime and where it goes. The verbosity +# levels are: silent, helpful, debug, debug-annoying. Any level is +# inclusive of all the levels below it. If you setting is debug, +# you'll get all the debug and helpful messages. When submitting +# problems to the mailing-list, please set verbose to helpful or debug +# and paste the output into your report. +# +# The fileo gives the destination for any calls to verbose.report. +# These objects can a filename, or a filehandle like sys.stdout. +# +# You can override the rc default verbosity from the command line by +# giving the flags --verbose-LEVEL where LEVEL is one of the legal +# levels, eg --verbose-helpful. +# +# You can access the verbose instance in your code +# from matplotlib import verbose. +#verbose.level : silent # one of silent, helpful, debug, debug-annoying +#verbose.fileo : sys.stdout # a log filename, sys.stdout or sys.stderr