def processDataAndCreateEntities(): global amtTransObjDict, entityList, transactList sortedTransactionDict = cl.OrderedDict( reversed(sorted(amtTransObjDict.items()))) print sortedTransactionDict.keys() print sortedTransactionDict.__len__() topTenPercent = sortedTransactionDict.__len__() * 0.005 print topTenPercent listRequired = list(sortedTransactionDict) print listRequired[0] elm = 0 addressEntityMap = {} while (topTenPercent > 1): keyVal = listRequired[elm] ElementList = sortedTransactionDict[keyVal] for Element in ElementList: addrInp = Element[0] adrO = Element[1] # print "Inputs ----------------------" flag = 0 list = [] foundAddress = [] sourceEntity = None sinkEntity = None for adrI in addrInp: if (adrI.address not in list): list.append(adrI.address) if (adrI.address in addressEntityMap.keys()): flag = 1 foundAddress.append(adrI.address) if (flag == 0): sourceEntity = Entity(list) entityList.append(sourceEntity) for element in list: addressEntityMap[element] = sourceEntity else: Elist = [] for eachAddr in foundAddress: if (addressEntityMap[eachAddr] not in Elist): Elist.append(addressEntityMap[eachAddr]) parentEntity = Elist[0] for addr in list: if addr not in parentEntity.getAddrList(): parentEntity.addAddress(addr) addressEntityMap[addr] = parentEntity if (Elist.__len__() > 1): for ent in Elist[1:]: addrHold = ent.getAddrList() inTrans = ent.getInTransact() outTrans = ent.getOutTransact() for addr in addrHold: parentEntity.addAddress(addr) addressEntityMap[addr] = parentEntity for inT in inTrans: inT.updateDest(parentEntity) parentEntity.addInTransact(inT) for outT in outTrans: outT.updateOrigin(parentEntity) parentEntity.addOutTransact(outT) entityList.remove(ent) sourceEntity = parentEntity # v1 = g.add_vertex() # entityAddr[v1] = list # print "Outputs ----------------------" # v2 = g.add_vertex() if (adrO.address in addressEntityMap.keys()): sinkEntity = addressEntityMap[adrO.address] else: sinkEntity = Entity([adrO.address]) entityList.append(sinkEntity) addressEntityMap[adrO.address] = sinkEntity transactObj = Transaction(sourceEntity, sinkEntity, adrO.value) sourceEntity.addOutTransact(transactObj) sinkEntity.addInTransact(transactObj) transactList.append(transactObj) # entityAddr[v2] = [adrO.address] # edgeTrans = g.add_edge(v1, v2) # edgeWeight[edgeTrans] = adrO.value # transactionHashValue[edgeTrans] = transObj.hash print elm elm += 1 topTenPercent -= 1