WIP: diss figure
authorDan White <dan@whiteaudio.com>
Fri, 6 Dec 2013 07:32:37 +0000 (01:32 -0600)
committerDan White <dan@whiteaudio.com>
Fri, 6 Dec 2013 07:32:37 +0000 (01:32 -0600)
python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-gm.pdf [new file with mode: 0644]
python-lib/test-data/chip14/arb0/vios-offset-gm/arb0-chip14-iout.pdf [new file with mode: 0644]
python-lib/test-data/chip14/arb0/vios-offset-gm/gm.py [new file with mode: 0644]
python-lib/test-data/chip14/arb0/vios-offset-gm/matplotlibrc [new file with mode: 0644]

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 (file)
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 (file)
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 (file)
index 0000000..79f5880
--- /dev/null
@@ -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 (file)
index 0000000..c3748dd
--- /dev/null
@@ -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