- 
                Notifications
    You must be signed in to change notification settings 
- Fork 49
Description
We should support 2-electron reduced density matrices from PySCF and PyCI.
Some (very old) work on 2-electron reduced density matrices was done by @matt-chan it seems:
#23
It would be useful to be able to include 2DMs (total and spin-resolved) in IOData, however, for interfacing with CI-postprocessing methods and ChemTools DM analysis tools. In the near(ish) term it would be helpful for the intracule/extracule stuff being looked at by @Ali-Tehrani and the EOM stuff being looked at by @gabrielasd .
There is already an object for this,
Line 165 in 234ab7d
| two_rdms | 
So the thing that is basically necessary is the ability to fill this field from PySCF and PyCI (and potentially other things). This might almost be an IOData script or it could entail more thorough support for PySCF and PyCI more generally.
It might also be nice to support GQCP, which includes density matrices:
https://github.com/GQCG/GQCP/blob/3e6fecc6589d6e971c7ff1062dd1b5cbd58431b8/gqcp/include/DensityMatrix/Orbital2DM.hpp
https://github.com/GQCG/GQCP/blob/54e6c178ff66716232105bb2aa8029fe4091a3bb/gqcp/include/DensityMatrix/G2DM.hpp
(@msricher might find these implementations especially interesting).
We should also be able to directly support two_rdms with MO basis. A name like two_rdms_mo would work fine.
In some sense, one thing we (may) need is to basically have wrappers for calculations that use Pythonic codes (PySCF, PyCI, GQCPy) which store the output as iodata objects.
- We need some new functionality for 1- and 2-electron integrals and reduced density matrices in AO and MO basis sets, plus perhaps interconversion between them. This is an update to the "core" of iodata. The MO-AO and AO-MO transformations are supported ingbasisbut I would not add agbasisdependence but just use the same (very short) code snippets.
- Separate: we should have some example scripts/wrappers that show how to use IOData to run PySCF, PyCI, GQCPy, Psi4Numpy, etc. etc. etc. and store/save the data as IOData objects. (Psi4Numpy a lot more boring since it already uses a form of JSON that, at least for now, we support.) This probably belongs in a separate \scripts\folder since it is not core functionality ofiodataand will break whenever these codes make API-breaking changes.