Releases: Qiskit/qiskit
Releases · Qiskit/qiskit
Qiskit Terra 0.12.0
Changelog
Deprecated
- Rename and deprecate qubit keyword args on standard gates. (#3788)
- Add entropy and entanglement state measures to quantum_info (#3758)
- Deprecate the PersistentValue instruction. The ConstantPulse parametric pulse should be used in its place. This requires the user to know the duration for which the signal amplitude should be changed. (#3756)
- Add
dot
method to operator classes (#3740) - add
partial_trace
function to quantum_info (#3665) - Deprecate circuit_instruction_map (#3717)
- output as first kwarg in circuit.draw (#3632)
- Add python 3.8 support and deprecate python 3.5 (#3268)
Added
- add repr to qiskit.visualization.text.TextDrawing (#3722)
- Utility function to measure qubits using OpenPulse (#3730)
- add
partial_trace
function to quantum_info (#3665) - Add
average_gate_fidelity
,gate_error
, and modifyprocess_fidelity
functions (#3660) - Parametric Pulses (#3620)
- Crosstalk adaptive gate scheduling pass (#3532)
- Add CouplingMap.draw method. (#3630)
- Coupling map constructors (#3618)
- add zxz decomposition (#3519)
- Add python 3.8 support and deprecate python 3.5 (#3268)
Changed
- make controlled base gate an instance. (#3773)
- Allow for circuit measure methods to return a new circuit with inplace kwarg (#3755)
- override
control
of standard gates where possible (#3631) - Add entropy and entanglement state measures to quantum_info (#3758)
- Change rep_time unit to s (#3612)
- add repr method for ParameterTable (#3754)
- Enable numpy array local simulator return types (#3181)
- #2262 | Acquire commands on a single qubit (#3574)
- Add
dot
method to operator classes (#3740) - Run dense layout if trivial layout is not perfect at level 1 (#3657)
- Make assemble() respect max_shots (#3606)
- Assemble meas levels validation (#3694)
- output as first kwarg in circuit.draw (#3632)
- Add Crx and Cry gates (#3600)
- Setting limits for CSPLayout (#3515)
Fixed
- Fix bind propagation when decomposing composite gates. (#3729)
- Add support for displaying controlled gates to latex (#3777)
- Add support for controlled gates to mpl drawer (#3779)
- Fix latex drawing conditions for 2 and 3 qubit gates (#3778)
- Collect2qBlocks to always exclude conditioned gates from blocks. (#3782)
- When label is provided, text-draw it instead of the name (#3760)
- Increase job watcher cancel button width. (#3708)
- Fixed issue 3673 (#3675)
- Fix bug where lo units were not being properly converted (#3597)
- Visualizers properly represent complex numbers (#3666)
- Fix Operator.transpose for non-square operators (#3672)
- Fixes issue 3607 (#3642)
- Added one time warnings for dt and qubit_freq_est turning into properties (#3594)
Qiskit Terra 0.11.1
Qiskit Terra 0.11.0
Changelog
Deprecated
- Deprecate cmd def (#3573)
- TranspilerAccessError is deprecated in favor of TranspilerError (#3222)
- Deprecate qx_color_scheme() (#3220)
- Mostly remove sympy and deprecate sympy Instruction parameters (#3156)
- Remove buffer options in Pulse (#3297)
Added
- Format pulse defaults (#3526)
- Add argument to ignore framechange only channels for schedules drawing (#3441)
- Use Enum for meas_level and meas_return (#3493)
- Add ability to get counts from statevectors and density matrices (#3514)
- Add Hellinger fidelity discrete probability measure. (#3510)
- Result marginal counts (#3446)
- CSP layout selector (#3043)
- add ControlledGate class (#2862)
- Add from_label to Operator class (#3342)
- Add layout score analysis pass (#3321)
- Add Instruction.is_parameterized() (#3328)
- Add support for slicing and concatenation of PassManagers (#3209)
- Add R gate to standard gates (#3341)
- Parallel support for PassManager.run() (#3290)
- Add dual of mpl mathtext syntax for latex drawer labels (#3224)
- Add alias for cnot function to cx() (#3255)
- Auto Scale PulseScheduler drawing (#3180)
- Basic pulse scheduler (#2650)
Changed
- The exceptions QiskitError qiskit/circuit/* are being replaced by CircuitError (a QiskitError subclass) (#3210)
- Move barrier_before_final_measurements to 'passes' directory (#3260)
Removed
- remove CXBase (#3543)
- Remove implicit string cast of the snapshot label (#3544)
- Remove deprecated UBase gate (#3539)
- Round of deprecation removal (#3190)
- Removing U0Gate (#3431)
Fixed
- Add validation of backend memory support when executing with memory=True (#3528)
- Fix side effects of setting numpy.random.seed (#3541)
- fix no reg depth (#3513)
- Gate parameters support mix of indexes and bits (#3490)
- Deal with None as return from job.queue_position() (#3458)
- Fix Schedule Plot reflecting duration of final schedule even if it is not plotted (#3418)
- Fixes bug in concurrence using
eigh
instead ofeigvals
for possibly non-hermitian matrices (#3376) - Stop setting explicit background color in plot_histogram() (#3277)
- Fix matplotlib with wide parameters (#3354)
- Fix bug in align_acquires where measurement pulses had to be added before AcquireInstructions (#3307)
- Collect2qBlocks, CommutationAnalysis to ignore parameterized gates. (#3288)
- In plot_state_city, make the z=0 plane extend to the axes limits on all sides. (#3211)
- CouplingMap.distance was returning non-int (#3323)
- Added in custom unitary to qasm (#3069)
- Removed the usage of stochastic swap trivial_flag as it can lead to single-qubit gates being omitted (#3285)
- Better handling when empty instructions are unrolled or inverse (#3274)
Qiskit Terra 0.10.0
Changelog
Deprecated
- Deprecate passing in an ast node as a instruction parameter (#3240)
- add instruction.control deprecation release notes (#3188)
- Deprecate allowing extra keys in circuit drawer style dict (#3105)
- Deprecate Bit-tuple equality check (#3040)
Added
- Add support for partial results to Result class (#3217)
- Add initial support for working with ion-trap devices (#3214)
- Add ax kwarg to matplotlib visualization functions (#3053)
- Add QV info to backend monitor and overview (#3141)
- Add new passmanager.replace(index, ...) method (#3004)
- Add measure_all, measure_active, remove_final_measures methods (#2993)
- Add float exponentiation for Gates (#2811)
- Add negation support for Parameter class. (#3148)
- add rxx gate (#3113)
- One qubit Euler basis decomposer (#3115)
- add snapshot of real calibration data to mock backends (#3060)
Changed
- average_data can be imported from qiskit.quantum_info.analysis (#3159)
- "fold" option unified across circuit drawers (#3108)
- Add DAGCircuit.substitute_node for single node replacement. (#3145)
- Validate input when setting the QuantumCircuit data attribute directly (#2838)
- Only close mpl figures in jupyter with inline backends (#3051)
Removed
Fixed
Qiskit Terra 0.9.1
Qiskit Terra 0.9.0
Changelog
Deprecated
- The gates
U
andCX
are being deprecated in favor ofu3
and
cx
. (#2380) - The gate
u0
is being deprecated in favor of using multipleid
gates
to insert delays (#2664) - The decorator
requires_qe_access
is being deprecated in favor of
online_test
. - The
as_dict
method of Qobj is deprecated in favor ofto_dict
. (#2556)
Added
- A new pulse instruction,
Delay
. ADelay
occupies a pulse channel for a
duration of time, blocking other instructions from being inserted in this time. (#2869) - Ability to check for equality of pulse
Schedule
andInstruction
. (#2873) - Added tests for
gate_map
and reference images for testingplot_gate_map
- New
CountOpsLongest
analysis pass to retrieve the number of operations
on the longest path of the DAGCircuit. (#2734) - Added
sech
andsech_deriv
pulses inqiskit.pulse.pulse_lib
. - The option
vertical_compression
was added to the text drawer and
to theQuantumCircuit.draw
method. The option allows to control
how much room the text circuit drawing takes. - The option
idle_wires
was added to the drawers to control
if wires without any operation should be included in the drawing. (#2692) - Introduced a visualization for the Pass Manager. (#2445)
- New pulse schedule method
Schedule.filter
to filter by instruction
channel, time, and type. (#2597) - Decomposition of arbitrary isometries (#2600)
- Decomposition of diagonal gates (#2600)
- Decomposition of multiplexed rotation gates (#2600)
- Decomposition of multiplexed single-qubit unitaries (Option: decompose
up to a diagonal gate) (#2600) - ZYZ decomposition for single-qubit unitaries (#2600)
- Gray-Synth and Patel–Markov–Hayes algorithms for synthesis of
CNOT-Phase and CNOT-only (linear) circuits (#2457) - Added n-qubit unitaries to BasicAer simulator basis gates (#2342)
- Added a
random_circuit
function underqiskit.circuit.random
(#2553) - Added
equiv
method toOperator
andStatevector
classes for
testing if two objects are equivalent up to global phase (#2910) - Added
output_name
as a transpiler parameter to set the name of
output circuits (#2745) - Simple expressions of Parameters can now be created via the four basic math
operations (+,-,*,/). (#2537) - A
ParmeterVector
class has been added to ease the construction of circuits
requiring a large number of parameters. (#2379) - dag.draw() method to visualize DAGCircuit objects (#3016)
Changed
- Intervals are now defined by start and stop, rather than begin and end.
- TimeslotCollections now are sorted by default and have more efficient merges.
- Pulse samples are now clipped if their norm is between 1 and 1+epsilon.
Otherwise an error is raised. Schedule.instructions
now returns with time-ordering.- More informative errors are now raised if
qubit_lo_freq
and
meas_lo_freq
are not supplied toassemble_schedules
. (#2833) pulse.samplers
module has now been moved topulse.pulse_lib.samplers
. (#2881)- The number of memory slots required will now be inferred from the supplied
schedules ifmemory_slots
is not supplied. - All circuit drawers now express most commonly used fractions
of PI (#2808). - Set default repetition time to be the first available.
- Pulse commands may now start with capitalized letters.
- The
pylatexenc
andpillow
requirements are now optional. These
are only used by thelatex
andlatex_source
circuit
visualization backends. To continue using them ensure these are
installed. (#2451) - When adding a register to a circuit, an error will now be raised if
a register of the same name is already present. Previously, an error
would only be raised if the same register was added twice. - Qubits and classical bits are not represented as a tuples anymore,
but as instances ofQubit
andClbit
respectively. (#2414) - The ApplyLayout pass is incorporated in all preset pass managers to
delineate a virtual circuit from a physical circuit (#2672) - Mapping passes (
CXDirection
, Swap passes,CheckMap
,CheckCnotDirection
)
now operate on a register-less circuit corresponding to
an already embedded physical circuit. (#2672) - Replaces
LegacySwap
by faster, more stableStochasticSwap
pass (#2672) - Uses level 1 by default as transpiler optimization level (#2672)
- Change
Snapshot
signature to matchsimulator.snapshot
(#2592) DAGCircuit.width()
formerly returned number of qubits, now returns total
number of qubits + classical bits (#2564)- Functions assuming the former semantics of
DAGCircuit.width()
now call
DAGCircuit.num_qubits()
(#2564) DAGCircuit.num_cbits()
renamed toDAGCircuit.num_clbits()
(#2564)- Changed definition of
Cu3Gate
to to equivalent to the canonical
definition of a controlledU3Gate
(#2755) coupling_map
now required to validate abackend.configuration()
(#2836)- The method
QuantumCircuit.count_ops
now returns anOrderedDict
instead of a dict. - If layout information is available in
the circuit, it will be included to the circuit drawing. This can be removed
using the optionwith_layout=False
in the method
QuantumCircuit.draw
. (#2739) - Q-sphere visualization is enhanced and corrected (#2932)
- Shorter CH gate definition involving only 1 CX (#2837)
- Now PassManager.draw() (without any argument) will return an in-memory PIL image.
Removed
- The ability to set the
Timeslot
s for a pulseInstruction
at initialization. - The previously deprecated functions
qiskit.visualization.plot_state
and
qiskit.visualization.iplot_state
have been removed. Instead use
the specific functions for each plot type (#2325). - International documentation of outdated readme etc (#2302)
- Removed deprecated options in
execute
,transpile
, andassemble
.
Removed deprecatedcompiler
. - Removed deprecated
qcvv
in tools. Removed deprecated converters
qobj_to_circuits
andcircuits_to_qobj
(#2301) - The previously deprecated
qiskit._util
module has been removed.
Useqiskit.util
instead. (#2329) - The logging tools in
qiskit.tools.logging
are removed. (#2387) - The
qiskit.qiskiterror
module has been removed. Please use
qiskit.exceptions
instead. (#2399) - Removed previously deprecated
DAGCircuit
methods (#2542) - Removed
CompositeGate
class, in favor of adding Instruction
objects directly (#2543) - Removed
ignore_requires
andignore_preserves
options from
PassManager
(#2565).
Fixed
- Fixes a bug where the
CmdDef
was getting built without buffers on channels. - Fixed bug in
Pulse
for multiple parameters being added (#2742) - Fixed bug in
Pulse
forCmdDef
arguments (#2741) - Fixed bug in
Operator
andSuperOp
for initializing from circuit
containing gates without an explicit matrix definition (#2723) - Possible to decompose SU(4) gate into non-CNOT basis with
TwoQubitDecomposer
- Fixes a bug that removed
id
gates from circuit. id gates are
like await
command and will never be removed (#2663) - Fixed bug in
CommutationAnalysis
pass affecting conditional gates (#2669) - Fixed bug in measure sampling for
BasicAer
Qasm simulator if a qubit
was measured into more than one classical bit (#2735) - Correctly serialize complex numbers with a nonzero real part
- Fixed bug in measure sampling for
BasicAer
Qasm simulator if only a
subset of qubits are measured (#2790) - Parameter objects can be serialized and communicated between
sub-processes (#2429) - Parameterized circuits no longer need to be transpiled individually (#2864)
Qiskit Terra 0.8.2
Changelog
Fixed
Qiskit Terra 0.8.1
Changelog
Fixed
- Corrected the deprecation warning message for
qiskit.converters.qobj_to_circuits
(#2350) - Fixed
execute()
andtranspile()
functions to enable setting
optimization level 0. (#2370) - Set the swapper with the seed transpiler for optimization level 2 and 3
(#2361) - Fix default basis gate set for other transpiler passes (#2357)
- Fix the docstring for transpile to include optimization_level 3 (#2367)
- Fix spacing in the text circuit drawer (#2382)
- Fix for too strict math sanitization pulse instructions (#2397)
- Arugments to
assemble_schedule
were not actually optional, ensure
they're required (#2398) - Fix for framchange instructions being converted to a string instead of a
float (#2437) - Fix for rep_times as a float, now it's an integer (#2438)
- Fix type error for integer framechange instructions (#2458)
- Fix for missing cython source files in sdist (#2436)
- Fix for different pulse schedules created with the same name (#2431)
- Only create a single AquireInstruction for all qubits (#2485)
- Stop modifying layout in stochastic swap pass (#2507)
- Only call CXDirection pass on optimization_level=3 if coupling map is
provided (#2526) - Fix optimization_level=0 without a coupling map (#2509)
Qiskit Terra 0.8.0
0.8.0 - 2019-05-02
Added
- Added exact and approximate decomposition of SU(4) to arbitrary supercontrolled basis
- Introduced schedule lo configuration. (#2115)
- Introduced pulse schedule assembler. (#2115)
- Builtin library of continuous pulses and builtin library of discrete pulses which are obtained
by sampling continuous pulses with default sampling strategy. - Sampler decorator and standard sampler library for conversion of continuous pulses
to discreteSamplePulse
(#2042). - Core StochasticSwap routine implimented in Cython (#1789).
- Added QuantumChannel classes SuperOp, Choi, Kraus, Stinespring, PTM, Chi to
quantum_info for manipulating quantum channels and CPTP maps. - Added Operator object to quantum_info for representing matrix operators.
- Introduced the backend defaults model and endpoint for pulse backends (#2101).
meas_level
to result schema (#2085).- Core StochasticSwap routine implemented in Cython (#1789).
- New EnlargeWithAncilla pass for adding ancilla qubits after a Layout
selection pass (#1603). - New Unroll2Q pass for unrolling gates down to just 1q or 2q gates (#1614).
- Added support for register slicing when applying operations to a register (#1643).
- Added in new parameter
justify
to the text, mpl and latex circuit drawers to say how the
circuit should be aligned. (#1725, #1797, #1977) - Added function for purity of a mixed state in
qiskit.quantum_information
(#1733) - Added parameter to the TextProgressBar to allow the output to be sent to a
different output stream - Added a
__qiskit_version__
parameter to the qiskit namespace. This will
contain a dictionary of versions for all installed qiskit elements. (#1885). - Added a
RunConfig
object for configurations related to running an
experiment (e.g. shots, memory) (#1856) - Added a
TranspileConfig
object for configurations related to transforming
circuits (e.g. basis_gates, coupling_map, initial_layout) (#1856) - Added a
qiskit.compiler
namespace for all functions that transpile, schedule
and assemble circuits and pulses (#1856) - Added support for passing a list of
basis_gates
,coupling_map
etc. to the
qiskit.compiler.transpile()
function, each corresponding to one of the circuits (#2163) - Added a
qiskit.compiler.assemble_circuits()
function to generate qobj from some
circuits and a RunConfig (#1856) execute()
andassemble()
allow setting a qobj_header, of type
QobjHeader or dict, to add extra information to the qobj (and thus result).- Register indexing supports negative indices (#1875)
- Added new resource estimation passes:
Depth
,Width
,Size
,CountOps
, and
NumTensorFactors
, all grouped in theResourceEstimation
analysis pass. - Added
nodes_on_wire()
to DAGCircuit which returns an iterator over all the
operations on the given wire - Added new properties to an Instruction:
num_qubits
,num_clbits
(#1816). - Added a
QuantumCircuit.append
public method for appending arbitrary instructions
to some qubits and clbits in the circuit (#1816). - Added an
Instruction.definition
property that defines a composite instruction
in terms of other, simpler instructions (#1816). - Added an
Instruction.mirror()
method that mirrors a composite instruction
(reverses its sub-instructions) (#1816). - Added an
PassManager.passes()
method that returns a list of the passes that
have been added to the pass manager, including options and flow controllers. - Added a
PassManager.run()
that transforms aQuantumCircuit
according to its
pass schedule and returns aQuantumCircuit
. - Added a
qiskit.quantum_info.random
for generating random states, unitaries, etc (#2119). - Added a
qiskit.quantum_info.synthesis
for algorithms that synthesize circuits (#2119). - Added a
NoiseAdaptiveLayout
pass to compute a backend calibration-data aware initial
qubit layout. (#2089) - Gates and instructions in a circuit accept integers as parameters to refer to
wires instead of named bits. - Added a
OptimizeSwapBeforeMeasure
pass that removes the swap gates when they
are followed by a measurement instruction, moving the latter to the proper wire. (#1890) - Added a
RemoveDiagonalGatesBeforeMeasure
pass that removes the diagonal gates when they
are followed by a measurement instruction. (#2208) - Added a
CommutativeCancellation
pass that cancels self-inverse gates and combines
rotations about the Z axis, leveraging previously-found gate commutation relations. (#2012) - Add an option for using a user config file to enable changing default
settings for various functions in qiskit. Right now it only supports setting
the default circuit drawing backend. (#2122) - Added a
Collect2qBlocks
pass that analyzes the circuit for uninterrupted sequences
of gates (blocks) acting on 2 qubits. (#2134) - Added a
ConsolidateBlocks
that turns previously-collected blocks of any size
into equivalent Unitary operators in the circuit. (#2134) - Added support for parameterized circuits. (#2103)
- Added preset PassManagers that offer predetermined pipelines of transpiler passes. (#2163)
Changed
- require scipy>=1.0, use
scipy.stats.unitary_group.rvs
forrandom_unitary()
. - two_qubit_kak decomposition works with Operator or raw matrix input objects.
- process_fidelity works with QuantumChannel and Operator object inputs.
- Backend defaults values are no longer required (#2101).
- QuantumCircuit properties more self-consistent and no longer need DAG (#1993).
- The most connected subset in DenseLayout is now reduced bandwidth (#2021).
- plot_histogram now allows sorting by Hamming distance from target_string (#2064).
- FunctionalPulse is no longer a class and instead is a decorator,
functional_pulse
that returns aSamplePulse
when called. (#2043) - Changed
average_data
to accept observable input in matrix form (#1858) - Change random_state to take in dim over number of qubits (#1857)
- The
Exception
subclasses have been moved to an.exceptions
module
within each package (for example,qiskit.exceptions.QiskitError
) (#1600). - The
QiskitTestCase
and testing utilities are now included as part of
qiskit.test
and thus available for third-party implementations, with
convenience test cases for providers and backends. (#1616, #1844) - The snapshot instruction now takes
label
andsnap_type
instead of
slot
(#1615). - The test folders have been reorganized to match the python modules (#1625)
- The circuits_to_qobj no longers uses the unrollers (#1629)
- The previously deprecated default output of
circuit_drawer()
(using latex
and falling back to mpl) is no longer present. Instead the default output
is the ascii arttext
output backend. - Changed param to params in Instruction (#1665).
dag_drawer
andplot_gate_map
are available via importing
qiskit.tools.visualization
. They will raise at the point of use, if
dependencies are not installed (#1669).- The
qiskit.validation
schemas are now strict and raise a more specific
ModelValidationError
(#1695). - The default transpile pipeline will now add a barrier before the set of
final measurements when compiling for both simulators and devices (#1591). - Purity function in
qiskit.tools.qi.qi
calls new version in
qiskit.quantum_information
and issues deprecation warning (#1733) - Updated
dag.node_counter
to return the current number of nodes (#1763) - The argument
basis_gates
used incompile
,execute
, andtranspile
is not longer a comma-separated string but a list of strings. For example,
this basis['u1','u2','u3','cx']
should be used instead of'u1,u2,u3,cx'
(#1333) - Methods on the
DAGCircuit
which previously returned node_ids and/or dicts now
returnDAGNodes
- The
Qobj
classes have been reimplemented using models and schemas, as the
rest of spec-defined entities. (#1909). - The rzz gate is now represented as a line when printed in text (#1957).
- Text drawer has support for multi-q gates (#1939).
- Separate
Qobj
intoPulseQobj
andQasmQobj
(#1969). - It is possible to define a layout as a list of integers. This maps the ordered list
of virtual circuit qubits to physical qubits as defined by the list of integers (#1946). - Instructions no longer have context about where they are in a circuit. Instead,
the circuit keeps this context. So Instructions are now light-weight and only
have a name, num_qubits, num_clbits and params (#1816). - The old syntax for attaching a gate to the circuit then modifying it is no longer
supported (e.g.circuit.s(qr).inverse()
orcircuit.s(qr).c_if(cr, 4)
).
Instead, you must first modify the gate then attach it (#1816). QuantumCircuit.data
now contains a list of tuples, where each tuple is a
(instruction, qarg, carg) (#1816).- The visualization subpackage has moved from
qiskit.tools.visualization
to
qiskit.visualization
. The public API (which was declared stable in
the 0.7 release) is still accessible off ofqiskit.tools.visualization
.
(#1878) - Layout object can now only be constructed from a dictionary, and must be bijective (#2157).
transpile()
acceptsinitial_layout
in the form of dict, list or Layout (#2157).- Not specifying a basis in
execute()
ortranspile()
no longer defaults to unrolling
to the ['u1', 'u2', 'u3', 'cx'] basis. Instead the default behavior is to not unroll,
unless specifically requested (#2166). - Instruction.copy() is now a shallow copy instead of deep (#2214)
- Layout and CouplingMap classes are now accessible from qiskit.tran...
Qiskit Terra 0.7.2
Changelog
Fixed
- A potential issue where the backend configuration schema validation would
improperly reject valid responses from the API (#2258)