Uno scrittoio digitale …

11 novembre 2012

bpython

Archiviato in: code, python — Tag:, , , — admin @ 22:31

mai più senza … bpython

3 novembre 2012

Indice statico (3 caratteri)

Archiviato in: code, python — Tag:, , , , — admin @ 14:47

Gli script sono stati implementati per creare e manipolare seguenze di nucleotidi di DNA.

generate_dna.py

#!/usr/bin/python3
from random import choice
from hashing import alph

if __name__ == "__main__":
    out = ""
    collection = [x for x in alph.keys()]

    for x in range(9999): #max value = 9999999
        out += choice(collection)

    text_file = open("dna.txt", "w")
    text_file.write(out)
    text_file.close()

hashing.py

#!/usr/bin/python3
from itertools import tee
import time as t

alph = {'a':0, 'c':1, 'g':2, 't':3}

def time(f):
    def inner(*args, **kargs):
        t1 = t.time()
        result = f(*args, **kargs)
        t2 = t.time()

        if (t2 - t1 < 1):
            print ("[{0} took {1:.3} ms]".format(f.__name__, (t2-t1)*1000.0))
        else:
            print ("[{0} took {1:.3} s]".format(f.__name__, t2-t1))

        return result
    return inner

def blocks(iterable):
    a, b, c = tee(iterable, 3)

    next(b, None)
    next(c, None)
    next(c, None)

    return zip(a, b, c)

def hf(x):
    return sum([alph.get(z) * (len(alph) ** i) for i, z in enumerate(x)])

class Index:
    @time
    def __init__(self, source):
        self.d = dict()
        for i, x in enumerate(blocks(source)):
            index = hf(x)
            elem = i, "".join(x)
            if (index not in self.d):
                self.d[index] = [elem]
            else:
                self.d[index].append(elem)

    @time
    def count_key(self):
        return len(self.d.keys())

    @time
    def count_value(self):
        return sum([len(x) for x in self.d.values()])

    @time
    def search(self, elem):
        if (len(elem) == 3):
            index = hf(elem)
            return [x[0] for x in self.d[index]] if index in self.d else "not in index"
        else:
            raise LookupError("searching want string of 3 char!")

if __name__ == "__main__":
    text_file = open("dna.txt", "r")
    text = text_file.read()
    text_file.close()

    index = Index(text)
    print("keys: " + str(index.count_key()))
    print("values: " + str(index.count_value()))

    print(end='\n\n')
    print("get:", index.search("gat"), end='\n\n')
    print("agc:", index.search("agc"), end='\n\n')
    print("ccc:", index.search("ccc"), end='\n\n')

18 ottobre 2012

Pep 3149

Archiviato in: linux, python — Tag:, — admin @ 23:00

pi@raspberrypi ~ $ ls -l /usr/bin | grep python
-rwxr-xr-x 1 root root 30284 Jun 6 03:08 dh_python2
-rwxr-xr-x 1 root root 21455 Aug 2 22:04 dh_python3
-rwxr-xr-x 1 root root 94 Apr 22 20:32 idle-python2.7
-rwxr-xr-x 1 root root 94 Jun 25 23:11 idle-python3.2
lrwxrwxrwx 1 root root 23 Apr 23 09:09 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root 23 Jun 26 05:34 pdb3.2 -> ../lib/python3.2/pdb.py
lrwxrwxrwx 1 root root 31 Aug 2 22:04 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 9 Jun 6 03:08 python -> python2.7
-rwxr-xr-x 1 root root 2736676 Apr 23 09:08 python2.7
lrwxrwxrwx 1 root root 9 Aug 2 22:04 python3 -> python3.2
lrwxrwxrwx 1 root root 11 Jun 26 05:34 python3.2 -> python3.2mu
-rwxr-xr-x 1 root root 2657952 Jun 26 05:34 python3.2mu
lrwxrwxrwx 1 root root 11 Aug 2 22:04 python3mu -> python3.2mu
lrwxrwxrwx 1 root root 29 Jun 6 03:08 pyversions -> ../share/python/pyversions.py

Mi ha incuriosito la versione mu di python3.2 … e carcando, cercando … la risposta si trova qua.

1 luglio 2012

Python Metaclass

Archiviato in: python — Tag: — admin @ 16:00

complete article

Metclass method:

  • (class creation time) __new__: should be implemented when you want to control the creation of a new class object
  • (class creation time) __init__: should be implemented when you want to control the initialization of the new object after it has been created
  • (class instantiate time) __call__: is called when the already-created class is “called” to instantiate a new object

24 giugno 2012

Python module of the week

Archiviato in: code, python — Tag:, , — admin @ 20:26

PyMOTW

29 aprile 2012

Python definition

Archiviato in: python — Tag: — admin @ 15:55

Iterable object is any object which responds to the __iter__() or __getitem__()

Iterator responds to next() and raises a StopIteration exception when there are no more elements

Generator is a function which returns an iterator: to implement a generator simply use the yield keyword to successively return values to the calling context and raise a StopIteration when done

21 aprile 2012

Python Packages Install/Distribute Systems

Archiviato in: python — admin @ 22:47

python installation system

Python Lib

Archiviato in: code, python — admin @ 21:54

un paio di link da tenere sott’occhio:

tornado web server
interactive python

Provate la modalità notebook di ipython … personalmente mi fà sbavare!!
Che fico :D

9 ottobre 2011

Python Libs

Archiviato in: code, python — Tag:, , — admin @ 12:54

Due progetto da tenere sott’occhio:

you-tube
networkx

8 settembre 2011

Languages with multiple inheritance

Archiviato in: code, python — Tag:, , — admin @ 19:50

diamond problem

8 gennaio 2011

Paura della UI ?

Archiviato in: java, linux, python, sapere è potere — Tag:, , — admin @ 21:57

Ecco un mitico software che aiuta in fase di creazione del nostro applicativo … Glade

29 agosto 2010

Solitario in Python

Archiviato in: python — Tag:, — admin @ 22:31

Mentre mi godevo le ferie, tra un bagno, il sole e le belle serate passate a Siracusa … ho implementato in python un simpatico solitario.

solitario

Il gioco consiste nel togliere una qualunque delle pedine, in genere quella centrale e, seguendo le regole stabilite, restare alla fine con un’unica pedina sulla scacchiera. Tutte le altre pedine vengono “mangiate” con un salto che è simile a quello del gioco della dama, però i salti permessi sono soltanto orizzontali o verticali, mai diagonali. Ogni pedina saltata viene tolta dalla scacchiera e la soluzione più elegante prevede che rimanga un’unica pedina collocata esattamente nella casella che all’inizio del gioco era vuota.
Qualche tentativo è sufficiente per convincerci della difficoltà di questo gioco. Non è facile restare con una sola pedina, anche in una posizione diversa da quella della casella vuota iniziale.
La matematica ci può aiutare suggerendoci la strada per semplificare il problema: basta scomporlo in una serie di problemi più semplici. Questa è la tecnica più comune del “problem solving”, applicata in questo caso al Solitario. E’ un gioco studiato da molti matematici e in particolare da John Horton Conway in Winning Ways for your Mathematical Plays, un bel libro che purtroppo non è mai stato tradotto in italiano.

Unica dipendenza del gioco è questa libreria grafica
installabile con un semplice comando dato nella dir estratta …
> python setup.py install

a questo punto scaricate il sorgente del gioco ed eseguite …
> python Main.py

buon divertimento …

4 luglio 2010

Proof Python Lib

Archiviato in: code, python — Tag: — admin @ 14:19

Django
OOoPy
Xlrd
Python-dialog ( disponibile nei repo ubuntu )
PySvn

Funziona con WordPress