Package TEES :: Package Utils :: Package InteractionXML :: Module RemoveDuplicateDependencies
[hide private]

Source Code for Module TEES.Utils.InteractionXML.RemoveDuplicateDependencies

 1  import sys, os 
 2  try: 
 3      import xml.etree.cElementTree as ET 
 4  except ImportError: 
 5      import cElementTree as ET 
 6  import Utils.ElementTreeUtils as ETUtils 
 7   
 8  if __name__=="__main__": 
 9      from optparse import OptionParser 
10      optparser = OptionParser(usage="%prog [options]\n") 
11      optparser.add_option("-i", "--input", default=None, dest="input", help="File from which is read the XML-structure from which elements are copied", metavar="FILE") 
12      optparser.add_option("-o", "--output", default=None, dest="output", help="The file to which the new XML structure is saved. If None, will be the same as target.", metavar="FILE") 
13      (options, args) = optparser.parse_args() 
14   
15      print >> sys.stderr, "Loading input file", options.input 
16      sourceTree = ET.parse(options.input) 
17      sourceRoot = sourceTree.getroot() 
18       
19      print >> sys.stderr, "Removing dependencies" 
20      parsesElements = sourceRoot.getiterator("parses") 
21      for parsesElement in parsesElements: 
22          for parseElement in parsesElement.findall("parse"): 
23              dependencies = parseElement.findall("dependency") 
24              toRemove = [False] * len(dependencies) 
25              for i in range(0, len(dependencies)-1): 
26                  for j in range(i+1, len(dependencies)): 
27                      di = dependencies[i] 
28                      dj = dependencies[j] 
29                      if di.attrib["type"] == dj.attrib["type"] and di.attrib["t1"] == dj.attrib["t1"] and di.attrib["t2"] == dj.attrib["t2"]: 
30                          toRemove[j] = True 
31              count = 0 
32              for i in range(0, len(dependencies)): 
33                  if toRemove[i]: 
34                      parseElement.remove(dependencies[i]) 
35                      count += 1 
36              print >> sys.stderr, "Parse:", parseElement.attrib["parser"], "Removed:", count 
37       
38      print >> sys.stderr, "Writing output", options.output 
39      ETUtils.write(sourceRoot, options.output) 
40