As discussed off-github, it would be great to get MDAnalysis and MMElemental talking.
I'm opening this issue to look into what needs to be addressed in order to implement such a converter.
The main question which was raised off-github relates to the issue of licenses:
Can non-GPL code import a module from a GPL codebase?
From discussions with @Andrew-AbiMansour it seems like the answer here is "probably". It might be worth exploring this further, especially if there's anyone here that knows about the details of open source licensing law?
ATM the Molecule model stores atomic information for a single frame. Generalizing this to a Trajectory class that stores an array of Molecule would be inefficient especially for classical MD simulation in which the topology remains static. Therefore, I'm leaning towards refactoring the Molecule model into 2 by separating the topology from the atomic attributes (coordinates, velocities, etc.) which would then support time series. This would require either dropping qcelemental's Molecule model as a base, or asking @bennybp to change QCSchema.
The 3 core models would then become:
Molecule: stores coordinates, velocities, forces, Topology -> Efficient implementation for static topologies / closed systems typically used in the bio-MD world. Naturally supports trajectories.
Topology: stores Molecule connectivity-related info, symbols, residues, etc. -> Generalizable to support time-dependent topologies (Everything is a multi-dimensional array) for use with reactive forcefields, open systems for the materials community, etc.
ForceField: stores the inter-atomic potential params mapped to the structure. Important to keep this separate from the molecular topology.