[Numpy-svn] r5413 - branches/1.1.x/numpy/doc
Tue Jul 15 02:38:15 CDT 2008
Date: 2008-07-15 02:38:00 -0500 (Tue, 15 Jul 2008)
New Revision: 5413
Back-port changes to documentation standard.
--- branches/1.1.x/numpy/doc/EXAMPLE_DOCSTRING.txt 2008-07-15 07:06:38 UTC (rev 5412)
+++ branches/1.1.x/numpy/doc/EXAMPLE_DOCSTRING.txt 2008-07-15 07:38:00 UTC (rev 5413)
@@ -0,0 +1,104 @@
+.. Here follows an example docstring for a C-function. Note that the
+ signature is given. This is done only for functions written is C,
+ since Python cannot find their signature by inspection. For all
+ other functions, start with the one line description.
+multivariate_normal(mean, cov[, shape])
+Draw samples from a multivariate normal distribution.
+The multivariate normal, multinormal or Gaussian distribution is a
+generalisation of the one-dimensional normal distribution to higher
+Such a distribution is specified by its mean and covariance matrix,
+which are analogous to the mean (average or "centre") and variance
+(standard deviation squared or "width") of the one-dimensional normal
+mean : (N,) ndarray
+ Mean of the N-dimensional distribution.
+cov : (N,N) ndarray
+ Covariance matrix of the distribution.
+shape : tuple of ints, optional
+ Given a shape of, for example, (m,n,k), m*n*k samples are
+ generated, and packed in an m-by-n-by-k arrangement. Because each
+ sample is N-dimensional, the output shape is (m,n,k,N). If no
+ shape is specified, a single sample is returned.
+out : ndarray
+ The drawn samples, arranged according to `shape`. If the
+ shape given is (m,n,...), then the shape of `out` is is
+ In other words, each entry ``out[i,j,...,:]`` is an N-dimensional
+ value drawn from the distribution.
+scipy.stats.distributions.norm : Provides random variates, as well as
+ probability density function, cumulative
+ density function, etc.
+The mean is a coordinate in N-dimensional space, which represents the
+location where samples are most likely to be generated. This is
+analogous to the peak of the bell curve for the one-dimensional or
+univariate normal distribution.
+Covariance indicates the level to which two variables vary together.
+From the multivariate normal distribution, we draw N-dimensional
+samples, :math:`X = [x_1, x_2, ... x_N]`. The covariance matrix
+element :math:`C_ij` is the covariance of :math:`x_i` and :math:`x_j`.
+The element :math:`C_ii` is the variance of :math:`x_i` (i.e. its
+Instead of specifying the full covariance matrix, popular
+ - Spherical covariance (`cov` is a multiple of the identity matrix)
+ - Diagonal covariance (`cov` has non-negative elements, and only on
+ the diagonal)
+This geometrical property can be seen in two dimensions by plotting
+>>> mean = [0,0]
+>>> cov = [[1,0],[0,100]] # diagonal covariance, points lie on x or y-axis
+>>> x,y = np.random.multivariate_normal(mean,cov,5000).T
+>>> import matplotlib.pyplot as plt
+>>> plt.plot(x,y,'x'); plt.axis('equal'); pyplot.show()
+Note that the covariance matrix must be non-negative definite.
+..  A. Papoulis, "Probability, Random Variables, and Stochastic
+ Processes," 3rd ed., McGraw-Hill Companies, 1991
+..  R.O. Duda, P.E. Hart, and D.G. Stork, "Pattern Classification,"
+ 2nd ed., Wiley, 2001.
+>>> mean = (1,2)
+>>> cov = [[1,0],[1,0]]
+>>> x = np.random.multivariate_normal(mean,cov,(3,3))
+(3, 3, 2)
+The following is probably true, given that 0.6 is roughly twice the
+>>> print list( (x[0,0,:] - mean) < 0.6 )
+ :refguide: random:distributions
--- branches/1.1.x/numpy/doc/HOWTO_DOCUMENT.txt 2008-07-15 07:06:38 UTC (rev 5412)
+++ branches/1.1.x/numpy/doc/HOWTO_DOCUMENT.txt 2008-07-15 07:38:00 UTC (rev 5413)
@@ -25,15 +25,24 @@
* `pyflakes` easy_install pyflakes
* `pep8.py <http://svn.browsershots.org/trunk/devtools/pep8/pep8.py>`_
-For documentation purposes, use unabbreviated module names. If you
-prefer the use of abbreviated module names in code (*not* the
-docstrings), we suggest the import conventions used by NumPy itself::
+The following import conventions are used throughout the NumPy source
import numpy as np
import scipy as sp
import matplotlib as mpl
import matplotlib.pyplot as plt
+It is not necessary to do ``import numpy as np`` at the beginning of
+an example. However, some sub-modules, such as ``fft``, are not
+imported by default, and you have to include them explicitly::
+ import numpy.fft
+after which you may use it::
A documentation string (docstring) is a string that describes a module,
@@ -65,15 +74,15 @@
A guiding principle is that human readers of the text are given
precedence over contorting docstrings so our tools produce nice
output. Rather than sacrificing the readability of the docstrings, we
-have chosen to write pre-processors to assist tools like epydoc_ or
-sphinx_ in their task.
+have written pre-processors to assist tools like epydoc_ and sphinx_ in
We are busy converting existing docstrings to the new format,
expanding them where they are lacking, as well as writing new ones for
undocumented functions. Volunteers are welcome to join the effort on
-our new wiki-based documentation system (see the `Developer Zone
+our new documentation system (see the `Developer Zone
@@ -179,6 +188,29 @@
average : Weighted average
+ When referring to functions in the same sub-module, no prefix is
+ needed, and the tree is searched upwards for a match.
+ Prefix functions from other sub-modules appropriately. E.g.,
+ whilst documenting the ``random`` module, refer to a function in
+ ``fft`` by
+ fft.fft2 : 2-D fast discrete Fourier transform
+ When referring to an entirely different module::
+ scipy.random.norm : Random variates, PDFs, etc.
+ Functions may be listed without descriptions::
+ See Also
+ func_a : Function a with its description.
+ func_b, func_c_, func_d
An optional section that provides additional information about the
@@ -203,8 +235,14 @@
- The value of :math:`omega` is larger than 5.
+ The value of :math:`\omega` is larger than 5.
+ Variable names are displayed in typewriter font, obtained by using
+ We square the input parameter `alpha` to obtain
Note that LaTeX is not particularly easy to read, so use equations
@@ -277,6 +315,11 @@
+ The examples may assume that ``import numpy as np`` is executed before
+ the example code in *numpy*, and ``import scipy as sp`` in *scipy*.
+ Additional examples may make use of *matplotlib* for plotting, but should
+ import it explicitly, e.g., ``import matplotlib.pyplot as plt``.
11. **Indexing tags***
Each function needs to be categorised for indexing purposes. Use
@@ -286,17 +329,67 @@
:refguide: ufunc, trigonometry
To index a function as a sub-category of a class, separate index
- entries by a semi-colon, e.g.
+ entries by a colon, e.g.
- :refguide: ufunc, numpy;reshape, other
+ :refguide: ufunc, numpy:reshape, other
A `list of available categories
+Use the same sections as outlined above (all except ``Returns`` are
+applicable). The constructor (``__init__``) should also be documented
+An ``Attributes`` section may be used to describe class variables::
+ x : float
+ The X coordinate.
+ y : float
+ The Y coordinate.
+In general, it is not necessary to list class methods. Those that are
+not part of the public API have names that start with an underscore.
+In some cases, however, a class may have a great many methods, of
+which only a few are relevant (e.g., subclasses of ndarray). Then, it
+becomes useful to have an additional ``Methods`` section::
+ class Photo(ndarray):
+ Array with associated photographic information.
+ exposure : float
+ Exposure in seconds.
+ Represent the photo in the given colorspace.
+ Change the photo's gamma exposure.
+Note that `self` is *not* listed as the first parameter of methods.
+Document these as you would any other function. Do not include
+``self`` in the list of parameters.
Common reST concepts
For paragraphs, indentation is significant and indicates indentation in the
@@ -322,8 +415,9 @@
<http://svn.scipy.org/svn/numpy/trunk/numpy/doc/example.py>`_ of the
format shown here is available. Refer to `How to Build API/Reference
-Documentation <HOWTO_BUILD_DOCS>`_ on how to use epydoc_ or sphinx_ to
-construct a manual and web page.
+on how to use epydoc_ or sphinx_ to construct a manual and web page.
This document itself was written in ReStructuredText, and may be converted to
--- branches/1.1.x/numpy/doc/example.py 2008-07-15 07:06:38 UTC (rev 5412)
+++ branches/1.1.x/numpy/doc/example.py 2008-07-15 07:38:00 UTC (rev 5413)
@@ -80,7 +80,9 @@
otherfunc : relationship (optional)
- newfunc : relationship (optional)
+ newfunc : Relationship (optional), which could be fairly long, in which
+ case the line wraps here.
+ thirdfunc, fourthfunc, fifthfunc
More information about the Numpy-svn