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 
   
   
   
Cloogluster-Logo
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" output=output+"\n" output=output+"" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n" output=output+"\n\n" output=output+"\n\n" output=output+"" output=output+"
Algorithm" output=output+"
kMeans Parameters
Iterations
Clusters
EM Parameters
maxSplits
Iterations between Splits
minObs
epsilon
poolMode" output=output+"
disturbMode" output=output+"
General Parameters
Distance" output=output+"
Word" output=output+readList(listname,word) output=output+"
Features
(selecting none selects all available)
\n" for suffix in [".rgbfeat.gz", ".tamurafeature.gz", ".X40X08-rgbfeat.gz" ]: output=output+"
"+suffix+"
\n" output=output+"" output=output+"
" output=output+"
\n" 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\n" oldcluster=cluster # output=output+"\n\n" filename=re.sub("\.X.*rgbfeat","",filename) filename=re.sub("\.rgbfeat","",filename) filename=re.sub(".gz","",filename) output=output+"\n" output=output+"\n
"+cluster+""+no+""+cluster+"
\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)