- Qblox backend - `QuantifyCompiler.compile`, `determine_absolute_timing` and `compile_circuit_to_device` restandardized: returned schedule is the transformed schedule; and added `keep_original_schedule` argument (!771)
### Merged branches and closed issues
@@ -23,6 +24,7 @@
- Infrastructure - Add `jinja2` as dependency to quantify-scheduler (needed for `pandas.DataFrame`) (!777)
- Documentation - Split source and build folders to simplify using [`sphinx-autobuild`](https://github.com/executablebooks/sphinx-autobuild) for its editing. (!774)
- Schedules - Added two-qubit schedule generating function `two_qubit_transmon_schedules.chevron_cz_sched` for CZ tuneup (!700).
- Qblox backend - Remove unnecessary deepcopies from schedule for 30-75% performance improvement (!771)
Using these factory functions, the resulting square and staircase pulses use no waveform memory at all. The ramp pulse uses waveform memory for a short section of the waveform, which is repeated multiple times.
Alternatively, the building methods of the {class}`~quantify_scheduler.operations.stitched_pulse.StitchedPulseBuilder` can be conveniently **chained** to create a {class}`~quantify_scheduler.operations.stitched_pulse.StitchedPulse` via more elegant syntax:
## Performance optimization by not preserving the original schedule
There is a way to potentially decrease the compilation time by about 20-40 % depending on the schedule if you do not need to keep the original, uncompiled schedule after the compilation. Using `keep_original_schedule=False` in `compiler.compile` modifies parts of the original schedule, making the original schedule potentially unusable after the function call.
```{note}
The returned schedule references objects from the original schedule if `keep_original_schedule=False` is used. Refrain from modifying the original schedule after compilation in this case!
```
```{code-cell}
from quantify_scheduler.backends.graph_compilation import SerialCompiler