I am thinking that we might want to add more flexibility at the level above analysing the RDF itself. Ie, should we allow custom functions to calculate shells that don't rely on the RDF?
This would allow generalisation of the problem to any classifier which I hope would find uses in analysing more complex solvation behaviour. More complex functions like NNs may be able to identify second solvation shells and correlated motions better than a simple 1D function (the RDF).
Our current workflow goes:
trajectory -> RDF() -> Radii() -> Solvation_data
Really the RDF and Radii steps can be merged to make it look like:
trajectory -> some_classifier() -> Solvation_data
We currently allow flexibility at the Radii step, but not at the RDF step, ie the user cannot provide a non-RDF based method to then determine radii.
Do we think this would be a good addition? It is a bit complex and would require a bit of a refactor so I would be happy to push down the track.
I am thinking that perhaps we turn the middle step into a class that must be subclassed so that it can be easily switched out. i.e the user would provide the implementation they wanted. The default setup we use at the moment would then look like:
class RDF_Univariate_Spline_Kernel(SolvationKernelBase):
def compute():
...
return radii
class Solution(solvation_kernel=RDF_Univariate_Spline_Kernel):
solvation_kernel.compute()
...
I am thinking that we might want to add more flexibility at the level above analysing the RDF itself. Ie, should we allow custom functions to calculate shells that don't rely on the RDF?
This would allow generalisation of the problem to any classifier which I hope would find uses in analysing more complex solvation behaviour. More complex functions like NNs may be able to identify second solvation shells and correlated motions better than a simple 1D function (the RDF).
Our current workflow goes:
Really the RDF and Radii steps can be merged to make it look like:
We currently allow flexibility at the Radii step, but not at the RDF step, ie the user cannot provide a non-RDF based method to then determine radii.
Do we think this would be a good addition? It is a bit complex and would require a bit of a refactor so I would be happy to push down the track.
I am thinking that perhaps we turn the middle step into a class that must be subclassed so that it can be easily switched out. i.e the user would provide the implementation they wanted. The default setup we use at the moment would then look like: