theochem/ModelHamiltonian

What types of output should be supported?

PaulWAyers opened this issue · 4 comments

What types of output should we support?

  1. 1- and 2-electron integrals as numpy arrays. (Should we support sparse formats?).
  2. 1- and 2-electron integrals with a wrapper from IOData to generate FCIDUMP. (IODATA object -> FCIDUMP)
  3. what sorts of formats to support other (non-electronic-structure-theory) codes.

Sparse formats, either (doublets|quadruplets) + values, or just a linearized array with the (2|4|8)-fold symmetry built in using repeated triangular indexing, could be a good project for someone for the course.

Commented in my own issue, but a good output format to support would be specific Python APIs, like PySCF, PyBlock, PyCI, etc.

These would use the "lazy import" strategy of importing the specific libraries inside of the functions using it, so that the libraries can be optional dependencies.

I like the idea of supporting specific Python APIs. It also (immediately) improves the impact.

For the sparse formats, I would try to go simple: unless the sparse format is something that aligns with an important external package, whoever uses the sparse format is going to have to be implement something in their own package, so it's ideal if it is extremely easy to use. Perhaps that favors the linearized-array-strategy?

This seems settled, and everything is in the repo now. Specific output formats are better considered as additional features than an Issue here.