Releases: Quandela/Perceval
v0.12.2 - The Bleeding Lance
Improvements
- Detector simulation now uses the optional progress callback
- Renamed
JobGroup
methodlist_unfinished_jobs
tolist_unsuccessful_jobs
for clarity - Removed a warning which always occurred when injecting noise in a converter
Bug fixes
- Fixed post-selection conditions composition in converters
- Fixed heralds display in highly nested circuits
- Fixed
JobGroup
not saving the refreshed jobs status in a parallel run
v0.12.1 - The Bleeding Lance
New features
- A KL divergence method to compare two distributions.
- Two methods that reduce the number of states in a
BSDistribution
to help comparing distributions. - A
qloq ansatz
in the catalog to help building ansatz with qudit encoding.
See https://perceval.quandela.net/docs/v0.12/notebooks/QLOQ_QUBO_tutorial.html
Improvements
- The
catalog
now includes usual 1-qubit gates. - The
CircuitOptimizer
can now ignore columns of the unitary given a list of modes that won't receive input photons. - Perceval's Qiskit bridge is now using Qiskit 1.3.1
- Feed-forward simulation is now faster when using heralds.
- Noisy input state generation is now faster and is now only dependant on the number of photons.
Bug fixes
LC
andTD
simulation now succeed if there are empty modes at the end of the Processor.- Fixed performance computation when using
LC
andTD
. - Fixed potentially wrong results when using several layers of feed-forward.
- The
Sampler
iterator no longer need heralded modes to be defined in the input state. - Fixed a crash when trying to display a circuit having empty sub-circuits.
You can contact us on the Perceval forum
v0.12.0 - The Bleeding Lance
New features
-
Feed-forward local simulation
You can now build aProcessor
containing detectors and feed-forward controllers configuring unitary circuits and obtain strong simulation results!
See: https://perceval.quandela.net/docs/notebooks/Quantum_teleportation_feed_forward.html
See also: https://perceval.quandela.net/docs/reference/feed_forward_configurator.html -
Detector imperfections can now be simulated.
Four different types of detectors are currently supported:- Photon number resolving (PNR) perfect detectors,
- Threshold detectors,
- Interleaved pseudo-PNR detectors,
- Pseudo-PNR detectors using layers of beam splitters and threshold detectors.
-
A new job management system helps you group jobs, check statuses and retrieve results.
See: https://perceval.quandela.net/docs/reference/job_group.html -
A new strong simulation back-end is available: SLAP.
See: https://perceval.quandela.net/docs/backends.html#slap -
New usage example - Quantum kernel methods
See: https://perceval.quandela.net/docs/notebooks/quantum_kernel_methods.html -
Resource estimator for gate-based conversion, supporting dual rail and qudit encodings.
-
A TVD function between probability distributions.
Improvements
- Perceval now supports Python 3.13.
PostSelect
syntax now supports nested logical expressions of 'and', 'or', 'xor' and 'not' operators.- Gate-based circuits to linear optics converters now save heralded photons (by using as many post-selected CNOT as possible).
- Strong simulation now automatically uses heralds to mask the Fock space when possible, saving computation time and memory.
- Failed and cancelled jobs may now be programmatically restarted.
Barrier
components can now be invisible (used only for alignments).- Improved circuit rendering.
DisplayConfig
enabling to select a rendering skin can now be persistent.- Modernized some example notebooks.
Bug fixes
- Tensor product between
BasicState
andSVDistribution
now always succeeds
Other information & known issues
- Python 3.8 is no longer supported.
- Perceval is compatible with both numpy versions 1 and 2. However, installing a fresh Perceval, then a dependency requiring numpy<2 may result in a pip conflict. If it happens, try to install them both in a single pip command.
- You may have to update
pip
andsetuptools
to the latest version before installing Perceval in a Python 3.13 virtual environment.
See syntax changes here: https://perceval.quandela.net/docs/v0.12/legacy.html
You can contact us on the Perceval forum
v0.11.2 - Sir Gawain
Improvements
- Add a Symmetric MZI in the component catalog
- Rectangular
GenericInterferometer
can now autogenerate any 1-mode component whenever the first or last mode is MZI-free - Fix typos in logging documentation
- Remove deprecated calls from user documentation
Bug fixes
- Remove a small sleep time in local sampling simulation (that would hinder low photon count sampling)
- Fix how unit tests requiring extra dependencies are run
v0.11.1 - Sir Gawain
New feature
- cQASM circuit to linear optics converter
Improvements
- Logging system user documentation: https://perceval.quandela.net/docs/reference/logging.html
- Fixed typos in the user documentation
- Improved input parameter checks in Photon Recycling
- Optimized noisy state generation in the
Source
class - Avoid inconsistent values of shots / samples when creating remote jobs
Bug fixes
Circuit / Processor rendering
- Fixed "floating herald" issue in
pdisplay
- Fixed incorrect size of rendered circuit box
Simplify circuit
- Fixed a bug with consecutive permutations in the "simplify circuit" process
- Fixed a bug where a phase shifter with a
phi
variable parameter could disappear in the "simplify circuit" process
Known issues
- The cQASM converter does not support Python 3.8
v0.11.0 - Sir Gawain
New features
-
Local
Processor
andRemoteProcessor
now share the same interface.- This means heralding and post-selection is handled on our QPU and Cloud simulators!
- Introduce a
NoiseModel
class to setup your noisy simulation consistently between local and remote computations. On top of other noise sources,NoiseModel
now supports phase shifter imprecision. - All Cloud platforms need to be updated to support these new features.
sim:altair
andqpu:altair
are already up-to-date!
-
Photon recycling was implemented as Quandela's first open source noise mitigation algorithm
See user doc: Error Mitigation in Boson Sampling by Photon recycling
Article reference: Mitigating photon loss in linear optical quantum circuits: classical postprocessing methods outperforming postselection -
Density Matrix in the Fock Space.
See: Density matrices in Fock space -
A new usage example is available: Boson bunching
See: https://perceval.quandela.net/docs/notebooks/Boson_Bunching.html -
Perceval's first approximate strong simulation back-end (based on Gurvits' permanent estimate)
See: https://perceval.quandela.net/docs/v0.11/backends.html#naiveapprox -
Logging system
-
Maximum Likelihood Estimation (MLE) tomography was implemented
-
N-Controlled rotation gates added to the component catalog
-
StateGenerator
may now produce Dicke states
Improvements
- Python 3.12 support
- Optimized noisy algorithms for both strong simulation and sampling back-ends
- The user documentation is now available for multiple Perceval versions
- Improved documentation:
pdisplay
: https://perceval.quandela.net/docs/reference/pdisplay.html- Component catalog: https://perceval.quandela.net/docs/reference/catalog.html
- Optimized
ProcessTomography
computation time - Tomography algorithms are now available for remote computing
MPSBackend
now supports large permutations among the circuit components- Gate based circuit converters now use a better implementation of the heralded CNOT
- Scaleway provider connection code was updated
PostSelect
now supports>=
and<=
operators
Bug fixes
- Fixed a bug where a
Processor
containing an input state couldn't be copied - Fixed an issue where parameter names were lost (replaced by numerical values only) in some computations
- A cancelled job will now try to retrieve partial results
- Fixed a bug in physical performance computation in the noisy algorithm
- Fixed an issue where post-selection wouldn't be processed correctly when composing two processors
- Fixed a bug where post-selection function wouldn't be refreshed in a local
Processor
that was already used in a simulation
Known issues
- The
MyQLMConverter
cannot be used on Python 3.12 asmyqlm
does not support this Python version.
Other information
- See syntax changes here: https://perceval.quandela.net/docs/v0.11/legacy.html
- You can contact us on the Perceval forum
v0.10.5 - Avalon Island
Improvement
- Herald ports display improved
UnitaryHACK 2024 contribution, by @burlemarxiste
Bug fixes
- Fixed an incompatibility with
matplotlib
3.9 - Perceval is not compatible with
numpy
2 (yet), so it now specifically requiresnumpy<2
v0.10.4 - Avalon Island
Improvements
- Update Scaleway provider connection code.
Bug fixes
- Fix
Tomography
failing on a 3+ qubit gate. - Fix local use of a
Sampler
with iterations not returning iteration data in the result list. - Fix probability distribution to sample count conversion for a low number of samples.
v0.10.3 - Avalon Island
Improvements
- Optimized serialization speed of a large list of samples.
- Improved LaTex rendering in Jupyter notebooks.
- Add method
Sampler.clear_iterations()
to set new iteration parameters on an existingSampler
object.
Bug fixes
- exqalibur may now be used on any virtual machine making Perceval usable on a wider range of environments.
- Fix invalid syntax in two
Simulator
methods. - Fix multiple calls to method
get_results()
of an asynchronous local job. - Small fixes in several examples from the user documentation.
v0.10.2 - Avalon Island
Improvement
- Optimize samples (stream) to sample count conversion