heterogeneous graphs
For the moment, we concatenate input elements of different types (tracks, clusters, ...) into a single feature matrix. This means that there are features that may be defined for one type, but not defined for other types. Our ML model downstream treats all input elements as nodes of the same type. In principle, splitting up the inputs from a single feature matrix to independent feature matrices for each element type should be better.
Along these lines, we can use the approach ParticleNet uses where basically each input set (in that case particles, and secondary vertices; in our case tracks and clusters) are first put through their own MLPs to standardize the dimension (to for example 32)
https://github.com/hqucms/weaver/blob/7150a1c3c6376737109816b9b22bfba6d7693290/utils/nn/model/ParticleNet.py#L253-L254
self.pf_conv = FeatureConv(pf_features_dims, 32)
self.sv_conv = FeatureConv(sv_features_dims, 32)
Now we can try this out in pytorch: https://github.com/jpata/particleflow/issues/235