Skip to content

Instantly share code, notes, and snippets.

View fnielsen's full-sized avatar

Finn Årup Nielsen fnielsen

View GitHub Profile
@fnielsen
fnielsen / gist:3705630
Created September 12, 2012 09:51
Twitter geo heatmap
import simplejson, urllib # To get posts from Twitter
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm # Colormap
import scipy.stats # For kernel density estimation
# Get geo-tagged posts from Twitter
url = 'http://search.twitter.com/search?q=geotag&format=json&rpp=100'
resp = simplejson.load(urllib.urlopen(url))
coords = np.asarray([ t['geo']['coordinates'][::-1]
@fnielsen
fnielsen / gist:3705676
Created September 12, 2012 09:58
VTK example
# Modified Step1 Cone1.py from VTK examples by W. Schroeder (2006) Visualization...
import vtk, time
cone = vtk.vtkConeSource() # Cone graphical object
coneMapper = vtk.vtkPolyDataMapper() # 'Mapper'
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtk.vtkActor() # 'Actor'
coneActor.SetMapper(coneMapper)
ren1= vtk.vtkRenderer() # 'Renderer'
@fnielsen
fnielsen / gist:3736395
Created September 17, 2012 09:19
Dates and matplotlib example with stock quotes from Novo Nordisk (NVO)
from matplotlib.finance import quotes_historical_yahoo
from matplotlib.dates import num2date
from matplotlib.pyplot import *
from datetime import date
quotes = quotes_historical_yahoo('NVO', date(2011, 1, 1), date.today())
dates = [ num2date(row[0]) for row in quotes ]
closeprice = [ row[1] for row in quotes ]
plot(dates, closeprice)
show()
@fnielsen
fnielsen / gist:3775006
Created September 24, 2012 08:56
Statistics on blocked IPs in a MediaWiki
from pylab import *
from urllib2 import urlopen
from simplejson import load
from re import findall
url = 'http://neuro.imm.dtu.dk/w/api.php?' + \
'action=query&list=blocks&' + \
'bkprop=id|user|by|timestamp|expiry|reason|range|flags&' + \
'bklimit=500&format=json'
data = load(urlopen(url))
@fnielsen
fnielsen / gist:3775055
Created September 24, 2012 09:07
Web crawling with htmllib & co.
import htmllib, formatter, urllib, urlparse
k = 1
urls = {}
todownload = set(['http://www.dtu.dk'])
while todownload:
url0 = todownload.pop()
urls[url0] = set()
try:
p = htmllib.HTMLParser(formatter.NullFormatter())
@fnielsen
fnielsen / gist:3810836
Created October 1, 2012 10:37
Tkinter simple example
from Tkinter import *
def hello():
"""Callback function for button press."""
print "Hello World"
# Main root window
root = Tk()
# A button with a callback function
@fnielsen
fnielsen / gist:3810848
Created October 1, 2012 10:39
Tkinter mouse example
from Tkinter import *
root = Tk()
canvas = Canvas(root, width=400, height=200)
canvas.pack()
canvas.create_oval(10, 10, 110, 60, fill="grey")
canvas.create_text(60, 35, text="Oval")
canvas.create_rectangle(10, 100, 110, 150, outline="blue")
canvas.create_text(60, 125, text="Rectangle")
canvas.create_line(60, 60, 60, 100, width=3)
@fnielsen
fnielsen / hellocherry.py
Created October 2, 2012 13:16
CherryPy Hello World
# http://docs.cherrypy.org/stable/concepts/basics.html
import cherrypy
class HelloWorld:
def index(self):
return "Hello world!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
@fnielsen
fnielsen / gist:3826666
Created October 3, 2012 12:24
CherryPy vs Tornado benchmarking
#########
# Tornado
wget https://raw.github.com/facebook/tornado/master/demos/helloworld/helloworld.py
python helloworld.py
# 100 concurrent
ab -c 100 -n 1000 -k localhost.localdomain:8888/ | grep "Time taken for tests:"
# Time taken for tests: 0.709 seconds
# 5 concurrent
@fnielsen
fnielsen / gist:3904327
Created October 17, 2012 08:11
Python shelve concurrency
import shelve
import multiprocessing
import os
filename = "tmp.shelve"
N = 4
end = 10000
def insert((offset, jump, end, filename)):