Friday, September 24, 2010

Python ve Alternatif Path

Python paketleri kaynaklardan kurarken ana dizinine gidip "python setup.cfg build install" ile derleyip kurulusunu yapariz. Fakat bazen alternatif bir dizin icinde, ayni paketin ama degisik kaynak kodlari (mesela bir gelistirme branch'i) uzerinde calismamiz gerekirse, ana pakete degil, Python'un bu gelistirme yaptigimiz ikinci dizini isletmesi icin test script icinde en basta su satirlar yeterli:

import sys
sys.path.insert(0, '/benim/gelistirme/dizinim/paket')

Boylece alternatif dizin tum sys.path icindeki dizinlerden "once" gelecek, ve kurulumu yapilan degil belirttigimiz ikinci dizin isleme konacak.

Bu yontemlerden sadece biri, en cabuk ve gecici olani. Degisik yaklasimlar olabilir.

Thursday, September 23, 2010

Kitap Scan Dosyalari ve DJVU

Kitaplarin scan edilmis imaj dosyalarini sıkıstırabilen bir format DJVU. Unix uzerinde cjb2 adli komut bir dosyayi TIFF formatindan alip DJVU formatina cevirebiliyor. Sıkıstırma orani 1/8! Yani bir kitap scan dosyasini sekizde birine indirmek mumkun. Kurmak icin

djvu.sourceforge.net


adresinden kaynak kodlari indirebiliriz. Ek bazi detaylar, cjb2 komutunun siyah / beyaz bir imaj bekledigidir. O zaman "convert -monochrome .." komutu ile bu hazirligi yapabiliriz. Eger tum sayfalar TIFF ve monochrome halinde hazirsa, tek sayfayi kitaba soyle ekleriz:

cjb2 -clean /tmp/mono.tiff /tmp/book.djvu

Yani mono.tiff dosyasini book.djvu dosyasina ekliyoruz.

Bu isi otomize etmek icin; bir dizin altinda 1,2,..9 diye giden bolum (chapter) alt dizinlerinde dosyalarimiz varsa, bu alt dizinlerde scan edilmis sayfalari birlestirmek icin
import os, re, glob, sys, string;

def run_command(command):
result = []
f = os.popen(command, "r")
sys.stdout.flush()
for l in f.xreadlines():
result.append(l)
return result

run_command("convert -monochrome 1/01.tiff /tmp/mono.tiff")
run_command("cjb2 -clean /tmp/mono.tiff /tmp/book.djvu")

for a in range(9):
os.chdir(str(a+1))
for file in sorted(glob.glob("*.tiff")):
print file
run_command("convert -monochrome " + str(file) + " /tmp/mono.tiff")
run_command("cjb2 -clean /tmp/mono.tiff /tmp/page.djvu")
run_command("djvm -i /tmp/book.djvu /tmp/page.djvu")
os.chdir("..")
Bu script tmp altinda bir book.djvu dosyasini yaratmis oluyor.

Saturday, September 18, 2010

Quantile

R dilindeki quantile(x,p) fonksiyonu x verisi uzerinde p olasilik rakamlarina gore o olasiliklara tekabul eden kisimlari alip rapor eder. Mesela quantile(x, probs = c(.20, .80)) cagrisi buna bir ornek.
aa = c(1,2,3,4,5,6,7,8,9,10)
quantile(aa, probs = c(.20, .80))
20% 80%
2.8 8.2
Python uzerinde ayni isi scoreatpercentile cagrisi yapiyor.
x = numpy.array([1,2,3,4,5,6,7,8,9,10])
print stats.scoreatpercentile(x, 20)
print stats.scoreatpercentile(x, 80)
Sonuc yine 2.8 ve 8.2 olarak gelecek.

Sunday, September 12, 2010

Scikits Statsmodels

R dilinin istatistik hesaplamalarinin Python karsiliklari Scikits Statsmodels paketinde bulunabilir. Biz bu paketin kadar genel lineer modelleme ve lojistik regresyon fonksiyonlarina baktik, sonuclar iyi; benzer R kodlarindan gelen sonuclar birbiriyle uyusuyor. Github uzerinde bu eforun kodlari bulunabilir.

Statsmodels sorularli icin Google Groups -- cevaplar hizli geliyor

http://groups.google.com/group/pystatsmodels

Kodlar

https://github.com/statsmodels

Patsy icin (ile) alternatif bir kurulus yontemi

sudo pip install statsmodels
sudo pip install pasty --upgrade

Bazi ornekler icin scikits.timeseries paketi


sudo pip install pytseries

Eger docs altinda mesela "make html" ile dokumanlari urettiremediyseniz, o zaman en son ipython'u kurmak gerekebilir

sudo easy_install -U IPython

Tabii ondan once Sphinx

sudo apt-get install python-sphinx


Friday, September 10, 2010

Numpy Loadtxt ve Converter

CSV dosyasi diye bilinen bosluk, virgul, vs. ile ayrilmis satirsal, duz text bazli dosyalari Loadtxt ile yukluyoruz. Eger bu yukleme sirasinda mesela bir float olmasi gereken bir hucrede 'NA' gibi bir string bazli deger varsa, loadtxt bu degeri float yapamadigi icin sikayet edecektir. NA bilindigi gibi "deger yok" anlamina gelen "not applicable" kelimesinden geliyor; Numpy icinde buna tekabul eden bir float degeri var (Nump.nan diye erisiliyor), o zaman String gorunce bu degere donusumu bizim yapmamiz lazim.

Alttaki kod nes.dat adli bir dosyayi okur, 1. satiri atlar, ve sadece 11 ve 32. kolonlarini cekip cikartir, bu kolonlarin her ikisinde de bazen NA metni gorulurse, onu converter() fonksiyonu uzerinden numpy.nan degerine cevirir.
import numpy

def converter(x):
if x == 'NA':
return numpy.nan
else:
return float(x)

nes = numpy.loadtxt("nes.dat", skiprows=1, usecols = (11,32),
converters={11:converter, 32:converter})

Saturday, September 4, 2010

R, Matrix, lme4, sim ve Ubuntu

Andrew Gelman'in kitaplarindaki Bugs ve diger ornekleri isletebilmek icin, Ubuntu apt-get komutundan gelen R degil, daha yuksek bir versiyon gerekiyor, cunku daha alt versiyonlar Matrix kutuphanesini kuramiyorlar. En son versiyon icin R sitesine gitmek lazim

http://ftp.sunet.se/pub/lang/CRAN/bin/linux/ubuntu/

dizininde kendi Ubuntu versiyonunuzu secin (bizimki Karmic). Buradan

r-base-core_2.11.1-5karmic0_i386.deb

adli dosyayi indirip uzerine tiklayin. Bir GUI cikacak, oradan Install dugmesine tiklanir. Eger daha once R kurulmus ise, tiklamadan once eski paketi sudo apt-get remove r-base r-base-dev r-base-core .. vs ile silmek daha temiz olur.

R kurulduktan sonra R yazarak komut satirina girelim:

> install.packages("arm")
> install.packages("foreign")

yazarsak gereken tum bagimli, alt kutuphaneler otomatik olarak kurulacaktir. Matrix, lme4 paketleri bu paketlerden.. ve bu sefer R sikayet etmeyecek.

ARM Gelman hocanin kendi yazdigi kutuphanedir.