-í
Ð©Q>c       s&     d  k  Z  d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z  d  k Z d  k	 Z	  d  k
 Z
  h  d h  d d <d d <d d <d d	 <d
 d <g d <d h  d d <d d <d d <d d <g d <d h  d d <d d <d d <d d <d  d! <d" d# <d$ d% <d& d' <d( d) <d* d+ <d, d- <d. d/ <g d0 <d1 h  d2 d3 <d4 d5 <d6 d7 <g d8 <d9 h  d: d; <d< d= <d> d? <d@ dA <g dB <dC g dD <dE h  dF dG <dH dI <dJ dK <dL dM <d: d; <g dN <dO g dP <dQ g dR <dS g dT <dU g dV <dW g dX <dY g dZ <d[ g d\ <Z  d] e f d^ „  ƒ  YZ ` d_ f  d` „  ƒ  YZ x da „  Z  db „  Z ‰ dc „  Z ‘ dd „  Z ª de „  Z ¸ h  d d d0 dB g d	 <d d d0 dB d8 dX dV g d <d d d0 dB dX dV g d <d d dN dT dP dR dB d8 dV g	 d <Z À df „  Z Ï dg „  Z dh „  Z Hdi „  Z Vdj „  Z idk „  Z zdl „  Z ¥h  dm dn <do dp <dq dr <ds dt <Z ­du „  Z ÷dv „  Z gdw „  Z ƒdx „  Z  Ždy „  Z! Âdz „  Z" Îd{ „  Z# úd| „  Z$ d  S(}   Ns   Cluster Methods   Repeated Bisections   rbs   Repeated Bisection K Ways   rbrs   Directs   directs   Agglomeratives   agglos   Graphs   graphs   clmethods   Similarity Functions   Cosines   coss   Correlation Coefficients   corrs   Euclidean Distances   dists   Jaccard Coefficients   jaccs   sims   Criterion Functions   I1s   i1s   I2s   i2s   E1s   e1s   G1s   g1s   G1's   g1ps   H1s   h1s   H2s   h2s   Single Links   slinks   Wt Single Links   wslinks   Complete Links   clinks   Wt Comlete Links   wclinks   UPGMAs   upgmas   crfuns   Cluster Selections   Bests   bests   Larges   larges   Largests   largests   cstypes   RowModels   Nones   nones   MAXTFs   maxtfs   Square Roots   sqrts   Logs   logs   rowmodels   Column Prunes   colprunes   Graph Models   Symmetric-Directs   sds   Asymmetric-Directs   ads   Symmetric-Links   sls   Asymmetric-Links   als   grmodels
   Edge Prunes	   edgeprunes   Vertex Prunes   vtxprunes   Nearest Neighborss   nnbrss   Number of Trialss   ntrialss   Number of Iterationss   niters   Number of Clusterss   numclusterss   Cluster Columnss   clustercolumnss
   ClutoErrorc      s)     d „  Z    d „  Z # d „  Z RS(   Nc    s     d Sd  S(   Ns   Please Upload the file again.(    (   s   selfs   qMap(    (    s   wClutoUtil.pys   getUploadStr s   c    s     ! d Sd  S(   Ns   Please Cluster again.(    (   s   selfs   qMap(    (    s   wClutoUtil.pys   getClusterStr  s   c    s*  # $ | |  _  % | |  _ ' |  i  d j o< ( d |  _ ) d d | d |  i |  i d ƒ |  _ n½- |  i  d j oR . d |  _ / d	 | d d
 | d | d f d |  i |  i d ƒ |  _ nX3 |  i  d j o; 4 d |  _ 5 d |  i d |  i |  i d ƒ |  _ n
8 |  i  d j o; 9 d |  _ : d |  i d |  i |  i d ƒ |  _ n¼= |  i  d j o; > d |  _ ? d |  i d |  i |  i d ƒ |  _ nnC |  i  d j oR D d |  _ E d | d d
 | d | d f d |  i |  i d ƒ |  _ n	I |  i  d j o4 J d |  _ K |  i d d |  i d ƒ |  _ nÂ M |  i  d j o+ N d |  _ O d  |  i d d! |  _ n„ Q |  i  d" j o R d# |  _ S d$ |  _ nU U |  i  d% j o' V d& |  _ W d' |  i d |  _ n Y |  i  GHZ t d( ƒ ‚ d  S()   Ns   UploadGreaterFileSizes   Upload File Size &gt; sizeLimits+   File size of uploaded file exceeds the files   size limit of  %dKb.i    i   s   UploadIncorrectFieldss   Incorrect Number of Fieldss5   Incorrect number of lines in uploaded file <b>%s</b> s5   on line <b>%d</b>.
<br>Incorrect Line: <pre>%s
</pre>i   s   <p>i   s   UploadFileExistss   Dataset with that name existss   Dataset: <tt>%s</tt> exists.<p>s   UploadEmptyFiles   Incorrect File Formats-   Uploaded file:<b>%s</b> has not data rows.<p>s   UploadIncorrectFileNames   Incorrect File Names6   Uploaded file:<b>%s</b> has white space characters.<p>s   UploadTextFounds   Number format incorrects'   Incorrect Text uploaded file <b>%s</b> s   ClusterIncorrectOptions    Incorrect Options for Clusterings   
<p>s    s   ClusterSolutionExistss   Clustering Solutions Existss4   Clustering Solution with that name <b>%s</b> exists.s'   <p>Please cluster with diffferent name.s   ClusterNoDelimiters   No Delimiters Selecteds   Please Select a Delimiters   ClusterClutoFaileds   Clustering Faileds   Error Message: %ss   Unknown;...(   s   types   selfs   argss   titles   getUploadStrs   detailss   getClusterStrs	   Exception(   s   selfs   types   args(    (    s   wClutoUtil.pys   __init__# sD   0F///F((   s   getUploadStrs   getClusterStrs   __init__(    (    (    s   wClutoUtil.pys
   ClutoError s   s   SessionObjectc      s   ` a d „  Z  RS(   Nc    sn  a e g t  i i t i | d ƒ |  _ h g  |  _ i g  |  _	 j xô t
 i
 |  i d ƒ Dj ]Ù } k t o t  i i | ƒ p t ‚ l |  i i t  i i | ƒ d ƒ m g  } n xj t
 i
 t  i i |  i | ƒ d ƒ Dn ]@ } o t  i i | ƒ o$ p | i t  i i | ƒ d ƒ n qÜ Wr |  i	 i | ƒ qZ Wt t o& t |  i ƒ t |  i	 ƒ j p t ‚ d S(   s|   
        Assumes that the directory for that session exists.
        Builds the session object from that directory.
        s   sesIDs   /*i   N(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   selfs   sesDirs   datasetss	   solutionss   globs   dNames	   __debug__s   isdirs   AssertionErrors   appends   splits   solLists   fNames   len(   s   selfs   qMaps   fNames   dNames   solList(    (    s   wClutoUtil.pys   __init__a s   " 	$#	) 	((   s   __init__(    (    (    s   wClutoUtil.pys   SessionObject` s   c     sZ   x y t  i t i d ƒ } z h  }  { x$ | D{ ] \ } } | | |  | <q/ W} |  Sd  S(   Ns   QUERY_STRING(   s   cgis	   parse_qsls   oss   environs	   queryLists   qMaps   keys   value(   s   qMaps   keys	   queryLists   value(    (    s   wClutoUtil.pys   getQueryMapx s   	
 c    s‚    € t  o d |  j p t ‚  t i i t i |  d ƒ } ‚ t i i	 | ƒ o ƒ t i
 | t i ƒ n … t |  ƒ Sd  S(   Ns   sesID(   s	   __debug__s   qMaps   AssertionErrors   oss   paths   joins   configs   ClutoDataDirs   sesDirs   existss   mkdirs   DirCreationModes   SessionObject(   s   qMaps   sesDir(    (    s   wClutoUtil.pys   getSessionObject s
   c    s   ‰ Š xm t  |  ƒ DŠ ]\ } ‹ | d  d j oB Œ t i t i | ƒ ƒ }  t t | d ƒ } Ž t	 | ƒ Sn q W d d d d f Sd  S(   Ni   s   %%BoundingBoxi   i    (
   s   files   epsFiles   lines   strings   splits   strips   lLists   maps   ints   tuple(   s   epsFiles   lLists   line(    (    s   wClutoUtil.pys   getBoundingBox‰ s    	c    s•  ‘ ’ t  i i t i |  d |  d “ |  d d | ƒ } • d | } – d | } — d | } ™ t  i i | ƒ o š d  Sn œ t | ƒ \ } } } }  | | | | f \ } }   t | | ƒ t | | ƒ f \ } } ¡ t t i | t i | ƒ }	 ¢ d t | |	 ƒ t | |	 ƒ f }
 ¤ t  i d	 |
 | | d
  | d
  f ƒ ¥ t d | d
  d ƒ } ¦ | i d | | f ƒ § | i  ƒ  d  S(   Ns   sesIDs   datas   sols   %ss   %s.jpgs   %s.pdfs   %s.epss   %dx%ds=   convert -geometry %s -density 300 %s %s.jpg >> %s-convert.erriüÿÿÿs
   %s.imgSizes   ws   %d %d(!   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   stubs   imgStubs   jpgFiles   pdfFiles   epsFiles   existss   getBoundingBoxs   x1s   y1s   x2s   y2s   widths   heights   mins   maxs   mis   mxs   MinPixelDims   MaxPixelDims   scales   ints   gStrs   systems   files   sizeFiles   writes   close(   s   qMaps   stubs   epsFiles   x1s   heights   x2s   sizeFiles   y1s   y2s   scales   gStrs   mis   widths   jpgFiles   imgStubs   mxs   pdfFile(    (    s   wClutoUtil.pys   createGifImage‘ s     ' '(c 	   sù   ª « t  i i t i |  d |  d ƒ } ¬ t  i i | |  d ƒ } ­ t  i i | d ƒ } ® t  i i | d ƒ } ¯ t  i i
 | ƒ ob ° t  i i | d ƒ } ± t  i i | d ƒ } ² d t i | | | f } ³ t  i | ƒ } n µ | Sd  S(	   Ns   sesIDs   datas   sols	   cluto.wrls   cluto.wrl.errs	   data.dmats   cluto.clusts   %s %s %s > %s(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   dataDirs   solDirs   vrmlFiles   vrmlErrs   existss   datasets	   clustFiles   VRMLGens   cmds   systems   retCode(	   s   qMaps   retCodes   cmds	   clustFiles   datasets   dataDirs   vrmlFiles   solDirs   vrmlErr(    (    s   wClutoUtil.pys   createVRMLWorldª s   &c    s²   À Á |  i d ƒ o |  d i p d } Â h  } Ã x0 t |  d i DÃ ] } Ä |  | i | | <qH WÇ |  d i | d <É |  i d ƒ o Ê d | d <n Ì | | f Sd  S(   Ns   solNames    s   clmethods   numclusterss   clustercolumnss   true(   s   forms   has_keys   values   solutionNames   clutoMaps   ClusterParamMaps   param(   s   forms   solutionNames   clutoMaps   param(    (    s   wClutoUtil.pys   getClutoMapÀ s   '	 	c    sÙ  Ï Ð t  |  d } Ñ d g } Ò t i i t i | d | d ƒ } Ó t i i | | ƒ } Õ g  } Ö x/ | DÖ ]$ } × | i d | |  | f ƒ qq WÚ xK | DÚ ]@ }	 Û t i i | d |	 d  ƒ } Ü | i d |	 | f ƒ q¦ Wà |  d d j oX á | i d	 t i i | d
 ƒ ƒ â |  d d d d g j o ã | i d ƒ n n æ |  i d ƒ o ç | i d ƒ n ê t |  d ƒ d j o ë | i d | ƒ n ï t i i t i i | d ƒ ƒ o ð t i i | d ƒ } n ò t i i | d ƒ } õ t i i t i i | d ƒ ƒ o ö t i i | d ƒ } n ø t i i | d ƒ } û d | | f } ü t i i | d ƒ } ý d | } þ d t i | d ƒ | | | |  d f }
  |
 | f Sd  S(   Ns   clmethods	   clustfiles   sesIDs   datas   -%s=%ss   cluto.%siüÿÿÿs   graphs   -treefile=%ss
   cluto.trees   rbs   rbrs   directs	   -fulltrees   clustercolumnss   -clustercolumnss   numclustersi   s   -plotclusters=%s/clutoClust.pdfs   data.rlabel-shorts   data.rlabels   data.clabel-shorts   data.clabels   -rlabelfile=%s -clabelfile=%ss	   data.dmats#   -zeroblack -plotmatrix=%s/cluto.pdfs   %s %s %s %s %ss    (   s   ClusterParamMaps   clutoMaps	   paramLists   fileParamLists   oss   paths   joins   configs   ClutoDataDirs   qMaps   dataDirs   solNames   solDirs
   cmdStrLists   params   appends	   fileParams   fileNs   has_keys   ints   existss   rLFileNs   cLFileNs   labelStrs   datasets
   otherParams   strings
   clutoParam(   s   clutoMaps   qMaps   solNames   rLFileNs
   otherParams   datasets   dataDirs   solDirs   labelStrs	   fileParams
   clutoParams   params   cLFileNs	   paramLists   fileParamLists   fileNs
   cmdStrList(    (    s   wClutoUtil.pys   buildCmdÏ s>   &	
 	"
 	 #%%,c    s³  t  |  ƒ } t i ƒ  }
 t |
 ƒ \ } } 	|  d } 
| i
 i | ƒ } | i | } | o | p d t | ƒ d } | | j o t d | |  g ƒ ‚ n t i i t i |  d | | ƒ } t i | t i ƒ | |  d <t | |  | ƒ \ } } t t i i | d ƒ d ƒ } | i d	 | ƒ | i ƒ  | i d d
 ƒ | i  d ƒ o  | i! d ƒ n #t t i i | d ƒ d ƒ }	 $x/ | D$]$ } %|	 i d | | | f ƒ qÃW'|	 i ƒ  )t i i | d ƒ t i i | d ƒ f \ } } +t i& d t i' | | | f ƒ } -| d j oE .t | ƒ i) ƒ  } /t i& d | ƒ 0t d | |  g ƒ ‚ n Ed Sd  S(   Ns   datas   sol-%di   s   ClusterSolutionExistss   sesIDs   sols	   cluto.cmds   ws   %ss   numclusterss   clustercolumnss   cluto.params   %s %s
s   cluto.outputs	   cluto.errs   %s %s > %s 2> %si    s	   rm -rf %ss   ClusterClutoFailed(+   s   getSessionObjects   qMaps   sObjs   cgis   FieldStorages   forms   getClutoMaps   clutoMaps   solNames   datasetNames   datasetss   indexs   solIdxs	   solutionss   lens
   ClutoErrors   oss   paths   joins   configs   ClutoDataDirs   solDirs   mkdirs   DirCreationModes   buildCmds
   clutoParams   printParamLists   files   cmdFiles   writes   closes   inserts   has_keys   appends	   paramFiles   paramKeys   optFileNs   errFileNs   systems   ClutoCmds   retCodes   reads   errStr(   s   qMaps   paramKeys   solNames   errFileNs   optFileNs   sObjs   solIdxs   cmdFiles   datasetNames	   paramFiles   forms
   clutoParams   solDirs   errStrs   retCodes   clutoMaps   printParamLists	   solutions(    (    s   wClutoUtil.pys   clusterDatas>   %%!!
 	"3%c    s  HIt  i i t i |  d |  d ƒ } Jg  g  f \ } } Kxˆ t	 i	 | d ƒ DK]p } Lt  i i t  i i | ƒ d ƒ d } M| i | ƒ Nt i t | ƒ i ƒ  d ƒ } O| i | ƒ qU WQ| o Rt t t | Œ  ƒ } n S| | f Sd  S(   Ns   sesIDs   datas   /*.clusti   i    s   
(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps
   datasetDirs
   solColumnss   solDatas   globs   sNames   splitexts   splits   solNames   appends   strings   files   reads   solLists   maps   lists   zip(   s   qMaps
   solColumnss   sNames
   datasetDirs   solLists   solDatas   solName(    (    s   wClutoUtil.pys   getSolutionsHs   & 	)!
c    s÷   VWt  i i t i |  d |  d |  d ƒ } Xd d g g  f \ } } Yt  i i | d ƒ t  i i | d ƒ g } \xB | D\]7 } ]t i t | ƒ i ƒ  d ƒ } ^| i | ƒ q‚ Wa| o bt t t | Œ  ƒ } n c| | f Sd  S(	   Ns   sesIDs   datas   sols   Cluster Solutions   Row Tree Orders   cluto.clusts   cluto.pdf.rtreeorders   
(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   solDirs
   solColumnss   solDatas   solFiless   sNames   strings   splits   files   reads   solLists   appends   maps   lists   zip(   s   qMaps
   solColumnss   sNames   solLists   solFiless   solDatas   solDir(    (    s   wClutoUtil.pys   getClusterSolutionVs   --
 	!
c    sí   ijt  i i t i |  d |  d ƒ } kt  i i | |  d ƒ } mt  i i | d |  d ƒ } nt  i i | d ƒ } pt  i i
 | ƒ oU qt | d ƒ } rt | ƒ } t| i | i ƒ  ƒ u| i ƒ  v| i ƒ  n d  S(   Ns   sesIDs   datas   sols   %s.clusts   cluto.clusts   w(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps
   datasetDirs   solDirs   dataSolns   solSolns   existss   files   oFiles   iFiles   writes   reads   close(   s   qMaps   oFiles   iFiles   dataSolns   solSolns   solDirs
   datasetDir(    (    s   wClutoUtil.pys   addSolutionis   & c    su  z{t  d „  |  ƒ } }t | ƒ | j o ~g  Sn h  | f \ } } ‚x· |  D‚]¬ } ƒt d t | ƒ | ƒ }	 „h  } …x8 t |	 ƒ D…]' } †| | | | !} ‡d | | <q– W‰x= | i ƒ  D‰], } Š| i | d ƒ } ‹| d | | <qÔ WqX Wg  } xP|  D]E} ‘g  g  f \ } } ’t d t | ƒ | ƒ }	 “x6 t |	 ƒ D“]% } ”| i | | | | | !ƒ qhW—| i t | ƒ ƒ }
 ˜t | ƒ d j o ™| } nˆ š|
 d j o ›| |  d } nc œ|
 t | ƒ d j o& d | d | |
 |
 | !f } n# Ÿd | d | |
 |
 | !f } ¡| i | ƒ qW£| Sd  S(   Nc    s   {t  |  ƒ S(   N(   s   lens   x(   s   x(    (    s   wClutoUtil.pys   <lambda>{s    i   i    s   ..s   %s..%ss   %s..%s..(   s   maps	   namesLists   lenLists   maxs   maxSizes	   subSeqMaps   sslens   names   lens	   numSubStrs   ssMaps   ranges   is   sss   keyss   gets   vals
   sNamesLists   nLenLists   newNames   appends   indexs   mins   minI(   s	   namesLists   maxSizes
   sNamesLists   names   vals   newNames   is   lenLists   sslens	   numSubStrs   minIs   nLenLists   sss   ssMaps	   subSeqMap(    (    s   wClutoUtil.pys   shortenNameszsD   
 		 	 		
 	 	#&"s   	s   delimTabs   ,s
   delimCommas   ;s   delimSemicolons    s
   delimSpacec    sA  ­®| d } °g  g  g  f \ } } } ±d d d f \ } } } ²xŽ| i D²]€}	 ³t
 i |	 d d ƒ }	 ´t
 i |	 d d ƒ }	 µ|	 o
 ¶qS n ¸| d 7} ¹| t |	 ƒ 7} »| t i j o ¼t d t i |  g ƒ ‚ n ¿t
 i |	 d ƒ } À| d j o  Á| d	 } Ât | ƒ } nŸ Ã| d
 j o Änˆ Æ| i | d ƒ Çt d „  | d	 ƒ | d	 )È| i | d	 ƒ Ét | ƒ | d	 j o( Êt d | i | |	 | |  g ƒ ‚ n qS WÍt | ƒ d j p
 | d j o Ît d | i |  g ƒ ‚ n Ðt | ƒ } Ñt i i t i |  d | ƒ } Òt i | t i ƒ Ôt d | d ƒ }
 Õ|
 i  d | | f ƒ Öx1 | DÖ]& } ×|
 i  d t
 i | d ƒ ƒ qWÙ|
 i! ƒ  Ût d | d ƒ } Ü| i  d t
 i | d ƒ ƒ Ý| i! ƒ  ßt# | t i$ ƒ } à| oG át d | d ƒ } â| i  d t
 i | d ƒ ƒ ã| i! ƒ  n æt d | d ƒ } ç| i  d t
 i | d ƒ ƒ è| i! ƒ  êt# | t i( ƒ } ë| oG ìt d | d ƒ } í| i  d t
 i | d ƒ ƒ î| i! ƒ  n ò| |  d <ód Sd  S(   Ns   uploadedFilei    s   
s    s   i   s   UploadGreaterFileSizes   	i   i   c    s   Ç|  d j o d p |  S(   Ns    s   0.0(   s   x(   s   x(    (    s   wClutoUtil.pys   <lambda>Çs    s   UploadIncorrectFieldss   UploadEmptyFiles   sesIDs   %s/data.dmats   ws   %d %d
s   %s
s    s   %s/data.rlabels   %s/data.rlabel-shorts   %s/data.clabels   %s/data.clabel-shorts   data(+   s   forms   fileItems   colNamess   rowNamess   dataLists   lineNums   numColss   uploadSzs   files   lines   strings   replaces   lens   configs   MaxUploadSizes
   ClutoErrors   qMaps   splits   lLists   appends   maps   filenames   datasetNames   numRowss   oss   paths   joins   ClutoDataDirs
   datasetDirs   mkdirs   DirCreationModes   dFiles   writes   closes   rFiles   shortenNamess   MaxRowLabelLens   shortRowNamess   srFiles   cFiles   MaxColLabelLens   shortColNamess   scFile(   s   qMaps   forms   datasetNames   uploadSzs   cFiles
   datasetDirs   lLists   shortRowNamess   rFiles   lines   dFiles   numColss   dataLists   srFiles   numRowss   lineNums   rowNamess   colNamess   fileItems   scFiles   shortColNames(    (    s   wClutoUtil.pys   writeSMDData­sj    	
,#"
 	$ 
  
 c    sL  ÷øˆ  i d ƒ o d p d } ùˆ  i d ƒ o d p d } ût d „  t ‡  d †  t i ƒ  ƒ ƒ } üˆ  i d ƒ o ý| i	 ˆ  d i
 ƒ n ÿt | ƒ d j o  t d	 |  g ƒ ‚ n t i d
 t i | d ƒ ƒ } t i d ƒ } ˆ  d } g  g  g  f \ } } } d d d d f \ } } } } 	x=| i D	]/}
 
| d 7} | t |
 ƒ 7} t i |
 d d ƒ }
 t i |
 d d ƒ }
 | t i  j o t d t i  |  g ƒ ‚ n | i! d |
 ƒ }
 | i" |
 ƒ } | o< | i$ d ƒ } | o | o | i	 | ƒ n n | o” d } t | ƒ } !| o "| } nb $| i	 | ƒ &y 't t& | ƒ Wn7 (t' j
 o( )t d | i( | |
 |  g ƒ ‚ n Xn ,t | ƒ | j o% -t d | i( | |
 |  g ƒ ‚ n .| i	 | ƒ /y 0t t& | ƒ Wn7 1t' j
 o( 2t d | i( | |
 |  g ƒ ‚ n XqTW6t | ƒ d j p
 | d j o 7t d | i( |  g ƒ ‚ n :t | ƒ } ;| o& <t d „  t* d | d ƒ ƒ } n ?| o& @t d „  t* d | d ƒ ƒ } n Dt+ i, i t i- |  d | ƒ } Et+ i0 | t i1 ƒ Gt d | d ƒ } H| i3 d | | f ƒ Ix1 | DI]& } J| i3 d t i | d ƒ ƒ q¯WL| i4 ƒ  Ot d | d ƒ }	 P|	 i3 d t i | d ƒ ƒ Q|	 i4 ƒ  St6 | t i7 ƒ } T| oG Ut d | d ƒ } V| i3 d t i | d ƒ ƒ W| i4 ƒ  n Zt d | d ƒ } [| i3 d t i | d ƒ ƒ \| i4 ƒ  ^t6 | t i; ƒ } _| oG `t d | d ƒ } a| i3 d t i | d ƒ ƒ b| i4 ƒ  n d| |  d  <d  S(!   Ns	   headerRowi   i    s	   headerColc    s   ût  |  S(   N(   s   delimMaps   x(   s   x(    (    s   wClutoUtil.pys   <lambda>ûs    c    s   ûˆ  i |  ƒ S(   N(   s   forms   has_keys   x(   s   x(   s   form(    s   wClutoUtil.pys   <lambda>ûs    s
   delimOthers	   otherTexts   ClusterNoDelimiters   [%s]*s    s   ^\ *s   uploadedFiles   
s   s   UploadGreaterFileSizes   UploadTextFounds   UploadIncorrectFieldss   UploadEmptyFilec    s   <d |  S(   Ns   col%d(   s   x(   s   x(    (    s   wClutoUtil.pys   <lambda><s    c    s   @d |  S(   Ns   row%d(   s   x(   s   x(    (    s   wClutoUtil.pys   <lambda>@s    s   sesIDs   %s/data.dmats   ws   %d %d
s   %s
s    s   %s/data.rlabels   %s/data.rlabel-shorts   %s/data.clabels   %s/data.clabel-shorts   data(>   s   forms   has_keys   firstRows   firstCols   maps   filters   delimMaps   keyss
   delimiterss   appends   values   lens
   ClutoErrors   qMaps   res   compiles   strings   joins   splitRes   spaceRes   fileItems   colNamess   rowNamess   dataLists	   firstLines   lineNums   numColss   uploadSzs   files   lines   replaces   configs   MaxUploadSizes   subs   splits   lLists   pops   rNames   floats
   ValueErrors   filenames   numRowss   ranges   oss   paths   ClutoDataDirs   datasetNames
   datasetDirs   mkdirs   DirCreationModes   dFiles   writes   closes   rFiles   shortenNamess   MaxRowLabelLens   shortRowNamess   srFiles   cFiles   MaxColLabelLens   shortColNamess   scFile(   s   qMaps   forms   datasetNames   lLists   uploadSzs
   delimiterss   rNames
   datasetDirs   shortRowNamess   rFiles   lines   dFiles   firstCols   scFiles   numColss   fileItems   numRowss   splitRes	   firstLines   lineNums   dataLists   srFiles   firstRows   rowNamess   cFiles   colNamess   spaceRes   shortColNames(    (   s   forms   wClutoUtil.pys   writeDelimitedData÷s–     *"! 	

	
*%*#&&"
 	$ 
  
 c    s˜  ght  |  ƒ } it i ƒ  } l| d } m| i i d ƒ d j o0 ot	 i
 t i i | i ƒ d d ƒ d } n- qt i i
 t i i | i ƒ d ƒ d } r| i d ƒ o | d i p | } st	 i | d d ƒ } tt i d	 ƒ i | ƒ o ut d
 | |  g ƒ ‚ n w| | i j o xt d | |  g ƒ ‚ n z| d i d j o {t |  | | ƒ n }t |  | | ƒ d  Sd  S(   Ns   uploadedFiles   \iÿÿÿÿi    i   s   datasetNames    s   _s   \s+s   UploadIncorrectFileNames   UploadFileExistss   formats   SMD(   s   getSessionObjects   qMaps   sObjs   cgis   FieldStorages   forms   fileItems   filenames   finds   strings   splits   oss   paths   splitexts	   uFileNames   has_keys   values   datasetNames   replaces   res   compiles   searchs
   ClutoErrors   datasetss   writeSMDDatas   writeDelimitedData(   s   qMaps   datasetNames   forms	   uFileNames   sObjs   fileItem(    (    s   wClutoUtil.pys
   uploadDatags    0,'c    sÊ   ƒ„t  i i t i |  d |  d d ƒ } …h  } †t | ƒ } ‡t
 i | i ƒ  ƒ \ | d <| d <ˆ| i ƒ  Št i t i t  i i | ƒ ƒ ƒ | d <‹t  i i | ƒ d | d <Œ| Sd  S(	   Ns   sesIDs   datas	   data.dmats   NumRowss   NumColss
   UploadTimef1000.0s   FileSize(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   datasetFileNs   dMaps   files   dFiles   strings   splits   readlines   closes   times   asctimes	   localtimes   getmtimes   getsize(   s   qMaps   dMaps   dFiles   datasetFileN(    (    s   wClutoUtil.pys   getDatasetStatsƒs   )	&+c    s%  Žd | j } d | j } ’d } “d }
 •|  i oÔ—g  g  f \ } } ˜| o ™| d } n ›| i
 d ƒ œd } ž| i |  i ƒ  xM | D ]B } ¡| | j o ¢| i
 d | ƒ n ¤| i
 d | ƒ q¦ W¦d t i | d ƒ } ª| oþ «|  i i | d ƒ } ¬|  i | oÐ ­g  g  f \ } } ®| o ¯| d }	 n ±| i
 d	 ƒ ²d	 }	 ´| i |  i | ƒ µxM | Dµ]B } ¶| |	 j o ·| i
 d | ƒ n ¹| i
 d | ƒ q¦W¼d t i | d ƒ }
 n n n ¿| |
 f Sd  S(
   Ns   datas   sols   <OPTION SELECTED>No Datasets
s   <OPTION SELECTED>No Solutions
s   Select Datasets   <OPTION SELECTED>%ss
   <OPTION>%ss   
s   Select Solution(   s   qMaps   dataSelecteds   solSelecteds   dOptStrs   sOptStrs   sObjs   datasetss   dLists   dOptLists   selDatas   appends   extends   datasets   strings   joins   indexs   sIndxs	   solutionss   sLists   sOptLists   selSols   sol(   s   sObjs   qMaps   sLists   dataSelecteds   dLists   solSelecteds   dOptLists   sols   datasets   selSols   sOptStrs   sIndxs   selDatas   dOptStrs   sOptList(    (    s   wClutoUtil.pys   buildDatasetSolutionOptionsŽsB   		
	
 	

	
 	%c    s§   ÂÃt  i i t i |  d |  d ƒ } Ät  i i | |  d ƒ } Åt  i d | ƒ Çt  i i | d |  d ƒ } Èt  i i
 | ƒ o Ét  i | ƒ n d  S(   Ns   sesIDs   datas   sols	   rm -rf %ss   %s.clust(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   dataDirs   solDirs   systems   solnPaths   existss   remove(   s   qMaps   solnPaths   dataDirs   solDir(    (    s   wClutoUtil.pys   deleteSolutionÂs   & c    sa  ÎÏg  } ÐxK |  d DÐ]< } Ñt i | ƒ d  } Ò| i d t i | d ƒ ƒ q WÕ|  d g  f \ } } Öx|t
 d t | ƒ d ƒ DÖ]_} ×| | | | d | | d	 f \ }	 } } Øt d
 „  t i |	 d ƒ ƒ } Ú| d  | d  f \ } } Ûg  } Üx t i t i | d ƒ d d ƒ DÜ]X }
 Ýt i t i |
 ƒ d ƒ } Þ| i t i | d  d ƒ ƒ ß| i | d ƒ q7Wát | ƒ d j  o% â| i d g d t | ƒ ƒ n åg  } æx t i t i | d ƒ d d ƒ Dæ]X }
 çt i t i |
 ƒ d ƒ } è| i t i | d  d ƒ ƒ é| i | d ƒ q Wët | ƒ d j  o% ì| i d g d t | ƒ ƒ n î| i d t | ƒ ƒ ï| i d t i | d ƒ ƒ ð| i d t i | d ƒ ƒ q’ Wót i t i ƒ } ôt i | d ƒ | d <õt i | d ƒ | d <ö|  d | d <÷| i ƒ  d  S(   Ns
   clusteringiÿÿÿÿs   <tr><td>%s</td></tr>s	   </td><td>s   featuresi    i   i   i   c    s   Øt  i |  ƒ d S(   Ni   (   s   strings   splits   x(   s   x(    (    s   wClutoUtil.pys   <lambda>Øs    s   , s   :s   %,s    i
   s   &nbsp;sc   <tr><th colspan=11>Cluster%s \# of Objects:%s Avg. Internal Sim.:%s Avg External Sim.:%s </th></tr>s#   <tr><th>Descriptive</th><td>%s</td>s&   <tr><th>Descriminating</th><td>%s</td>s   
s   ClusterRowss   FeatureRowss	   nClusterss   NumClusters(   s   cRowLists   optMaps   lines   strings   splits   lLists   appends   joins   featLists   fRowLists   ranges   lens   rIs   fLines   sLines   tLines   maps   valLists   dList1s   fields   strips   fLists   extends   dList2s   tuples   HTMLgens   TemplateDocuments   configs   SolStatsPages   solStatsPages   write(   s   optMaps   fRowLists   tLines   dList2s   lLists   dList1s   lines   rIs   sLines   fLines   fields   featLists   valLists   fLists   solStatsPages   cRowList(    (    s   wClutoUtil.pys   printHTMLStatsÎsF   	 	$ 	/!	& 	 %	& 	 % $c    s  úût  i i t i |  d |  d |  d d ƒ } üt  i i | ƒ d j  o ýt d |  g ƒ ‚ n  d h  f \ } } xÿ t | ƒ D]î } t i t i | d d ƒ ƒ } | o
 q n | d	 j o  d	 } 	g  | | <
q nƒ | d
 j o  d
 } g  | | <q nS | d j o  d } g  | | <q n# | o | | i | ƒ n q Wt t i | d d ƒ d d  ƒ } | d d d | !| d <| d d | d | d | !| d <g  | d <| | d <| Sd  S(   Ns   sesIDs   datas   sols   cluto.outputid   s   ClusterClutoFaileds    s   -s   Matrix Informations   Optionss   Solutioni    iýÿÿÿi   s
   clusteringi   s   featuress	   nClusters(   s   oss   paths   joins   configs   ClutoDataDirs   qMaps   outputFileNs   getsizes
   ClutoErrors   curModes   optMaps   files   lines   strings   strips   replaces   appends   ints   splits   nC(   s   qMaps   nCs   optMaps   curModes   lines   outputFileN(    (    s   wClutoUtil.pys   parseClutoOutputús:   0 	!
	
	
	

(((%   s   strings   syss   oss   globs   os.paths   times   maths   HTMLgens   configs   res   cgis   ClutoParamMaps	   Exceptions
   ClutoErrors   SessionObjects   getQueryMaps   getSessionObjects   getBoundingBoxs   createGifImages   createVRMLWorlds   ClusterParamMaps   getClutoMaps   buildCmds   clusterDatas   getSolutionss   getClusterSolutions   addSolutions   shortenNamess   delimMaps   writeSMDDatas   writeDelimitedDatas
   uploadDatas   getDatasetStatss   buildDatasetSolutionOptionss   deleteSolutions   printHTMLStatss   parseClutoOutput(#   s   HTMLgens   cgis   printHTMLStatss   strings   getClutoMaps   globs   addSolutions   syss   delimMaps   writeSMDDatas   parseClutoOutputs   getClusterSolutions   ClusterParamMaps   shortenNamess   getQueryMaps   createGifImages   SessionObjects   getSessionObjects   deleteSolutions
   uploadDatas   writeDelimitedDatas   configs   buildDatasetSolutionOptionss   clusterDatas   ClutoParamMaps   res   getDatasetStatss
   ClutoErrors   getSolutionss   createVRMLWorlds   times   getBoundingBoxs   buildCmds   oss   math(    (    s   wClutoUtil.pys   ? s8   Nÿ íD
{4E+-Jp4,