1 import csv
2 import os
3 import types
4
5 decimals = 1
6
8 for dict in dicts:
9 keys = set()
10 for key in dict.keys():
11 keys.add(key)
12 keys = list(keys)
13 keys.sort()
14 keyDict = {}
15 for key in keys:
16 keyDict[key] = key
17 return (keys, keyDict)
18
19 -def addToCSV(dict, filename, fieldnames=None):
20 rows = []
21 writeTitles = True
22 if os.path.exists(filename):
23 rows = readCSV(filename, fieldnames)
24 if len(rows) > 0:
25 writeTitles = False
26 if not isinstance(dict, list):
27 dict = [dict]
28 writeCSV(rows+dict, filename, fieldnames, writeTitles)
29
31 selected = []
32 for row in rows:
33 for key in conditions.keys():
34 exists = row.has_key(key) and row[key] == conditions[key]
35 if invert: exists = not exists
36 if exists:
37 selected.append(row)
38 return selected
39
41 values = set()
42 for row in rows:
43 if row.has_key(column):
44 values.add(row[column])
45 return values
46
48 newRows = []
49 for row in rows:
50 newRow = {}
51 for k in row.keys():
52 value = row[k]
53 key = k
54 if key in dict.keys():
55 key = dict[key]
56 newRow[key] = value
57 newRows.append(newRow)
58 return newRows
59
61 newRows = []
62 for row in rows:
63 newRow = {}
64 for k in row.keys():
65 value = row[k]
66 key = k
67 if key not in keys:
68 newRow[key] = value
69 newRows.append(newRow)
70 return newRows
71
72 -def writeCSV(dict, filename, fieldnames=None, writeTitles=True):
73 if not isinstance(dict, list):
74 dict = [dict]
75 if fieldnames == None:
76 keys, keyDict = getKeys(dict)
77 else:
78 keys = fieldnames
79 keyDict = {}
80 for key in fieldnames:
81 keyDict[key] = key
82 csvFile = open(filename, "wb")
83 writer = csv.DictWriter(csvFile, fieldnames=keys)
84 if writeTitles:
85 writer.writerow(keyDict)
86 for row in dict:
87 writer.writerow(row)
88 csvFile.close()
89
90 -def readCSV(filename, fieldnames=None):
91 csvFile = open(filename, "rb")
92 reader = csv.DictReader(csvFile, fieldnames=fieldnames)
93 rows = []
94 while True:
95 try:
96 row = reader.next()
97 rows.append(row)
98 except StopIteration:
99 break
100 csvFile.close()
101 return rows
102
104 try:
105 floatValue = float(data)
106 try:
107 intValue = int(data)
108 if floatValue != float(intValue):
109 return floatValue
110 else:
111 return intValue
112 except:
113 return floatValue
114 except:
115 return data
116
122
129
132
133 -def writeLatex(dict, filename, keys = None, empty=" ", layout=None, extraHeaderLines=None):
134 if layout == None:
135 layout = layoutLatex
136
137 if not isinstance(dict, list):
138 dict = [dict]
139 if keys == None:
140 keys = getKeys(dict)[0]
141
142 file = open(filename, "wt")
143 file.write("% This file is generated by JariSandbox/ComplexPPI/Source/Utils/TableUtils.py\n")
144 file.write("% DO NOT edit manually, as your changes WILL BE OVERWRITTEN!\n")
145
146 file.write("\\begin{tabular}{ | c | ")
147 for key in keys:
148 file.write(" c |")
149 file.write( "}\n")
150 file.write("\\hline\n")
151
152
153 if extraHeaderLines != None:
154 for line in extraHeaderLines:
155 file.write(line+"\n")
156
157
158 isFirst = True
159 keyDict = {}
160 for key in keys:
161 keyDict[key] = key
162 for key in keys:
163 if isFirst:
164 file.write(layout(keyDict, key))
165 isFirst = False
166 else:
167 file.write(" & " + layout(keyDict, key))
168 file.write(" \\\\\n")
169 file.write("\\hline\n")
170 for row in dict:
171 isFirst = True
172 if type(row) == types.StringType:
173 file.write(row)
174 else:
175 for key in keys:
176 if not isFirst:
177 file.write(" & ")
178 else:
179 isFirst = False
180 if row.has_key(key):
181 file.write(layout(row, key))
182 else:
183 file.write(empty)
184 file.write(" \\\\\n")
185
186
187
188 file.write("\\hline\n")
189 file.write("\\end{tabular}\n")
190 file.close()
191