An open source framework for programming photonic quantum computers
Sampler.clear_iterations()
to set new iteration parameters on an existing Sampler
object.Simulator
methods.get_results()
of an asynchronous local job.Shots
Remote sampling jobs now require a maximum shots threshold.
See: https://perceval.quandela.net/docs/algorithms.html#work-with-algorithms
When creating a RemoteProcessor
for a physical QPU, a shot to samples conversion tool enables you to anticipate your use of Quandela Cloud resources.
myQLM converter
Perceval now contains a way of converting myQLM qat.core.Circuit
into a Processor
.
See: Conversion of myQLM circuit to Perceval
Tomography algorithms
StateTomography
and ProcessTomograpy
algorithm have been included in order to study logical gates.
See: Example notebook
CCZ and CCNOT (Toffoli) gates have been implemented in the component catalog.
Quandela Cloud token persistence
A token can now be set on your environment once and for all. It will then be retrieved when running a job with a RemoteProcessor
. You won't have to copy/paste your token in all your scripts and notebooks!
Generic interferometer phases can now be easily set to a given zone of a bigger interferometer.
CircuitOptimizer
now supports template circuits containing permutations, arbitrary unitary matrices as well as multiple hierarchy levels.build_circuit
and build_processor
methods). The previous syntax still works but was deprecated.pip
. See: https://github.com/Quandela/Perceval#installation
AnnotatedBasicState
class was removed (was deprecated since version 0.7.0) .exqalibur
is unusable on some Ubuntu virtual machines hosted by VirtualBox
StateVector
from the left with a numpy
numerical type (e.g numpy.float64(0.6)*state_vector
) can lead to cryptic error messages.
Work-around: either multiply from the right, or convert the numpy
type to the corresponding Python type.The local simulation layer has received a major refactoring to make it better, faster and stronger. Multiple bugs were fixed, several new features were introduced and the computation was optimized (especially the noisy simulation algorithm):
precision
threshold can be adjusted to gain even more!Of course, such a rework comes with cons, as several class API changed a bit. Please check https://perceval.quandela.net/docs/legacy.html for details.
Batch jobs
There is now a way of setting up multiple acquisitions / simulations using a single job with the Sampler
.
See: https://perceval.quandela.net/docs/algorithms.html#batch-jobs
The new StateGenerator
class helps building complex state vectors in one line of code.
See: https://perceval.quandela.net/docs/reference/stategenerator.html
The new StatevectorConverter
class enables converting a Perceval StateVector
to and from a QuTip QObj
and a qiskit Statevector
See the usage example from graph states generation to display: https://perceval.quandela.net/docs/notebooks/Graph%20States%20and%20representation.html
LaTex renderer: circuits and processors can now be rendered as LaTex code (using Tikz)
QiskitConverter
supports CZ gatesBSDistribution
now supports product and power operatorsBasicState.separate_state
method now allows to keep the annotation informationStateVector
would unexpectedly force its normalizationexqalibur
is unusable on some Ubuntu virtual machines hosted by VirtualBox
ExQalibur
quandelibc
dependency was replaced with exqalibur
.
exqalibur
provides the same optimized services as quandelibc
and more! Stay tuned as we will add more native features in exqalibur
soon!
Circuit optimizer A specialized class allows you to optimize circuit parameters so that a circuit with enough degrees of freedom matches any unitary matrix. See: https://perceval.quandela.net/docs/reference/circuit_optimizer.html
Processor.mode_post_select
was replaced by a clearer min_detected_photons_filter
This change is breaking the Processor
API.
See: https://perceval.quandela.net/docs/legacy.html for details
A new Perceval usage example is available: Reinforcement learning
Source model can now be asked to output multiple photons per mode. This change fixes unexpected results with Processor
simulations, where the users inputs a state with more than one photon in at least one mode.
The new parameter ignore_identity_block
in Circuit.decompose
allows to discard or keep trivial components in a decomposition
A remote job status refresh failure won't automatically crash your program anymore
Clarified error messages
Fixed RemoteProcessor.resume_job
call
RemoteJob
could not be programmatically cancelled with a waiting
status
Fixed RemoteProcessor
composition
Fixed SLOS back-end all_prob
call
Fixed a random division by zero error when simulating too few samples from a sample_count
Support was added for drawsvg
2 (https://github.com/Quandela/Perceval/issues/189)