https://github.com/asimakiskydros/quacide

An intuitive, user-friendly quantum circuit designer made in HTML/TS/CSS/Python. A simplistic UI that connects to IBM's Qiskit backend to return quick, accurate results, no coding required.

https://github.com/asimakiskydros/quacide

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.2%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

An intuitive, user-friendly quantum circuit designer made in HTML/TS/CSS/Python. A simplistic UI that connects to IBM's Qiskit backend to return quick, accurate results, no coding required.

Basic Info
  • Host: GitHub
  • Owner: asimakiskydros
  • Language: TypeScript
  • Default Branch: main
  • Homepage:
  • Size: 1.71 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme

README.md

QuaCiDe

QuaCiDe Logo QuaCiDe (pronounced *cassidy*) is an intuitive, user-friendly quantum circuit designer made in HTML/TS/CSS/Python. Its simplistic design but powerful foundation aims to enable learning in the field of Quantum Computing and ease research and experimentation by liberating the user from technical demands, such as program installations, coding, scaling restrictions etc.

Local Installation

The present product is still in Alpha development phase, therefore to access it you'll have to run its files in a controlled IDE environment that offers and/or supports servers for HTML execution. Visual Studio Code running Node.js and Live Server is recommended.

You can install this package directly from the terminal: npm install asimakiskydros/QuaCiDe

Both interface.html and qiskit-qasm.py need to be running for the designer to be fully functional. Make sure Python 3, Node.js and all listed languages are supported by your system.

The first time you install and every time you make a change in the TypeScript code, run the following so your changes take effect: npm run build

Usage

Designer Preview

The UI offers a variety of user-friendly actions: * All the mainstream one- and two-qubit gates are offered by default, along with measurements and controls, to be dragged and dropped on any qubit. * SHIFT+click on a gate to spawn a copy next to it. CTRL+click on it to spawn a copy below it. Right-click it to delete it instantly. * Shove gates between other placed gates to spawn new steps on command. * New qubits spawn at the bottom of the register each time a gate is picked up. * A set amount of initial qubits can also be spawned on demand by setting the Min Qubits variable on the toolbar. * Redundant qubits and steps are detected and deleted automatically. * Qubits are interactable threefold: Click their state display to shuffle between the Bloch sphere edges |0⟩, |1⟩, |+⟩, |-⟩, |+i⟩, |-i⟩; CTRL+click it to shuffle between color-coded registers. Neihboring registers with the same color get unified into one; Double-click on their name display to give it a different alias. Press SHIFT while doing any of the above to reset to the default value. * Undo and Redo actions on each circuit through the relevant toolbox buttons, or by pressing CTRL+Z and CTRL+Y respectively. * Clear everything on the current circuit through the relevant toolbox button or by pressing CTRL+C. * See the resources and the specifications of each circuit on the toolbar: #Qubits, #Gates and #Steps are updated on every change; #Shots, Endian Order and Min Qubits are set by the user. * Create and moderate multiple circuits at a time by spawning new Tabs. This can also be done by invoking CTRL+Q. * Turn valid circuits into custom gates through the relevant toolbox button or by pressing CTRL+A. * Customize the designer to your liking by changing the global Settings.

Outputs

Execute the current circuit instance to get the output you desire: currently, two output kinds are offered: counts and statevector, with three more underway. All outputs can be found on the right-hand sidebar. Execution currently uses Qiskit and Qiskit-Aer to run the experiment, with more options to come.

Output Preview

Outputs are displayed as text but also as interactable charts. Text can be copied directly and charts are readily downloadable as PNGs.

About

This project started as my Bachelor's Thesis, but quickly grew beyond that scope. While still being in Alpha stage and thus, not ready for F/OSS distribution, it is meant to become completely open to everyone in the near future. In the meantime, any suggestions are very welcome.

Owner

  • Name: Asimakis Kydros
  • Login: asimakiskydros
  • Kind: user
  • Location: Thessalonica, Greece

I study Computer Science at the Aristotle University of Thessalonica

GitHub Events

Total
  • Push event: 1
Last Year
  • Push event: 1

Dependencies

package-lock.json npm
  • 407 dependencies
package.json npm
  • @types/jquery ^3.5.30 development
  • terser-webpack-plugin ^5.3.10 development
  • ts-loader ^9.5.1 development
  • typescript ^5.5.4 development
  • webpack ^5.94.0 development
  • webpack-cli ^5.1.4 development
  • @types/plotly.js ^2.33.4
  • jquery ^3.7.1
  • plotly.js ^2.35.2