508483858c31f75ef527d75de66c0aadf0be8574
mmaddren
  Thu Feb 17 15:45:29 2011 -0800
updated rafile and first pass on raInspect
diff --git python/ucscgenomics/rafile/raInspect.py python/ucscgenomics/rafile/raInspect.py
new file mode 100644
index 0000000..189e6e5
--- /dev/null
+++ python/ucscgenomics/rafile/raInspect.py
@@ -0,0 +1,72 @@
+import sys
+import re
+import raFile
+import filterFile
+
+path = sys.argv[1]
+fname = sys.argv[2]
+filter = list()
+
+filter = filterFile.FilterFile()
+filter.read(fname, '_name')
+
+ra = raFile.RaFile()
+ra.read(path, 'term')
+newra = raFile.RaFile()
+
+# create a dictionary to keep track of which RaEntries have what terms
+keyDict = dict()
+for entry in ra.iterValues():
+    for elem in entry.iterKeys():
+        if elem not in keyDict:
+            keyDict[elem] = list()
+        keyDict[elem].append(entry.getValueAt(0))
+
+cellDict = dict()
+for entry in ra.iterValues():
+    elem = entry.getValue('cell')
+    if elem not in keyDict:
+        cellDict[elem] = list()
+    cellDict[elem].append(entry.getValueAt(0))
+
+#print cellDict
+
+# create a dictionary to keep track of what entries match what filters
+matchDict = dict()
+for entry in ra.iterValues():
+    matchDict[entry.getValueAt(0)] = list()
+
+# a dictionary to keep track of user made groups based on filter matches
+groupDict = dict()
+
+for i in range(ra.count()):
+    
+    r = ra.getValueAt(i)
+    for j in range(filter.count()):
+
+        match = True
+        f = filter.getValueAt(j) 
+        print f
+        for k in f:
+            if k[0].startswith('_'):
+                continue
+            print k
+            print k[1] + ', ' + str(r.getValue(k[0]))
+            if r.getValue(k[0]) == None or not re.match(k[1], r.getValue(k[0])):
+                match = False
+                break
+
+        if match == True:
+            newra.add(ra.getKeyAt(i), r)
+            matchDict[f[0][1]].append(ra.getKeyAt(i))
+
+            for m in f.Match:
+                if m[1] == 'add':
+                    groupDict[m[0]].append(ra.getKeyAt(i))
+                elif m[1] == 'remove':
+                    groupDict[m[0]].remove(ra.getKeyAt(i))
+
+            break
+
+print matchDict
+#newra.write()