Note di rilascio di Qiskit 0.19
0.19.6
Terra 0.14.2
Nessuna modifica
Aer 0.5.2
Nessuna modifica
Ignis 0.3.3
Note sull'aggiornamento
- Un nuovo requisito scikit-learn è stato aggiunto all'elenco dei requisiti. Questa dipendenza è stata aggiunta nella release 0.3.0, ma non era esposta correttamente come dipendenza in quella release. Questo porterebbe a un
ImportErrorse il moduloqiskit.ignis.measurement.discriminator.iq_discriminatorsfosse importato. Ora è correttamente elencato come dipendenza, in modo chescikit-learnvenga installato con qiskit-ignis.
Correzioni di bug
- Corregge un problema in qiskit-ignis 0.3.2 che sollevava un
ImportErrorquandoqiskit.ignis.verification.tomography.fitters.process_fitterveniva importato senza checvxpyfosse installato.
Acqua 0.7.3
Nessuna modifica
IBM Q Fornitore 0.7.2
Nessuna modifica
0.19.5
Terra 0.14.2
Nessuna modifica
Aer 0.5.2
Nessuna modifica
Ignis 0.3.2
Correzioni di bug
- Il metodo
qiskit.ignis.verification.TomographyFitter.fit()ha migliorato la logica di rilevamento per il fitter predefinito. In precedenza, il metodocvxfitter veniva utilizzato ogni volta che veniva installato cvxpy. Tuttavia, è stato possibile installare cvxpy senza un solutore SDP che funzionasse per il metodocvxfitter. Questa logica è stata rielaborata in modo che il metodocvxfitter venga utilizzato solo secvxpyè installato e se è presente un solutore SDP utilizzabile. In caso contrario, viene utilizzato il fitterlstsq. - Corregge un caso limite in
qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply()per gli ingressi con etichette di stato non valide o errate che non corrispondono al circuito di calibrazione. In precedenza, questo non dava errore e restituiva semplicemente un risultato vuoto. Invece ora questo caso viene catturato correttamente e viene sollevata un'eccezioneQiskitErrorquando si utilizzano etichette non corrette.
Acqua 0.7.3
Note sull'aggiornamento
- La dipendenza cvxpy, necessaria per il classificatore svm, è stata rimossa dall'elenco dei requisiti e resa una dipendenza opzionale. Questo perché l'installazione di cvxpy non è semplice in ogni ambiente e spesso richiede l'installazione di un compilatore per funzionare. Per utilizzare il classificatore svm ora è necessario installare cvxpy eseguendo
pip install cvxpy<1.1.0oppure installarlo con aqua eseguendopip install qiskit-aqua[cvx].
Correzioni di bug
- Il metodo
composediCircuitOputilizzavaQuantumCircuit.combineche è stato modificato per utilizzareQuantumCircuit.compose. L'uso di combine comporta il problema che la composizione di un operatore con unCircuitOpbasato su un registro denominato non concatena gli operatori ma li impila. E.g. componendoZ ^ 2con un circuito basato su un registro denominato a 2-qubit si ottiene un operatore a 4-qubit anziché a 2-qubit. - Il metodo
MatrixOp.to_instructionin precedenza restituiva un operatore e non un'istruzione. Questo metodo è stato aggiornato per restituire un'istruzione. Si noti che questo funziona solo se la primitiva dell'operatore è unitaria, altrimenti viene sollevato un errore durante la costruzione dell'istruzione. - Il metodo
__hash__della classePauliOputilizzava il metodoid(), che impedisce ai confronti tra gli insiemi di funzionare come previsto, poiché si basano su tabelle hash e gli oggetti identici utilizzati non hanno hash identici. Ora, l'implementazione utilizza un hash della rappresentazione della stringa in linea con l'implementazione della classePauli.
IBM Q Fornitore 0.7.2
Nessuna modifica
0.19.4
Terra 0.14.2
Note sull'aggiornamento
- In precedenza, i convertitori
circuit_to_gateecircuit_to_instructionincludevano automaticamente il gate o l'istruzione generata nel file attivoSessionEquivalenceLibrary. Questi convertitori accettano ora un argomento opzionale, la parola chiaveequivalence_library, per specificare se e dove le istanze convertite devono essere registrate. Il comportamento predefinito è di non registrare l'istanza convertita.
Correzioni di bug
- Le implementazioni del gate X multicontrollato (
MCXGrayCode,MCXRecursiveeMCXVChain) sono state modificate nelle proprietànameper descrivere più accuratamente la loro implementazione (rispettivamentemcx_gray,mcx_recursiveemcx_vchain) In precedenza, questi gate condividevano il nomemcx` with ``MCXGate, che causava un'errata trasposizione e simulazione di questi gate. ControlledGatele istanze con un setctrl_statein alcuni casi non venivano valutate come uguali, anche se le porte confrontate erano equivalenti. Questo problema è stato risolto.- Corretta la conversione dell'unità SI per
qiskit.pulse.SetFrequency. L'istruzioneSetFrequencydovrebbe essere in Hz sul frontend e deve essere convertita in GHz quandoSetFrequencyviene convertito inPulseQobjInstruction. - I controlli aperti sono stati implementati modificando la definizione di un cancello. Tuttavia, quando il gate esiste già nella base, questa definizione non viene utilizzata, dando luogo a circuiti errati inviati a un backend. Questo modifica lo srotolatore in modo che emetta la definizione se incontra un cancello controllato con controlli aperti.
Aer 0.5.2
Nessuna modifica
Ignis 0.3.0
Nessuna modifica
Acqua 0.7.2
Preludio
Il calcolo dell'aspettativa VQE con Aer qasm_simulator è ora impostato su un calcolo che presenta il comportamento atteso del rumore di scatto.
Note sull'aggiornamento
- cvxpy è ora nell'elenco dei requisiti come dipendenza per qiskit-aqua. Viene utilizzato per il risolutore di programmi quadratici che fa parte del sito
qiskit.aqua.algorithms.QSVM. In precedenzacvxoptera una dipendenza opzionale che doveva essere installata per utilizzare questa funzionalità. Non è più necessario, poiché cvxpy sarà installato con qiskit-aqua. - Per la tomografia di stato eseguita come parte di
qiskit.aqua.algorithms.HHLcon un backend QASM, la funzione di fitter della tomografiaqiskit.ignis.verification.StateTomographyFitter.fit()viene ora chiamata esplicitamente con il metodo impostato sulstsqper utilizzare sempre il fitting ai minimi quadrati. In precedenza cercava di utilizzare opportunamente l'installatorecvxse era installatocvxpy. Tuttavia, il fitter dicvxdipende da un'installazione dicvxpyspecificamente configurata con un solutore SDP installato come parte dicvxpy, che non è sempre presente in un ambiente concvxpy. - Il calcolo dell'aspettativa VQE tramite l'istruzione
qiskit.providers.aer.extensions.SnapshotExpectationValuedi qiskit-aer non è più abilitato per impostazione predefinita. Questa opzione è stata modificata come predefinita in 0.7.0 perché è significativamente più veloce, ma ha portato a risultati ideali inaspettati senza rumore di ripresa (vedere #1013 per maggiori dettagli). L'impostazione predefinita è ora tornata a corrispondere alle aspettative degli utenti. L'uso del calcolo dell'aspettativa più veloce è ora facoltativo, impostando il nuovo kwarginclude_customaTruenel costruttoreqiskit.aqua.algorithms.VQE.
Nuove funzioni
- Un nuovo kwarg
include_customè stato aggiunto al costruttore diqiskit.aqua.algorithms.VQEe delle sue sottoclassi (principalmenteqiskit.aqua.algorithms.QAOA). Quando è impostato su true e il kwargexpectationè impostato suNone(il valore predefinito), abilita l'uso del calcolo dell'aspettativa VQE con l'istruzioneqasm_simulatorqiskit.providers.aer.extensions.SnapshotExpectationValuedi Aer. Il calcolo speciale basato sulle istantanee Aer è molto più veloce, ma con un risultato ideale simile a quello del simulatore vettoriale di stato.
IBM Q Fornitore 0.7.2
Nessuna modifica
0.19.3
Terra 0.14.1
Nessuna modifica
Aer 0.5.2
Correzioni di bug
- Corretto il bug dei simulatori statevector e unitary che eseguono un numero di scatti (paralleli) pari al numero di thread della CPU invece di eseguire un solo scatto.
- Corregge l'applicazione errata delle istruzioni della porta qobj "diagonale" nel metodo del simulatore Qasm a matrice di densità.
- Corregge un bug per cui le porte condizionali non venivano applicate correttamente al metodo di simulazione della matrice di densità.
- Correzione del bug nel gate CZ e nel gate Z per i metodi "density_matrix_gpu" e "density_matrix_thrust" QasmSimulator.
- Corregge un problema per cui i requisiti di memoria della simulazione non venivano controllati su QasmSimulator quando si utilizzava un metodo di simulazione non automatico.
- Corretta una perdita di memoria che riguardava i metodi del simulatore GPU
Ignis 0.3.0
Nessuna modifica
Acqua 0.7.1
Nessuna modifica
IBM Q Fornitore 0.7.2
Correzioni di bug
qiskit.provider.ibmq.IBMQBackend.jobs()restituirà ora l'elenco corretto degli oggettiIBMQJobquando il kwargstatusè impostato su'RUNNING'. Correzioni #523- I metadati del pacchetto sono stati aggiornati per riflettere correttamente la dipendenza da
qiskit-terra>= 0.14.0. Questa dipendenza è stata implicitamente aggiunta come parte del rilascio di 0.7.0, ma non è stata riflessa nei requisiti del pacchetto, per cui in precedenza era possibile installareqiskit-ibmq-providercon una versione diqiskit-terratroppo vecchia. Correzioni #677
0.19.0
Terra 0.14.0
Preludio
La release 0.14.0 include diverse nuove funzionalità e correzioni di bug. Il cambiamento più importante di questa versione è l'introduzione di una libreria di circuiti quantistici in qiskit.circuit.librarycontenente alcune famiglie di circuiti di interesse.
La libreria di circuiti consente agli utenti di accedere a un ricco insieme di famiglie di circuiti ben studiati, le cui istanze possono essere utilizzate come benchmark, come elementi costitutivi per la costruzione di circuiti più complessi o come strumento per esplorare il vantaggio computazionale quantistico rispetto a quello classico. I contenuti di questa biblioteca continueranno a crescere e a maturare.
La versione iniziale della libreria di circuiti contiene:
standard_gates: si tratta di porte a larghezza fissa comunemente utilizzate come blocchi primitivi, costituiti da porte a 1, 2 e 3 qubit. Ad esempioXGate,RZZGateeCSWAPGate. La vecchia posizione di questi cancelli sottoqiskit.extensions.standardè deprecata.generalized_gates: si tratta di famiglie che possono generalizzarsi a un numero arbitrario di qubit, ad esempio aPermutationoGMS(porta globale di Molmer-Sorensen).boolean_logic: circuiti che trasformano gli stati base secondo semplici funzioni logiche booleane, comeADDoXOR.arithmetic: un insieme di circuiti per l'esecuzione di aritmetiche classiche, qualiWeightedAddereIntegerComparator.basis_changescircuiti, come la trasformata quantistica di Fourier,QFTche applicano matematicamente i cambiamenti di base.n_local: modelli per creare facilmente circuiti di grandi dimensioni con strati di rotazione e di entanglement, come ad esempioTwoLocalche utilizza rotazioni a un solo qubit e entanglement a due qubit.data_preparation: circuiti che prendono dati classici in ingresso e li codificano in uno stato quantistico difficile da simulare, ad es.PauliFeatureMapoZZFeatureMap.- Altri circuiti che si sono dimostrati interessanti in letteratura, come ad esempio
QuantumVolume,GraphState, oIQP.
Per facilitare l'uso di questi circuiti come blocchi di costruzione, abbiamo introdotto un metodo di compose() metodo di qiskit.circuit.QuantumCircuit per la composizione di circuiti sia con altri circuiti (saldandoli alle estremità e, facoltativamente, permutando i fili) sia con altre porte più semplici:
>>> lhs.compose(rhs, qubits=[3, 2], inplace=True) ┌───┐ ┌─────┐ ┌───┐
lqr_1_0: ───┤ H ├─── rqr_0: ──■──┤ Tdg ├ lqr_1_0: ───┤ H ├───────────────
├───┤ ┌─┴─┐└─────┘ ├───┤
lqr_1_1: ───┤ X ├─── rqr_1: ┤ X ├─────── lqr_1_1: ───┤ X ├───────────────
┌──┴───┴──┐ └───┘ ┌──┴───┴──┐┌───┐
lqr_1_2: ┤ U1(0.1) ├ + = lqr_1_2: ┤ U1(0.1) ├┤ X ├───────
└─────────┘ └─────────┘└─┬─┘┌─────┐
lqr_2_0: ─────■───── lqr_2_0: ─────■───────■──┤ Tdg ├
┌─┴─┐ ┌─┴─┐ └─────┘
lqr_2_1: ───┤ X ├─── lqr_2_1: ───┤ X ├───────────────
└───┘ └───┘
lcr_0: 0 ═══════════ lcr_0: 0 ═══════════════════════
lcr_1: 0 ═══════════ lcr_1: 0 ═══════════════════════In questo modo, i circuiti di Qiskit non assumono più uno stato iniziale implicito di e non verranno disegnati con questo stato iniziale. Lo stato iniziale tutto zero è ancora assunto da un backend quando viene eseguito un circuito.
Nuove funzioni
-
Un nuovo metodo,
has_entry()è stato aggiunto alla classeqiskit.circuit.EquivalenceLibraryper verificare rapidamente se una data porta ha delle decomposizioni note nella libreria. -
Una nuova classe
IQPper costruire un circuito polinomiale quantistico istantaneo, è stata aggiunta al modulo della libreria di circuitiqiskit.circuit.library. -
È stato aggiunto un nuovo
compose()è stato aggiunto aqiskit.circuit.QuantumCircuit. Permette la composizione di due circuiti quantistici senza doverne trasformare uno in un gate o in un'istruzione. Consente inoltre la permutazione dei qubit/clbit al momento della composizione, nonché la modifica opzionale in loco. Può essere utilizzato anche al posto diappend(), in quanto permette di comporre istruzioni e operatori anche sul circuito. -
qiskit.circuit.library.Diagonalsono stati aggiunti alla libreria dei circuiti. Questi circuiti implementano operatori quantistici diagonali (composti da elementi non nulli solo sulla diagonale). Sono simulate in modo più efficiente dal simulatore Aer rispetto alle matrici dense. -
Aggiungere
from_label()alla classeqiskit.quantum_info.Cliffordper l'inizializzazione come prodotto tensoriale di porte I, X, Y, Z, H o S a singolo qubit. -
Il trasformatore di programma
qiskit.pulse.reschedule.compress_pulses()esegue un passaggio di ottimizzazione per ridurre l'uso della memoria delle forme d'onda nell'hardware, sostituendo più istanze identiche di un impulso in un programma di programma con un singolo impulso. Ad esempio:from qiskit.pulse import reschedule schedules = [] for _ in range(2): schedule = Schedule() drive_channel = DriveChannel(0) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedules.append(schedule) compressed_schedules = reschedule.compress_pulses(schedules) -
Il
qiskit.transpiler.Layoutha un nuovo metodoreorder_bits()che serve a riordinare un elenco di qubit virtuali in base all'oggetto layout. -
Sono stati aggiunti due nuovi metodi al file
qiskit.providers.models.PulseBackendConfigurationper interagire con i canali.get_channel_qubits()per ottenere un elenco di tutti i qubit gestiti dal canale indicato eget_qubit_channel()per ottenere un elenco di canali che operano sul qubit dato.
-
Vengono introdotti nuovi
qiskit.extensions.HamiltonianGateeqiskit.circuit.QuantumCircuit.hamiltonian()sono stati introdotti nuovi metodi che rappresentano l'evoluzione hamiltoniana della funzione d'onda del circuito mediante un operatore hermitiano e un tempo di evoluzione specificati dall'utente. Il tempo di evoluzione può essere unParameterconsentendo la creazione di circuiti parametrici in stile UCCSD o QAOA, che si compilano in oggettiUnitaryGatese vengono forniti i parametritime. L'unitario di unHamiltonianGatecon operatore hamiltonianoHe parametro temporaletè . -
Il modulo della libreria dei circuiti
qiskit.circuit.libraryfornisce ora un nuovo circuito logico booleano AND,qiskit.circuit.library.ANDe un circuito OR,qiskit.circuit.library.ORche implementano le rispettive operazioni su un numero variabile di qubit forniti. -
Vengono aggiunti nuovi falsi backend sotto
qiskit.test.mock. Questi includono le versioni simulate diibmq_armonk,ibmq_essex,ibmq_london,ibmq_valencia,ibmq_cambridge,ibmq_paris,ibmq_romeeibmq_athens. Come per altri backend fasulli, questi includono istantanee dei dati di calibrazione (cioèbackend.defaults()) e i dati relativi all'errore (cioèbackend.properties()) presi dal sistema reale e possono essere utilizzati per test, compilazioni e simulazioni locali. -
Il parametro
last_update_dateperBackendPropertiespuò ora essere passato anche come oggettodatetime. In precedenza veniva accettata solo una stringa in formato ISO8601. -
Aggiunge
qiskit.quantum_info.Statevector.from_int()eqiskit.quantum_info.DensityMatrix.from_int()che consentono di costruire uno stato base computazionale per determinate dimensioni del sistema. -
I metodi della classe
qiskit.circuit.QuantumCircuitper l'aggiunta di porte (ad esempioh()), che in precedenza venivano aggiunti dinamicamente in fase di esecuzione alla definizione della classe, sono stati riconfigurati come metodi staticamente definiti della classe. Ciò significa che gli analizzatori statici (come gli IDE) possono ora leggere questi metodi.
Note sull'aggiornamento
-
Un nuovo pacchetto, python-dateutil, è ora richiesto ed è stato aggiunto all'elenco dei requisiti. Viene utilizzato per analizzare le stringhe di data e ora ricevute da fornitori esterni in oggetti
BackendPropertiesoggetti. -
Le classi dello schema marshmallow in
qiskit.providers.modelssono state rimosse perché non più utilizzate da BackendObjects. -
L'output del metodo
to_dict()per le classi inqiskit.providers.modelsnon è più in un formato per la serializzazione diretta di JSON. A seconda del contenuto delle istanze di queste classi, nei campi del dict possono essere presenti array numpy e/o numeri complessi. Se si serializza in JSON l'output dei metodi to_dict, occorre assicurarsi che il proprio codificatore JSON sia in grado di gestire array numpy e numeri complessi. Ciò comprende:qiskit.providers.models.BackendConfiguration.to_dict()qiskit.providers.models.BackendProperties.to_dict()qiskit.providers.models.BackendStatus.to_dict()qiskit.providers.models.QasmBackendConfiguration.to_dict()qiskit.providers.models.PulseBackendConfiguration.to_dict()qiskit.providers.models.UchannelLO.to_dict()qiskit.providers.models.GateConfig.to_dict()qiskit.providers.models.PulseDefaults.to_dict()qiskit.providers.models.Command.to_dict()qiskit.providers.models.JobStatus.to_dict()qiskit.providers.models.Nduv.to_dict()qiskit.providers.models.Gate.to_dict()
Note di deprecazione
-
Il metodo
qiskit.dagcircuit.DAGCircuit.compose()accetta ora un elenco di qubit/clbit che specificano l'ordine posizionale dei bit da comporre. Il metodo di mappatura basato sul dizionario che utilizza l'argomentoedge_mapè deprecato e sarà rimosso in una versione futura. -
Il metodo
combine_into_edge_map()per la classeqiskit.transpiler.Layoutè stato deprecato e sarà rimosso in una prossima versione. Invece, il nuovo metodoreorder_bits()deve essere usato per riordinare un elenco di qubit virtuali in base all'oggetto layout. -
Passare un oggetto
qiskit.pulse.ControlChanneltramite il parametrochannelper il metodoqiskit.providers.models.PulseBackendConfigurationper il metodocontrol()è stato deprecato e sarà rimosso in una prossima versione. Gli oggettiControlChannelsono ora generati dall'attributochannelsdella configurazione del backend, che contiene le informazioni di tutti i canali e dei qubit su cui operano. Ora, il metodocontrol()deve prendere il parametroqubitsdella forma(control_qubit, target_qubit)e il tipolistotuple, e restituire un elenco di canali di controllo. -
I metodi
ANDeORdiqiskit.circuit.QuantumCircuitsono deprecati e saranno rimossi in una prossima versione. Si devono invece utilizzare le classi logiche booleane della libreria dei circuitiqiskit.circuit.library.ANDamdqiskit.circuit.library.ORe poi aggiungere questi oggetti alla propria classe. Ad esempio:from qiskit import QuantumCircuit from qiskit.circuit.library import AND qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) qc_and = AND(2) qc.compose(qc_and, inplace=True) -
Il modulo
qiskit.extensions.standardè deprecato e sarà rimosso in una prossima versione. Le classi gate di quel modulo sono state spostate inqiskit.circuit.library.standard_gates.
Correzioni di bug
-
I
qiskit.circuit.QuantumCircuitmetodiinverse(), i metodimirror()e il setterQuantumCircuit.datagenererebbero un circuito non valido se usati su un'istanza di circuito parametrizzata. Il problema è stato risolto e questi metodi dovrebbero ora funzionare con un circuito parametrizzato. Correzioni #4235 -
In precedenza, quando si creava una versione controllata di un cancello qiskit standard, se veniva specificato
ctrl_stateveniva restituito un oggetto genericoControlledGate, mentre senza di esso veniva restituito un cancello controllato da qiskit standard, se era definito. Questa PR consente ai gate controllati da qiskit standard di comprenderectrl_state.Inoltre, questa PR corregge quello che potrebbe essere considerato un bug per cui l'impostazione di
ctrl_statedi un gate già controllato presupponeva che lo stato specificato fosse applicato all'intera larghezza di controllo, invece di aggiungere i qubit di controllo. Ad esempio,:circ = QuantumCircuit(2) circ.h(0) circ.x(1) gate = circ.to_gate() cgate = gate.control(1) c3gate = cgate.control(2, ctrl_state=0)applicherebbe
ctrl_statea tutti e tre i qubit di controllo, invece di aggiungere solo i due qubit di controllo. -
Corretto un bug in
random_clifford()che impediva di campionare l'intero gruppo di Clifford. Correzioni #4271 -
Il
qiskit.circuit.Instructionmetodoqiskit.circuit.Instruction.is_parameterized()aveva precedentemente restituitoTrueper qualsiasi istanza diInstructionche avesse un elementoqiskit.circuit.Parameterin qualsiasi elemento del suo arrayparams, anche se taleParameterera stato completamente vincolato. Questo problema è stato corretto in modo che.is_parameterizedrestituiscaFalsequando l'istruzione è completamente vincolata. -
qiskit.circuit.ParameterExpression.subs()non aveva individuato correttamente alcuni casi in cui la sostituzione dei parametri avrebbe dato luogo a due oggettiParametersdistinti in un'espressione con lo stesso nome. Questo problema è stato corretto, quindi in questi casi verrà sollevato unCircuitError. -
Migliorare le prestazioni di
qiskit.quantum_info.Statevectoreqiskit.quantum_info.DensityMatrixper le simulazioni di circuiti a bassa frequenza ottimizzando i metodi della classe__init__. Correzioni #4281 -
La funzione
qiskit.compiler.transpile()ora gestisce correttamente quando il parametrobasis_gatesè impostato suNone. Ciò consentirà di utilizzare qualsiasi gate nel circuito di uscita trasposto, compresi i gate aggiunti dal processo di trasposizione. Si noti che l'uso di questo parametro può avere conseguenze indesiderate durante l'ottimizzazione. Alcuni passaggi del transpiler dipendono dalla presenza di un setbasis_gates. Ad esempio,qiskit.transpiler.passes.Optimize1qGatesottimizza solo le catene di porte u1, u2 e u3 e senzabasis_gatesnon è in grado di srotolare porte che altrimenti potrebbero essere ottimizzate:from qiskit import * q = QuantumRegister(1, name='q') circuit = QuantumCircuit(q) circuit.h(q[0]) circuit.u1(0.1, q[0]) circuit.u2(0.1, 0.2, q[0]) circuit.h(q[0]) circuit.u3(0.1, 0.2, 0.3, q[0]) result = transpile(circuit, basis_gates=None, optimization_level=3) result.draw()┌───┐┌─────────────┐┌───┐┌─────────────────┐ q_0: ┤ H ├┤ U2(0.1,0.3) ├┤ H ├┤ U3(0.1,0.2,0.3) ├ └───┘└─────────────┘└───┘└─────────────────┘Correzioni #3017
Altre note
-
Gli oggetti in
qiskit.providers.modelsche in precedenza erano costruiti utilizzando la libreria marshmallow, sono stati riadattati per non dipendere da marshmallow. Ciò comprende:BackendConfigurationBackendPropertiesBackendStatusQasmBackendConfigurationPulseBackendConfigurationUchannelLOGateConfigPulseDefaultsCommandJobStatusNduvGate
Dovrebbero essere sostituiti senza alcun cambiamento evidente, ma le specifiche ereditate da marshmallow potrebbero non funzionare. Si prega di presentare i problemi per qualsiasi incompatibilità riscontrata.
Aer 0.5.1
Nessuna modifica
Ignis 0.3.0
Nessuna modifica
Acqua 0.7.0
Preludio
La release di Qiskit Aqua 0.7.0 introduce molte nuove funzionalità e una migliore integrazione con gli oggetti qiskit.circuit.QuantumCircuit oggetti. I contributi centrali sono il modulo di ottimizzazione di Qiskit, un refactor completo degli Operatori, l'uso dei circuiti come input nativo per gli algoritmi e la rimozione dell'API JSON dichiarativa.
Modulo di ottimizzazione
Il modulo qiskit.optimization` offre ora funzionalità per la modellazione e la risoluzione di programmi quadratici. Fornisce vari algoritmi quantistici e convenzionali a breve termine, come ad esempio MinimumEigenOptimizer (che copre, ad esempio, il tema della sicurezza e della salute). VQE o QAOA) o CplexOptimizer, nonché un insieme di convertitori per tradurre tra diverse rappresentazioni del problema, come QuadraticProgramToQubo. Per un elenco delle funzionalità aggiunte, consultare il changelog.
Flusso dell'operatore
La logica degli operatori fornita in qiskit.aqua.operators` è stata completamente rifattorizzata ed è ora un insieme completo di strumenti per costruire computazioni quantistiche fisicamente intuitive. Contiene funzioni di stato, operatori e misure e si basa internamente sugli oggetti Operator di Terra. Il calcolo dei valori di aspettativa e delle evoluzioni è stato fortemente semplificato e oggetti come ExpectationFactory producono l'algoritmo di aspettativa più adatto ed efficiente in base al tipo di input dell'Operatore. Per una panoramica delle funzionalità aggiunte, consultare il changelog.
Circuiti nativi
Gli algoritmi utilizzano comunemente circuiti parametrizzati come input, ad esempio il VQE, il VQC o il QSVM. In precedenza, questi ingressi dovevano essere di tipo VariationalForm o FeatureMap che avvolgevano l'oggetto circuito. Ora i circuiti sono supportati in modo nativo da questi algoritmi, il che significa che qualsiasi QuantumCircuit costruito individualmente può essere passato a questi algoritmi. In combinazione con il rilascio della libreria di circuiti, che offre un'ampia collezione di famiglie di circuiti, è ora facile costruire circuiti elaborati come input dell'algoritmo.
API JSON dichiarativa
È stata rimossa la possibilità di eseguire gli algoritmi utilizzando i dizionari come parametri e la GUI delle interfacce Aqua.
IBM Q Fornitore 0.7.0
Nuove funzioni
- Una nuova eccezione,
qiskit.providers.ibmq.IBMQBackendJobLimitError, viene ora sollevata se non è stato possibile inviare un lavoro perché è stato raggiunto il limite di lavori attivi. qiskit.providers.ibmq.job.IBMQJobeqiskit.providers.ibmq.managed.ManagedJobSethanno ciascuno due nuovi metodiupdate_nameeupdate_tags. Vengono utilizzati per modificare rispettivamente il nome e i tag di un lavoro o di un set di lavori.qiskit.providers.ibmq.IBMQFactory.save_account()eqiskit.providers.ibmq.IBMQFactory.enable_account()accettano ora i parametri opzionalihub,group, eproject, che consentono di specificare un provider predefinito da salvare su disco o da utilizzare, rispettivamente.
Note sull'aggiornamento
- I metodi
qiskit.providers.ibmq.job.IBMQJobcreation_dateetime_per_stepora restituiscono informazioni sull'ora della data come oggettodatetimein ora locale anziché UTC. Allo stesso modo, i parametristart_datetimeeend_datetime, diqiskit.providers.ibmq.IBMQBackendService.jobs()eqiskit.providers.ibmq.IBMQBackend.jobs()possono ora essere specificati in ora locale. - Il metodo
qiskit.providers.ibmq.job.QueueInfo.format()ora utilizza un formattatore personalizzato dadatetimea stringa e la freccia del pacchetto non è più necessaria ed è stata rimossa dall'elenco dei requisiti.
Note di deprecazione
- I metodi
from_dict()eto_dict()diqiskit.providers.ibmq.job.IBMQJobsono deprecati e saranno rimossi nella prossima versione.
Correzioni di bug
- È stato risolto un problema per cui
nest_asyncio.apply()potrebbe sollevare un'eccezione se non c'è un ciclo asyncio a causa del threading.