Closed rkurchin closed 3 years ago
Let me know if I'm misunderstanding. Are you building the actual graph just for visualization? Will an adjacency matrix that incorporates with feature matrix be enough? Just like what you mentioned in the fourth point
"optionally, a feature matrix, which, if present, must have second dimension equal to the number of nodes in the graph"
The idea is that this object will actually be the input to the graph network. So you can build the graphs from a CIF file (or eventually a SMILES string or whatever else), and then afterwards add the feature matrix in the featurization step (that's why I said optional; you should be able to initialize it without one since the graph-building and the featurization generally happen separately).
But it would also be useful for visualization, because I'd no longer have to feed in the graph and the element list separately!
Anyway, does that clarify? Happy to chat about this in more detail on Zoom or whatever.
also I realize now that Julia doesn't let you do subtypes of concrete types so we may end up wanting to define an AbstractAtomGraph
as well that this (as well as other stuff with pair/bond features) could subtype
Details on implementing LightGraphs types, in case I decide to do it this way:
Making a custom type for atomic graphs so we can jettison FeaturedGraph and my weird fork of GeometricFlux.
Currently, planning to store:
Functions to define on this object (need to look at LightGraphs API and see if there's a way to write it so they'll "just work"):
laplacian
,normalized_laplacian
adjacency_matrix
,degree_matrix
, etc.feature
,weights
,atom_ids
Future possibilities (either for this or perhaps subtypes of it):