Interfacing with ITensors.jl

Click here to download the notebook locally.

Interfacing with ITensors.jl#

You can convert a TCI object to an ITensor MPS object using the TCIITensorConversion.jl library. This library provides conversions of tensor trains between TensorCrossInterpolation.jl and ITensors.jl.

We first construct a TCI object:

import QuanticsGrids as QG
using QuanticsTCI: quanticscrossinterpolate

B = 2^(-30) # global variable
function f(x)
    return cos(x / B) * cos(x / (4 * sqrt(5) * B)) * exp(-x^2) + 2 * exp(-x)
end

R = 40 # number of bits
xmin = 0.0
xmax = 3.0
qgrid = QG.DiscretizedGrid{1}(R, xmin, xmax; includeendpoint=false)
ci, ranks, errors = quanticscrossinterpolate(Float64, f, qgrid; maxbonddim=15)
(QuanticsTCI.QuanticsTensorCI2{Float64}(TensorCrossInterpolation.TensorCI2{Float64} with rank 15, QuanticsGrids.DiscretizedGrid{1}(40, (0.0,), (3.0,), 2, :fused, false), TensorCrossInterpolation.CachedFunction{Float64, UInt128} with 27555 entries), [17, 19, 18], [4.357342925533063e-7, 4.7475885470665616e-7, 5.265515270950924e-7])

One can create a tensor train object from the TCI object, and then convert it to an ITensor MPS:

import TensorCrossInterpolation as TCI

# Construct a TensorTrain object from the TensorCI2 object

tt = TCI.TensorTrain(ci.tci)

# Convert the TensorTrain object to an ITensor MPS object

using TCIITensorConversion
using ITensors

M = ITensors.MPS(tt)
MPS
[1] ((dim=2|id=381|"n=1"), (dim=2|id=216|"l=1,link"))
[2] ((dim=2|id=216|"l=1,link"), (dim=2|id=693|"n=2"), (dim=4|id=669|"l=2,link"))
[3] ((dim=4|id=669|"l=2,link"), (dim=2|id=640|"n=3"), (dim=8|id=744|"l=3,link"))
[4] ((dim=8|id=744|"l=3,link"), (dim=2|id=572|"n=4"), (dim=15|id=434|"l=4,link"))
[5] ((dim=15|id=434|"l=4,link"), (dim=2|id=130|"n=5"), (dim=15|id=920|"l=5,link"))
[6] ((dim=15|id=920|"l=5,link"), (dim=2|id=597|"n=6"), (dim=15|id=574|"l=6,link"))
[7] ((dim=15|id=574|"l=6,link"), (dim=2|id=158|"n=7"), (dim=15|id=239|"l=7,link"))
[8] ((dim=15|id=239|"l=7,link"), (dim=2|id=675|"n=8"), (dim=13|id=505|"l=8,link"))
[9] ((dim=13|id=505|"l=8,link"), (dim=2|id=196|"n=9"), (dim=13|id=426|"l=9,link"))
[10] ((dim=13|id=426|"l=9,link"), (dim=2|id=94|"n=10"), (dim=13|id=628|"l=10,link"))
[11] ((dim=13|id=628|"l=10,link"), (dim=2|id=98|"n=11"), (dim=13|id=359|"l=11,link"))
[12] ((dim=13|id=359|"l=11,link"), (dim=2|id=37|"n=12"), (dim=10|id=523|"l=12,link"))
[13] ((dim=10|id=523|"l=12,link"), (dim=2|id=418|"n=13"), (dim=9|id=967|"l=13,link"))
[14] ((dim=9|id=967|"l=13,link"), (dim=2|id=41|"n=14"), (dim=9|id=459|"l=14,link"))
[15] ((dim=9|id=459|"l=14,link"), (dim=2|id=745|"n=15"), (dim=9|id=293|"l=15,link"))
[16] ((dim=9|id=293|"l=15,link"), (dim=2|id=742|"n=16"), (dim=9|id=46|"l=16,link"))
[17] ((dim=9|id=46|"l=16,link"), (dim=2|id=155|"n=17"), (dim=9|id=240|"l=17,link"))
[18] ((dim=9|id=240|"l=17,link"), (dim=2|id=543|"n=18"), (dim=9|id=214|"l=18,link"))
[19] ((dim=9|id=214|"l=18,link"), (dim=2|id=970|"n=19"), (dim=9|id=214|"l=19,link"))
[20] ((dim=9|id=214|"l=19,link"), (dim=2|id=542|"n=20"), (dim=9|id=639|"l=20,link"))
[21] ((dim=9|id=639|"l=20,link"), (dim=2|id=911|"n=21"), (dim=9|id=131|"l=21,link"))
[22] ((dim=9|id=131|"l=21,link"), (dim=2|id=222|"n=22"), (dim=9|id=254|"l=22,link"))
[23] ((dim=9|id=254|"l=22,link"), (dim=2|id=665|"n=23"), (dim=9|id=309|"l=23,link"))
[24] ((dim=9|id=309|"l=23,link"), (dim=2|id=921|"n=24"), (dim=9|id=788|"l=24,link"))
[25] ((dim=9|id=788|"l=24,link"), (dim=2|id=242|"n=25"), (dim=8|id=850|"l=25,link"))
[26] ((dim=8|id=850|"l=25,link"), (dim=2|id=876|"n=26"), (dim=5|id=750|"l=26,link"))
[27] ((dim=5|id=750|"l=26,link"), (dim=2|id=237|"n=27"), (dim=5|id=770|"l=27,link"))
[28] ((dim=5|id=770|"l=27,link"), (dim=2|id=962|"n=28"), (dim=5|id=73|"l=28,link"))
[29] ((dim=5|id=73|"l=28,link"), (dim=2|id=726|"n=29"), (dim=5|id=902|"l=29,link"))
[30] ((dim=5|id=902|"l=29,link"), (dim=2|id=39|"n=30"), (dim=5|id=934|"l=30,link"))
[31] ((dim=5|id=934|"l=30,link"), (dim=2|id=816|"n=31"), (dim=5|id=933|"l=31,link"))
[32] ((dim=5|id=933|"l=31,link"), (dim=2|id=602|"n=32"), (dim=5|id=126|"l=32,link"))
[33] ((dim=5|id=126|"l=32,link"), (dim=2|id=719|"n=33"), (dim=5|id=157|"l=33,link"))
[34] ((dim=5|id=157|"l=33,link"), (dim=2|id=51|"n=34"), (dim=5|id=142|"l=34,link"))
[35] ((dim=5|id=142|"l=34,link"), (dim=2|id=441|"n=35"), (dim=4|id=286|"l=35,link"))
[36] ((dim=4|id=286|"l=35,link"), (dim=2|id=861|"n=36"), (dim=4|id=839|"l=36,link"))
[37] ((dim=4|id=839|"l=36,link"), (dim=2|id=552|"n=37"), (dim=3|id=377|"l=37,link"))
[38] ((dim=3|id=377|"l=37,link"), (dim=2|id=548|"n=38"), (dim=3|id=430|"l=38,link"))
[39] ((dim=3|id=430|"l=38,link"), (dim=2|id=496|"n=39"), (dim=2|id=928|"l=39,link"))
[40] ((dim=2|id=928|"l=39,link"), (dim=2|id=518|"n=40"))