Chemellia / ChemistryFeaturization.jl

Interface package for featurizing atomic structures
https://chemistryfeaturization.chemellia.org/dev/
MIT License
41 stars 14 forks source link

AtomGraph type #7

Closed rkurchin closed 3 years ago

rkurchin commented 4 years ago

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"):

Future possibilities (either for this or perhaps subtypes of it):

SeanXiaoyuSun commented 4 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"

rkurchin commented 4 years ago

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.

rkurchin commented 4 years ago

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

rkurchin commented 4 years ago

Details on implementing LightGraphs types, in case I decide to do it this way: