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)