Go to file
Matthew Treinish 8609f7ae36 Determine row spacing properly (#2299)
As part of the large refactor adding column justification to the latex
drawer in #1977 the function used to determine the image depth was
greatly simplified since most of the work was offset to the dag
processing prior to the latex drawer. However, one piece of critical
code was removed inadvertently which was used for determining the row
spacing. This section looked at every operation and determined if we
should increase or decrease the row spacing depending on what time of
operations were being drawn. The result of this check end up directly
setting a value in the output latex call to \Qcircuit. Without this code
the calculations which are done to determine the output page size are
off by the spacing factor and result in the output circuit exceeding the
single page size. This causes a blank image to be output since the first
is blank and that leads pdf to png conversion to return a blank image.

This commit fixes this by adding back the previously removed row spacing
check before we determine the image depth. This way we properly set the
output row spacing in the latex and avoid page wraps.

Fixes #2155
2019-05-04 19:28:14 -04:00
.github remove consolidate blocks pass (#2153) 2019-04-18 11:40:27 -04:00
docs Removing docs (#1672) 2019-01-13 15:49:32 +01:00
examples Add example for stochastic swap and use to verify wheels (#2251) 2019-05-01 17:40:16 -04:00
qiskit Determine row spacing properly (#2299) 2019-05-04 19:28:14 -04:00
test Register size type error (and casting when possible) (#2288) 2019-05-04 08:51:27 -04:00
tools Copyrights (#2249) 2019-04-30 10:36:47 -04:00
.gitignore gitignore cpp files created in cython folders under the passes folder (#1905) 2019-03-06 16:06:06 -05:00
.pylintrc parallel pylint execution (#2211) 2019-04-26 18:37:21 -04:00
.stestr.conf Switch to stestr for test runner (#737) 2018-11-06 17:43:03 +00:00
.travis.yml Update CI post release (#2297) 2019-05-03 17:26:23 -04:00
CHANGELOG.rst Update changelog to prepare for 0.8 release (#2283) 2019-05-02 16:49:56 -04:00
LICENSE.txt
MANIFEST.in Remove legacy C++ simulator code (#1644) 2019-01-08 17:22:18 -05:00
Make.bat Remove "make doc" target (#1756) 2019-02-07 13:29:37 -05:00
Makefile Copyrights (#2249) 2019-04-30 10:36:47 -04:00
README.md Updated Aer references to BasicAer (#1995) 2019-03-20 18:18:58 +01:00
appveyor.yml Update CI post release (#2297) 2019-05-03 17:26:23 -04:00
constraints.txt Add constraints to pin pylint to known working version (#1868) 2019-02-27 14:35:01 -05:00
pypi.sh Update QISKit to Qiskit (#634) 2018-07-11 13:14:15 +02:00
requirements-dev.txt 1000x faster swap mapping and Cython build chain (#1789) 2019-02-21 13:58:06 -05:00
requirements.txt require scipy>=1.0 and go back to scipy.stats.unitary_group for random_unitary() (#2275) 2019-05-02 04:55:45 -04:00
setup.py Bump version string post release (#2298) 2019-05-03 15:52:31 -04:00
tox.ini Add constraints to pin pylint to known working version (#1868) 2019-02-27 14:35:01 -05:00

README.md

Qiskit Terra

LicenseBuild Status

Qiskit is an open-source framework for working with Noisy Intermediate-Scale Quantum (NISQ) computers at the level of pulses, circuits, and algorithms.

Qiskit is made up of elements that work together to enable quantum computing. This element is Terra and is the foundation on which the rest of Qiskit is built.

Installation

We encourage installing Qiskit via the pip tool (a python package manager), which installs all Qiskit elements, including Terra.

pip install qiskit

PIP will handle all dependencies automatically and you will always install the latest (and well-tested) version.

To install from source, follow the instructions in the contribution guidelines.

Creating Your First Quantum Program in Qiskit Terra

Now that Qiskit is installed, it's time to begin working with Terra.

We are ready to try out a quantum circuit example, which is simulated locally using the Qiskit BasicAer element. This is a simple example that makes an entangled state.

$ python
>>> from qiskit import *
>>> q = QuantumRegister(2)
>>> c = ClassicalRegister(2)
>>> qc = QuantumCircuit(q, c)
>>> qc.h(q[0])
>>> qc.cx(q[0], q[1])
>>> qc.measure(q, c)
>>> backend_sim = BasicAer.get_backend('qasm_simulator')
>>> result = execute(qc, backend_sim).result()
>>> print(result.get_counts(qc))

In this case, the output will be:

{'00': 513, '11': 511}

A script is available here, where we also show how to run the same program on a real quantum computer via IBMQ.

Executing your code on a real quantum chip

You can also use Qiskit to execute your code on a real quantum chip. In order to do so, you need to configure Qiskit for using the credentials in your IBM Q account:

Configure your IBMQ credentials

  1. Create an IBM Q > Account if you haven't already done so.

  2. Get an API token from the IBM Q website under My Account > Advanced > API Token.

  3. Take your token from step 2, here called MY_API_TOKEN, and run:

    >>> from qiskit import IBMQ
    >>> IBMQ.save_account('MY_API_TOKEN')
    
  4. If you have access to the IBM Q Network features, you also need to pass the URL listed on your IBM Q account page to save_account.

After calling IBMQ.save_account(), your credentials will be stored on disk. Once they are stored, at any point in the future you can load and use them in your program simply via:

>>> from qiskit import IBMQ
>>> IBMQ.load_accounts()

Those who do not want to save their credentials to disk should use instead:

>>> from qiskit import IBMQ
>>> IBMQ.enable_account('MY_API_TOKEN')

and the token will only be active for the session. For examples using Terra with real devices we have provided a set of examples in examples/python and we suggest starting with using_qiskit_terra_level_0.py and working up in the levels.

Contribution Guidelines

If you'd like to contribute to Qiskit Terra, please take a look at our contribution guidelines. This project adheres to Qiskit's code of conduct. By participating, you are expected to uphold this code.

We use GitHub issues for tracking requests and bugs. Please join the Qiskit Slack community and use our Qiskit Slack channel for discussion and simple questions. For questions that are more suited for a forum we use the Qiskit tag in the Stack Exchange.

Next Steps

Now you're set up and ready to check out some of the other examples from our Qiskit Tutorials repository.

Authors and Citation

Qiskit Terra is the work of many people who contribute to the project at different levels. If you use Qiskit, please cite as per the included BibTeX file.

License

Apache License 2.0