Example #1
0
 def __init__(self,
              filenames,
              factors,
              maxdistances,
              twoway,
              impedances=None,
              flatten_nodeids=False):
     if not filenames: return
     from pyaccess.pyaccess import PyAccess
     self.pya = PyAccess()
     self.pya.createGraphs(len(filenames))
     if impedances is None: impedances = [None] * len(filenames)
     self.nodeids = []
     self.external_nodeids = []
     for num,filename,factor,maxdistance,twoway,impedance in \
                    zip(range(len(filenames)),filenames,factors,maxdistances,twoway,impedances):
         net = cPickle.load(open(filename))
         if impedance is None: impedance = "net['edgeweights']"
         impedance = eval(impedance)
         self.pya.createGraph(num,
                              net['nodeids'],
                              net['nodes'],
                              net['edges'],
                              impedance * factor,
                              twoway=twoway)
         if len(filenames) == 1 and flatten_nodeids:
             self.nodeids = net['nodeids']
         else:
             self.nodeids += zip(
                 [num] * len(net['nodeids']),
                 range(len(net['nodeids'])))  # these are the internal ids
         self.external_nodeids.append(net['nodeids'])
         self.pya.precomputeRange(maxdistance, num)