The paper "Pulse-level noisy quantum circuits with QuTiP" introduces qutip-qip, which has an OptPulseProcessor that compiles gates into control pulses optimized with QuTiP's built-in GRAPE.
Examples are available in the code accompanying the paper, specifically dj_algorithm.py for the Deutsch-Jozsa algorithm, Fig 3 for the paper.
There's also some Jupyter notebook tutorials.
It seems relatively straightforward to implement a KrotovPulseProcessor that uses the Krotov package to optimize all the gates in the circuit. This would boil down to adapting OptPulseProcessor.load_circuit to generate Krotov objectives and run the optimization.
It would probably be more interesting to do this with an SCQubitsModel rather than a spin chain.
The paper "Pulse-level noisy quantum circuits with QuTiP" introduces
qutip-qip, which has anOptPulseProcessorthat compiles gates into control pulses optimized with QuTiP's built-in GRAPE.Examples are available in the code accompanying the paper, specifically
dj_algorithm.pyfor the Deutsch-Jozsa algorithm, Fig 3 for the paper.There's also some Jupyter notebook tutorials.
It seems relatively straightforward to implement a
KrotovPulseProcessorthat uses the Krotov package to optimize all the gates in the circuit. This would boil down to adapting OptPulseProcessor.load_circuit to generate Krotov objectives and run the optimization.It would probably be more interesting to do this with an
SCQubitsModelrather than a spin chain.