about summary refs log tree commit diff
path: root/web/webqtl/networkGraph/networkGraphUtils.py
diff options
context:
space:
mode:
authorzsloan2015-03-27 20:28:51 +0000
committerzsloan2015-03-27 20:28:51 +0000
commitd0911a04958a04042da02a334ccc528dae79cc17 (patch)
tree3c48e2e937c1dbeaf00a5697c87ed251afa5c8f1 /web/webqtl/networkGraph/networkGraphUtils.py
parenta840ad18e1fe3db98a359a159e9b9b72367a2839 (diff)
downloadgenenetwork2-d0911a04958a04042da02a334ccc528dae79cc17.tar.gz
Removed everything from 'web' directory except genofiles and renamed the directory to 'genotype_files'
Diffstat (limited to 'web/webqtl/networkGraph/networkGraphUtils.py')
-rw-r--r--web/webqtl/networkGraph/networkGraphUtils.py750
1 files changed, 0 insertions, 750 deletions
diff --git a/web/webqtl/networkGraph/networkGraphUtils.py b/web/webqtl/networkGraph/networkGraphUtils.py
deleted file mode 100644
index fd0e7484..00000000
--- a/web/webqtl/networkGraph/networkGraphUtils.py
+++ /dev/null
@@ -1,750 +0,0 @@
-# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
-#
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License
-# as published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the GNU Affero General Public License for more details.
-#
-# This program is available from Source Forge: at GeneNetwork Project
-# (sourceforge.net/projects/genenetwork/).
-#
-# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
-# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
-#
-#
-#
-# This module is used by GeneNetwork project (www.genenetwork.org)
-#
-# Created by GeneNetwork Core Team 2010/08/10
-#
-# Last updated by GeneNetwork Core Team 2010/10/20
-
-# graphviz:
-# a library for sending trait data to the graphviz utilities to get
-# graphed
-
-# ParamDict: a dictionary of strings that map to strings where the keys are
-#     valid parameters and the values are validated versions of those parameters
-#
-# The list below also works for visualize.py; different parameters apply to different
-# functions in the pipeline. See visualize.py for more details.
-#
-# parameters:
-# filename: an input file with comma-delimited data to visualize
-# kValue:
-#    how to filter the edges; edges with correlation coefficents in
-#    [-k, k] are not drawn
-# whichValue: which of the two correlation coefficents are used;
-#     0 means the top half (pearson) and
-#     1 means the bottom half (spearman)
-# width: the width of the graph in inches
-# height: the height of the graph in inches
-# --scale: an amount to multiply the length factors by to space out the nodes
-# spline: whether to use splines instead of straight lines to draw graphs
-# tune: whether to automatically pick intelligent default values for
-#     kValue and spline based on the number of edges in the input data
-# whichVersion: whether to display the graph zoomed or fullscreen
-#     0 means zoom
-#     1 means fullscreen
-# printIslands: whether to display nodes with no visible edges
-# 
-
-# DataMatrix: a one-dimensional array of DataPoints in sorted order by i first
-
-
-
-import copy
-import os
-#import os.path
-import math
-import string
-
-from base import webqtlConfig
-from utility import webqtlUtil
-#import trait
-from nGraphException import nGraphException
-from ProcessedPoint import ProcessedPoint
-
-
-# processDataMatrix: DataMatrix -> ParamDict -> void
-# this is the second part after filterDataMatrix
-# To process the set of points in a DataMatrix as follows
-#    1) choose an appropriate color for the data point
-#    2) filter those between k values
-#    3) to use an r-to-Z transform to spread out the correlation
-#       values from [-1,1] to (-inf, inf)
-#    4) to invert the values so that higher correlations result in
-#       shorter edges
-#
-# Note: this function modifies the matrix in-place. My functional
-# programming instincts tell me that this is a bad idea.
-def processDataMatrix(matrix, p):
-    for pt2 in matrix:
-        # filter using k
-        if (-p["kValue"] <= pt2.value) and (pt2.value <= p["kValue"]):
-            pt2.value = 0.00
-            
-        # Lei Yan
-        # 05/28/2009
-        # fix color
-        
-        # pick a color
-        if pt2.value >= 0.7:
-            pt2.color = p["cL6Name"]
-            pt2.style = p["L6style"]
-        elif pt2.value >= 0.5:
-            pt2.color = p["cL5Name"]
-            pt2.style = p["L5style"]
-        elif pt2.value >= 0.0:
-            pt2.color = p["cL4Name"]
-            pt2.style = p["L4style"]
-        elif pt2.value >= -0.5:
-            pt2.color = p["cL3Name"]
-            pt2.style = p["L3style"]
-        elif pt2.value >= -0.7:
-            pt2.color = p["cL2Name"]
-            pt2.style = p["L2style"]
-        else:
-            pt2.color = p["cL1Name"]
-            pt2.style = p["L1style"]
-        
-        # r to Z transform to generate the length
-        # 0 gets transformed to infinity, which we can't
-        # represent here, and 1 gets transformed to 0
-        if p["lock"] == "no":
-            if -0.01 < pt2.value and pt2.value < 0.01:
-                pt2.length = 1000
-            elif pt2.value > 0.99 or pt2.value < -0.99:
-                pt2.length = 0
-            else:
-                pt2.length = pt2.value
-                pt2.length = 0.5 * math.log((1 + pt2.length)/(1 - pt2.length))
-        
-                # invert so higher correlations mean closer edges
-                #pt2.length = abs(p["scale"] * 1/pt2.length)
-                pt2.length = abs(1/pt2.length)
-        else:
-            pt2.length = 2
-            
-
-# tuneParamDict: ParamDict -> Int -> Int -> ParamDict
-# to adjust the parameter dictionary for a first-time run
-# so that the graphing doesn't take so long, especially since
-# small parameter changes can make a big performance difference
-# note: you can pass this function an empty dictionary and
-# get back a good set of default parameters for your
-# particular graph
-def tuneParamDict(p, nodes, edges):
-    newp = copy.deepcopy(p)
-    
-    if nodes > 50:
-        newp["splines"] = "no"
-    else:
-        newp["splines"] = "yes"
-        
-    if edges > 1000:
-        newp["printIslands"] = 0
-    else:
-        newp["printIslands"] = 1
-        
-    if edges > 1000:
-        newp["kValue"] = 0.8
-    elif edges > 500:
-        newp["kValue"] = 0.7
-    elif edges > 250:
-        newp["kValue"] = 0.6
-
-    if nodes > 50:
-        # there's no magic here; this formula
-        # just seems to work
-        dim = 3*math.sqrt(nodes)
-        newp["width"] = round(dim,2)
-        newp["height"] = round(dim,2)
-
-        # the two values below shouldn't change 
-        #        newp["scale"] = round(dim/10.0,2)
-        #        newp["fontsize"] = round(14*newp["scale"],0)
-        
-    else:
-        newp["width"] = 40.0
-        newp["height"] = 40.0
-        
-    return newp
-
-# fixLabel : string -> string
-def fixLabel(lbl):
-    """
-    To split a label with newlines so it looks a bit better
-    Note: we send the graphing program literal '\n' strings and
-    it converts these into newlines
-    """
-    lblparts = lbl.split(" ")
-    newlbl = ""
-    i = 0
-    for part in lblparts:
-        if 10*(i+1) < len(newlbl):
-            i += 1
-            newlbl = newlbl + r"\n" + part
-        else:
-            newlbl = newlbl + " " + part
-    return newlbl
-    #return "\N"
-
-def writeGraphFile(matrix, traits, filename, p):
-    """
-    Expresses the same information as the neato file, only in 
-    eXtensible Graph Markup and Modeling Language (XGMML) so the user can develop his/her
-    own graph in a program such as Cytoscape
-    """
-    inputFile1 = open(filename + "_xgmml_symbol.txt", "w")
-    inputFile2 = open(filename + "_xgmml_name.txt", "w")
-    inputFile3 = open(filename + "_plain_symbol.txt", "w")
-    inputFile4 = open(filename + "_plain_name.txt", "w")
-        
-    inputFile1.write("<graph directed=\"1\" label=\"Network Graph\">\n")
-    inputFile2.write("<graph directed=\"1\" label=\"Network Graph\">\n")
-    
-    #Write out nodes
-    traitEdges = []
-    for i in range(0, len(traits)):
-        traitEdges.append(0)
-    
-    for i in range(0, len(traits)):
-            
-        labelName = traits[i].symbol
-        inputFile1.write("\t<node id=\"%s\" label=\"%s\"></node>\n" % (i, labelName))
-    
-    for i in range(0, len(traits)):
-        
-        labelName = traits[i].name
-        inputFile2.write("\t<node id=\"%s\" label=\"%s\"></node>\n" % (i, labelName))
-            
-    #Write out edges
-    for point in matrix:
-
-        traitEdges[point.i] = 1
-        traitEdges[point.j] = 1
-        if p["edges"] == "complex":
-            _traitValue = "%.3f" % point.value
-            inputFile1.write("\t<edge source=\"%s\" target=\"%s\" label=\"%s\"></edge>\n"
-                             % (point.i,
-                                point.j, 
-                                _traitValue))
-            inputFile2.write("\t<edge source=\"%s\" target=\"%s\" label=\"%s\"></edge>\n"
-                             % (point.i,
-                                point.j, 
-                                _traitValue))
-    
-    inputFile1.write("</graph>")
-    inputFile2.write("</graph>")
-            
-    for edge in matrix:
-        inputFile3.write("%s\t%s\t%s\n" % (traits[edge.i].symbol, edge.value, traits[edge.j].symbol))    
-    
-
-    for edge in matrix:
-        inputFile4.write("%s\t%s\t%s\n" % (traits[edge.i].name, edge.value, traits[edge.j].name))         
-                
-    inputFile1.close()
-    inputFile2.close()
-    inputFile3.close()
-    inputFile4.close()
-    
-    return (os.path.split(filename))[1]
-
-# writeNeatoFile : DataMatrix -> arrayof Traits -> String -> ParamDict -> String
-def writeNeatoFile(matrix, traits, filename, GeneIdArray, p):
-    """
-    Given input data, to write a valid input file for neato, optionally
-    writing entries for nodes that have no edges.
-    
-    NOTE: There is a big difference between removing an edge and zeroing
-    its value. Because writeNeatoFile is edge-driven, zeroing an edge's value
-    will still result in its node being written.
-    """
-    inputFile = open(filename, "w")
-    
-    """
-    This file (inputFile_pdf) is rotated 90 degrees. This is because of a bug in graphviz 
-    that causes pdf output onto a non-landscape layout to often be cut off at the edge
-    of the page. This second filename (which is just the first + "_pdf" is then read
-    in the "visualizePage" class in networkGraph.py and used to generate the postscript
-    file that is converted to pdf.
-    """
-    inputFile_pdf = open(filename + "_pdf", "w")
-    
-    
-    if p["splines"] == "yes":
-        splines = "true"
-    else:
-        splines = "false"
-    
-    # header        
-    inputFile.write('''graph webqtlGraph {
-    overlap="false";
-    start="regular";
-    splines="%s";
-    ratio="auto";
-    fontpath = "%s";
-    node [fontname="%s", fontsize=%s, shape="%s"];
-    edge [fontname="%s", fontsize=%s];
-    ''' % (splines, webqtlConfig.PIDDLE_FONT_PATH,
-           p["nfont"], p["nfontsize"], p["nodeshapeType"],
-           p["cfont"], p["cfontsize"]))
-    
-    inputFile_pdf.write('''graph webqtlGraph {
-    overlap="false";
-    start="regular";
-    splines="%s";
-    rotate="90";
-    center="true";
-    size="11,8.5";
-    margin="0";
-    ratio="fill";
-    fontpath = "%s";
-    node [fontname="%s", fontsize=%s, shape="%s"];
-    edge [fontname="%s", fontsize=%s];
-    ''' % (splines, webqtlConfig.PIDDLE_FONT_PATH,
-           p["nfont"], p["nfontsize"], p["nodeshapeType"],
-           p["cfont"], p["cfontsize"]))
-
-    # traitEdges stores whether a particular trait has edges
-    traitEdges = []
-    for i in range(0, len(traits)):
-        traitEdges.append(0)
-       
-    if p["dispcorr"] == "yes":
-        _dispCorr = 1
-    else:
-        _dispCorr = 0
-    # print edges first while keeping track of nodes
-    for point in matrix:
-        if point.value != 0:
-            traitEdges[point.i] = 1
-            traitEdges[point.j] = 1
-            if p["edges"] == "complex":
-                if _dispCorr:
-                    _traitValue = "%.3f" % point.value
-                else:
-                    _traitValue = ""
-                if p["correlationName"] == "Pearson":
-                    inputFile.write('%s -- %s [len=%s, weight=%s, label=\"%s\", color=\"%s\", style=\"%s\", edgeURL=\"javascript:showCorrelationPlot2(db=\'%s\',ProbeSetID=\'%s\',CellID=\'\',db2=\'%s\',ProbeSetID2=\'%s\',CellID2=\'\',rank=\'%s\');\", edgetooltip="%s"];\n'
-                                    % (point.i,
-                                       point.j, 
-                                       point.length,
-                                       point.length, 
-                                       _traitValue,
-                                       point.color,
-                                       point.style,
-                                       str(traits[point.i].datasetName()),
-                                       str(traits[point.i].nameNoDB()),
-                                       str(traits[point.j].datasetName()),
-                                       str(traits[point.j].nameNoDB()),
-                                       "0",
-    				                   "Pearson Correlation Plot between " + str(traits[point.i].symbol) + " and " + str(traits[point.j].symbol)))
-                elif p["correlationName"] == "Spearman":
-                    inputFile.write('%s -- %s [len=%s, weight=%s, label=\"%s\", color=\"%s\", style=\"%s\", edgeURL=\"javascript:showCorrelationPlot2(db=\'%s\',ProbeSetID=\'%s\',CellID=\'\',db2=\'%s\',ProbeSetID2=\'%s\',CellID2=\'\',rank=\'%s\');\", edgetooltip="%s"];\n'
-                                    % (point.i,
-                                       point.j, 
-                                       point.length,
-                                       point.length, 
-                                       _traitValue,
-                                       point.color,
-                                       point.style,
-                                       str(traits[point.j].datasetName()),
-                                       str(traits[point.j].nameNoDB()),
-                                       str(traits[point.i].datasetName()),
-                                       str(traits[point.i].nameNoDB()),
-                                       "1",
-                                       "Spearman Correlation Plot between " + str(traits[point.i].symbol) + " and " + str(traits[point.j].symbol)))    
-                elif p["correlationName"] == "Tissue":
-                    inputFile.write('%s -- %s [len=%s, weight=%s, label=\"%s\", color=\"%s\", style=\"%s\", edgeURL=\"javascript:showTissueCorrPlot(fmName=\'showDatabase\', X_geneSymbol=\'%s\', Y_geneSymbol=\'%s\', rank=\'0\');\", edgetooltip="%s"];\n'
-                                    % (point.i,
-                                       point.j, 
-                                       point.length,
-                                       point.length, 
-                                       _traitValue,
-                                       point.color,
-                                       point.style,
-                                       str(traits[point.i].symbol),
-                                       str(traits[point.j].symbol),
-                                       "Tissue Correlation Plot between " + str(traits[point.i].symbol) + " and " + str(traits[point.j].symbol)))      
-                else:
-                    inputFile.write('%s -- %s [len=%s, weight=%s, label=\"%s\", color=\"%s\", style=\"%s\", edgeURL=\"javascript:showCorrelationPlot2(db=\'%s\',ProbeSetID=\'%s\',CellID=\'\',db2=\'%s\',ProbeSetID2=\'%s\',CellID2=\'\',rank=\'%s\');\", edgetooltip="%s"];\n'
-                                    % (point.i,
-                                       point.j, 
-                                       point.length,
-                                       point.length, 
-                                       _traitValue,
-                                       point.color,
-                                       point.style,
-                                       str(traits[point.i].datasetName()),
-                                       str(traits[point.i].nameNoDB()),
-                                       str(traits[point.j].datasetName()),
-                                       str(traits[point.j].nameNoDB()),
-                                       "0",
-                                       "Correlation Plot between " + str(traits[point.i].symbol) + " and " + str(traits[point.j].symbol)))         
-                inputFile_pdf.write('%s -- %s [len=%s, weight=%s, label=\"%s\", color=\"%s\", style=\"%s\", edgetooltip="%s"];\n'
-                                % (point.i,
-                                   point.j, 
-                                   point.length,
-                                   point.length, 
-                                   _traitValue,
-                                   point.color,
-                                   point.style,
-                                   "Correlation Plot between " + str(traits[point.i].symbol) + " and " + str(traits[point.j].symbol)))
-					
-            else:
-                inputFile.write('%s -- %s [color="%s", style="%s"];\n'
-                                % (point.i, 
-                                   point.j, 
-                                   point.color,
-                                   point.style))
-                inputFile_pdf.write('%s -- %s [color="%s", style="%s"];\n'
-                                % (point.i, 
-                                   point.j, 
-                                   point.color,
-                                   point.style))
-
-    # now print nodes
-    # the target attribute below is undocumented; I found it by looking
-    # in the neato code
-    for i in range(0, len(traits)):
-        if traitEdges[i] == 1 or p["printIslands"] == 1:
-            _tname = str(traits[i])
-            if _tname.find("Publish") > 0:
-            	plotColor = p["cPubName"]
-            elif _tname.find("Geno") > 0:
-            	plotColor = p["cGenName"]
-            else:
-            	plotColor = p["cMicName"]
-            if p['nodelabel'] == 'yes':
-            	labelName = _tname
-            else:
-            	labelName = traits[i].symbol
-
-            inputFile.write('%s [label="%s", href="javascript:showDatabase2(\'%s\',\'%s\',\'\');", color="%s", style = "filled"];\n'
-                            % (i, labelName, traits[i].datasetName(), traits[i].nameNoDB(), plotColor))# traits[i].color
-            inputFile_pdf.write('%s [label="%s", href="javascript:showDatabase2(\'%s\',\'%s\',\'\');", color="%s", style = "filled"];\n'
-                            % (i, labelName, traits[i].datasetName(), traits[i].nameNoDB(), plotColor))# traits[i].color
-            
-    # footer
-    inputFile.write("}\n")
-    inputFile_pdf.write("]\n")
-    inputFile.close()
-    inputFile_pdf.close()
-
-    # return only the filename portion, omitting the directory
-    return (os.path.split(filename))[1]
-
-# runNeato : string -> string -> string
-def runNeato(filename, extension, format, gType):
-    """
-    to run neato on the dataset in the given filename and produce an image file
-    in the given format whose name we will return. Right now we assume
-    that format is a valid neato output (see graphviz docs) and a valid extension
-    for the source datafile. For example,
-    runNeato('input1', 'png') will produce a file called 'input1.png'
-    by invoking 'neato input1 -Tpng -o input1.png'
-    """
-    # trim extension off of filename before adding output extension
-    if filename.find(".") > 0:
-        filenameBase = filename[:filename.find(".")]
-    else:
-        filenameBase = filename
-        
-    imageFilename = filenameBase + "." + extension
-
-    #choose which algorithm to run depended upon parameter gType
-    #neato: energy based algorithm
-    #circular: nodes given circular structure determined by which nodes are most closely correlated
-    #radial: first node listed (when you search) is center of the graph, all other nodes are in a circular structure around it
-    #fdp: force based algorithm
-
-    if gType == "none":
-    # to keep the output of neato from going to stdout, we open a pipe
-    # and then wait for it to terminate
-    
-        if format in ('gif', 'cmapx', 'ps'):
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/neato", "/usr/local/bin/neato", "-s", "-T", format, webqtlConfig.IMGDIR + filename, "-o", webqtlConfig.IMGDIR + imageFilename)
-    
-        else:
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/neato", "/usr/local/bin/neato", webqtlConfig.IMGDIR + filename, "-T", format, "-o", webqtlConfig.IMGDIR + imageFilename)
-
-        if neatoExit == 0:
-            return imageFilename
-        
-        return imageFilename
-
-
-    elif gType == "neato":
-    # to keep the output of neato from going to stdout, we open a pipe
-    # and then wait for it to terminate
-        if format in ('gif', 'cmapx', 'ps'):
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/neato", "/usr/local/bin/neato", "-s", "-T", format, webqtlConfig.IMGDIR + filename, "-o", webqtlConfig.IMGDIR + imageFilename)
-    
-        else:
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/neato", "/usr/local/bin/neato", webqtlConfig.IMGDIR + filename, "-T", format, "-o", webqtlConfig.IMGDIR + imageFilename)
-
-        if neatoExit == 0:
-            return imageFilename
-        
-        return imageFilename
-
-    elif gType == "circular":
-	
-        if format in ('gif', 'cmapx', 'ps'):
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/circo", "/usr/local/bin/circo", "-s", "-T", format, webqtlConfig.IMGDIR + filename, "-o", webqtlConfig.IMGDIR + imageFilename)
-        
-        else:
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/circo", "/usr/local/bin/circo", webqtlConfig.IMGDIR + filename, "-T", format, "-o", webqtlConfig.IMGDIR + imageFilename)
-
-        if neatoExit == 0:
-            return imageFilename
-        
-        return imageFilename
-
-    elif gType == "radial":
-	
-        if format in ('gif', 'cmapx', 'ps'):
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/twopi", "/usr/local/bin/twopi", "-s", "-T", format, webqtlConfig.IMGDIR + filename, "-o", webqtlConfig.IMGDIR + imageFilename)
-        
-        else:
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/twopi", "/usr/local/bin/twopi", webqtlConfig.IMGDIR + filename, "-T", format, "-o", webqtlConfig.IMGDIR + imageFilename)
-
-        if neatoExit == 0:
-            return imageFilename
-        
-        return imageFilename
-
-    elif gType == "fdp":
-
-        if format in ('gif', 'cmapx', 'ps'):
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/fdp", "/usr/local/bin/fdp", "-s", "-T", format, webqtlConfig.IMGDIR + filename, "-o", webqtlConfig.IMGDIR + imageFilename)
-        
-        else:
-            neatoExit = os.spawnlp(os.P_WAIT, "/usr/local/bin/fdp", "/usr/local/bin/fdp", webqtlConfig.IMGDIR + filename, "-T", format, "-o", webqtlConfig.IMGDIR + imageFilename)
-
-        if neatoExit == 0:
-            return imageFilename
-        
-        return imageFilename
-    
-
-    return imageFilename
-# runPsToPdf: string -> int -> intstring
-# to run Ps2Pdf to convert the given input postscript file to an 8.5 by 11
-# pdf file The width and height should be specified in inches. We assume
-# that the PS files output by GraphViz are 72 dpi.
-def runPsToPdf(psfile, width, height):
-    # we add 1 for padding b/c sometimes a small part of the graph gets
-    # cut off
-    newwidth = int((width + 1) * 720)
-    newheight = int((height + 1) * 720)
-
-    # replace the ps extension with a pdf one
-    pdffile = psfile[:-2] + "pdf"
-
-    os.spawnlp(os.P_WAIT, "ps2pdf", 
-               "-g%sx%s" % (newwidth, newheight),
-               webqtlConfig.IMGDIR + psfile, webqtlConfig.IMGDIR + pdffile)
-
-    return pdffile
-
-# buildParamDict: void -> ParamDict
-# to process and validate CGI arguments,
-# looking up human-readable names where necessary
-# see the comment at the top of the file for valid cgi parameters
-def buildParamDict(fs, sessionfile):
-    params = {}
-       
-    params["inputFile"] = fs.formdata.getvalue("inputFile", "")
-    params["progress"] = fs.formdata.getvalue("progress", "1")
-    params["filename"] = fs.formdata.getvalue("filename", "")
-    params["session"] = sessionfile
-    
-    if type("1") != type(fs.formdata.getvalue("searchResult")):
-        params["searchResult"] = string.join(fs.formdata.getvalue("searchResult"),'\t')
-    else:
-        params["searchResult"] = fs.formdata.getvalue("searchResult")
-        
-    params["riset"] = fs.formdata.getvalue("RISet", "")
-    #if params["filename"] == "":
-    #    raise nGraphException("Required parameter filename missing")
-   
-    #parameter determining whether export button returns an xgmml graph file or plain text file
-    params["exportFormat"] = fs.formdata.getvalue("exportFormat", "xgmml")
-    
-    #parameter determining whether or not traits in the graph file are listed by their symbol or name
-    params["traitType"] = fs.formdata.getvalue("traitType", "symbol")
-   
-    #parameter saying whether or not graph structure should be locked when you redraw the graph
-    params["lock"] = fs.formdata.getvalue("lock", "no")
-    
-    #parameter saying what algorithm should be used to draw the graph
-    params["gType"] = fs.formdata.getvalue("gType", "none")
-
-    params["kValue"] = webqtlUtil.safeFloat(fs.formdata.getvalue("kValue", "0.5"), 0.5)
-    params["whichValue"] = webqtlUtil.safeInt(fs.formdata.getvalue("whichValue","0"),0)
-    
-    # 1 inch = 2.54 cm
-    # 1 cm = 0.3937 inch
-    
-    params["width"] = webqtlUtil.safeFloat(fs.formdata.getvalue("width", "40.0"), 40.0)
-    params["height"] = webqtlUtil.safeFloat(fs.formdata.getvalue("height", "40.0"), 40.0)
-    
-    yesno = ["yes", "no"]
-    
-    params["tune"] = webqtlUtil.safeString(fs.formdata.getvalue("tune", "yes"), yesno, "yes")
-    
-    params["printIslands"] = webqtlUtil.safeInt(fs.formdata.getvalue("printIslands", "1"),1)
-    params["nodeshape"] = webqtlUtil.safeString(fs.formdata.getvalue("nodeshape","yes"), yesno, "yes")
-    params["nodelabel"] = webqtlUtil.safeString(fs.formdata.getvalue("nodelabel","no"), yesno, "no")
-    params["nfont"] = fs.formdata.getvalue("nfont","Arial")
-    params["nfontsize"] = webqtlUtil.safeFloat(fs.formdata.getvalue("nfontsize", "10.0"), 10.0)
-
-    params["splines"] = webqtlUtil.safeString(fs.formdata.getvalue("splines","yes"), yesno, "yes")    
-    params["dispcorr"] = webqtlUtil.safeString(fs.formdata.getvalue("dispcorr","no"), yesno, "no")
-    params["cfont"] = fs.formdata.getvalue("cfont","Arial")
-    params["cfontsize"] = webqtlUtil.safeFloat(fs.formdata.getvalue("cfontsize", "10.0"), 10.0)
-    
-    params["cPubName"] = fs.formdata.getvalue("cPubName","palegreen")
-    params["cMicName"] = fs.formdata.getvalue("cMicName","lightblue")
-    params["cGenName"] = fs.formdata.getvalue("cGenName","lightcoral")
-    
-    params["cPubColor"] = fs.formdata.getvalue("cPubColor","98fb98")
-    params["cMicColor"] = fs.formdata.getvalue("cMicColor","add8e6")
-    params["cGenColor"] = fs.formdata.getvalue("cGenColor","f08080")
-    
-    params["cL1Name"] = fs.formdata.getvalue("cL1Name","blue")
-    params["cL2Name"] = fs.formdata.getvalue("cL2Name","green")
-    params["cL3Name"] = fs.formdata.getvalue("cL3Name","black")
-    params["cL4Name"] = fs.formdata.getvalue("cL4Name","pink")
-    params["cL5Name"] = fs.formdata.getvalue("cL5Name","orange")
-    params["cL6Name"] = fs.formdata.getvalue("cL6Name","red")
-    
-    params["cL1Color"] = fs.formdata.getvalue("cL1Color","0000ff")
-    params["cL2Color"] = fs.formdata.getvalue("cL2Color","00ff00")
-    params["cL3Color"] = fs.formdata.getvalue("cL3Color","000000")
-    params["cL4Color"] = fs.formdata.getvalue("cL4Color","ffc0cb")
-    params["cL5Color"] = fs.formdata.getvalue("cL5Color","ffa500")
-    params["cL6Color"] = fs.formdata.getvalue("cL6Color","ff0000")
-    
-    params["L1style"] = fs.formdata.getvalue("L1style","bold")
-    params["L2style"] = fs.formdata.getvalue("L2style","")
-    params["L3style"] = fs.formdata.getvalue("L3style","dashed")
-    params["L4style"] = fs.formdata.getvalue("L4style","dashed")
-    params["L5style"] = fs.formdata.getvalue("L5style","")
-    params["L6style"] = fs.formdata.getvalue("L6style","bold")
-    
-    if params["splines"] == "yes":
-        params["splineName"] = "curves"
-    else:
-        params["splineName"] = "lines"
-        
-    if params["nodeshape"] == "yes":
-        params["nodeshapeType"] = "box"
-    else:
-        params["nodeshapeType"] = "ellipse"
-        
-    if params["whichValue"] == 0:
-        params["correlationName"] = "Pearson"
-    elif params["whichValue"] == 1:
-        params["correlationName"] = "Spearman"
-    elif params["whichValue"] == 2:
-        params["correlationName"] = "Literature"
-    else:
-        params["correlationName"] = "Tissue"
-
-    # see graphviz::writeNeatoFile to find out what this done
-    params["edges"] = "complex"
-    
-    return params        
-
-def optimalRadialNode(matrix):
-    """
-    Automatically determines the node with the most/strongest correlations with 
-    other nodes. If the user selects "radial" for Graph Type and then "Auto" for the
-    central node then this node is used as the central node. The algorithm is simply a sum of 
-    each node's correlations that fall above the threshold set by the user.
-    """
-    
-    optMatrix = [0]*(len(matrix)+1)
-    
-    for pt in matrix:
-	 if abs(pt.value) > 0.5:
-            optMatrix[pt.i] += abs(pt.value)
-            optMatrix[pt.j] += abs(pt.value)
-    
-    optPoint = 0
-    optCorrTotal = 0
-    
-    j = 0
-    
-    for point in optMatrix:
-        if (float(point) > float(optCorrTotal)):
-            optPoint = j
-            optCorrTotal = point
-        j += 1
-    
-    
-    return optPoint    
-    
-# filterDataMatrix : DataMatrix -> ParamDict -> DataMatrix
-def filterDataMatrix(matrix, p):
-    """
-    To convert a set of input RawPoints to a set of
-    ProcessedPoints and to choose the appropriate
-    correlation coefficent.
-    """
-    newmatrix = []
-    for pt in matrix:
-        pt2 = ProcessedPoint(pt.i, pt.j) # XZ, 09/11/2008: add module name
-        
-        # pick right value
-        if p["whichValue"] == 0:
-            pt2.value = pt.pearson
-        elif p["whichValue"] == 1:
-            pt2.value = pt.spearman
-        elif p["whichValue"] == 2:
-            pt2.value = pt.literature
-        elif p["whichValue"] == 3:
-            pt2.value = pt.tissue
-        else:
-            raise nGraphException("whichValue should be either 0, 1, 2 or 3")
-
-        try:
-            pt2.value = float(pt2.value)
-        except:
-            pt2.value = 0.00
-
-        newmatrix.append(pt2)
-        
-        
-
-    return newmatrix
-   
-def generateSymbolList(traits):
-    """ 
-    Generates a list of trait symbols to be displayed in the central node 
-    selection drop-down menu when plotting a radial graph
-    """
-        
-    traitList = traits
-    
-    symbolList = [None]*len(traitList)
-    
-    i=0
-    for trait in traitList:
-        symbolList[i] = str(trait.symbol)
-        i = i+1
-        
-    symbolListString = "\t".join(symbolList)
-    
-    return symbolListString       
-