Extract from Chrétien de Troyes

Perceval, the Story of the Grail – Chrétien de Troyes (circa 1180)

Welcome to the Perceval documentation!

Through a simple object-oriented Python API, Perceval provides tools for composing photonic circuits from linear optical components like beamsplitters and phase shifters, defining single-photon sources, manipulating Fock states, and running simulations.

Perceval can be used to reproduce published experimental works or to experiment directly with a new generation of quantum algorithms.

It aims to be a companion tool for developing photonic circuits – for simulating and optimising their design, modelling both the ideal and realistic behaviours, and proposing a normalised interface to control them through the concept of backends.

Perceval is conceived as an object-oriented modular Python framework orgainised around the following elements:

It also includes transversal tools for flexible visualization of the circuits and results which are compatible with notebooks or local development environments.

Perceval has been developed as a complete toolkit for physicists and computer scientists, and for students, researchers, and practitioners of quantum computing.

If you are using Perceval for academic work, please cite the Perceval white paper as:

 @article{heurtel2023perceval,
 doi = {10.22331/q-2023-02-21-931},
 url = {https://doi.org/10.22331/q-2023-02-21-931},
 title = {Perceval: {A} {S}oftware {P}latform for {D}iscrete {V}ariable {P}hotonic {Q}uantum {C}omputing},
 author = {Heurtel, Nicolas and Fyrillas, Andreas and Gliniasty, Gr{\'{e}}goire de and Le Bihan, Rapha{\"{e}}l and Malherbe, S{\'{e}}bastien and Pailhas, Marceau and Bertasi, Eric and Bourdoncle, Boris and Emeriau, Pierre-Emmanuel and Mezher, Rawad and Music, Luka and Belabas, Nadia and Valiron, Benoît and Senellart, Pascale and Mansfield, Shane and Senellart, Jean},
 journal = {{Quantum}},
 issn = {2521-327X},
 publisher = {{Verein zur F{\"{o}}rderung des Open Access Publizierens in den Quantenwissenschaften}},
 volume = {7},
 pages = {931},
 month = feb,
 year = {2023}
}