Block2 to ITensor interface


I wonder if people have already developed code to transfer MPS/MPO object in BLOCK2 which is Quantum Chemistry DMRG package to ITensor object? If not, I would like to develop one! It would be ver y useful to manipulate quantum chemistry calculation in ITensor.


None that I’m aware of, but that sounds like it could be useful. It would be nice to be able to generate MPOs for quantum chemistry to use in ITensor, our current OpSum to MPO conversion function struggles with quantum chemistry Hamiltonians beyond 10-20 orbitals (though @corbett5 has been working on a faster conversion function that works for many more orbitals).

1 Like

I have a replacement for the OpSum that can work with order 10^7 terms which I think works out to around ~50 orbitals for a quantum chemistry problem. It’s closed source at the moment but if you’re interested I’m happy to add you.


I think that would be a fantastic idea for a small library. Julia’s packing system would make it easy for you to develop it as its own package which could depend on ITensors.jl. (Actually it might be even better to pursue a simpler design where the package would convert Block tensors to various types of Julia arrays, then have an ITensor package extension - to be discussed.)

The HDF5 format for dense and block sparse ITensors is fairly straightforward. So we could share any info about those you can’t already deduce by looking at the code. Or if you did the array design all you’d have to really implement is conversion of Block tensors to dense Julia arrays or Julia BlockSparseArrays together with some quantum number information (which the NDTensors library could help with providing formats for).

1 Like

That’s just a type we’re developing internally for now so I’m not sure if we should recommend its usage just yet.

Thank you all! I will go try to do it.

1 Like

That sounds like an amazing advancement! I would be interested, if you are willing to share your source! Improving the ITensorsChemistry codebase is a direction I have been starting to investigate.

It would certainly be useful to be able to convert date files between the various MPS/tensor network codes. Probably the TenPy people would be interested too, and the TensorKit people in ghent, and the QSpace people. Non-abelian symmetries will certainly complicate it a bit since the representations of the fusion trees are not likely to be exactly compatible, and MPO’s could be either bosonic representation with Jordan-Wigner strings, or graded tensors. So it might need some non-trivial conversions in some cases.

1 Like