pvxc
Also, when discussing matters scientific, please cite your scientific sources --- otherwise the discussion is of little value. Like so:
http://www.nature.com/nature/journal/v449/n7159/abs/nature06...
And maybe you also gained some useful skills.
There are a couple of good reasons why so: (i) graphene has a "simple" electronic and atomic structure that has interesting features of its own (Google for the Dirac cone), (ii) graphene flakes are big compared to buckies, so it's possible to study them with common methods that physicists like -- electronic transport, crystallographic methods, you name it, and (iii) many proposed applications of graphene e.g. in electronics fall close to physics.
In short: physicist are fond of simple things, and graphene is simple. So, Nobel prize in physics.
Indeed, you write
c = mat2.getcol(j)
norms[0, j] = scipy.linalg.norm(c.A)
which means (i) extract a sparse column vector, (ii) convert it to a dense vector, and (iii) compute the norm. Now, this should explain the speed difference. Looking at the nnz, a dense norm can take up to a factor 5e5/(1.2e8/1.3e7) ~ 54000 longer :)
The main issue here is that the linear algebra stuff under `scipy.linalg` doesn't know about sparse matrices, and tends to convert everything to dense first. You'd need to muck around with `m2.data` to go faster.