### Using PCA in MDP

I found mdp on sourceforge. I needed to do PCA for some of my simulations. The mdp.pca function is easy to handle. The input is a m x n matrix, n is the dimension of the space, and m are the observations (rows = observations, cols = dimensions. The doc string is confused as to this point)

The output is a matrix also m x n, but the vectors have been transformed, so that the first column is along the direction with greatest variance etc.

An example is below:

`import pylab as mimport matplotlib.axes3d as m3import mdpx1 = m.rand(10,3)x2 = m.rand(10,3) + m.array([[2.,-2.,0.]])x = m.concatenate((x1,x2))y = mdp.pca(x)fig = m.figure()ax = m3.Axes3D(fig)ax.scatter3D(x[:10,0].squeeze().T, x[:10,1].squeeze().T, x[:10,2].squeeze().T, marker = '^')ax.scatter3D(x[10:,0].squeeze().T, x[10:,1].squeeze().T, x[10:,2].squeeze().T, marker = 'o')m.axis('scaled')m.axes([.7, .8, .2, .2])m.plot(y[:10,0], y[:10,1],'k^')m.plot(y[10:,0], y[10:,1],'b.')m.axis('scaled')m.title('2 D')m.axes([.7, .6, .2, .2])m.plot(y[:10,0],'k^')m.plot(y[10:,0],'b.')m.axis('scaled')m.title('1 D')`

1. For anyone reading this, the code needs to be updated for the latest version of matplotlib:
line 2 should be:
import mpl_toolkits.mplot3d as m3

also add m.show() at the end to display the results.

### Python: Multiprocessing: passing multiple arguments to a function

Write a wrapper function to unpack the arguments before calling the real function. Lambda won't work, for some strange un-Pythonic reason.

import multiprocessing as mp def myfun(a,b): print a + b def mf_wrap(args): return myfun(*args) p = mp.Pool(4) fl = [(a,b) for a in range(3) for b in range(2)] #mf_wrap = lambda args: myfun(*args) -> this sucker, though more pythonic and compact, won't work p.map(mf_wrap, fl)

### Flowing text in inkscape (Poster making)

You can flow text into arbitrary shapes in inkscape. (From a hint here).

You simply create a text box, type your text into it, create a frame with some drawing tool, select both the text box and the frame (click and shift) and then go to text->flow into frame.

UPDATE: