Code Monkey home page Code Monkey logo

strangefx's Introduction

strangefx

Build Maven Central License javadoc

StrangeFX is a Java(FX) based Quantum computer visual editor. It leverages the Quantum computer simulator software exported by the Strange project. Have a look at Strange to get started with the concepts. The samples at QuantumJava leverage Strange and StrangeFX to visualise circuits that are created programmatically.

StrangeFX also has a UI editor that allows users to create quantum circuits with a drag and drop interface.

strangefx's People

Contributors

eugener avatar johanvos avatar jperedadnr avatar tiainen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

strangefx's Issues

allow UI switch between LocalSimulator and CloudSimulator

Typically, when using small number of qubits we want to use the LocalSimulator.
For larger numbers, we want to use the CloudSimulator.

Initially, we don't want the user to choose which simulator to use, but we want to display the simulator in use.

Allow to position gates at random places

Gates are currently added after each other in the QubitFlow (as they are positioned in an HBox).
It should be possible to skip a few positions and at gates at different locations.

fix refreshrequest to be once in an operation only

Right now, refreshrequests are sent for each qubit being altered in a gate.
By the time the Cloud comes back with a solution, the other qubits have their gates assigned, but since the refreshrequest wasn't cleared yet, no new calculation is requested.

Simulator should use intermediate format

At this moment, the Simulator.calculateResults(Model m) method takes the Model, which also has properties that are not relevant to calculations.
When doing calculations in the Cloud, the Model won't be there.
We need an intermediate representation, sort of JSON, to represent the gates.

convert to Matrix before doing calculations

The UI representation of gates can differ from the written representation (in a JSON-style), and that representation still differs from the actual gate operations. For example, when we encounter a CNOT13, we first do a swap, then a CNOT, then a reverse swap.

visualise probability steps

With the new approach, we can visualise the probabilities of individual qubits, but not yet the probability vector as a vector.

Create a SWAP gate UI

A SWAP gate links 2 qubits and swaps them. The resulting string representation for this is [... X ... X ...]
For example, a 5 qubit system with a swap gate between qubit 0 and 3 would be
[X,I,I,X,I]

add probabilities UI

We used to add this as an overlay, but it needs to be done in the same way a regular (block)gate is added.

ADD CNOTxy

Combine SWAP and CNOT01 to achieve CNOTxy

add UI Gate for QFT

The QFT gate spans at least 2 qubits. The gate spans adjacent qubits. For every qubit covered by this gate, we add "QFT" in the gate description.

Remove javafxmobile plugin

Remove the javafxmobile plugin from the gradle build as it is not required when having dependencies on Charm Down.

Renderer contains shared state

The class org.redfx.strangefx.render.Renderer contains a static variable myStage. When executing the example from https://github.com/johanvos/quantumjava and the class org.redfx.javaqc.ch05.cnot.Main the results displayed are not what was calculated.
I suspect the shared variable leads to multiple overrides of some displayed variables. The visible results might even change for each execution. Also, the barchart which is only visible for one window backs up this theory.
When I start only one part of the program like run10(); and comment the others the display is correct.

StrangeFX-1
StrangeFX-2
StrangeFX-3
StrangeFX-4

improve tests

Test the actual results instead of only the size of the results

create a CNOT gate UI

a CNOT gate contains a control qubit and a target qubit. The gate has therefor 2 parts: "C0" at the location of the control qubit and "CNOT" at the location of the target qubit.
For example, in a 5 qubit (0..4) system, this is a valid step: [I,C0,I,CNOT,I]

Check number of qubits before processing cloud result

When a cloud calculation is done, the number of qubits might already have been changed, and that will lead to error results. We can fix that by requesting new calculations, but there will also be a error since the size of the endstates might not correspond to the size of the qubits.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.