14import graph_nets
as gn
15from graph_nets
import utils_tf
np.array([1, 2, 3, 4, 2, 3, 4, 3, 4, 4, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3], dtype="int32")
np.array([0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 1, 2, 3, 4, 2, 3, 4, 3, 4, 4], dtype="int32")
get_graph_data_dict(num_nodes, num_edges, NODE_FEATURE_SIZE=2, EDGE_FEATURE_SIZE=2, GLOBAL_FEATURE_SIZE=1):
47 snt.nets.MLP([LATENT_SIZE] * NUM_LAYERS, activate_final=
True),
48 snt.LayerNorm(axis=-1, create_offset=
True, create_scale=
True),
55 def __init__(self, name="MLPGraphIndependent"):
58 edge_model_fn=
lambda:
snt.nets.MLP([LATENT_SIZE] * NUM_LAYERS, activate_final=
True),
59 node_model_fn=
lambda:
snt.nets.MLP([LATENT_SIZE] * NUM_LAYERS, activate_final=
True),
60 global_model_fn=
lambda:
snt.nets.MLP([LATENT_SIZE] * NUM_LAYERS, activate_final=
True),
72 edge_model_fn=make_mlp_model, node_model_fn=make_mlp_model, global_model_fn=make_mlp_model
82 def __init__(self, name="EncodeProcessDecode"):
89 def __call__(self, input_op, num_processing_steps):
93 for _
in range(num_processing_steps):
95 latent = self.
_core(core_input)
get_graph_data_dict(num_nodes, num_edges, node_size, edge_size, global_size)
utils_tf.data_dicts_to_graphs_tuple([GraphData])
get_graph_data_dict(num_nodes, num_edges, 2 * LATENT_SIZE, 2 * LATENT_SIZE, 2 * LATENT_SIZE)
utils_tf.data_dicts_to_graphs_tuple([CoreGraphData])
get_graph_data_dict(num_nodes, num_edges, LATENT_SIZE, LATENT_SIZE, LATENT_SIZE)
ep_model(input_graph_data, processing_steps)
ROOT.TMVA.Experimental.SOFIE.RModel_GraphIndependent.ParseFromMemory(
ROOT.TMVA.Experimental.SOFIE.RModel_GNN.ParseFromMemory(
ROOT.TMVA.Experimental.SOFIE.RModel_GraphIndependent.ParseFromMemory(
ROOT.TMVA.Experimental.SOFIE.RModel_GraphIndependent.ParseFromMemory(
150gen_code =
'''#pragma cling optimize(2)
151#include "gnn_encoder.hxx"
152#include "gnn_core.hxx"
153#include "gnn_decoder.hxx"
154#include "gnn_output_transform.hxx"'''
PrintSofie(output, printShape=False):
200 input_data = CopyData(graphData)
204 latent0 = CopyData(input_data)
207 for _
in range(processing_steps):
210 latent = CopyData(core_input)
213 output = CopyData(core_input)
221 data = get_graph_data_dict(num_nodes, num_edges, node_size, edge_size, global_size)
227for i
in range(0, numevts):
234for i
in range(0, numevts):
235 graphData = dataSet[i]
utils_tf.data_dicts_to_graphs_tuple([graphData])
242 output_gn = ep_model(inputGraphData, processing_steps)
ROOT.TH1D("hG", "Result from graphnet", 20, 1, 0)
248for i
in range(0, numevts):
254print(
"elapsed time for ", numevts,
"events = ", end - start)
258for i
in range(0, numevts):
259 graphData = dataSet[i]
ROOT.TMVA.Experimental.SOFIE.GNN_Data()
ROOT.TMVA.Experimental.AsRTensor(graphData["nodes"])
ROOT.TMVA.Experimental.AsRTensor(graphData["edges"])
ROOT.TMVA.Experimental.AsRTensor(graphData["globals"])
np.stack((graphData["receivers"], graphData["senders"])))
269print(
"time to convert data to SOFIE format", endSC - end)
ROOT.TH1D("hS", "Result from SOFIE", 20, 1, 0)
275print(
"time to create SOFIE GNN class", start - start0)
276for i
in range(0, numevts):
283print(
"elapsed time for ", numevts,
"events = ", end - start)
ROOT.TH1D("hDe", "Difference for edge data", 40, 1, 0)
ROOT.TH1D("hDn", "Difference for node data", 40, 1, 0)
ROOT.TH1D("hDg", "Difference for global data", 40, 1, 0)
298for i
in range(0, numevts):
np.asarray(outSofie[1].edge_data)
307 hDe.Fill(edgesG[j, k] - edgesS[j, k])
np.asarray(outSofie[1].node_data)
313 hDn.Fill(nodesG[j, k] - nodesS[j, k])
np.asarray(outSofie[1].global_data)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
__call__(self, input_op, num_processing_steps)
__init__(self, name="EncodeProcessDecode")
__init__(self, name="MLPGraphIndependent")
__init__(self, name="MLPGraphNetwork")
get_graph_data_dict(num_nodes, num_edges, NODE_FEATURE_SIZE=2, EDGE_FEATURE_SIZE=2, GLOBAL_FEATURE_SIZE=1)
PrintSofie(output, printShape=False)