I created this website during my last year of the Master's degree in Quantum Engineering as a way to learn more on the topic and about web-developement.
The goal of the website is to give users a quick and easy way to "sketch" some ideas without needing to code, while allowing them as much flexibility as possible.
The project is currently being maintained and new features are planned and will be published as soon as they are ready.
All the development is done in the development branch. The branch is automatically synched with the beta version of the website, which you can find at beta.unBLOCHed.xyz
- ✍️Latex input: All values can be inserted in a user-friendly way using the usual LaTeX commands, with the benefit of smart recognition of the most common symbols. To type
$\phi$ simply writephi, to insert a fraction, typing/is sufficient. - 🆗Custom matrices with validation: Both the density matrix and the gate matrix can be fully customized and instant validation is performed to give the user a feedback of what they are typing. Example: if a gate matrix is not unitary, the user is warned and stopped from proceeding.
- 🏹Vector notation: Users can switch between density matrix and state vector notation to interact with pure states.
- 🌐3D visualization: The 3D view of the Bloch sphere reacts instantly to the changes done by the user and can be customized to show or hide different visual aids.
- 🖼Image export: You can export the 3D scene as a high resolution PNG image with a single click. (Hamburger menu in the 3D scene
$\rightarrow$ Save Image)- 🖨️Paper mode downloads: If you want to print the image on paper, select Paper Mode in the hamburger menu for better results.
- 🕹Joystick mode: No more frustating "3D" drawing of the Bloch spehre or animations using your arms to show what you mean! Now you can control the Bloch vector as in a video game using your mouse and/or keyboard.
- ❓Tutorial: A simple and easy to understand interactive explanation for novice users and students, to learn more about quantum computing and information.
- 📱Mobile support: Good support for small screens and/or touch devices.
- Mixed states: Mixed states are fully supported.
- 🎧Noise: Noise simulation is implemented using the "operator sum representation". Different noise channels can be applied and tuned with a simple UI similar to the quantum gates.
I have a lot more features planned for the simulator and would be happy to hear what you think:
- Quantum operations: I have implemented general quantum operation (through the operator sum representation) as the underlying structure for noise but at the moment there is no way for the user to create a custom quantum operation. The main reason why I'm waiting to add this feature is that I think the UI would be too cluttered and probably be more of an annoiance than a useful thing.
- Measurement: I would like to add a simple feature that allows to see the probabilities of a projective measurement given a basis. Now that quantum operations have been implemented it shouldn't be too difficult.
- Time evolution: I plan on adding a way to simulate the time evolution of the Bloch sphere according to some model (e.g. Bloch-Redfield). This would allow user to press "Play" to see how the Bloch vector would evolve as time passes.
Although there isn't a real documentation for the code, I tried to comment as much as possible the most critical sections.
Moreover, where needed, I added comments linking to the source of specific formulas or assumptions used in the code (mostly pointing to a specific page of the book Quantum Computation and Quantum Information )