aboutsummaryrefslogtreecommitdiff
path: root/web/webqtl/heatmap/slink.py
diff options
context:
space:
mode:
Diffstat (limited to 'web/webqtl/heatmap/slink.py')
-rwxr-xr-xweb/webqtl/heatmap/slink.py141
1 files changed, 0 insertions, 141 deletions
diff --git a/web/webqtl/heatmap/slink.py b/web/webqtl/heatmap/slink.py
deleted file mode 100755
index 3de41de4..00000000
--- a/web/webqtl/heatmap/slink.py
+++ /dev/null
@@ -1,141 +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
-
-#--Only imported by correlationPage.py.
-#
-#Functions:
-#slink(lists) -- the only function called outside of this file.
-#nearest(lists,i,j) -- some sort of recursive function.
-#printarray(array,n) -- prints n elements of the given array
-#this is a myseterious piece of code in GN that Kev Adler and Rob Williams do not understand.
-#but is used in some way by the Traits Correlation function
-#Kev and Rob suspect that the d2 matrix below is unused
-#We do not understand the signifance of "d" but Kev suspects it is unimportant
-#These comments by Kev and Rob: May 23, 2008
-
-d = [[0,9,3,6,11],[9,0,7,5,10],[3,7,0,9,2],[6,5,9,0,8],[11,10,2,8,0]]
-d2 = [[0,9,5.5,6,11],[9,0,7,5,10],[5.5,7,0,9,2],[6,5,9,0,3],[11,10,2,3,0]]
-
-def nearest(lists,i,j):
- if type(i) == type(1) and type(j) == type(1):
- return lists[i][j]
- elif type(i) == type(1):
- dist = 1e10
- for itemj in j[:-1]:
- d = nearest(lists,i,itemj)
- if dist > d:
- dist = d
- elif type(j) == type(1):
- dist = 1e10
- for itemi in i[:-1]:
- d = nearest(lists,itemi,j)
- if dist > d:
- dist = d
- else:
- dist = 1e10
- for itemi in i[:-1]:
- for itemj in j[:-1]:
- d = nearest(lists,itemi,itemj)
- if dist > d:
- dist = d
- return dist
-
-def printarray(array,n):
- print "\n"
- for i in range(n):
- print array[i][:n]
- print "\n"
-
-def slink(lists):
- try:
- if type(lists) != type([]) and type(lists) != type(()):
- raise 'FormatError'
- else:
- size = len(lists)
- for item in lists:
- if type(item) != type([]) and type(item) != type(()):
- raise 'FormatError'
- else:
- if len(item) != size:
- raise 'LengthError'
- for i in range(size):
- if lists[i][i] != 0:
- raise 'ValueError'
- for j in range(0,i):
- if lists[i][j] < 0:
- raise 'ValueError'
- if lists[i][j] != lists[j][i]:
- raise 'MirrorError'
- except 'FormatError':
- print "the format of the list is incorrect!"
- return []
- except 'LengthError':
- print "the list is not a square list!"
- return []
- except 'MirrorError':
- print "the list is not symmetric!"
- return []
- except 'ValueError':
- print "the distance is negative value!"
- return []
- except:
- print "Unknown Error"
- return []
- listindex = range(size)
- listindexcopy = range(size)
- listscopy = []
- for i in range(size):
- listscopy.append(lists[i][:])
- initSize = size
- candidate = []
- while initSize >2:
- mindist = 1e10
- for i in range(initSize):
- for j in range(i+1,initSize):
- if listscopy[i][j] < mindist:
- mindist = listscopy[i][j]
- candidate=[[i,j]]
- elif listscopy[i][j] == mindist:
- mindist = listscopy[i][j]
- candidate.append([i,j])
- else:
- pass
- newmem = (listindexcopy[candidate[0][0]],listindexcopy[candidate[0][1]],mindist)
- listindexcopy.pop(candidate[0][1])
- listindexcopy[candidate[0][0]] = newmem
-
- initSize -= 1
- for i in range(initSize):
- for j in range(i+1,initSize):
- listscopy[i][j] = nearest(lists,listindexcopy[i],listindexcopy[j])
- listscopy[j][i] = listscopy[i][j]
- #print listindexcopy
- #printarray(listscopy,initSize)
- listindexcopy.append(nearest(lists,listindexcopy[0],listindexcopy[1]))
- return listindexcopy
-
-
-