Cool, I have it working now after the bug fix.
This isn't really a bug, as I have found a work around, but thought I'd bring it up as a potential upgrade.
I've noticed that composing channels seems to get bogged down fairly quickly compared to composing quantum operators. For context, I've constructed a 2-qubit depolarizing channels to apply along with each two-qubit gate in my circuit.
TQDepol[\[Epsilon]_] :=
Sqrt[\[Epsilon]/
15.0] {QuantumOperator["IX"], QuantumOperator["IY"],
QuantumOperator["IZ"], QuantumOperator["XI"],
QuantumOperator["XX"], QuantumOperator["XY"],
QuantumOperator["XZ"], QuantumOperator["YI"],
QuantumOperator["YX"], QuantumOperator["YY"],
QuantumOperator["YZ"], QuantumOperator["ZI"],
QuantumOperator["ZX"],
Sqrt[\[Epsilon]/15.0] QuantumOperator["ZY"],
QuantumOperator["ZZ"],
Sqrt[1 - \[Epsilon]]/Sqrt[\[Epsilon]/15.0] QuantumOperator["II"]};
TQDepolChannel[\[Epsilon]_, i_, j_] :=
QuantumChannel[TQDepol[\[Epsilon]], {i, j}]
I can compose a couple of these maps, like this works just fine:
TQDepolChannel[\[Epsilon], 1, 2]@TQDepolChannel[\[Epsilon], 3, 4]
But the calculation quickly bogs down if I try to compose 3 or more of these channels. My work around is to apply the channels to a state. For example, this composition takes a very long time to evaluate,
TQDepolChannel[\[Epsilon], 1, 2]@ TQDepolChannel[\[Epsilon], 1, 2]@TQDepolChannel[\[Epsilon], 3, 4]
But this evaluates pretty quickly
TQDepolChannel[\[Epsilon], 1, 2]@ TQDepolChannel[\[Epsilon], 1, 2]@TQDepolChannel[\[Epsilon], 3, 4]@QuantumState["0000"]
While the second option is fast, it would sometimes be better to calculate the map for an arbitrary initial state. Maybe the slowdown comes from dealing with super-operators that act on density matrices and perhaps moving to the Liouville representation where the density matrix is vectorized will help - just speculating.
Anyway, thank you for the help.