Commit eab8c906 authored by Bogdan's avatar Bogdan

Created Test (Assertion) + other minor changes

parent 3b390ffb
......@@ -4,3 +4,5 @@
*.log
**/env
**/venv
src/data-hub/role-stage-discovery-microservice/app/resultSimilarityDictN14992C221.json
......@@ -328,36 +328,51 @@ definitions:
type: string
example: "5efdc04ac43add0aba567d76"
cluster_containedNodesDict:
$ref: "#/definitions/ConnectedNode"
type: array
items:
type: string
example: "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568"
cluster_connNodesDict:
$ref: "#/definitions/ConnectedNode"
type: array
items:
$ref: "#/definitions/ConnectedNode"
cluster_connClustDict:
type: object
additionalProperties:
type: number
example:
"cluster_label": nrOfConnectedNodes
#"-1": 42
"0": 39
"6969": 1
type: array
items:
$ref: "#/definitions/ConnectedClusterAux"
#not used, should be removed?
#cluster_connectionsNr
ConnectedClusterAux:
type: object
properties:
cluster_label:
type: string
example: "-1"
cluster_layer:
type: string
example: "FinishedTime_Layer"
connectionWeight:
type: number
example: 42
ConnectedNode:
type: object
properties:
cluster_label:
node_id:
type: string
node_layer:
node_cluster:
type: string
uniqueID:
node_layer:
type: string
example:
"cluster_label": "2230"
"node_id": "27a08ed0facc7d68a0818c7695dad391cf48d6095e57ec9159bc0668543f159b"
"node_cluster": "2230"
"node_layer": "Destination_Layer"
"uniqueID": "a95075f5042b1b27060080156d87"
#not used, should be removed?
#finished_time
#latitude_Destination
......@@ -373,18 +388,16 @@ definitions:
ClusterSimilarityDictionary:
properties:
clusterTuple:
type: array
items:
type: string
minItems: 2
maxItems: 2
example: [
#cluster_label1
0,
#cluster_label2
319
]
cluster1_label:
type: string
example: "0"
cluster2_label:
type: string
example: "1"
cluster_layer:
type: string
example: "Price_layer"
similarityValues:
type: object
additionalProperties:
......
......@@ -7,7 +7,7 @@ class ClusterC:
:param cluster_layer: The layer name of the 'source' cluster
:param cluster_runId: The run which calculated the connections
:param cluster_containedNodesDict: Ids of nodes contained in the 'source' cluster
:param cluster_connNodesDict: Ids of nodes contained in 'dest' clusters, where the 'dest' cluster is uniquely identifiable by layer name and cluster label
:param cluster_connNodesDict: Node Objects contained in 'dest' clusters, where the 'dest' cluster is uniquely identifiable by layer name and cluster label
:param cluster_connClustDict: Layer name, cluster label and weight for each 'dest' cluster
'''
......@@ -16,7 +16,6 @@ class ClusterC:
self.cluster_label = cluster_label
self.cluster_layer = cluster_layer
self.cluster_runId = cluster_runId
self.cluster_containedNodesDict = cluster_containedNodesDict ###RENAME TO curClNodesDict #Keys are frozensets(touples) uniqueID and cluster #
self.cluster_connNodesDict = cluster_connNodesDict #Keys are frozensets(touples) uniqueID and cluster #problem if you remove newNodes and oldNodes lists.. there may be duplicates
self.cluster_connClustDict = cluster_connClustDict #dictionary: layer -> (dict2: cluster_label -> nrOfConnections ) OR dictionary: cluster_label -> nrOfConnections
#cluster_connClustDict ------> look at both newNodes and oldNodes
self.cluster_containedNodesDict = cluster_containedNodesDict #Keys are frozensets(touples) == frozenset(uniqueID, cluster and layer) Value is the Node UniqueId
self.cluster_connNodesDict = cluster_connNodesDict #Keys are frozensets(touples) (uniqueID:str,node_cluster:str,node_layer:str) Values are NodeC Objects
self.cluster_connClustDict = cluster_connClustDict #dictionary: (dict[(cluster_label,clusterlayer)] -> nrOfConnections/weightOfTheConnection )
class LayerC:
def __init__(self,layer_name,cluster_Dict):
self.layer_name = layer_name
self.cluster_Dict = cluster_Dict
\ No newline at end of file
def __init__(self,layer_name:str,cluster_Dict):
'''
This class represents the Layer which contains the connected clusters.
:param layer_name: The layer name which contains the clusters
:param cluster_Dict: The connected_clusters contained in this layer.
'''
self.layer_name = layer_name
self.cluster_Dict = cluster_Dict # Dict[cluster_label] --> ClusterC object
\ No newline at end of file
class NodeC:
'''
This class represents the Node data contained in a Cluster.
:param node_layer: The layer name which contains the node
:param node_cluster: The connected_cluster.cluster_label which contains in this layer.
:param uniqueID: Id of the node. Only unique in inside a single cluster. NOT unique between multiple clusters/layers.
'''
def __init__(self, cluster_label, node_layer, uniqueID):
self.cluster_label = cluster_label
self.node_layer = node_layer
self.uniqueID = uniqueID
\ No newline at end of file
def __init__(self, node_cluster, node_layer, uniqueID):
self.node_cluster = node_cluster # str
self.node_layer = node_layer # str
self.uniqueID = uniqueID # str
\ No newline at end of file
from datetime import datetime
class ConnectedRun:
'''
This class represents the RunId and Time when the Connecting of the Clusters and Calculating the Similarity between clusters is executed.
:param run_id: The MongoDB _id of the Run to uniquely identify it.
:param timeOfExec: Datetime object containing info when the run was finished.
'''
def __init__(self,run_id,timeOfExec):
self.run_id = run_id
self.timeOfExec = timeOfExec
\ No newline at end of file
......@@ -14,6 +14,7 @@ LOGGER = logging.getLogger(__name__)
#############################
import connexion
# load swagger config
app = connexion.App(__name__, specification_dir='configs/')
app.add_api('swagger.yml')
......
......@@ -29,13 +29,18 @@ def minMaxFunction(iIndex,jIndex,clusterList) -> Dict[str,int]:
#calculate th
for curCluster in clusterList: #jCluster.cluster_layer == iCluster.cluster_layer, so i only compare to one
iClusterTuple = (iCluster.cluster_label,iCluster.cluster_layer)
jClusterTuple = (jCluster.cluster_label,jCluster.cluster_layer)
#iClusterKey = frozenset(iClusterTuple)
#jClusterKey = frozenset(jClusterTuple)
curLayer = curCluster.cluster_layer
if(( curLayer != iCluster.cluster_layer)
and ( curCluster.cluster_connClustDict.__contains__(iCluster.cluster_label))
and ( curCluster.cluster_connClustDict.__contains__(jCluster.cluster_label))):
and ( curCluster.cluster_connClustDict.__contains__(iClusterTuple))
and ( curCluster.cluster_connClustDict.__contains__(jClusterTuple))):
# min part
curMin = min(curCluster.cluster_connClustDict[iCluster.cluster_label],curCluster.cluster_connClustDict[jCluster.cluster_label])
curMin = min(curCluster.cluster_connClustDict[iClusterTuple],curCluster.cluster_connClustDict[jClusterTuple])
if(outputDict.__contains__(curLayer) == False):
outputDict[curLayer]= curMin
else: # max part
......@@ -68,28 +73,32 @@ def calcEuclideanDist(iIndex,jIndex,clusterList) -> Dict[str,float]:
#calculate the distance //paralelizable
for curCluster in clusterList: #jCluster.cluster_layer == iCluster.cluster_layer, so i only compare to one
iClusterTuple = (iCluster.cluster_label,iCluster.cluster_layer)
jClusterTuple = (jCluster.cluster_label,jCluster.cluster_layer)
#iClusterKey = frozenset(iClusterTuple)
#jClusterKey = frozenset(jClusterTuple)
curLayer = curCluster.cluster_layer
#considering only clusters from other layers for distance calc
if( curLayer != iCluster.cluster_layer):
######BUUUG, WHAT IF THEY DON'T SHARE A CONNECTION?
###### if in a layer both cluster don't have a connection --> distance of 0. Identical in regard to that layer. correct or false?
iVal = 0
jVal = 0
connectedClusters = False
if(curCluster.cluster_connClustDict.__contains__(iCluster.cluster_label)):
iVal = curCluster.cluster_connClustDict[iCluster.cluster_label]
if(curCluster.cluster_connClustDict.__contains__(iClusterTuple)):
iVal = curCluster.cluster_connClustDict[iClusterTuple]
connectedClusters = True
if(curCluster.cluster_connClustDict.__contains__(jCluster.cluster_label)):
jVal = curCluster.cluster_connClustDict[jCluster.cluster_label]
if(curCluster.cluster_connClustDict.__contains__(jClusterTuple)):
jVal = curCluster.cluster_connClustDict[jClusterTuple]
connectedClusters = True
if (connectedClusters == False):
#clusters aren't connected => assign the max int value if there are no prior elements in list
if(outputDict.__contains__(curLayer) == False):
outputDict[curLayer]= 2147483647 #notConnected
outputDict[curLayer]= 2147483647 #notConnected to that particular layer at all
else:
#clusters ARE connected => add the squares part of the euclid distance to the value of the similarity
if(outputDict.__contains__(curLayer) == False):
......@@ -140,10 +149,10 @@ def calculateSimilarity(inputLayerDict):
while ( j<len(clusterList)):
jCluster = clusterList[j]
if (iCluster.cluster_layer == jCluster.cluster_layer): #calculate similarity only from the same layer
tuplekey = (clusterList[i].cluster_label,clusterList[j].cluster_label)
key = frozenset(tuplekey)
tuplekey = (clusterList[i].cluster_label,clusterList[j].cluster_label,iCluster.cluster_layer)
#### EUCLIDEAN DISTANCE /minMax
similarityDict[key]=calcEuclideanDist(i,j,clusterList)
similarityDict[tuplekey]=calcEuclideanDist(i,j,clusterList)
#print("#### similarityDict i:"+str(i)+" j:"+str(j))
#print("#### "+str(similarityDict))
......
......@@ -7,7 +7,7 @@ def sortFunctByNode(node):
try :
return node.uniqueID
except:
print(node.cluster_label)
print(node.node_cluster)
print(node.node_layer)
print(node.uniqueID)
......@@ -55,35 +55,37 @@ def calculateWeights(inputLayerDict) -> Dict[str,LayerC]:
#Compute a connection
if (iNode.node_layer != jNode.node_layer) and (iNode.uniqueID == jNode.uniqueID):
iOldTuple = (iNode.uniqueID,iNode.cluster_label)
jOldTuple= (jNode.uniqueID,jNode.cluster_label)
iOldKey = frozenset(iOldTuple)
jOldKey = frozenset(jOldTuple)
#iForeignKey =
#jForeignKey =
iNodeTuple = (iNode.uniqueID,iNode.node_cluster,iNode.node_layer)
jNodeTuple= (jNode.uniqueID,jNode.node_cluster,jNode.node_layer)
iNodeKey = frozenset(iNodeTuple)
jNodeKey = frozenset(jNodeTuple)
iClusterTuple = (iNode.node_cluster,iNode.node_layer)
jClusterTuple = (jNode.node_cluster,jNode.node_layer)
#iClusterKey = frozenset(iClusterTuple)
#jClusterKey = frozenset(jClusterTuple)
#Check if old node dicts has this node: if not add to ConnDictionary and to OldNodesDict
# Layer . Cluster . OldNodesDict . Does not contain the OTHER node
if (inputLayerDict[iNode.node_layer].cluster_Dict[iNode.cluster_label].cluster_connNodesDict.__contains__(jOldKey) == False):
if (inputLayerDict[iNode.node_layer].cluster_Dict[iNode.node_cluster].cluster_connNodesDict.__contains__(jNodeKey) == False):
#add node j at cluster i
if (inputLayerDict[iNode.node_layer].cluster_Dict[iNode.cluster_label].cluster_connClustDict.__contains__(jNode.cluster_label)):
inputLayerDict[iNode.node_layer].cluster_Dict[iNode.cluster_label].cluster_connClustDict[jNode.cluster_label]+=1
if (inputLayerDict[iNode.node_layer].cluster_Dict[iNode.node_cluster].cluster_connClustDict.__contains__(jClusterTuple)):
inputLayerDict[iNode.node_layer].cluster_Dict[iNode.node_cluster].cluster_connClustDict[jClusterTuple]+=1
else:
inputLayerDict[iNode.node_layer].cluster_Dict[iNode.cluster_label].cluster_connClustDict[jNode.cluster_label]=1
inputLayerDict[iNode.node_layer].cluster_Dict[iNode.node_cluster].cluster_connClustDict[jClusterTuple]=1
#add node to old nodes
inputLayerDict[iNode.node_layer].cluster_Dict[iNode.cluster_label].cluster_connNodesDict[jOldKey]=jNode
inputLayerDict[iNode.node_layer].cluster_Dict[iNode.node_cluster].cluster_connNodesDict[jNodeKey]=jNode
if (inputLayerDict[jNode.node_layer].cluster_Dict[jNode.cluster_label].cluster_connNodesDict.__contains__(iOldKey) == False):
if (inputLayerDict[jNode.node_layer].cluster_Dict[jNode.node_cluster].cluster_connNodesDict.__contains__(iNodeKey) == False):
#add node i at cluster j
if (inputLayerDict[jNode.node_layer].cluster_Dict[jNode.cluster_label].cluster_connClustDict.__contains__(iNode.cluster_label)):
inputLayerDict[jNode.node_layer].cluster_Dict[jNode.cluster_label].cluster_connClustDict[iNode.cluster_label]+=1
if (inputLayerDict[jNode.node_layer].cluster_Dict[jNode.node_cluster].cluster_connClustDict.__contains__(iClusterTuple)):
inputLayerDict[jNode.node_layer].cluster_Dict[jNode.node_cluster].cluster_connClustDict[iClusterTuple]+=1
else:
inputLayerDict[jNode.node_layer].cluster_Dict[jNode.cluster_label].cluster_connClustDict[iNode.cluster_label]=1
inputLayerDict[jNode.node_layer].cluster_Dict[jNode.node_cluster].cluster_connClustDict[iClusterTuple]=1
#add node to old nodes
inputLayerDict[jNode.node_layer].cluster_Dict[jNode.cluster_label].cluster_connNodesDict[iOldKey]=iNode
inputLayerDict[jNode.node_layer].cluster_Dict[jNode.node_cluster].cluster_connNodesDict[iNodeKey]=iNode
j+=1
i+=1
......
......@@ -8,15 +8,15 @@ from typing import Dict
#from db.repository import Repository
import json
import requests
from routes.clustersets import get_by_name
#Only used for testing
from routes.connClusters import get_conn_clusters
from routes.similarity import get_similarity
from routes.connRun import get_connected_run
from db.repository import *
repo = Repository()
def getClusterDataFromSwagger(limitNrCluster,limitNrNodes):
def getClusterDataFromSwagger(limitNrCluster:int,limitNrNodes:int,listURLs:List[str] = None):
''' Calculates the nr of connections/weights between the clusters contained in the "inputLayerDict". Connections are made between clusters from DIFFERENT layers.
......@@ -24,22 +24,26 @@ def getClusterDataFromSwagger(limitNrCluster,limitNrNodes):
:param int limitNrNodes: Limits Clusters considered. None or <0 values == No limit
:param List[str] listURLs : Specifies from which URLs to download data. If not provided/None => uses Default URLs
:returns: Dict{layername: LayerC}. Returns a Dict with the data gathered from the DB
:rtype: Dict{string: LayerC}
'''
print("Entered dataInput")
listURLs = []
#"""
listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/Price_Layer/clusters')
listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/FinishedTime_Layer/clusters')
listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/Destination_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/StartingPoint_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/Reputation_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/StartingTime_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/User_Layer/clusters')
#"""
if(listURLs == None):
listURLs = []
#"""
listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/Price_Layer/clusters')
listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/FinishedTime_Layer/clusters')
listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/Destination_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/StartingPoint_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/Reputation_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/StartingTime_Layer/clusters')
#listURLs.append('http://articonf1.itec.aau.at:30103/api/layers/User_Layer/clusters')
#"""
#Maximum of these nodes PER Layer will be considered
if (limitNrCluster == None ) or (limitNrCluster < 0):
......@@ -57,7 +61,7 @@ def getClusterDataFromSwagger(limitNrCluster,limitNrNodes):
return layerDict
def loadJson(url) :
def loadJson(url:str) :
res = requests.get(url, timeout=30)
jsonData = json.loads(res.content)
return jsonData
......@@ -77,7 +81,6 @@ def getClusterDataFromMongo(layerNameList,limitNrCluster,limitNrNodes):
:rtype: Dict{string: LayerC}
'''
layerDict = dict()
#Maximum of these nodes PER Layer will be considered
......@@ -90,7 +93,7 @@ def getClusterDataFromMongo(layerNameList,limitNrCluster,limitNrNodes):
#imports and translates the data from JSON into usefull format
#returns layerdiction -> Layer -> clusterDict -> Cluster -> nodesDict -> Nodes
for name in layerNameList:
newData = get_by_name(name)
newData = get_mongoDB_cluster_by_layerName(name)#repo.get_clusters_for_layer(name)
layerDict = populateWithNewNodesSingleLayer(newData[0:limitNrCluster],layerDict,limitNrNodes)
return layerDict
......@@ -136,11 +139,11 @@ def populateWithNewNodesSingleLayer(inputData, layerDict, limitNrNodes) -> Dict[
curLayerName,
curNode.get("UniqueID"))
if(newNode != None):
if(newNode.uniqueID!= None and newNode.cluster_label!= None and newNode.node_layer!= None):
if(newNode.uniqueID!= None and newNode.node_cluster!= None and newNode.node_layer!= None):
if( limitNrNodes>0):
auxtuple = (newNode.uniqueID,newNode.cluster_label)
auxtuple = (newNode.uniqueID,newNode.node_cluster,newNode.node_layer) #unique because the input data is only from one layer
key = frozenset(auxtuple)
#check for duplicates #TODO
#check for duplicates
cluster_containedNodesDict[key]= newNode #overwrite if already there
limitNrNodes-=1
......@@ -148,15 +151,15 @@ def populateWithNewNodesSingleLayer(inputData, layerDict, limitNrNodes) -> Dict[
if oldCluster is None:
# def __init__(self,cluster_label,cluster_layer,cluster_containedNodesDict,cluster_connNodesDict, cluster_connectionsNr,cluster_connClustDict):
newCluster = ClusterC(
newClusterC = ClusterC(
curCluster.get("cluster_label"),
curLayerName,
None,
cluster_containedNodesDict,
dict(),
dict()) #may not be empty anymore)
dict())
clusterDict[newCluster.cluster_label] = newCluster
clusterDict[newClusterC.cluster_label] = newClusterC
else:
oldCluster.cluster_containedNodesDict = cluster_containedNodesDict
clusterDict[curCluster.get("cluster_label")] = oldCluster
......@@ -168,33 +171,117 @@ def populateWithNewNodesSingleLayer(inputData, layerDict, limitNrNodes) -> Dict[
def getConnClusterDataFromMongo():
mongoArray = get_conn_clusters()
'''
Gets the Connected_clusters data from the MongoDB database. The data is found in the collection "conected_clusters"
Data returned can be used as input for calculateSimilarity function
:returns: Dict{layername: Layer}. Returns the layerDict containing connected_clusters from DB
:rtype: Dict{string: Layer}
'''
mongoArray = repo.get_connected_clusters()
outputDict = convertRetrievedClustersFromMongo(mongoArray)
return outputDict
def getSimilarityDataFromMongo():
result = get_similarity()
'''
Gets the computed Similarity between clusters data from the MongoDB database. The data is found in the collection "similarity"
:returns: Dict. Returns the a dictionary from DB containing the computed similarity.
:rtype: Dict
'''
result = repo.get_similarity()
return result
def getConnectedRunDataFromMongo():
result = get_connected_run()
'''
Gets the connected_run data from the MongoDB database.
The data is found in the collection "connected_run"
:returns: List[Dict]. Returns the a List with run objects from DB.
:rtype: List
'''
result = repo.get_connected_run()
return result
def convertRetrievedClustersFromMongo(inputArray):
'''
Helper function used to convert the JSON from the DB into the Python Code structure used in the functions
'''
LayerDict = {}
layerDict = {}
for entry in inputArray:
if not(entry['cluster_layer'] in LayerDict):
LayerDict[entry['cluster_layer']] = []
cl = ClusterC(
entry['cluster_label'],
entry['cluster_layer'],
entry['cluster_runId'],
entry['cluster_containedNodesDict'],
entry['cluster_connNodesDict'],
entry['cluster_connClustDict'])
LayerDict[entry['cluster_layer']].append(cl)
return LayerDict
\ No newline at end of file
curLayerName = entry["cluster_layer"]
#if it's a new layer, create it
if not(curLayerName in layerDict):
clusterDict = dict()
layerDict[curLayerName] = LayerC(curLayerName,clusterDict)
#get the new cluster
newClusterC = ClusterC(entry["cluster_label"],
entry["cluster_layer"],
entry["cluster_runId"],
makeChangeNodesDict(entry["cluster_containedNodesDict"],entry["cluster_label"],
entry["cluster_layer"]),
makeFrozensetForConnNodesDict(entry["cluster_connNodesDict"]), ##Change from list of dicts to dicts[frozenset(layer_name,node_id,cluster_label)]
changeDictListToTupleDict(entry["cluster_connClustDict"]))
#add cluster to the layerDict
layerDict[curLayerName].cluster_Dict[newClusterC.cluster_label]=newClusterC
return layerDict
def makeFrozensetForConnNodesDict(inputList):
'''
Helper function used to convert the JSON from the DB into the Python Code structure used in the functions
'''
outputDict = dict()
for dic in inputList:
newNodeC = NodeC(dic["node_cluster"],dic["node_layer"],dic["node_id"])
tuppleKey = (dic["node_cluster"],dic["node_layer"],dic["node_id"])
frozenSetKey = frozenset(tuppleKey)
outputDict[frozenSetKey] = newNodeC
return outputDict
def changeDictListToTupleDict(inputDictList):
'''
Helper function used to convert the JSON from the DB into the Python Code structure used in the functions
'''
outputDict = dict()
for entry in inputDictList:
tuppleKey=(entry["cluster_label"],entry["cluster_layer"])
outputDict[tuppleKey] = entry["connectionWeight"]
return outputDict
def makeChangeNodesDict(inputList,cluster_label,cluster_layer):
'''
Helper function used to convert the JSON from the DB into the Python Code structure used in the functions
'''
outputDict = dict()
for entry in inputList:
newNode = NodeC(cluster_label,cluster_layer,entry)
auxtuple = (newNode.uniqueID,newNode.node_cluster,newNode.node_layer) #unique because the input data is only from one layer
key = frozenset(auxtuple)
#check for duplicates
outputDict[key]= newNode
return outputDict
def get_mongoDB_cluster_by_layerName(name):
res = repo.get_clusters_for_layer(name)
return [c.to_serializable_dict() for c in res]
......@@ -50,42 +50,6 @@ def convertLayerDictToJSON(layerDict, runId):
:rtype: Dict{string: [Cluster1, Cluster2, ...]}
'''
'''
{
layer1 : {
[
{
cluster_label1 : 0123400,
cluster_layer: layer1,
"cluster_connClustDict": {
"0123456": 98
"1234567": 12
},
cluster_containedNodesDict : {
[
abcd,
sgre,
dgre,
ddhr,
yyrh
]
}
},
{
},
{
}
]
},
layer2 : {
}
}
'''
outputJSON = []
for curLayer in layerDict.values():
......@@ -94,52 +58,74 @@ def convertLayerDictToJSON(layerDict, runId):
"cluster_label" : curCluster.cluster_label,
"cluster_layer" : curCluster.cluster_layer,
"cluster_runId" : runId,
"cluster_connClustDict" : changeDictKeysToString(curCluster.cluster_connClustDict),
"cluster_connNodesDict" : getFrozensetFromConnNodesDict(curCluster.cluster_connNodesDict),
"cluster_containedNodesDict" : getNodeIdListFromContainedNodesDict(curCluster.cluster_containedNodesDict),
"cluster_connClustDict" : changeTupleDictToDictList(curCluster.cluster_connClustDict),
"cluster_connNodesDict" : getFrozensetFromConnNodesDict(curCluster.cluster_connNodesDict), #Don
"cluster_containedNodesDict" : getNodeIdListFromContainedNodesDict(curCluster.cluster_containedNodesDict)
})
#outputJSON = json.dumps(outputJSON, default=lambda o: o.__dict__, indent=4)
return outputJSON
def changeDictKeysToString(inputDict):
def changeTupleDictToDictList(inputDict):
'''
Helper function used to convert the code into JSON format
'''
outputList = []
for tupleKey in inputDict:
auxDict = dict()
auxDict["cluster_label"]= tupleKey[0]
auxDict["cluster_layer"]= tupleKey[1]
auxDict["connectionWeight"] = inputDict[tupleKey]
outputList.append(auxDict)
keys_values = inputDict.items()
outputDict = { str(key): value for key,value in keys_values}
return outputDict
return outputList
def getNodeIdListFromContainedNodesDict(inputDict):
'''
Helper function used to convert the code into JSON format
'''
output = []
for curNode in inputDict.values():
output.append(curNode.uniqueID)
return output
def getFrozensetFromConnNodesDict(inputDict):
'''
Helper function used to convert the code into JSON format
'''
output = []
for curNode in inputDict.values():
auxDict = {}
auxDict["node_id"]= curNode.uniqueID
auxDict["node_cluster"] = curNode.cluster_label
auxDict["node_cluster"] = curNode.node_cluster
auxDict["node_layer"] = curNode.node_layer
output.append(auxDict)
return output
def convertSimilarityDictToJSON(inputDict,runId):
''' Converts a Similarity Dictionary to JSON format. For outputting to DB
:param Dict{} similarityDict: Object which contains Data about the Computed similarities between Clusters
:rtype: List[Dicts]
'''
similList = []
for compositeKey in inputDict:
frozensetString =list()
#key is a tuple of cluster_labels
for key in compositeKey:
frozensetString.append(key)
similList.append({
"clusterTuple" : frozensetString,
"similarityValues" : inputDict[compositeKey],
"runId": runId
})
for tupleKey in inputDict:
auxDict = dict()
auxDict["cluster1_label"]= tupleKey[0]
auxDict["cluster2_label"]= tupleKey[1]
auxDict["cluster_layer"] = tupleKey[2]
auxDict["similarityValues"] = inputDict[tupleKey]
auxDict["runId"] = runId
similList.append(auxDict)
similToJSON = similList
#outputJSON = json.dumps(similToJSON, default=lambda o: o.__dict__, indent=4)
......
from db.entities.connected_node import NodeC
from db.entities.connected_cluster import ClusterC
from db.entities.connected_layer import LayerC
import os
import sys
import math
import datetime
from typing import Dict
from typing import Dict
from processing.similarityFiles.dataInput import *
from processing.similarityFiles.calculateWeights import *
from processing.similarityFiles.calculateSimilarity import *
from processing.similarityFiles.miscFunctions import *
from processing.similarityFiles.dataOutput import *
import json
import requests
modules_path = '../../../modules/'
if os.path.exists(modules_path):
sys.path.insert(1, modules_path)
from db.repository import *
repo = Repository()
def testInputData():#ONLY FOR TESTING
'''
Only for testing, can be deleted at any time.\n
Served as a testing example to make sure the computations are correct
'''
limitNrNodes = 100000
layerDict = dict()
print("Creating Connected_cluster dict and similarity dict")
inputLayerLocation=getTestLocationLayerData()
inputLayerTime=getTestTimeLayerData()
inputLayerPrice=getTestPriceLayerData()
layerDict = populateWithNewNodesSingleLayer(inputLayerLocation,layerDict,limitNrNodes)
layerDict = populateWithNewNodesSingleLayer(inputLayerTime,layerDict,limitNrNodes)
layerDict = populateWithNewNodesSingleLayer(inputLayerPrice,layerDict,limitNrNodes)
layerDict = calculateWeights(layerDict)
similarityDict = calculateSimilarity(layerDict)
print("Asserting if the calculated values are true")
#assert x == "hello"
# SYNTAX:
#similarityDict[(clusterLabel1,clusterLabel2,layerOfTheClusters)][layerToWhichTheClustersAreCompared] == ExpectedSimilarityValue
#checking if the cluster "1" and cluster "2" from the "Location" layer have the sqrt(2) similarity values for when compared with 'Price'and 'Time'layers
assert similarityDict[(1,2,'Location')]['Price'] == math.sqrt(2)
assert similarityDict[(1,2,'Location')]['Time'] == math.sqrt(2)
assert similarityDict[(1,3,'Location')]['Price'] == math.sqrt(10)
assert similarityDict[(1,3,'Location')]['Time'] == math.sqrt(16)
assert similarityDict[(2,3,'Location')]['Price'] == math.sqrt(4)
assert similarityDict[(2,3,'Location')]['Time'] == math.sqrt(10)
assert similarityDict[(4,5,'Time')]['Location'] == math.sqrt(19)
assert similarityDict[(4,5,'Time')]['Price'] == math.sqrt(26)
assert similarityDict[(6,7,'Price')]['Location'] == math.sqrt(3)
assert similarityDict[(6,7,'Price')]['Time'] == math.sqrt(8)
# assert similarityDict[(1,2,'Location')]
print("Test Passed Succesfully")
return layerDict
def getTestLocationLayerData():
inputLayerLocation = [
{
"cluster_label": 1,
"layer_name": "Location",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "a",
"UserID": "asdf"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "aa",
"UserID": "asdf"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "aaa",
"UserID": "asdf"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aaaa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
}
]
},
{
"cluster_label": 2,
"layer_name": "Location",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156b",
"TravelPrice": 15,
"UniqueID": "b",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "bb",
"UserID": "asdf"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "bbb",
"UserID": "asdf"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "bb",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
}
]
},
{
"cluster_label": 3,
"layer_name": "Location",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156c",
"TravelPrice": 15,
"UniqueID": "c",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "c",
"UserID": "asdf"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "asd",
"TravelPrice": 15,
"UniqueID": "cc",
"UserID": "asdf"
}
]
}
]
return inputLayerLocation
def getTestTimeLayerData():
inputLayerTime = [
{
"cluster_label": 4,
"layer_name": "Time",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "a",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aaa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aaaa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "b",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "bb",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "bbb",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
}
]
},
{
"cluster_label": 5,
"layer_name": "Time",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156f",
"TravelPrice": 15,
"UniqueID": "a",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "c",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
}
]
}
]
return inputLayerTime
def getTestPriceLayerData():
inputLayerPrice = [
{
"cluster_label": 6,
"layer_name": "Price",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156h",
"TravelPrice": 15,
"UniqueID": "b",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "bb",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aaa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aaaa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
}
]
},
{
"cluster_label": 7,
"layer_name": "Price",
"nodes": [
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156g",
"TravelPrice": 15,
"UniqueID": "a",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "aa",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "b",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
},
{
"Finished_time": 1576631193265951,
"Latitude_Destination": -5.973257,
"Longitude_Destination": 37.416316,
"TravelID": "5e57ec9159bc0668543f156d",
"TravelPrice": 15,
"UniqueID": "c",
"UserID": "a95075f5042b1b27060080156d87fe34ec7e712c"
}
]
}
]
return inputLayerPrice
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -2,263 +2,334 @@
{
"cluster_label": 0,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {
"-1": 42,
"0": 21
},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [
{
"cluster_label": -1,
"cluster_layer": "FinishedTime_Layer",
"connectionWeight": 42
},
{
"cluster_label": 0,
"cluster_layer": "Destination_Layer",
"connectionWeight": 21
}
],
"cluster_connNodesDict": [
{
"node_id": "018a683893f6a26a05050e432d340b78e7a539cc5e57ec9159bc0668543f243d",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "047b01b530d4104ef8eaf2359ea674cd3b56b77f5e57ec9159bc0668543f2494",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "0e9c8c070e5f9e8a1c7ca504376004768a4014665e57ec9359bc0668543f4e13",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "1293461799fc73103b48047c37bd882fd106771a5e57ec9159bc0668543f26ef",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "162a9fc5fe873488c79ebb3f1c9b1b30e2203f7b5e57ec9259bc0668543f2b5e",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "169b57a340c7f5da2e509ee7b0aa056977fec2a95e57ec9159bc0668543f1abe",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "17584f418ca1425c2e60751c68a83da93370921f5e57ec9359bc0668543f4fbf",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "1825b06b9f7c41820743e8508977d81ecf68ee275e57ec9259bc0668543f2e21",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "24eda4b64b03f565dcafbbadb4bc954a4ce8fcbf5e57ec9159bc0668543f265c",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "25e76430c731cbfd9d306514bd4845a90ccbbae25e57ec9159bc0668543f257c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "2a81c755026d4a8e893b25671a18e39104d488f85e57ec9159bc0668543f257c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "2c0d557df1c97d2febfed7de875d344d6f4a16255e57ec9159bc0668543f26ef",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "2f8f37e09f76ed80027cc8f15aa23ecbff0e8cca5e57ec9359bc0668543f6770",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "32160aa4dcbdf1341196bc4ff26a428698771cfe5e57ec9159bc0668543f1aa0",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "39f438db6713889a4ae45998aa97110afbbfffcb5e57ec9159bc0668543f1f66",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "3c77bd3a570262458b800937486029e76fe86aa75e57ec9259bc0668543f45f6",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "49265bfa149e25b47a6aa3d52189395e40172aa75e57ec9259bc0668543f3491",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "55f99091d2a7e0376cdf77f78408302e5898398a5e57ec9359bc0668543f66dc",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "574b1106b00452cf7824d57396afc295f2aea3ec5e57ec9159bc0668543f1dba",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "6281369c320e3b81f226e30f586cf432f1082dbc5e57ec9259bc0668543f31a8",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "7dc5fa2396730304f2dd4728a0026e7354494b005e57ec9159bc0668543f26ef",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "7dc5fa2396730304f2dd4728a0026e7354494b005e57ec9259bc0668543f3da0",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "7ffb2d12d6cd6a067772e65bb51a372c80824d895e57ec9259bc0668543f34e8",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "80cdd626d308d028707237ad80b7fffb353be0ff5e57ec9159bc0668543f1d7e",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "86413818983d5fc6033c631e89d6c21d408a0db55e57ec9159bc0668543f1865",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "86bf7785ed92f677d5c42232a8eafc589bbccac35e57ec9159bc0668543f21d4",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "8c61f946402defdd9e543f370840d4b696c338765e57ec9159bc0668543f19d7",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "8d3d9ae08c0cf4f92d2b68f2ec0164c54e3f7dd65e57ec9259bc0668543f30fe",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "8d758e590271e1570ebf4688f867c33a3a35ccac5e57ec9459bc0668543f74c8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "98dcb2717ddae152d5b359c6ea97e4fe34a29d4c5e57ec9159bc0668543f1f0c",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "9f1e752473da77932f3e41368fab0dc762afb96b5e57ec9259bc0668543f2b5e",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "a2af301c9e122b9636a5ba682b9c2504a27a08f95e57ec9159bc0668543f2494",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "a7f8f8f1a26a0a31321b57fb8f16c6238d82f0805e57ec9359bc0668543f5c5c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "a7f8f8f1a26a0a31321b57fb8f16c6238d82f0805e57ec9459bc0668543f7503",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "a95075f5042b1b27060080156d87fe34ec7e712c5e57ec9159bc0668543f25fe",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "a95075f5042b1b27060080156d87fe34ec7e712c5e57ec9359bc0668543f55c1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "adbb9ceeb61d3ce5cb3e20ed9b767e3fa2ec83ac5e57ec9159bc0668543f19f1",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "b06b6841b013b8a3e7356ebcc7c5dac8b1c6329d5e57ec9159bc0668543f1d6f",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "b3fa7082d81a71694884bafeb3fa2a989612ca915e57ec9259bc0668543f3562",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "bf7618733c265819c937e2b5c2eaa6c92ba9610d5e57ec9259bc0668543f2f05",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "c1bf3b0c2892a387551cdfa005a17516cdeaa6b05e57ec9259bc0668543f2e55",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "cb6095cd0b53312c52a6b7d0e5e94602babd48615e57ec9359bc0668543f5dd9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "d0376fa2e0ca9a9cb549c45fc24a0f694b65a9c85e57ec9359bc0668543f62b9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "d18a36e14c88f0d29207ba7a4e39adb54cd7693e5e57ec9259bc0668543f31a8",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d2b7fce9b7f68c4a1495232a81da894a01c4eefc5e57ec9159bc0668543f1f66",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d35e541672aadf4c378fba95d0240baae643d2115e57ec9159bc0668543f1f66",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d7051be2bf3391ec0d9ec2ea6f57b7c0b62185d75e57ec9359bc0668543f6497",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "dc783ce1bff0854a5acb431e4458bab826a97ca45e57ec9159bc0668543f1865",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "dd91b75e6013c5477017b2c188cd4c368afff2835e57ec9259bc0668543f2d0c",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "e3da43a67d77386da0faa507e98fb206a7e015e85e57ec9159bc0668543f19d7",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "edd812916217a4ccdd253d13e172ce141618c1445e57ec9259bc0668543f2aa1",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "eee58f1f088cc27235bb0e674cc44fe35efffff95e57ec9359bc0668543f55c1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "f0ea58452606fd347cfccbf7de9e33d87debb3925e57ec9159bc0668543f27dc",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "f20a69a7d25929c64e9a972ee8534b61b6f2a56a5e57ec9259bc0668543f48e7",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "f26023dee73e22700dad75bfa1864e3b0659a46e5e57ec9159bc0668543f175d",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "f405ea1ca3ff4f7005118ce0deac1fc1c150ba5a5e57ec9159bc0668543f1c3b",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "f6f3f0f4582cdb70b2911a222dc16f8a3bd819435e57ec9159bc0668543f2769",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "f9c6f90a46f81dc3d3994f12b678f16f1d961cd45e57ec9259bc0668543f2a4d",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "fbd959373b6509989d3af4a298cc7e7b91676ccb5e57ec9159bc0668543f1fb6",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "fe68d7777655bf950ee14227e9cb62a34394cbe65e57ec9459bc0668543f718c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "fe78e82c560a4f2cb3d4aa228feeb827cd06cd7b5e57ec9159bc0668543f1cbf",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
}
],
"cluster_containedNodesDict": [
......@@ -1267,554 +1338,666 @@
{
"cluster_label": 6,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 17,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 18,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 7,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 1,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 20,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 5,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 4,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 15,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 11,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 19,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 16,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 3,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 9,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 8,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 10,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 13,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 14,
"cluster_layer": "Price_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": -1,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {
"0": 98
},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [
{
"cluster_label": 0,
"cluster_layer": "Price_Layer",
"connectionWeight": 42
},
{
"cluster_label": 0,
"cluster_layer": "Destination_Layer",
"connectionWeight": 57
}
],
"cluster_connNodesDict": [
{
"node_id": "018a683893f6a26a05050e432d340b78e7a539cc5e57ec9159bc0668543f243d",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "0260c9a0fb7a542fa0c9c596532178919b119dc85e57ec9159bc0668543f22e2",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "047b01b530d4104ef8eaf2359ea674cd3b56b77f5e57ec9159bc0668543f2494",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "047b01b530d4104ef8eaf2359ea674cd3b56b77f5e57ec9259bc0668543f2fab",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "1293461799fc73103b48047c37bd882fd106771a5e57ec9159bc0668543f26ef",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "162a9fc5fe873488c79ebb3f1c9b1b30e2203f7b5e57ec9259bc0668543f2b5e",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "169b57a340c7f5da2e509ee7b0aa056977fec2a95e57ec9159bc0668543f1abe",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "1825b06b9f7c41820743e8508977d81ecf68ee275e57ec9259bc0668543f2e21",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "1a87e43dc652dd03c10f882a8d6f909f435dd6b25e57ec9159bc0668543f2755",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "1e4d67f478e17f70a97fe41365ae7338c3a4934b5e57ec9259bc0668543f31a6",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "22390ad11c32faec43fc61555b53607660b3c1855e57ec9259bc0668543f2b32",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "224cfd3231e9079159788a88474f4b85949904b95e57ec9159bc0668543f22e2",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "24eda4b64b03f565dcafbbadb4bc954a4ce8fcbf5e57ec9159bc0668543f265c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "26688a2982f526aa219b72e7fa5a61439da55f845e57ec9259bc0668543f2fe9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568",
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "28e90275ca36e8ec70c6bf81c34bb85b32c60e8b5e57ec9259bc0668543f3425",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "2990073b4f0f04cfd8814f0dc0c54a970bd2dbe45e57ec9259bc0668543f332f",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "2c0d557df1c97d2febfed7de875d344d6f4a16255e57ec9159bc0668543f26ef",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "32160aa4dcbdf1341196bc4ff26a428698771cfe5e57ec9159bc0668543f1aa0",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "39f438db6713889a4ae45998aa97110afbbfffcb5e57ec9159bc0668543f1f66",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "408ed564d49d196803fde7fe4bfa07d66df0586d5e57ec9159bc0668543f17f0",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "455ece34621a91c0a27d89f89335efbc7c84176f5e57ec9259bc0668543f355d",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "49265bfa149e25b47a6aa3d52189395e40172aa75e57ec9259bc0668543f3491",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "4d67d97c3e7a9d0836a7217416601e259c88c0385e57ec9159bc0668543f1fc5",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "52578b9a6516530447171183675857a9121be8355e57ec9159bc0668543f23a5",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "5288701f4c2abddd7c3839f1cf077dd1656bc5e95e57ec9259bc0668543f3286",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "5607fe3df00af617e288291dfe704f9eae538e7a5e57ec9159bc0668543f1ac7",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "574b1106b00452cf7824d57396afc295f2aea3ec5e57ec9159bc0668543f1dba",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "5c3cb098d52deb3f67e97b7fba960c4cf68804615e57ec9159bc0668543f23a5",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "6281369c320e3b81f226e30f586cf432f1082dbc5e57ec9259bc0668543f31a8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "6a3fb35b674b4c3a1978da2a495b411eba2fc3c05e57ec9159bc0668543f217f",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "6a3fb35b674b4c3a1978da2a495b411eba2fc3c05e57ec9259bc0668543f2e76",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "6edf0ebd13a0ded74ce8a686d505087b9e503f4c5e57ec9159bc0668543f2449",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "6fe67930819aebe6ae2408d04bb791d5b6db69755e57ec9159bc0668543f276c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "71bd616f22174786a15307dc1c9d3fe12ad53a9b5e57ec9159bc0668543f2147",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "77e9c5661afed81f5776d2bb12df18443f9f4a975e57ec9159bc0668543f19ee",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "7971e159a0a432dbec73fa8b682cc1f9640de7095e57ec9159bc0668543f2297",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "7b4e6eeb003ca9305a1196bdd408e2e53e3ab7605e57ec9259bc0668543f31a6",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "7dc5fa2396730304f2dd4728a0026e7354494b005e57ec9159bc0668543f26ef",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "7ffb2d12d6cd6a067772e65bb51a372c80824d895e57ec9259bc0668543f34e8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "801e5189ad3a29d2d7d9f46c5ff1b8dc89d84ec95e57ec9159bc0668543f2120",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "80ac47b53d214db7d4d8828a0b5938fe6f8a5e285e57ec9159bc0668543f27d1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "80cdd626d308d028707237ad80b7fffb353be0ff5e57ec9159bc0668543f1d7e",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "821c5a383ad816b0bf1fb861893554ee6f82e5dc5e57ec9259bc0668543f372e",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "86413818983d5fc6033c631e89d6c21d408a0db55e57ec9159bc0668543f1865",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "86bf7785ed92f677d5c42232a8eafc589bbccac35e57ec9159bc0668543f21d4",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "89b3ffda8f11bff22867ff9ef2f8ff6a2b5691b25e57ec9259bc0668543f301c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "8c61f946402defdd9e543f370840d4b696c338765e57ec9159bc0668543f19d7",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "8d3d9ae08c0cf4f92d2b68f2ec0164c54e3f7dd65e57ec9259bc0668543f30fe",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "8db93dfa0ff4f5ecf80a6f116a40ae0972d04c765e57ec9159bc0668543f29d8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "94681e45a539870724a556ff817c49837e94e2a15e57ec9159bc0668543f2059",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "95763ec2978744ad671f2ee982e3c78252f1e59d5e57ec9159bc0668543f24b2",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "95da60dd1607d0c34de34703050284de06781c8a5e57ec9159bc0668543f267b",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "98dcb2717ddae152d5b359c6ea97e4fe34a29d4c5e57ec9159bc0668543f15cf",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "98dcb2717ddae152d5b359c6ea97e4fe34a29d4c5e57ec9159bc0668543f1f0c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "9aa7a90b13b0a1cee9c0084b30ce229ded2540385e57ec9159bc0668543f1930",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "9f1e752473da77932f3e41368fab0dc762afb96b5e57ec9259bc0668543f2b5e",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "a2af301c9e122b9636a5ba682b9c2504a27a08f95e57ec9159bc0668543f2494",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "a7b8f6289babfe55904aaa132504eceb8fdc0fb55e57ec9259bc0668543f2d91",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "a95075f5042b1b27060080156d87fe34ec7e712c5e57ec9159bc0668543f25fe",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "adbb9ceeb61d3ce5cb3e20ed9b767e3fa2ec83ac5e57ec9159bc0668543f19f1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "b06b6841b013b8a3e7356ebcc7c5dac8b1c6329d5e57ec9159bc0668543f1d6f",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "b2c07102495cfbdd0e898d63e778b0ea5ab4f4f55e57ec9159bc0668543f18ee",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "b3fa7082d81a71694884bafeb3fa2a989612ca915e57ec9259bc0668543f3562",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "b83ef11b8c3628a02e9911e54549ddebbb8816305e57ec9259bc0668543f35fa",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "bcb996f16e04fe0df0f2081dddbc514af35640ed5e57ec9259bc0668543f3276",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "bf7618733c265819c937e2b5c2eaa6c92ba9610d5e57ec9259bc0668543f2f05",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "c17f87dbd823eb7d59b6e70785f94737c78995fc5e57ec9159bc0668543f25c8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "c6ed34981ee87f00c8ba0dd8df8ff60c7729c3c15e57ec9159bc0668543f2565",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "c7e4fa4cbae6e10bcb207bb569139210f91de5ad5e57ec9259bc0668543f3538",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "c8afa8713631d133164460dacd310629a42339025e57ec9159bc0668543f2583",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "cd69bd42b5961c967a11c0c373fd42f8a36c93325e57ec9159bc0668543f1a3a",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "d02323bf34fc6453e15c117ee782475f443567385e57ec9259bc0668543f29f9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "d18a36e14c88f0d29207ba7a4e39adb54cd7693e5e57ec9259bc0668543f31a8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "d2b7fce9b7f68c4a1495232a81da894a01c4eefc5e57ec9159bc0668543f1f66",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "d2b7fce9b7f68c4a1495232a81da894a01c4eefc5e57ec9159bc0668543f2397",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "d35e541672aadf4c378fba95d0240baae643d2115e57ec9159bc0668543f1f66",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "d66d6d01835cbc23f281b3c9b8b66c4fb0b2ba4a5e57ec9259bc0668543f332f",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "db29c5b695e4e16014f69d053b507b2e3b3878755e57ec9259bc0668543f38f9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "dc783ce1bff0854a5acb431e4458bab826a97ca45e57ec9159bc0668543f1865",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "dd003a533766f9474cbfb7908a2ab997378d43535e57ec9159bc0668543f2458",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "dd91b75e6013c5477017b2c188cd4c368afff2835e57ec9259bc0668543f2d0c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "e3da43a67d77386da0faa507e98fb206a7e015e85e57ec9159bc0668543f19d7",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "e58148dbed9ad269961a2e65e67ef6ed32aaf4de5e57ec9259bc0668543f3929",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "e77d4d8057e8d99379dd691fb53a79a0971753cc5e57ec9159bc0668543f163c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "eab3b431b590d8adff9468829b46d1b24545f2165e57ec9159bc0668543f1a48",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "eb2b4bf4167f05efa76420e4ea2fe301784f33995e57ec9159bc0668543f2458",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "edd812916217a4ccdd253d13e172ce141618c1445e57ec9259bc0668543f2aa1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f26023dee73e22700dad75bfa1864e3b0659a46e5e57ec9159bc0668543f175d",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f32771335a9156eb6cf8e1b9f6a7fbe026dd917c5e57ec9159bc0668543f1a58",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "f405ea1ca3ff4f7005118ce0deac1fc1c150ba5a5e57ec9159bc0668543f1c3b",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f492b4d3a9826e612d08966b6fcf4666c3c3dd605e57ec9259bc0668543f3812",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "f6f3f0f4582cdb70b2911a222dc16f8a3bd819435e57ec9159bc0668543f2769",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f9c6f90a46f81dc3d3994f12b678f16f1d961cd45e57ec9259bc0668543f2a4d",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "fbd959373b6509989d3af4a298cc7e7b91676ccb5e57ec9159bc0668543f1fb6",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "fdb0b127af59b398fd99347eb69e653fbfa6d2e85e57ec9159bc0668543f2147",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
},
{
"node_id": "fe78e82c560a4f2cb3d4aa228feeb827cd06cd7b5e57ec9159bc0668543f1cbf",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "fe78e82c560a4f2cb3d4aa228feeb827cd06cd7b5e57ec9259bc0668543f341d",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Destination_Layer"
}
],
"cluster_containedNodesDict": [
......@@ -2822,475 +3005,561 @@
{
"cluster_label": 2564,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 729,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 772,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2756,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 3213,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2362,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 4777,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2745,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 5375,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 902,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 4501,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2688,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2873,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 3678,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 3683,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 677,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 843,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 4504,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2119,
"cluster_layer": "FinishedTime_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 0,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {
"-1": 57,
"0": 21
},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [
{
"cluster_label": -1,
"cluster_layer": "FinishedTime_Layer",
"connectionWeight": 57
},
{
"cluster_label": 0,
"cluster_layer": "Price_Layer",
"connectionWeight": 21
}
],
"cluster_connNodesDict": [
{
"node_id": "0260c9a0fb7a542fa0c9c596532178919b119dc85e57ec9159bc0668543f22e2",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "047b01b530d4104ef8eaf2359ea674cd3b56b77f5e57ec9259bc0668543f2fab",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "0e9c8c070e5f9e8a1c7ca504376004768a4014665e57ec9359bc0668543f4e13",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "17584f418ca1425c2e60751c68a83da93370921f5e57ec9359bc0668543f4fbf",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "1a87e43dc652dd03c10f882a8d6f909f435dd6b25e57ec9159bc0668543f2755",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "1e4d67f478e17f70a97fe41365ae7338c3a4934b5e57ec9259bc0668543f31a6",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "22390ad11c32faec43fc61555b53607660b3c1855e57ec9259bc0668543f2b32",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "224cfd3231e9079159788a88474f4b85949904b95e57ec9159bc0668543f22e2",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "25e76430c731cbfd9d306514bd4845a90ccbbae25e57ec9159bc0668543f257c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "26688a2982f526aa219b72e7fa5a61439da55f845e57ec9259bc0668543f2fe9",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "2696718d7a33ab3dbf28e9c88411afcfe9a933a45e57ec9159bc0668543f1568",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "28e90275ca36e8ec70c6bf81c34bb85b32c60e8b5e57ec9259bc0668543f3425",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "2990073b4f0f04cfd8814f0dc0c54a970bd2dbe45e57ec9259bc0668543f332f",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "2a81c755026d4a8e893b25671a18e39104d488f85e57ec9159bc0668543f257c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "2f8f37e09f76ed80027cc8f15aa23ecbff0e8cca5e57ec9359bc0668543f6770",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "3c77bd3a570262458b800937486029e76fe86aa75e57ec9259bc0668543f45f6",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "408ed564d49d196803fde7fe4bfa07d66df0586d5e57ec9159bc0668543f17f0",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "455ece34621a91c0a27d89f89335efbc7c84176f5e57ec9259bc0668543f355d",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "4d67d97c3e7a9d0836a7217416601e259c88c0385e57ec9159bc0668543f1fc5",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "52578b9a6516530447171183675857a9121be8355e57ec9159bc0668543f23a5",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "5288701f4c2abddd7c3839f1cf077dd1656bc5e95e57ec9259bc0668543f3286",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "55f99091d2a7e0376cdf77f78408302e5898398a5e57ec9359bc0668543f66dc",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "5607fe3df00af617e288291dfe704f9eae538e7a5e57ec9159bc0668543f1ac7",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "5c3cb098d52deb3f67e97b7fba960c4cf68804615e57ec9159bc0668543f23a5",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "6a3fb35b674b4c3a1978da2a495b411eba2fc3c05e57ec9159bc0668543f217f",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "6a3fb35b674b4c3a1978da2a495b411eba2fc3c05e57ec9259bc0668543f2e76",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "6edf0ebd13a0ded74ce8a686d505087b9e503f4c5e57ec9159bc0668543f2449",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "6fe67930819aebe6ae2408d04bb791d5b6db69755e57ec9159bc0668543f276c",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "71bd616f22174786a15307dc1c9d3fe12ad53a9b5e57ec9159bc0668543f2147",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "77e9c5661afed81f5776d2bb12df18443f9f4a975e57ec9159bc0668543f19ee",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "7971e159a0a432dbec73fa8b682cc1f9640de7095e57ec9159bc0668543f2297",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "7b4e6eeb003ca9305a1196bdd408e2e53e3ab7605e57ec9259bc0668543f31a6",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "7dc5fa2396730304f2dd4728a0026e7354494b005e57ec9259bc0668543f3da0",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "801e5189ad3a29d2d7d9f46c5ff1b8dc89d84ec95e57ec9159bc0668543f2120",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "80ac47b53d214db7d4d8828a0b5938fe6f8a5e285e57ec9159bc0668543f27d1",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "821c5a383ad816b0bf1fb861893554ee6f82e5dc5e57ec9259bc0668543f372e",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "89b3ffda8f11bff22867ff9ef2f8ff6a2b5691b25e57ec9259bc0668543f301c",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "8d758e590271e1570ebf4688f867c33a3a35ccac5e57ec9459bc0668543f74c8",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "8db93dfa0ff4f5ecf80a6f116a40ae0972d04c765e57ec9159bc0668543f29d8",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "94681e45a539870724a556ff817c49837e94e2a15e57ec9159bc0668543f2059",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "95763ec2978744ad671f2ee982e3c78252f1e59d5e57ec9159bc0668543f24b2",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "95da60dd1607d0c34de34703050284de06781c8a5e57ec9159bc0668543f267b",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "98dcb2717ddae152d5b359c6ea97e4fe34a29d4c5e57ec9159bc0668543f15cf",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "9aa7a90b13b0a1cee9c0084b30ce229ded2540385e57ec9159bc0668543f1930",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "a7b8f6289babfe55904aaa132504eceb8fdc0fb55e57ec9259bc0668543f2d91",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "a7f8f8f1a26a0a31321b57fb8f16c6238d82f0805e57ec9359bc0668543f5c5c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "a7f8f8f1a26a0a31321b57fb8f16c6238d82f0805e57ec9459bc0668543f7503",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "a95075f5042b1b27060080156d87fe34ec7e712c5e57ec9359bc0668543f55c1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "b2c07102495cfbdd0e898d63e778b0ea5ab4f4f55e57ec9159bc0668543f18ee",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "b83ef11b8c3628a02e9911e54549ddebbb8816305e57ec9259bc0668543f35fa",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "bcb996f16e04fe0df0f2081dddbc514af35640ed5e57ec9259bc0668543f3276",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "c17f87dbd823eb7d59b6e70785f94737c78995fc5e57ec9159bc0668543f25c8",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "c1bf3b0c2892a387551cdfa005a17516cdeaa6b05e57ec9259bc0668543f2e55",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "c6ed34981ee87f00c8ba0dd8df8ff60c7729c3c15e57ec9159bc0668543f2565",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "c7e4fa4cbae6e10bcb207bb569139210f91de5ad5e57ec9259bc0668543f3538",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "c8afa8713631d133164460dacd310629a42339025e57ec9159bc0668543f2583",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "cb6095cd0b53312c52a6b7d0e5e94602babd48615e57ec9359bc0668543f5dd9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "cd69bd42b5961c967a11c0c373fd42f8a36c93325e57ec9159bc0668543f1a3a",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d02323bf34fc6453e15c117ee782475f443567385e57ec9259bc0668543f29f9",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d0376fa2e0ca9a9cb549c45fc24a0f694b65a9c85e57ec9359bc0668543f62b9",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "d2b7fce9b7f68c4a1495232a81da894a01c4eefc5e57ec9159bc0668543f2397",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d66d6d01835cbc23f281b3c9b8b66c4fb0b2ba4a5e57ec9259bc0668543f332f",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "d7051be2bf3391ec0d9ec2ea6f57b7c0b62185d75e57ec9359bc0668543f6497",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "db29c5b695e4e16014f69d053b507b2e3b3878755e57ec9259bc0668543f38f9",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "dd003a533766f9474cbfb7908a2ab997378d43535e57ec9159bc0668543f2458",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "e58148dbed9ad269961a2e65e67ef6ed32aaf4de5e57ec9259bc0668543f3929",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "e77d4d8057e8d99379dd691fb53a79a0971753cc5e57ec9159bc0668543f163c",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "eab3b431b590d8adff9468829b46d1b24545f2165e57ec9159bc0668543f1a48",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "eb2b4bf4167f05efa76420e4ea2fe301784f33995e57ec9159bc0668543f2458",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "eee58f1f088cc27235bb0e674cc44fe35efffff95e57ec9359bc0668543f55c1",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f0ea58452606fd347cfccbf7de9e33d87debb3925e57ec9159bc0668543f27dc",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f20a69a7d25929c64e9a972ee8534b61b6f2a56a5e57ec9259bc0668543f48e7",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "f32771335a9156eb6cf8e1b9f6a7fbe026dd917c5e57ec9159bc0668543f1a58",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "f492b4d3a9826e612d08966b6fcf4666c3c3dd605e57ec9259bc0668543f3812",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "fdb0b127af59b398fd99347eb69e653fbfa6d2e85e57ec9159bc0668543f2147",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
},
{
"node_id": "fe68d7777655bf950ee14227e9cb62a34394cbe65e57ec9459bc0668543f718c",
"node_cluster": 0
"node_cluster": 0,
"node_layer": "Price_Layer"
},
{
"node_id": "fe78e82c560a4f2cb3d4aa228feeb827cd06cd7b5e57ec9259bc0668543f341d",
"node_cluster": -1
"node_cluster": -1,
"node_layer": "FinishedTime_Layer"
}
],
"cluster_containedNodesDict": [
......@@ -4299,152 +4568,152 @@
{
"cluster_label": -1,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 701,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 319,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2230,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 316,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2234,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 1890,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 1075,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 1523,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2232,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2237,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 1495,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 526,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 951,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2231,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 648,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 466,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 2160,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
},
{
"cluster_label": 1091,
"cluster_layer": "Destination_Layer",
"cluster_runId": "5f033232366be85ec1afca7b",
"cluster_connClustDict": {},
"cluster_runId": "5f0471438b27390711e31c70",
"cluster_connClustDict": [],
"cluster_connNodesDict": [],
"cluster_containedNodesDict": []
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
StartTime: 2020-07-02 12:05:47.067975
FinishTime: 2020-07-02 12:05:54.561853
StartTime: 2020-07-07 16:55:42.418309
FinishTime: 2020-07-07 16:55:49.746628
PopulateWithNewNodes: 2.495718
CalculateWeights: 4.590413
CalculateSimilarity: 0.407747
TotalTime: 7.493878
\ No newline at end of file
PopulateWithNewNodes: 2.321926
CalculateWeights: 4.499367
CalculateSimilarity: 0.507026
TotalTime: 7.328319
RunId: 5f048cf587e0ee319fa894ed
\ No newline at end of file
StartTime: 2020-07-06 16:16:11.525479
FinishTime: 2020-07-06 16:16:18.213974
StartTime: 2020-07-07 14:57:32.942331
FinishTime: 2020-07-07 14:57:39.489324
PopulateWithNewNodes: 2.206513
CalculateWeights: 4.435216
CalculateSimilarity: 0.046766
TotalTime: 6.688495
RunId: 5f033232366be85ec1afca7b
\ No newline at end of file
PopulateWithNewNodes: 2.102823
CalculateWeights: 4.382948
CalculateSimilarity: 0.061222
TotalTime: 6.546993
RunId: 5f0471438b27390711e31c70
\ No newline at end of file
......@@ -30,12 +30,17 @@ from processing.similarityFiles.calculateWeights import *
from processing.similarityFiles.calculateSimilarity import *
from processing.similarityFiles.miscFunctions import *
from processing.similarityFiles.dataOutput import *
from routes.connRun import connected_run
#####TEST ONLY#####
from processing.similarityFiles.testSimilarity import *
def main():
print("\nEntered Main")
outputToFileFLAG = False
timelist = []
timelist.append(currentTime())#starting time
......@@ -54,8 +59,9 @@ def main():
limitNrNodes = 1000 #per Layer
layerDict = getClusterDataFromMongo(layerNameList,limitNrCluster,limitNrNodes)
#layerDict = getClusterDataFromSwagger(limitNrCluster,limitNrNodes) #for Swagger, Change URLs inside the function for different input Data
#URLlist = None
#layerDict = getClusterDataFromSwagger(limitNrCluster,limitNrNodes, URLlist) #for Swagger, Change URLs inside the function for different input Data or provide a list with URLS
totalNodes = totalNumberOfNodes(layerDict)
print("Nr. of nodes: " +str(totalNodes))
totalClusters = totalNumberOfClusters(layerDict)
......@@ -76,25 +82,34 @@ def main():
#Write to files
runId = add_connected_run()
print("Outputing data")
outputFileLayerFunction(layerDict,totalNodes,totalClusters,runId)
outputFileSimilFunction(similarityDict,totalNodes,totalClusters,runId)
outputFileTimeFunction(timelist,totalNodes,totalClusters,runId)
if (outputToFileFLAG == True):
print("Outputing data")
outputFileLayerFunction(layerDict,totalNodes,totalClusters,runId)
outputFileSimilFunction(similarityDict,totalNodes,totalClusters,runId)
outputFileTimeFunction(timelist,totalNodes,totalClusters,runId)
#Output to DB
outputMongoConnClustDict(layerDict,runId)
outputMongoSimilarity(similarityDict,runId)
#Currently not used, developed for possible future uses
#Currently not used in the calculation of connections/similarity, developed for possible future uses
connClustersFromMongo = getConnClusterDataFromMongo()
similarityDictFromMongo = calculateSimilarity(connClustersFromMongo)
similarityArrFromMongo = getSimilarityDataFromMongo()
connectedRunFromMongo = getConnectedRunDataFromMongo()
print("FINISHED")
return
def test():
testInputData()
##########START##########
main()
#main()
test()
#########FINISH##########
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment