From a343f7196c6d42644694372890a35b84b76bc934 Mon Sep 17 00:00:00 2001
From: Hammouda Elbez <hammouda.elbez@univ-lille.fr>
Date: Wed, 24 May 2023 18:00:57 +0200
Subject: [PATCH] Fixed issue showing layers without activity

---
 src/Modules/General/callbacks.py |  3 +--
 src/Modules/General/layout.py    | 22 +++++++++++-----------
 src/Modules/Neuron/layout.py     |  4 ++--
 src/Modules/Synapse/layout.py    |  4 ++--
 4 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/Modules/General/callbacks.py b/src/Modules/General/callbacks.py
index 4621579..b9e4258 100755
--- a/src/Modules/General/callbacks.py
+++ b/src/Modules/General/callbacks.py
@@ -568,7 +568,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:[[0 for j in range(g.nbrClasses+1)] for i in range(g.Layer_Neuron[i])] for i in g.Layer_Neuron if i != "Input"}
+                            super.SpikesActivityPerInput = {i["layer"]:[[0 for _ in range(g.nbrClasses+1)] 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
@@ -577,7 +577,6 @@ class callbacks(callbacksOp):
                             spikes = getSpike(int(sliderValue)*float(updateInterval), g.updateInterval,Layer2DViewFilter,True)
                             
                             for layer in Layer2DViewFilter:
-                                #neurons = [[0 for j in range(g.nbrClasses)] for i in range(g.Layer_Neuron[layer])]
                                 try:
                                     layerSpikes = [list(list(list(s.values())[0].values())[0].values())[0] for s in spikes if list(s.keys())[0] == layer]
                                 except Exception:
diff --git a/src/Modules/General/layout.py b/src/Modules/General/layout.py
index db02ae2..7cc7508 100755
--- a/src/Modules/General/layout.py
+++ b/src/Modules/General/layout.py
@@ -83,8 +83,8 @@ class layout(layoutOp):
         self.MaxSpike.clear()
         self.MaxSynapse.clear()
         self.Spikes2D = self.generate2DView(self.g)
-        self.AccumulatedSpikes2D = {i:[0 for n in self.Spikes2D if n["data"]["spiked"] != -1 and i == n["data"]["parent"]] for i in self.g.Layer_Neuron if i != "Input"}
-        self.SpikesActivityPerInput = {i:[[0 for j in range(self.g.nbrClasses+1)] for i in range(self.g.Layer_Neuron[i])] for i in self.g.Layer_Neuron if i != "Input"}
+        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.Max = 0
 
     def Vis(self):
@@ -153,9 +153,9 @@ class layout(layoutOp):
                                                 dcc.Dropdown(
                                                 id='GeneralLayerFilter',
                                                 options=[{'label': str(i), 'value': str(i)} for i in (
-                                                    i for i in self.g.Layer_Neuron if i != "Input")],
+                                                    i["layer"] for i in self.g.LayersNeuronsInfo)],
                                                 value=[str(i) for i in (
-                                                    i for i in self.g.Layer_Neuron if i != "Input")],
+                                                    i["layer"] for i in self.g.LayersNeuronsInfo)],
                                                 multi=True,
                                                 style={"minWidth": "20%","marginLeft": "5px", "textAlign": "start"})], className="d-flex", style={"paddingLeft": "20px", 'width': '100%'})
                                         ], className="col-12")
@@ -183,9 +183,9 @@ class layout(layoutOp):
                                         dcc.Dropdown(
                                         id='2DViewLayerFilter',
                                         options=[{'label': str(i), 'value': str(i)} for i in (
-                                            i for i in self.g.Layer_Neuron if i != "Input")],
+                                            i["layer"] for i in self.g.LayersNeuronsInfo)],
                                         value=[str(i) for i in (
-                                            i for i in self.g.Layer_Neuron if i != "Input")],
+                                            i["layer"] for i in self.g.LayersNeuronsInfo)],
                                         multi=True,
                                         style={"minWidth": "80%", "textAlign": "start"}),
                                     ], style={"textAlign": "start", },className="d-flex col-lg-12 col-sm-12 col-xs-12"),
@@ -193,8 +193,8 @@ class layout(layoutOp):
                                             html.Div([html.P("Accumulated Spikes", style={"margin":"0px"})]),
                                             # Accumulated Spikes HeatMap
                                             dcc.Tabs([dcc.Tab(dbc.Card(dbc.CardBody([
-                                                    dcc.Graph(id={"type":"2DView-heatmap","index":i}, config={"displaylogo": False})
-                                                ])),label=i, value='2Dview-'+str(x)) for x, i in enumerate(self.g.Layer_Neuron) if i != "Input"],value="2Dview-1"),
+                                                    dcc.Graph(id={"type":"2DView-heatmap","index":i["layer"]}, config={"displaylogo": False})
+                                                ])),label=i["layer"], value='2Dview-'+str(x)) for x, i in enumerate(self.g.LayersNeuronsInfo)],value="2Dview-0"),
                                             ], style={"textAlign": "start", }, className="col-lg-3 col-sm-12 col-xs-12")
                                 ,
                                 html.Div(
@@ -271,14 +271,14 @@ class layout(layoutOp):
                                         )],style={'position': 'absolute','width': '100%','height': '100%','z-index': 999,"background": "rgba(68, 71, 99, 0.05)"}),
                                         html.P(id="spikes_info", style={"padding": "8px","margin":"0px"})
 
-                                    ], style={ "height": "50vh","textAlign": "start", "padding": "0px"},className="col-lg-5 col-sm-12 col-xs-12"),
+                                    ], style={ "textAlign": "start", "padding": "0px"},className="col-lg-5 col-sm-12 col-xs-12"),
                                     
                                     # 3D destribution
                                     html.Div([
                                         html.Div([html.P("Spikes Activity Per Input", style={"margin":"0px"})]),
                                         dcc.Tabs([dcc.Tab(dbc.Card(dbc.CardBody([
-                                                dcc.Graph(id={"type":"SpikesActivityPerInput","index":i}, config={"displaylogo": False})
-                                            ])),label=i, value='SpikesActivityPerInput-'+str(x)) for x, i in enumerate(self.g.Layer_Neuron) if i != "Input"],value="SpikesActivityPerInput-1")
+                                                dcc.Graph(id={"type":"SpikesActivityPerInput","index":i["layer"]}, config={"displaylogo": False})
+                                            ])),label=i["layer"], value='SpikesActivityPerInput-'+str(x)) for x, i in enumerate(self.g.LayersNeuronsInfo)],value="SpikesActivityPerInput-0")
                                     ], style={"textAlign": "start", },className="col-lg-4 col-sm-12 col-xs-12")
                                     
                                     ], className="row")), label="2D view", value="2Dview")], id="tabinfo", value="General information"),
diff --git a/src/Modules/Neuron/layout.py b/src/Modules/Neuron/layout.py
index 7478741..a029e50 100755
--- a/src/Modules/Neuron/layout.py
+++ b/src/Modules/Neuron/layout.py
@@ -66,8 +66,8 @@ class layout(layoutOp):
                             html.Div([
                                 dcc.Dropdown(
                                     id='LayerFilterNeuron',
-                                    options=[{'label': str(i), 'value': str(i)} for i in (
-                                        i for i in self.g.Layer_Neuron if i != "Input")],
+                                    options=[{'label': str(i["layer"]), 'value': str(i["layer"])} for i in (
+                                        i for i in self.g.LayersNeuronsInfo)],
                                     multi=False,
                                     style={'width': '150px', "marginLeft": "10px", "textAlign": "start"}),
                                 dcc.Dropdown(
diff --git a/src/Modules/Synapse/layout.py b/src/Modules/Synapse/layout.py
index 11863c8..c3d2f2a 100755
--- a/src/Modules/Synapse/layout.py
+++ b/src/Modules/Synapse/layout.py
@@ -59,8 +59,8 @@ class layout(layoutOp):
                         dcc.Store(id="heatmapEditInfo",data=[False,False,False]),
                         dcc.Dropdown(
                         id='LayerFilterSynapse',
-                        options=[{'label': str(i), 'value': str(i)} for i in (
-                        i for i in self.g.Layer_Neuron if i != "Input")], multi=False,
+                        options=[{'label': str(i["layer"]), 'value': str(i["layer"])} for i in (
+                        i for i in self.g.LayersNeuronsInfo)], multi=False,
                         style={'width': '150px', "marginLeft": "10px", "textAlign": "start"}),
                         dcc.Dropdown(
                         id='NeuronFilterSynapse', options=[], multi=False,
-- 
GitLab