Rendering SciPy docstrings as markup text within matplotlib

Hi,

SciPy (and NumPy) docstrings are written with a special kind of mark up:

For example, the docstring for the russellrao distance function looks like this:

'\n Computes the Russell-Rao dissimilarity between two boolean 1-D arrays.\n\n The Russell-Rao dissimilarity between two boolean 1-D arrays, u and\n v, is defined as\n\n … math::\n\n \frac{n - c_{TT}}\n {n}\n\n where :math:c_{ij} is the number of occurrences of\n :math:\\mathtt{u[k]} = i and :math:\\mathtt{v[k]} = j for\n :math:k < n.\n\n Parameters\n ----------\n u : (N,) array_like, bool\n Input array.\n v : (N,) array_like, bool\n Input array.\n\n Returns\n -------\n russellrao : double\n The Russell-Rao dissimilarity between vectors u and v.\n\n ’

What’s the most efficient way to turn this into a format where you can format it nicely as a matplotlib text object?

I tried:

fig = plt.figure()

ax = fig.add_subplot(111)

props = dict(boxstyle=‘round’, facecolor=‘wheat’, alpha=0.5)

textstr = dist_fcn.doc

textstr = textstr.replace(‘math:’,’ ')

textstr = textstr.replace(’`’, ‘$’)

textstr = textstr.replace(’\n\n where’, ‘$\n\n where’)

ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14,

verticalalignment=‘top’, bbox=props)

Which does an ‘ok’ job, at best, since fractions aren’t converted properly. Is there a way to do it nicely short of using some horrendous regular expressions?

Federico

docutils is the library that supports the format (restructuredtext) that these docstrings are written in. It *may* (I haven't looked) contain functionality to render as clean plain text.

Mike

···

On 08/05/2013 09:57 AM, federico vaggi wrote:

Hi,

SciPy (and NumPy) docstrings are written with a special kind of mark up:

For example, the docstring for the russellrao distance function looks like this:

'\n Computes the Russell-Rao dissimilarity between two boolean 1-D arrays.\n\n The Russell-Rao dissimilarity between two boolean 1-D arrays, `u` and\n `v`, is defined as\n\n .. math::\n\n \\frac{n - c_{TT}}\n {n}\n\n where :math:`c_{ij}` is the number of occurrences of\n :math:`\\mathtt{u[k]} = i` and :math:`\\mathtt{v[k]} = j` for\n :math:`k < n`.\n\n Parameters\n ----------\n u : (N,) array_like, bool\n Input array.\n v : (N,) array_like, bool\n Input array.\n\n Returns\n -------\n russellrao : double\n The Russell-Rao dissimilarity between vectors `u` and `v`.\n\n '

What's the most efficient way to turn this into a format where you can format it nicely as a matplotlib text object?

I tried:

    fig = plt.figure()

ax = fig.add_subplot(111)

props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)

textstr = dist_fcn.__doc__

textstr = textstr.replace('math:',' ')

textstr = textstr.replace('`', '$')

textstr = textstr.replace('\n\n where', '$\n\n where')

ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14,

verticalalignment='top', bbox=props)

Which does an 'ok' job, at best, since fractions aren't converted properly. Is there a way to do it nicely short of using some horrendous regular expressions?

Federico

------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent
caught up. So what steps can you take to put your SQL databases under
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options