H5Labview and 1-D arrays

The current version of h5labview can completely crash Labview 2013 SP1 when using 1-D arrays.

What I do to fix this is insert the “Build Array” into my 1-D array just before it hits HDF5 Write Data. On the Read Data, to get a 1-D array again, you can use Index Array with the first row index input as 0.

Find Gmail email with any attachment e.g. PDF

You can see


for the types of advanced searches you can do with Gmail.

For example, if I want to find all PDFs I sent to joe@yahoo.com, I type in Gmail search

to:joe@yahoo.com filename:pdf

or to find any email I sent to joe@yahoo.com with any attachment:

to:joe@yahoo.com has:attachment

Ralink RT2800 Warning TX status “fix”

I have some of the ubiquitous USB Wifi sticks with a chipset using the Ralink rt2800 driver. I noticed that while it works fine, I got a lot of dmesg errors like:

rt2800usb_txdone: Warning – Got TX status for an empty queue 2, dropping
rt2800usb_entry_txstatus_timeout: Warning – TX status timeout for entry 14 in queue 2

I’m not a big fan of dozens of dmesg logs per second, so I quickly found this answer that worked for me:

sudo iwconfig wlan1 power off

which according to man iwconfig disables power management. When I’m hanging out with a coffee can Wifi antenna, I’m not interested in saving a few mW so this seems a harmless choice. Note I think you’ll have to type it again after reboot or logoff.


installing LLVM-Py and Numba on Ubuntu 14.04

You need LLVM 3.3 (as of Numba 0.14–thanks for comment from ThyMythos). As of July 2014, LLVM-Py will not work with the default LLVM 3.4 in Ubuntu 14.04.

sudo apt-get install llvm-3.3

Now we install LLVM-Py:

sudo LLVM_CONFIG_PATH=/usr/bin/llvm-config-3.3 pip install llvmpy

where the LLVM_CONFIG_PATH is from ThyMythos comment

Now you can run the tests (optional)

python -c "import llvm; llvm.test()"

Finally install Numba with

sudo pip install numba

Fixing SSH Access Denied for Github

Github suggests that you use the SSH Agent, but even that may not work when you have a lot of SSH keys. You need to setup your ~/.ssh/config file so that SSH to github.com uses the correct SSH Public Key the first time. Here’s how.

nano ~/.ssh/config

and add the lines

Host github.com
        Hostname github.com
        User git
        Port 22 
        IdentitiesOnly yes
        PubKeyAuthentication yes
        IdentityFile ~/.ssh/MyGithubKey

where MyGitHubKey is the key you created following the process (without ssh-agent)

Then switch your remote URL to SSH

Very pleased with Lenovo warranty service

My corporate X220 had the space bar get slightly intermittent after 4 years of hard use and abuse. Naturally the corporation had the maximum warranty coverage, but I didn’t want to have someone manhandling my computer.

Instead, a few minutes on the phone with their Atlanta, Georgia tech support center saw me getting a Next-Day Early Morning express shipped keyboard to my office, so I can change it myself. That is excellent. It probably cost Lenovo more to ship the keyboard than the keyboard itself costs them.

10 years ago I bought my last Dell computer, a nearly $3000 laptop, and the speakers failed after about two months of use, and they sneered at me as if I was blasting death metal music instead of teleconferences. I have heard more recent reports of the same Dell attitude on speakers.
OK different problem, but entirely different attitude from Lenovo tech support.

Although I build my desktops myself, when it comes to laptops I’ll still be looking to Lenovo.

upgrading to Scipy 0.14 via pip

you may first need to do

sudo apt-get install liblapack-dev libatlas-dev libsparskit-dev libarpack2-dev gfortran libfftw3-dev libblas-dev


sudo pip install --upgrade scipy

reference: http://stackoverflow.com/questions/11114225/installing-scipy-and-numpy-using-pip

Spyder 2.3 missing rope for Python3

The just-released Spyder 2.3 (on Ubuntu, get by typing)

sudo pip3 install spyder

but it’s missing rope. To get rope, type

sudo pip3 install rope_py3k

for great online help

Autoscaling imagesc() plot and imshow() plots

Octave 3.8 has default axis scaling that scales x and y axes proportionally to the axes values. So if one axis values span a much wider range than the other axis, the smaller span axis gets very thin.

You can simply insert the line
axis(‘normal’) after imagesc()

In Matplotlib 1.3, the same issue occurs, which can be covercome with the option aspect=’auto’

Using P.C. Hansen’s AIRtools and ReguTools in Python using Oct2Py

For those working with real-world inverse problems, P.C. Hansen’s AIRtools and ReguTools are great ways to quickly try out inverse methods.

As in general in Python and Matlab, you need to be sure that your column vector of observations “b” is actually passed into the functions as a column vector. I’ll illustrate the issue by example.

Assume you have ill-conditioned problem Ax = b, with dimensions:
A: 256 x 10
x: 10 x 1
b: 256 x 1

so to use the ReguTools function maxent.m from Python, implementing the Berg Maximum Entropy method, your myinv.py file would look like:

import oct2py
import numpy as np

def myinv(A,b,maxentLambda):
    oc = oct2py.Oct2Py(oned_as='column')
    xhat = oc.maxent(A,b,maxentLambda)
    return xhat

When I originally wrote this post with Oct2Py 1.5.0, you could only pass 1-D vectors as row vectors. As noted below the author promptly added the “oned_as” option noted above.

from oct2py import octave
import numpy as np
def myinv(A,b,maxentLambda):
xhat = octave.maxent(A,b[...,np.newaxis],maxentLambda)
return xhat
The np.newaxis is required under Oct2Py 1.5.0 to pass “b” as column vector, else it will be passed as a row vector, which will not work properly.
You can verify this by looking at the .mat file created in your /tmp directory, you’ll see it contains A__, B__,C__ which are the three argument passed into octave.maxent(). B__ will only be a column vector if you pass in b[...,np.newaxis]

I have also slowly started porting the PC Hansen AIRtools and Regutools that I use into Python in:

I have noted this issue to Oct2Py github as issue #49

Update: The Oct2Py author has already changed the code to allow specifying 1-D vectors are columns. Here’s a minimal working example, with the beta 1.6.0 code (perhaps already released by the time you read this).

import numpy as np
import oct2py
oc = oct2py.Oct2Py(oned_as='column')
x = np.array([1,2,3,4,5])

gives you the answer: array([[5., 1.]])