Skip to content
Snippets Groups Projects
Commit 22669d37 authored by Hammouda Elbez's avatar Hammouda Elbez :computer:
Browse files

2D view updated

parent 3f75998e
No related branches found
No related tags found
No related merge requests found
......@@ -30,7 +30,6 @@ class Global_Var():
InputPerEpoch = 100
stepMax = 0
Max = 0
nbrClasses = 0
# General network information ------------------------------------
LayersNeuronsInfo = []
......@@ -44,6 +43,7 @@ class Global_Var():
Accuracy = 0
finalLabels = None
labelsExistance = False
ClassNbr = 0
oldIdSpike = None
def __init__(self):
......@@ -62,6 +62,7 @@ class Global_Var():
self.Accuracy = 0
self.finalLabels = None
self.labelsExistance = False
self.ClassNbr = 0
self.oldIdSpike = None
# MongoDB connection ---------------------------------------------
......
......@@ -583,7 +583,7 @@ class callbacks(callbacksOp):
indices = {}
labelData = getNetworkInput(int(sliderValue)*float(updateInterval), g.updateInterval)
if callback_context.triggered[0]['prop_id'].split('.')[0] in ["v-step","vis-update"]:
super.SpikesActivityPerInput = {i["layer"]:[[0 for _ in range(g.nbrClasses+1)] for _ in range(g.Layer_Neuron[i["layer"]])] for i in g.LayersNeuronsInfo}
super.SpikesActivityPerInput = {i["layer"]:[[0 for _ in range(g.ClassNbr)] for _ in range(g.Layer_Neuron[i["layer"]])] for i in g.LayersNeuronsInfo}
for element in elements:
if element["data"]['spiked'] != -1:
element["data"]["spiked"] = 0
......@@ -707,13 +707,13 @@ class callbacks(callbacksOp):
def make_SpikeActivityPerInput(layer,dataLabel,Layer2DViewFilter):
fig = make_subplots(rows=5, cols=1, shared_xaxes=True, vertical_spacing=0.08, specs=[[{'rowspan': 4}],[None],[None],[None],[{'rowspan': 1}]])
fig.add_trace(go.Heatmap(z=super.SpikesActivityPerInput[layer] if layer in Layer2DViewFilter else [], colorscale= 'Reds', zmin=0, hovertemplate=('Class: %{x} <br>Neuron: %{y} <br>Spikes: %{z} <extra></extra>'),xgap=4,ygap=4),row=1, col=1)
fig.update_layout({"xaxis":dict(title="Class",tickmode="array",zeroline = False,tickvals=[i for i in range(g.nbrClasses+1)]),"yaxis":dict(title="Neuron",zeroline = False),"margin":{'l': 0, 'r': 0, 't': 5, 'b': 0},"uirevision":'no reset of zoom'})
fig.add_trace(go.Heatmap(z=super.SpikesActivityPerInput[layer] if layer in Layer2DViewFilter else [], colorscale= 'Reds' if sum([item for row in super.SpikesActivityPerInput[layer] for item in row]) > 0 else "gray", zmin=0, hovertemplate=('Class: %{x} <br>Neuron: %{y} <br>Spikes: %{z} <extra></extra>'),xgap=4,ygap=4),row=1, col=1)
fig.update_layout({"xaxis":dict(title="Class",tickmode="array",zeroline = False,tickvals=[i for i in range(g.ClassNbr)]),"yaxis":dict(title="Neuron",zeroline = False),"margin":{'l': 0, 'r': 0, 't': 5, 'b': 0},"uirevision":'no reset of zoom'})
if (dataLabel == None) or (layer not in Layer2DViewFilter):
fig.add_trace(go.Bar(x=[],y=[],hovertemplate=('Label: %{x} <br>Nbr: %{y} <extra></extra>')),row=5, col=1)
else:
fig.add_trace(go.Bar(x=list(dataLabel[0].keys()),y=list(dataLabel[0].values()),hovertemplate=('Label: %{x} <br>Nbr: %{y} <extra></extra>')),row=5, col=1)
fig.update_xaxes(tickvals=[i for i in range(g.nbrClasses+1)])
fig.update_xaxes(tickvals=[i for i in range(g.ClassNbr)])
return fig
# ---------------------------------------------------------
# MongoDB operations
......@@ -751,8 +751,10 @@ class callbacks(callbacksOp):
if not labels:
return None
L = dict({i["_id"]: i["C"] for i in labels})
L = dict({i: 0 for i in range(g.ClassNbr)})
for l in labels:
L[l["_id"]] = l["C"]
return [L, Max]
def getSpike(timestamp, interval, layer, perNeuron):
......
......@@ -85,7 +85,7 @@ class layout(layoutOp):
self.MaxSynapse.clear()
self.Spikes2D = self.generate2DView(self.g,[str(i) for i in (i["layer"] for i in self.g.LayersNeuronsInfo)])
self.AccumulatedSpikes2D = {i["layer"]:[0 for n in self.Spikes2D if n["data"]["spiked"] != -1 and i["layer"] == n["data"]["parent"]] for i in self.g.LayersNeuronsInfo}
self.SpikesActivityPerInput = {i["layer"]:[[0 for j in range(self.g.nbrClasses+1)] for _ in range(self.g.Layer_Neuron[i["layer"]])] for i in self.g.LayersNeuronsInfo}
self.SpikesActivityPerInput = {i["layer"]:[[0 for j in range(self.g.ClassNbr)] for _ in range(self.g.Layer_Neuron[i["layer"]])] for i in self.g.LayersNeuronsInfo}
self.Max = 0
def Vis(self):
......
......@@ -56,8 +56,6 @@ class spark(sparkOp):
if ('spikes' in self.g.db.list_collection_names()):
M = max(M, pymongo.collection.Collection(
self.g.db, 'spikes').find_one(sort=[("T", -1)])["T"])
self.g.nbrClasses = pymongo.collection.Collection(
self.g.db, 'spikes').find_one(sort=[("Input", -1)])["Input"]
if ('potential' in self.g.db.list_collection_names()):
M = max(M, pymongo.collection.Collection(
self.g.db, 'potential').find_one(sort=[("T", -1)])["T"])
......@@ -66,8 +64,8 @@ class spark(sparkOp):
self.g.db, 'synapseWeight').find_one(sort=[("T", -1)])["T"])
if ('labels' in self.g.db.list_collection_names()):
self.g.labelsExistance = True
M = max(M, pymongo.collection.Collection(
self.g.db, 'labels').find_one(sort=[("T", -1)])["T"])
M = max(M, pymongo.collection.Collection(self.g.db, 'labels').find_one(sort=[("T", -1)])["T"])
self.g.ClassNbr = int(max(M, pymongo.collection.Collection(self.g.db, 'labels').find_one(sort=[("L", -1)])["L"]))+1
else:
print("No labels")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment