QISKit.js Quantum Experience
:atom_symbol: Quantum Information Software Kit library to use the Quamtum Experience.
Please visit the main repository of the project to know about the rest of the tools.
Install
:coffee: Install Node.js v8 and then:
npm i @qiskit/qe
Use
:pencil: You can visit more advanced examples in the test folder.
'use strict';
const Qe = require('@qiskit/qe');
const qe = new Qe({});
console.log('Version');
console.log(qe.version);
qe.login('YOUR_PERSONAL_TOKEN_HERE')
.then(() => qe.backends())
.then(backs => console.log(backs));
API
:eyes: Full specification.
Qe(opts) -> qe
The constructor accepts next options:
token (string) - Long term access token, see next point.
token
To force the long term access token, ie: to avoid the re-connection (login) in a worker.
userId
To force user idendifier, ie: to avoid the re-connection (login) in a worker.
userId (string) - User identifier.
version
The actual version of the library.
version (string) - Version number.
async calibration(name) -> info
Get latest calibration stats for a backend.
name (string): Name of the backend to inspect. (default: ibmqx4)
info (object): Including next fields:
lastUpdateDate (string): Date of the last read.
qubits ([object]): Error in each qubit.
multiQubitGates: ([object]): Error in each gate.
async parameters(name) -> info
Get the latest parameters stats of the backend (more recent values that the ones returned by the backendCalibration method).
name (string): Name of the backend to inspect. (default: ibmqx4)
info (object): Including next fields:
lastUpdateDate (string): Date of the last read.
fridgeParameters (string): Information about the cooler.
qubits ([object]): Error in each qubit.
async queues(name) -> info
Get the status of a backend queue.
name (string): Name of the backend to inspect. (default: ibmqx4)
info (object): Including next fields:
state (boolean): If the queue is up or down.
status (string): Actual status of the devices, ie: "busy", "calibration", etc.
lengthQueue (number): Number of jobs in the queue.
async login(personalToken) -> info
Get a long term access token using the QE personal one, you can get it here. This method should be called before the rest ones documented from this point.
info (object): New token and its metadata:
token (string) - New long term access token.
ttl (number) - Time to live (in seconds).
created (string) - When the account was created.
userId (string).
async backend(name) -> info
Get the information of one the chips or simulator.
name (string): Name of the backend to inspect. (default: ibmqx4)
info ([object]): An object with next fields:
name (string) - Descriptive name of the device.
status (string) - If it´s "on" or "off".
serialNumber (string)
description (string)
id (string)
topologyId (string)
simulator (boolean): To mark the simulators.
nQubits (number): Number of Qubits the device has.
couplingMap ([[number]]): To show how the Qubits are connected in this device.
async backends(onlySims) -> infos
Get the information of all available chips and simulators.
onlySims (boolean): To get only info of the simulators. (default: false)
infos ([object]): A list of "info" objects (see last method).
async run(circuit, opts) -> info
Run a circuit in any of the avaliable backends. This method generates a new execution.
circuit (string): Circuit in OpenQASM.
opts (object): With next fields:
backend (string): Name of the backend to use. (default: simulator)
shots (number): Number of times to run the circuit. (default: 1)
name (string): Human friendly indetifier.
seed (string): Noise entropy, only allowed if using the simulator.
maxCredits (number): Max number of the credits to run this job. The task will be cancelled if it needs more.
info (object): Including next fields:
id (string): Unique identifier for the job created to run this circuit.
status (string): To know if the complete job has finished. Supported: "RUNNING", "ERROR_CREATING_JOB", "ERROR_RUNNING_JOB" or "COMPLETED".
name (string): Passed (or generated) human friendly indetifier.
async runBatch(circuits, opts) -> infos
Run a batch of circuits in any of the avaliable backends. This method can generate multiple executions. Note: For convenience the descriptions not included are the same that for last method
circuits ([object]): Batch of circuits. Being "object":
qasm (string): Circuit in OpenQASM. The unique mandatory field.
name
shots: Only to overwrite this parameter defined in "opts" for this piece of code.
seed: Same than "shots".
opts
backend
shots
seed
maxCredits
infos ([object]): Including next fields:
async job(id) -> info
Get the info of a specific job.
id (string): Job identifier.
info (object): Including next fields:
id (string): Unique identifier for the job.
backend (string): Passed name of the backend to use.
shots (number): Passed number of times to run the circuit.
creationDate (string): When the job has entered into the system.
usedCredits (number): Number of consumed credits by the run.
status (string): To know if the complete job has finished. Supported: "RUNNING", "ERROR_CREATING_JOB", "ERROR_RUNNING_JOB" or "COMPLETED".
maxCredits (number): Max number passed of credits to use in this run before cancel it.
circuits ([object]): Batch of circuits. Being "object":
qasm (string): Passed circuit.
name (string): Passed (or generated) human friendly indetifier.
shots (number): If the parameter defined in "opts" was overwritten.
seed (string): If the parameter defined in "opts" was overwritten.
execution (object): Generated execution info, with these fields:
id (string): Identifier of the execution of this program.
status (string): Status of this execution of the program. Supported: "WORKING_IN_PROGRESS", "DONE", "ERROR", "NOT_APPROVED".
result (object): Present only when the job has finished.
date (string): When the job finished.
data (object):
time (number): How long it took, in seconds.
count (object): For each shot (value/key pair) the keys represent the final state of the qubits, and the value their probability. ie: { "00000": 189, "00001": 10 }
async jobs(limit, skip) -> infos
Get all your jobs. Ordered by creation date.
limit (number): Limit the number of instances to return. (default: 50)
offset (number): Skip the specified number of instances. Use it with "limit" to implement result pagination.
infos ([object]): The info for the required jobs. The object structure is like the one returned by the method job.