v0.1c – Live Results in your Terminal

Remember ? Of course not, but now it is hosted in Google Code!
A minor update which show the date is available also..
Check it out if you may..

PS. I know, summer is a dead period (unless Euro or World Cup is in the near future). Damn!


Pure Python implementation of Runge Kutta

I was asked (or forced, if you like) to implement the Hodgkin-Huxley model (a model that describes how action potentials in neurons are initiated and propagated) using Runge Kutta for a system of differential equations. The following snippet is the Runge Kutta 4th order, for an arbitrary number of differential equation.

class RungeKutta(object):
	"""Runge Kutta 4th order for a system of differential equations."""
	__author__ = 'woci'
	__version__ = 0.1b
	__url__ = """"""
	def __init__(self, functions, initConditions, dh, save=True):
		self.Trajectory,   = [initConditions], save
		self.functions    = [lambda *args: 1.0]  + functions
		[self.N, self.dh] = [len(initConditions), dh]
		self.coeff        = [1.0/6.0, 2.0/6.0, 2.0/6.0, 1.0/6.0]
		self.InArgCoeff   = [0.0, 0.5, 0.5, 1.0]
	def iterate(self):
		step   = self.Trajectory[-1][:]
		istep, iac  = step[:], self.InArgCoeff
		k, ktmp = self.N * [0.0], self.N * [0.0]
		for ic, c in enumerate(self.coeff):
			for if_, f in enumerate(self.functions):
				arguments  = [ (x + k[i]*iac[ic]) \
						for i, x in enumerate(istep)] 
				ktmp[if_]  = self.dh * f(*arguments)
			k = ktmp[:]
			step = [s + c*k[ik] for ik,s in enumerate(step)]
		if self.Trajectory += [step]
		else: self.Trajectory = [step]
	def solve(self, finishtime):
		while (self.Trajectory[-1][0] < finishtime ):
		return None
	def series(self):
			return zip(*self.Trajectory)
You define the functions, the initial conditions, the timestep and you have yourself a solver.
The functions can be defined using the standard <strong>def</strong> or by just using lambda.

def dxdt(t):
	return cos(t)
dxdt(t) = lambda t: cos(x)

The following source solves the «Lorenz Oscillator» equations and plots the timeseries if you have matplotlib at hand.

if __name__ == '__main__':
	print "Solving Lorenz Equation"
	dxdt = lambda t, x, y, z: 10.0*(y-x)
	dydt = lambda t, x, y, z: 28.0*x - x*z - y
	dzdt = lambda t, x, y, z: x*y - (8.0/3.0)*z
	funs = [dxdt, dydt, dzdt]
	init_cond = [0., 1, 2, 3]
	dt = 0.01
	RK4 = RungeKutta(funs, init_cond, dt)
	t, x, y, z = RK4.series()
	pylab.plot(t, x)
	pylab.plot(t, y)
	pylab.plot(t, z)

Lorenz Solution
Please refer if you use this script.

Ubuntu Pre-order

I have just pre-ordered my free «Ubuntu 9.04 (Jaunty Jackalope) CD«.
Last time (8.04) was a success. This will be too…

GPLv2 vs GPLv3 Word Clouds

I really enjoy using wordle, in order to get an idea where the weight in a text is. For example GPLv2 and GPLv3, where in the new license, the word «Program» is dominated by the word «Work». This ought to give an idea where the GPL is heading.

Wordle: GPLv2

Wordle: GPLv3

Κλείνω χρόνο!

lucky…από τότε που αποφάσισα να «σταματήσω» το τσιγάρο (δεν το έκοψα, το «σταμάτησα») μετά από 7 χρόνια! Ένα από τα πράγματα που κατάλαβα, είναι ότι η όλη διαδικασία είναι υπερεκτιμημένη. Περισσότερο «φόβο» προκαλεί η ιδέα, παρά η πράξη. Τρεις-τέσσερις μέρες αποτοξίνωση, υπνηλία, λιγούρα, θολούρα, και μετά έτοιμος. Μόνο το ψυχολογικό μένει, και οι γύρω σου που καπνίζουν και σου εξάπτουν την περιέργεια, «πως ήταν το τσιγάρο. Ήταν τόσο καλό όσο το θυμάμαι?»
Τα bonus, ακόμα κι αν δεν μιλήσουμε για υγεία, είναι πολλά. Από τα λεφτά που κερδίζει ο μη καπνιστής, την γεύση που ανακτά ένα κομμάτι που έχασε, ακόμα και ένα μέρος της αμηχανίας όπου ο καπνιστής νομίζει ότι χρειάζεται τσιγάρο. Βασικά, ο καπνιστής το χρειάζεται, ο μη καπνιστής όχι, και αρκετές φορές δεν νιώθω την αμηχανία που ένιωθα και ήθελα τσιγάρο, όπως πχ στα διαλείμματα.

Αλλά, για να πω κι εγώ τον πόνο μου, μου λείπει το πρωινό τσιγάρο. Η «ιεροτελεστία» βασικά.
Ξυπνούσα, πλενόμουν, ντυνόμουν, ήθελα να καπνίσω αλλά περίμενα. Πήγαινα στην σχολή ή την δουλειά, μισή ώρα πιο πριν, έπαιρνα τον καφέ μου, καθόμουν ήσυχος κι έστριβα το τσιγαράκι μου. Το άναβα, έπινα μια γουλιά καφέ, κι ένιωθα την νικοτίνη να μουδιάζει το κεφάλι μου μετά από τόσες ώρες χωρίς τσιγάρο… Εξάρτηση! Αυτό το πράγμα μου λείπει, και δεν έχω βρει κάτι να το αντικαταστήσει, αλλά προς το παρόν το παλεύω!
Τελικά το να σταματάς το τσιγάρο, είναι ένας χωρισμός. Μερικά πράγματα σου λείπουν..

[φώτο βία] v0.1b – Live Results in your Terminal

I am not a Football fan (to be more precise I am not a sports fan), neither watching, nor playing. However I like to keep up with the results, because not knowing who won and lost, leaves you behind with your colleagues and the things they talk. Although I myself enjoy watching with company (go go Ergotelis), I just would do it alone!
Enough with the useless information, I made a simple Python Script, based on the results from which can show all the football results availabe. Default is Greece (less keystrokes for myself) but almost all countries all available, just type -list

choose your country, and then england

It is still in beta, and any comments will help 🙂

UPDATE: Now hosted in Google Code!

Python 2.5.2 and above (not tested in 3)

«Gitar Gitar Gitar, Jump to my yaguar!»

Guitar – Peter Nalitch

Έχω κολλήσει άσκημα την τελευταία βδομάδα με αυτόν τον τύπο! Συνήθως δεν ακούω τα κολλήματα που τρώω πάνω από 3 μέρες (συνεχόμενα και μόνο αυτά), μέχρι να μπούνε στην λίστα με τα αγαπημένα, αλλά δεν μπορώ να σταματήσω με αυτόν τον τύπο… Έχω καταλήξει ότι είναι ο ρώσικος στίχος του, που στα περισσότερα τραγούδια, δεν μπορώ να καταλάβω αλλά ούτε και να αναπαράγω. Εγκρίνεται!

Από το site του, μπορείτε να κατεβάσετε πολλά από τα τραγούδια του.

Αγαπημένα κομμάτια
Santa Lucia

Το κομμάτι του τίτλου.

Λογικό και οικονομικό…

«Η Μαρία, η Γεωργία και ο Κώστας είναι αδερφές…»

Βγάζει ένα νόημα, (μετά από λίγο τουλάχιστον) και κάνεις και οικονομία στις λέξεις….

The «Zen of Python» Word Cloud

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

The Zen Of Python

Life in a curve: Thesis vs Social Skills..

Έχω χαθεί μέσα στην διπλωματική μου και είμαι σίγουρος ότι αν προσπαθήσω να επικοινωνήσω, με οποιονδήποτε τρόπο με οποιονδήποτε άνθρωπο, δεν θα τα καταφέρω! Τότε είναι που λαμβάνω μήνυμα για μπυρίτσα… Κλασσική φάση, φίλος που έφυγε εξωτερικό, πετάει την επόμενη, μαζεμένη παρέα, και αν δεν πήγαινα, καλό καλοκαίρι… Ε, όπως είναι λογικό, δεν κάθισα σπίτι!

Tο ακόλουθο γράφημα είναι προϊόν αυτής μου της εμπειρίας:

Time Working your Thisis vs Social Skills

Time Working your Thisis vs Social Skills

Είναι από πειραματικά δεδομένα 🙂