www.pudn.com > firev0.01.rar > cloogluster.py
#!/usr/bin/python
print "Content-Type: text/html\n\n"
print
print ""
import cgi
import re
import sys
import traceback
import os
from types import *
sys.stderr=sys.stdout
## Settings
TemplateFile="/u/deselaers/ir/src/cgi/cloogluster.html"
basepath="/u/deselaers/data/google/tn/"
WordList="namelist"
clustertest="ssh ununbium /u/deselaers/ir/src/bin/clustertest"
def Display(Content):
print """
Cloogluster
Warning: This cgi is only for testing purposes and not in any stable state
"""
print Content
print """
"""
# print Content
# TemplateHandle = open(TemplateFile, "r") # open in read only mode
# read the entire file as a string
# TemplateInput = TemplateHandle.read()
# TemplateHandle.close() # close the file
# this defines an exception string in case our
# template file is messed up
# BadTemplateException = "There was a problem with the HTML template."
# SubResult = re.subn("INSERT CONTENT HERE",Content,TemplateInput)
# if SubResult[1] == 0:
# raise BadTemplateException
# print SubResult[0]
def readList(filename,word):
output=""
listHandle=open(filename,"r")
listInput=listHandle.read()
listHandle.close()
output=output+"""
\n"
return output
def processParams(listname):
output=""
featuresToUse=[]
if(form.has_key("suffix")):
field=form["suffix"]
if type(field) == ListType:
for subfield in field:
featuresToUse.append(subfield.value)
else:
featuresToUse.append(field.value)
if(form.has_key("suffixstring")):
featuresToUse.append(form["suffixstring"].value)
if(form.has_key("poolMode")):
poolMode=form["poolMode"].value
else:
poolMode="noPooling"
if(form.has_key("disturbMode")):
disturbMode=form["disturbMode"].value
else:
disturbMode="varianceDisturb"
if(form.has_key("algorithm")):
algorithm=form["algorithm"].value
else:
algorithm="kmeans"
if(form.has_key("iterations")):
iterations=form["iterations"].value
else:
iterations="10"
if(form.has_key("clusters")):
clusters=form["clusters"].value
else:
clusters="10"
if(form.has_key("maxSplits")):
maxSplits=form["maxSplits"].value
else:
maxSplits="10"
if(form.has_key("iterBetween")):
iterBetween=form["iterBetween"].value
else:
iterBetween="10"
if(form.has_key("minObs")):
minObs=form["minObs"].value
else:
minObs="4"
if(form.has_key("epsilon")):
epsilon=form["epsilon"].value
else:
epsilon="0.001"
if(form.has_key("word")):
word=form["word"].value
else:
word=""
if(form.has_key("distance")):
distance=form["distance"].value
else:
distance=""
output=output+"
\n"
cmdline=""
if len(word) >0:
if word[0]=="/":
cmdline=" -rgb "+word+" -c "+algorithm+" -d "+distance
else:
cmdline=" -rgb "+basepath+word+"/list -c "+algorithm+" -d "+distance
if len(featuresToUse)!=0:
features=reduce(lambda x,y: x+":"+y,featuresToUse)
cmdline=cmdline+" -suffix="+features
if(algorithm=="em"):
cmdline=cmdline+" -maxSplits "+maxSplits+" -iter "+iterBetween+" -minObs "+minObs+" -epsilon "+epsilon
else:
cmdline=cmdline+" -iterations "+iterations+" -nOfClusters "+clusters
return output,cmdline
def clustering(params):
output=""
output=output+"Clustering with params: "+params
cmdline=clustertest+" "+params
# print cmdline
clusterInfo=""
clusterHandle=os.popen(cmdline)
clusterInfo=clusterHandle.read()
clusterHandle.close()
output=output+"\n| 0: | "
oldcluster=""
for line in re.split("\n",clusterInfo):
if(re.search("^.1.",line)):
lineList=re.split("[ ]*",line)
if(lineList[2]=="clustermember"):
# print lineList
no=lineList[3]
cluster=lineList[4]
filename=lineList[5]
# print cluster
# print oldcluster
if cluster != oldcluster:
if oldcluster != "":
output=output+" |
\n\n"
output=output+"\n\n| "+cluster+" | \n"
oldcluster=cluster
# output=output+""+no+" | \n"+cluster+" | \n"
filename=re.sub("\.X.*rgbfeat","",filename)
filename=re.sub("\.rgbfeat","",filename)
filename=re.sub(".gz","",filename)
output=output+" | \n"
output=output+" \n \n\n"
output=output+" Shell output from "+cmdline+""
output=output+"\n"+clusterInfo+"\n \n"
return output
form=cgi.FieldStorage()
paramForm,cmdline=processParams(basepath+WordList)
clusterresult=""
if form.has_key("word"):
if(form["word"] != ""):
clusterresult=clustering(cmdline)
print ""
Display(paramForm+clusterresult)
|