Changeset 1197


Ignore:
Timestamp:
05/02/09 16:21:51 (3 years ago)
Author:
Peter Peterson
Message:

Reworked buildtree to make accessing individual nodes faster. Refs #158.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/applications/nxdiff

    r1194 r1197  
    3838def getPercentDiff(left, right, nandiff=float("nan")): 
    3939    return 100. * numpy.fabs((left-right)/left) 
    40  
    41     if isNaN(left): 
    42         if isNaN(right): 
    43             return 0. 
    44         else: 
    45             return nandiff 
    46     else: 
    47         if isNaN(right): 
    48             return nandiff 
    49         else: 
    50             try: 
    51                 return 100. * math.fabs((left - right)/left) 
    52             except ZeroDivisionError: 
    53                 return NAN 
    5440 
    5541class Diff: 
     
    173159        self.__paths = self.__getPaths() 
    174160        self.__paths.sort() 
    175  
    176     def __getPaths(self, path="", **kwargs): 
    177         try: 
    178             parenttype = kwargs["parenttype"] 
    179         except KeyError: 
    180             parenttype = None 
     161        while '/' in self.__paths: 
     162            del self.__paths[self.__paths.index('/')] 
     163 
     164    def __getPaths(self, **kwargs): 
    181165        result = [] 
    182         self.__nxs.initgroupdir() 
    183         entry = self.__nxs.getnextentry() 
    184         while entry[0] is not None and entry[1] is not None: 
    185             myPath = "%s/%s" % (path, entry[0]) 
    186             if entry[1] == "SDS": 
    187                 if self.__ignorenotes and parenttype == "NXnote": 
    188                     if entry[0] == "author" or entry[0] == "date": 
    189                         pass 
    190                     else: 
    191                         result.append(myPath) 
    192                 elif self.__ignorets and entry[0] == "SNStranslation_service": 
    193                     pass 
    194                 elif self.__ignorelinks: 
    195                     self.__nxs.opendata(entry[0]) 
    196                     attrs = getAttrs(self.__nxs) 
    197                     self.__nxs.closedata() 
    198                     try: 
    199                         target = attrs["target"] 
    200                         if myPath == target: 
    201                             result.append(myPath) 
    202                     except KeyError: 
    203                         result.append(myPath) 
    204                 else: 
    205                     result.append(myPath) 
     166        #result.append(self.__nxs.longpath) # add the groups to the tree 
     167        parent = self.__nxs.longpath.split('/')[-1] 
     168        listing = self.__nxs.getentries() 
     169        for name in listing.keys(): 
     170            nxclass = listing[name] 
     171            if nxclass == "SDS": 
     172                if self.__ignorenotes and parent.endswith("NXnote"): 
     173                    if name == "author" or name == "date": 
     174                        continue 
     175                elif self.__ignorets and name == "SNStranslation_service": 
     176                    continue 
     177                self.__nxs.opendata(name) 
     178                attrs = self.__nxs.getattrs() 
     179                longpath = self.__nxs.longpath 
     180                shortpath = self.__nxs.path 
     181                self.__nxs.closedata() 
     182                if self.__ignorelinks and attrs.has_key("target"): 
     183                    target = attrs["target"] 
     184                    if target != shortpath: 
     185                        continue 
     186                result.append(longpath) 
    206187            else: 
    207                 self.__nxs.opengroup(entry[0], entry[1]) 
    208                 result.extend(self.__getPaths(myPath, parenttype=entry[1])) 
     188                self.__nxs.opengroup(name,nxclass) 
     189                result.extend(self.__getPaths()) 
    209190                self.__nxs.closegroup() 
    210             entry = self.__nxs.getnextentry() 
    211191        return result 
    212192 
Note: See TracChangeset for help on using the changeset viewer.