§
    ²Ûg,v  ã                  ó¢  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	Z
ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 d7d„Z1d8d„Z2 G d„ de¦  «        Z3d9d!„Z4 G d"„ d#¦  «        Z5d:d(„Z6d;d-„Z7d<d/„Z8d=d2„Z9d>d4„Z: G d5„ d6¦  «        Z;dS )?z
Estimator class.
é    )Úannotations)Údefaultdict)ÚSequence)ÚwarnN)ÚParameterExpressionÚQuantumCircuit)Ú	transpile)ÚBaseEstimatorV1ÚEstimatorResult)ÚPrimitiveJob)ÚOptions)ÚPauliÚ	PauliListÚSparsePauliOp)ÚBaseOperator)Ú	BasePauli)ÚExperimentResult)ÚCouplingMapÚPassManager)ÚApplyLayoutÚEnlargeWithAncillaÚFullAncillaAllocationÚOptimize1qGatesDecompositionÚ	SetLayout)Údeprecate_funcé   )ÚAerErrorÚAerSimulatoré   )Ú_circuit_keyÚ
observableúBaseOperator | strÚreturnr   c                óH  — t          | t          ¦  «        r| S t          | t          ¦  «        r4t          | t          ¦  «        st	          dt          | ¦  «        › �¦  «        ‚t          | t          ¦  «        rt	          dt          | ¦  «        › �¦  «        ‚t          | ¦  «        S )aB  Initialize observable by converting the input to a :class:`~qiskit.quantum_info.SparsePauliOp`.

    Args:
        observable: The observable.

    Returns:
        The observable as :class:`~qiskit.quantum_info.SparsePauliOp`.

    Raises:
        AerError: when observable type cannot be converted to SparsePauliOp.
    zobservable type not supported: )Ú
isinstancer   r   r   r   Útyper   ©r!   s    úU/granary/edev/quantum/lib/python3.11/site-packages/qiskit_aer/primitives/estimator.pyÚinit_observabler)   /   sž   € õ �*�mÑ,Ô,ð )ØÐÝ	�J¥Ñ	-Ô	-ð )µjÀÍYÑ6WÔ6Wð )ÝÐK½¸jÑ9IÔ9IÐKÐKÑLÔLÐLå�j¥)Ñ,Ô,ð 	QÝÐO½TÀ*Ñ=MÔ=MÐOÐOÑPÔPÐPÝ˜ZÑ(Ô(Ð(ó    Útuplec                óä   — | j         j                             ¦   «         | j         j                             ¦   «         | j         j                             ¦   «         | j                             ¦   «         fS )z…Private key function for SparsePauliOp.
    Args:
        observable: Input operator.

    Returns:
        Key for observables.
    )ÚpaulisÚzÚtobytesÚxÚphaseÚcoeffsr'   s    r(   Ú_observable_keyr3   F   s_   € ð 	ÔÔ×#Ò#Ñ%Ô%ØÔÔ×#Ò#Ñ%Ô%ØÔÔ×'Ò'Ñ)Ô)ØÔ×!Ò!Ñ#Ô#ð	ð r*   c                  óD  ‡ — e Zd ZdZdddddddœd4ˆ fd„Ze eddd¬¦  «        d„ ¦   «         ¦   «         Zej         eddd¬¦  «        d„ ¦   «         ¦   «         Zd5d„Z	d6d„Z
d „ Zd!„ Zed"„ ¦   «         Zd7d'„Zed8d,„¦   «         Zed9d-„¦   «         Zd:d/„Zd0„ Zd1„ Zd2„ Zd3„ Zˆ xZS );Ú	Estimatorað  
    Aer implmentation of Estimator.

    :Run Options:
        - **shots** (None or int) --
          The number of shots. If None and approximation is True, it calculates the exact
          expectation values. Otherwise, it calculates expectation values with sampling.

        - **seed** (int) --
          Set a fixed seed for the sampling.

    .. note::
        Precedence of seeding for ``seed_simulator`` is as follows:

        1. ``seed_simulator`` in runtime (i.e. in :meth:`run`)
        2. ``seed`` in runtime (i.e. in :meth:`run`)
        3. ``seed_simulator`` of ``backend_options``.
        4. default.

        ``seed`` is also used for sampling from a normal distribution when approximation is True.

        When combined with the approximation option, we get the expectation values as follows:

        * shots is None and approximation=False: Return an expectation value with sampling-noise w/
          warning.
        * shots is int and approximation=False: Return an expectation value with sampling-noise.
        * shots is None and approximation=True: Return an exact expectation value.
        * shots is int and approximation=True: Return expectation value with sampling-noise using a
          normal distribution approximation.
    NFT)Úbackend_optionsÚtranspile_optionsÚrun_optionsÚapproximationÚskip_transpilationÚabelian_groupingr6   údict | Noner7   r8   r9   Úboolr:   r;   c               ó  •— t          dt          d¬¦  «         t          ¦   «                              |¬¦  «         g | _        g | _        g | _        |€i n|}|rd|v rdnd}t          |¬	¦  «        | _         | j        j	        di |¤Ž t          ¦   «         | _        |� | j        j        di |¤Ž |st          d
t          d¬¦  «         || _        || _        i | _        i | _        i | _        i | _        i | _        || _        dS )aj  
        Args:
            backend_options: Options passed to AerSimulator.
            transpile_options: Options passed to transpile.
            run_options: Options passed to run.
            approximation: If True, it calculates expectation values with normal distribution
                approximation. Note that this appproximation ignores readout errors.
            skip_transpilation: If True, transpilation is skipped.
            abelian_grouping: Whether the observable should be grouped into commuting.
                If approximation is True, this parameter is ignored and assumed to be False.
        zMEstimator has been deprecated as of Aer 0.15, please use EstimatorV2 instead.é   ©Ú
stacklevel)ÚoptionsNÚnoise_modelÚdensity_matrixÚ	automatic)Úmethodú¹Option approximation=False is deprecated as of qiskit-aer 0.13. It will be removed no earlier than 3 months after the release date. Instead, use BackendEstimator from qiskit.primitives.© )r   ÚDeprecationWarningÚsuperÚ__init__Ú	_circuitsÚ_parametersÚ_observablesr   Ú_backendÚset_optionsr   Ú_transpile_optionsÚupdate_optionsÚ_approximationÚ_skip_transpilationÚ_cacheÚ_transpiled_circuitsÚ_layoutsÚ_circuit_idsÚ_observable_idsÚ_abelian_grouping)	Úselfr6   r7   r8   r9   r:   r;   rF   Ú	__class__s	           €r(   rK   zEstimator.__init__v   sX  ø€ õ* 	Ø[ÝØð	
ñ 	
ô 	
ð 	
õ
 	‰Œ×Ò ÐÑ-Ô-Ð-ð ˆŒØˆÔØˆÔà /Ð 7˜"˜"¸_ˆà -Ðc°-À?Ð2RÐ2RÐÐÐXcð 	õ %¨FÐ3Ñ3Ô3ˆŒØ!ˆŒÔ!Ð4Ð4 OÐ4Ð4Ð4Ý")¡)¤)ˆÔØÐ(Ø2ˆDÔ#Ô2ÐGÐGÐ5FÐGÐGÐGØð 	ÝðHõ #Øðñ ô ð ð ,ˆÔØ#5ˆÔ ØTVˆŒØ?AˆÔ!Ø.0ˆŒØ.0ˆÔØ13ˆÔØ!1ˆÔÐÐr*   z0.13z
qiskit-aer)ÚsinceÚpackage_nameÚis_propertyc                ó   — | j         S )zThe approximation property)rS   ©r[   s    r(   r9   zEstimator.approximation±   s   € ð Ô"Ð"r*   c                óF   — |st          dt          d¬¦  «         || _        dS )zSetter for approximationrG   r?   r@   N)r   rI   rS   )r[   r9   s     r(   r9   zEstimator.approximation»   sA   € ð ð 	ÝðHõ #Øðñ ô ð ð ,ˆÔÐÐr*   ÚcircuitsúSequence[int]ÚobservablesÚparameter_valuesúSequence[Sequence[float]]r#   r   c                óÎ   — |                      dd ¦  «        }|�|                     d|¦  «         | j        r|                      |||||¦  «        S |                      ||||¦  «        S )NÚseedÚseed_simulator)ÚpopÚ
setdefaultrS   Ú_compute_with_approximationÚ_compute)r[   rc   re   rf   r8   ri   s         r(   Ú_callzEstimator._callÍ   s   € ð �Š˜v tÑ,Ô,ˆØÐØ×"Ò"Ð#3°TÑ:Ô:Ð:àÔð 	WØ×3Ò3Ø˜+Ð'7¸Àdñô ð ð —=’= ¨;Ð8HÈ+ÑVÔVÐVr*   úSequence[QuantumCircuit]úSequence[BaseOperator]r   c                ó˜  — g }|D ]Ê}| j                              t          |¦  «        ¦  «        }|�|                     |¦  «         ŒA|                     t	          | j        ¦  «        ¦  «         t	          | j        ¦  «        | j         t          |¦  «        <   | j                             |¦  «         | j                             |j        ¦  «         ŒËg }|D ]º}	t          |	¦  «        }	| j	                             t          |	¦  «        ¦  «        }|�|                     |¦  «         ŒP|                     t	          | j        ¦  «        ¦  «         t	          | j        ¦  «        | j	        t          |	¦  «        <   | j                             |	¦  «         Œ»t          | j        |||fi |¤Ž}
 t          |
d¦  «        r|
j        n|
j        ¦   «          |
S )NÚsubmit)rX   Úgetr    ÚappendÚlenrL   rM   Ú
parametersr)   rY   r3   rN   r   ro   Úhasattrrs   Ú_submit)r[   rc   re   rf   r8   Úcircuit_indicesÚcircuitÚindexÚobservable_indicesr!   Újobs              r(   Ú_runzEstimator._runß   sÑ  € ð !#ˆØð 	<ð 	<ˆGØÔ%×)Ò)­,°wÑ*?Ô*?Ñ@Ô@ˆEØÐ Ø×&Ò& uÑ-Ô-Ð-Ð-à×&Ò&¥s¨4¬>Ñ':Ô':Ñ;Ô;Ð;Ý;>¸t¼~Ñ;NÔ;N�Ô!¥,¨wÑ"7Ô"7Ñ8Ø”×%Ò% gÑ.Ô.Ð.ØÔ ×'Ò'¨Ô(:Ñ;Ô;Ð;Ð;Ø#%ÐØ%ð 	5ð 	5ˆJÝ(¨Ñ4Ô4ˆJØÔ(×,Ò,­_¸ZÑ-HÔ-HÑIÔIˆEØÐ Ø"×)Ò)¨%Ñ0Ô0Ð0Ð0à"×)Ò)­#¨dÔ.?Ñ*@Ô*@ÑAÔAÐAÝDGÈÔHYÑDZÔDZ�Ô$¥_°ZÑ%@Ô%@ÑAØÔ!×(Ò(¨Ñ4Ô4Ð4Ð4ÝØŒJØØØð	
ð 
ð
 ð
ð 
ˆð 
?•w˜s HÑ-Ô-Ð	>ˆŒˆ°3´;ÑAÔAÐAØˆ
r*   c                ó  ‡ ‡‡— d|v r0|d         €(t          d‰ j        j        j        › d�t          ¦  «         t          |¦  «        t          |¦  «        ‰ j        f}|‰ j        v r\‰ j        |         \  }}‰                      ||||¦  «        }‰  	                    ||¦  «        \  }	}
‰  
                    |||||¦  «        }�n8‰                      |¦  «         t          t          ¦  «        }t          ||¦  «        D ] \  Š}|‰                              |¦  «         Œ!i }i }|                     ¦   «         D �]n\  Š}t#          ˆ fd„|D ¦   «         ¦  «                             ¦   «         }‰ j        r|                     d¬¦  «        }nd„ |D ¦   «         }t          t          ¦  «        }|D ]M}‰ j        |         j        D ]8}t/          |¦  «        D ]&\  }}||v r||                              |¦  «          nŒ'Œ9ŒN||‰<   d„ |D ¦   «         }t1          |¦  «        d	k    r@|d
         j                             ¦   «         s!|d
         j                             ¦   «         s nKˆˆ fd„|D ¦   «         }‰ j        r‰ j        ‰         n‰ j        ‰         }‰                      ||¦  «        |‰<   �Œp||f‰ j        |<   ‰                      ||||¦  «        }‰  	                    ||¦  «        \  }	}
‰  
                    |||||¦  «        }|	r> ‰ j        j         |	fdt5          |
¦  «        r|
nd i|¤Ž !                    ¦   «         j"        Šng Št          ˆfd„|D ¦   «         Ž \  }}tG          tI          j%        |¦  «        t          |¦  «        ¦  «        S )NÚshotsztIf `shots` is None and `approximation` is False, the number of shots is automatically set to backend options' shots=ú.c              3  ó<   •K  — | ]}‰j         |         j        V — Œd S ©N)rN   r-   )Ú.0Úobs_indr[   s     €r(   ú	<genexpr>z%Estimator._compute.<locals>.<genexpr>#  s?   øè è € ð !ð !Ø:A�DÔ% gÔ.Ô5ð!ð !ð !ð !ð !ð !r*   T)Ú
qubit_wisec                ó,   — g | ]}t          |¦  «        ‘ŒS rH   )r   )r…   Úpaulis     r(   ú
<listcomp>z&Estimator._compute.<locals>.<listcomp>)  s    € Ð"LÐ"LÐ"L¸¥9¨UÑ#3Ô#3Ð"LÐ"LÐ"Lr*   c                ó,   — g | ]}t          |¦  «        ‘ŒS rH   )Ú_paulis2basis)r…   Ú
pauli_lists     r(   r‹   z&Estimator._compute.<locals>.<listcomp>2  s    € ÐQÐQÐQ°z� zÑ2Ô2ÐQÐQÐQr*   r   r   c                ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS rH   )Ú_create_meas_circuit)r…   ÚbasisÚcirc_indr[   s     €€r(   r‹   z&Estimator._compute.<locals>.<listcomp>5  s*   ø€ Ð _Ð _Ð _ÐPU ×!:Ò!:¸5À(Ñ!KÔ!KÐ _Ð _Ð _r*   Úparameter_bindsc              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S r„   )Úrun)r…   Úpost_processingÚresultss     €r(   r‡   z%Estimator._compute.<locals>.<genexpr>X  s1   øè è € ÐSÐS¨ˆo×!Ò! 'Ñ*Ô*ÐSÐSÐSÐSÐSÐSr*   )&r   rO   rB   r�   ÚRuntimeWarningr+   rS   rU   Ú_pre_process_paramsÚ_flattenÚ_create_post_processingÚ_transpile_circuitsr   ÚlistÚzipru   ÚitemsÚsumÚuniquerZ   Úgroup_commutingrN   r-   Ú	enumeraterv   r0   Úanyr.   rT   rL   rV   Ú_combine_circsr•   Úresultr—   r   ÚnpÚreal_if_close)r[   rc   re   rf   r8   ÚkeyÚexperiments_dictÚobs_mapsÚexp_mapÚexperimentsr“   Úpost_processingsÚcirc_obs_mapr†   Úobs_indicesrŽ   Úpauli_listsÚobs_maprŠ   Ú	basis_indÚbasesÚmeas_circuitsr{   Úexpectation_valuesÚmetadatar’   r—   s   `                        @@r(   rn   zEstimator._compute  sS  øøø€ Ø�kÐ!Ð! k°'Ô&:Ð&BÝð8àœÔ.Ô4ð8ð 8ð 8õ ñ	ô ð õ �X‰Œ¥ kÑ 2Ô 2°DÔ4GÐHˆð �$”+ÐÐØ)-¬°SÔ)9Ñ&Ð˜hØ×.Ò.¨x¸ÐFVÐX`ÑaÔaˆGØ+/¯=ª=Ð9IÈ7Ñ+SÔ+SÑ(ˆK˜Ø#×;Ò;Ø˜+Ð'7¸À7ñ ô  ÐÑð ×$Ò$ XÑ.Ô.Ð.Ý&¥tÑ,Ô,ˆLå%(¨°;Ñ%?Ô%?ð 7ð 7Ñ!�˜'Ø˜XÔ&×-Ò-¨gÑ6Ô6Ð6Ð6Ø!ÐØˆHà)5×);Ò);Ñ)=Ô)=ð Yñ YÑ%�˜+Ý ð !ð !ð !ð !ØEPð!ñ !ô !ñ ô ç’&‘(”(ð ð Ô)ð MØ",×"<Ò"<ÈÐ"<Ñ"MÔ"M�K�Kà"LÐ"LÀÐ"LÑ"LÔ"L�KÝ%¥dÑ+Ô+�Ø*ð &ð &�GØ!%Ô!2°7Ô!;Ô!Bð &ð &˜Ý5>¸{Ñ5KÔ5Kð &ð &Ñ1˜I zØ$¨
Ð2Ð2Ø '¨Ô 0× 7Ò 7¸	Ñ BÔ BÐ BØ % ð  3øð&ð
 &-�˜Ñ"ØQÐQÀ[ÐQÑQÔQ�Ý�u‘:”: ’?�?¨5°¬8¬:¯>ª>Ñ+;Ô+;�?ÀEÈ!ÄHÄJÇNÂNÑDTÔDT�?Ø�EØ _Ð _Ð _Ð _Ð _ÐY^Ð _Ñ _Ô _�ð Ô/ð=�D”N 8Ô,Ð,àÔ2°8Ô<ð ð
 .2×-@Ò-@ÀÈ-Ñ-XÔ-XÐ  Ñ*Ñ*Ø/°Ð9ˆDŒK˜Ñà×.Ò.¨x¸ÐFVÐX`ÑaÔaˆGð ,0¯=ª=Ð9IÈ7Ñ+SÔ+SÑ(ˆK˜ð  $×;Ò;Ø˜+Ð'7¸À7ñ ô  Ðð
 ð 	à!�”Ô!Øðð å7:¸?Ñ7KÔ7KÐ$U O OÐQUðð "ðð ÷
 ’‘”Üð ˆGð ˆGõ (+ØSÐSÐSÐSÐBRÐSÑSÔSð(
Ñ$Ð˜Hõ �rÔ/Ð0BÑCÔCÅTÈ(Á^Ä^ÑTÔTÐTr*   c                ó–  — t          t          ¦  «        }t          |||¦  «        D ]¢\  }}}|                      ||¦  «         | j        |         }	||         |         D ]j}
||v rV|
||         v rLt          | j        |         ¦  «        dk    r.||         |
         d         }||vr|                     |¦  «         Œ\|	|gf||         |
<   ŒkŒ£|S )Nr   r   )r   Údictrž   Ú_validate_parameter_lengthrM   rv   ru   )r[   rc   re   rf   r«   r¬   r’   r†   Ú	param_valÚ	parameterr³   Ú
param_valss               r(   r™   zEstimator._pre_process_params\  s  € Ý�dÑ#Ô#ˆÝ,/°¸+ÐGWÑ,XÔ,Xð 	Lð 	LÑ(ˆH�g˜yØ×+Ò+¨I°xÑ@Ô@Ð@ØÔ(¨Ô2ˆIØ% hÔ/°Ô8ð 
Lð 
L�	à Ð'Ð'Ø! W¨XÔ%6Ð6Ð6Ý˜DÔ,¨XÔ6Ñ7Ô7¸!Ò;Ð;à!(¨Ô!2°9Ô!=¸aÔ!@�JØ ¨
Ð2Ð2Ø"×)Ò)¨)Ñ4Ô4Ð4øà4=À	¸{Ð3K�G˜HÔ% iÑ0Ð0ð
Lð ˆr*   c                óø   ‡— g }g }| D ]o}|                      | |         ¦  «         ||                              ¦   «         D ]7\  }\  }Š|                      ˆfd„t          |¦  «        D ¦   «         g¦  «         Œ8Œp||fS )Nc                ó6   •‡— i | ]\  Š}|ˆfd „‰D ¦   «         “ŒS )c                ó    •— g | ]
}|‰         ‘ŒS rH   rH   )r…   r»   Úis     €r(   r‹   z1Estimator._flatten.<locals>.<dictcomp>.<listcomp>y  s   ø€ Ð#MÐ#MÐ#M°Y I¨a¤LÐ#MÐ#MÐ#Mr*   rH   )r…   ÚparamrÁ   r½   s     @€r(   ú
<dictcomp>z&Estimator._flatten.<locals>.<dictcomp>x  sE   øø€ ð ð ð á (  5ð "Ð#MÐ#MÐ#MÐ#MÀ*Ð#MÑ#MÔ#Mðð ð r*   )ÚextendrŸ   r£   )rª   r¬   Úexperiments_listr“   r’   Ú_r¼   r½   s          @r(   rš   zEstimator._flatteno  sÃ   ø€ àÐØˆØ(ð 
	ð 
	ˆHØ×#Ò#Ð$4°XÔ$>Ñ?Ô?Ð?Ø.5°hÔ.?×.EÒ.EÑ.GÔ.Gð ð Ñ*�Ñ*�I˜zØ×&Ò&ðð ð ð å,5°iÑ,@Ô,@ðñ ô ðñô ð ð ðð   Ð0Ð0r*   r‘   r   Úcircuit_indexÚintc                óš  — t          j        |j        ¦  «        |j        |j        z           }t          |j        t          |¦  «        ¦  «        }t          |¦  «        D ]_\  }}|j        |         r7|j        |         r|                     |¦  «         | 	                    |¦  «         | 
                    ||¦  «         Œ`d|i|_        | j        r|S | j        |         }t          t          |¦  «        g¦  «        }t!          | j        j        ¬¦  «        }	|                     |	¦  «         t)          | j        j        t,          ¦  «        rO| j        j        }
|                     t/          |
¦  «        ¦  «         |                     t1          ¦   «         ¦  «         |                     t3          ¦   «         ¦  «         |                     |¦  «        S )Nr‘   )Útarget)r§   ÚarangeÚ
num_qubitsr.   r0   r   rv   r£   ÚsdgÚhÚmeasurer·   rT   rW   r   r   r   rO   rÊ   ru   r%   Úcoupling_mapr   r   r   r   r•   )r[   r‘   rÇ   ÚqargsÚmeas_circuitÚclbitÚqargÚlayoutÚpassmanagerÚopt1qrÐ   s              r(   r�   zEstimator._create_meas_circuit€  sž  € Ý”	˜%Ô*Ñ+Ô+¨E¬G°e´gÑ,=Ô>ˆÝ% eÔ&6½¸E¹
¼
ÑCÔCˆÝ$ UÑ+Ô+ð 	.ð 	.‰KˆE�4ØŒw�tŒ}ð %Ø”7˜4”=ð +Ø ×$Ò$ TÑ*Ô*Ð*Ø—’˜tÑ$Ô$Ð$Ø× Ò   uÑ-Ô-Ð-Ð-Ø!(¨%Ð 0ˆÔàÔ#ð 	 ØÐà”˜}Ô-ˆÝ!¥9¨VÑ#4Ô#4Ð"5Ñ6Ô6ˆÝ,°D´MÔ4HÐIÑIÔIˆØ×Ò˜5Ñ!Ô!Ð!Ý�d”mÔ0µ+Ñ>Ô>ð 	5Øœ=Ô5ˆLØ×ÒÕ4°\ÑBÔBÑCÔCÐCØ×ÒÕ1Ñ3Ô3Ñ4Ô4Ð4Ø×Ò�;™=œ=Ñ)Ô)Ð)Ø�Š˜|Ñ,Ô,Ð,r*   r{   r   rµ   úlist[QuantumCircuit]c                óü   — g }|D ]v}|                       ¦   «         }|j        D ]}|                     |¦  «         Œ|                     |d¬¦  «         t	          ||j        ¦  «         |                     |¦  «         Œw|S )NT)Úinplace)ÚcopyÚcregsÚadd_registerÚcomposeÚ_update_metadatar·   ru   )r{   rµ   ÚcircsrÒ   Únew_circÚcregs         r(   r¥   zEstimator._combine_circs™  s’   € àˆØ)ð 	#ð 	#ˆLØ—|’|‘~”~ˆHØ$Ô*ð ,ð ,�Ø×%Ò% dÑ+Ô+Ð+Ð+Ø×Ò˜\°4ÐÑ8Ô8Ð8Ý˜X |Ô'<Ñ=Ô=Ð=Ø�LŠL˜Ñ"Ô"Ð"Ð"Øˆr*   c                óR  — ||          |         |         }d}|                      ¦   «         D ]n\  }}	t          |	                      ¦   «         ¦  «        D ]G\  }
\  }\  }}| |k    r$||
k    r||                     |¦  «        z  }|c c S |t          |¦  «        z  }ŒHŒot	          d¦  «        ‚)Nr   zJBug. Please report from issue: https://github.com/Qiskit/qiskit-aer/issues)rŸ   r£   r|   rv   r   )r’   r†   Úterm_indr»   r«   r¬   r³   Úresult_indexÚ	_circ_indÚ	basis_mapÚ
_basis_indrÆ   r½   s                r(   Ú_calculate_result_indexz!Estimator._calculate_result_index¥  sÍ   € à˜XÔ& wÔ/°Ô9ˆ	àˆØ$+§M¢M¡O¤Oð 	0ð 	0Ñ ˆI�yÝ4=¸i¿oºoÑ>OÔ>OÑ4PÔ4Pð 0ð 0Ñ0�
Ñ0˜Q¡  JØ˜yÒ(Ð(¨Y¸*Ò-DÐ-DØ  J×$4Ò$4°YÑ$?Ô$?Ñ?�LØ'Ð'Ð'Ð'Ð'Ð'Ø¥ J¡¤Ñ/��ð	0õ
 ÐcÑdÔdÐdr*   úlist[_PostProcessing]c           
     óh  — g }t          |||¦  «        D �]œ\  }}}	g }
g }g }| j        |         }t          t          |j        |j        ¦  «        ¦  «        D �]5\  }\  }}|j                             ¦   «         sg|j                             ¦   «         sN|
                     d ¦  «         |                     t          |¦  «        ¦  «         |                     |g¦  «         Œ‰|  
                    ||||	||¦  «        }||
v rA|
                     |¦  «        }||xx         |z  cc<   ||                              |¦  «         Œè|
                     |¦  «         |                     t          |¦  «        ¦  «         |                     |g¦  «         �Œ7|                     t          |
||¦  «        ¦  «         �Œž|S r„   )rž   rN   r£   r-   r2   r0   r¤   r.   ru   r   ré   r|   Ú_PostProcessing)r[   rc   re   rf   r«   r¬   r®   r’   r†   r»   Úresult_indicesr-   r2   r!   rä   rŠ   Úcoeffrå   rÁ   s                      r(   r›   z!Estimator._create_post_processing²  sÄ  € ð ÐÝ,/°¸+ÐGWÑ,XÔ,Xð 	Uñ 	UÑ(ˆH�g˜yØ/1ˆNØˆFØˆFØÔ*¨7Ô3ˆJÝ,5µc¸*Ô:KÈZÔM^Ñ6_Ô6_Ñ,`Ô,`ð +ñ +Ñ(�™.˜5 %à”w—{’{‘}”}ð ¨U¬W¯[ª[©]¬]ð Ø"×)Ò)¨$Ñ/Ô/Ð/Ø—M’M¥)¨EÑ"2Ô"2Ñ3Ô3Ð3Ø—M’M 5 'Ñ*Ô*Ð*Øà#×;Ò;Ø˜g x°¸HÀgñ ô  �ð   >Ð1Ð1Ø&×,Ò,¨\Ñ:Ô:�AØ˜1�I�I”I Ñ&�I�I‘IØ˜1”I×$Ò$ UÑ+Ô+Ð+Ð+à"×)Ò)¨,Ñ7Ô7Ð7Ø—M’M¥)¨EÑ"2Ô"2Ñ3Ô3Ð3Ø—M’M 5 'Ñ*Ô*Ð*Ñ*Ø×#Ò#¥O°NÀFÈFÑ$SÔ$SÑTÔTÐTÑTØÐr*   c           
     óH	  ‡!— t          |¦  «        t          |¦  «        | j        f}|                     dd ¦  «        }|| j        v rÖt	          t
          ¦  «        }t          |||¦  «        D ]{\  }	}
}|                      ||	¦  «         t          | j        |	         |¦  «        D ]C\  }}|||	|
f         v r$||	|
f         |          	                    |¦  «         Œ5|g||	|
f         |<   ŒDŒ|| j        |         }t          |                     ¦   «         ¦  «        |_        �n’|                      |¦  «         t          ¦   «         }t          |||¦  «        D �]R\  }	}
}|                      ||	¦  «         |	|
f|j        v r*|j                             |	|
f¦  «        }|j        |         }nÀ| j        r| j        |	                              ¦   «         n| j        |	                              ¦   «         }| j        |
         }|€"|                     || j        |	         ¦  «         nJt3          |j        ¦  «        D ]5\  }}|                     || j        |	         t7          |¦  «        ¬¦  «         Œ6| 	                    |	|
ft          t          | j        |	         |¦  «        ¦  «        |¬¦  «         �ŒT|| j        |<    | j        j        |j        fd|j        i|¤Ž                     ¦   «         Š!|€(ˆ!fd„|j        D ¦   «         }ˆ!fd„|j        D ¦   «         }�nzg }t@          j!         "                    |¦  «        }g }|j        }tG          tI          |¦  «        ¦  «        D �]2}	d}d}||	         }| %                    |	¦  «        }tA          j&        | j        |         j'        ¦  «        }‰! (                    |¦  «         )                    ¦   «         D ]5\  }}d|d	z  z
  }|tU          |¦  «                 }|||z  z  }|||d	z  z  z  }Œ6tA          j+        ||z  ¦  «        } | 	                    | ,                    || ¦  «        ¦  «         | 	                    tA          j&        |¦  «         -                    ¦   «         |‰!j.        |         j/        d
œ¦  «         �Œ4ta          tA          j&        |¦  «        |¦  «        S )Nr�   )Úlabel)r©   Úparameter_bindÚexperiment_circuitr“   c                óF   •— g | ]}‰                      |¦  «        d          ‘ŒS )Úexpectation_value)Údata©r…   rÁ   r¦   s     €r(   r‹   z9Estimator._compute_with_approximation.<locals>.<listcomp>	  s6   ø€ ð "ð "ð "Ø89�—’˜A‘”Ð2Ô3ð"ð "ð "r*   c                ó8   •— g | ]}d ‰j         |         j        i‘ŒS )Úsimulator_metadata)r—   r·   rö   s     €r(   r‹   z9Estimator._compute_with_approximation.<locals>.<listcomp>  s8   ø€ ð ð ð àð & v¤~°aÔ'8Ô'AÐBðð ð r*   ç        r   r   )Úvariancer�   rø   )1r+   rS   rk   rU   r   r¹   rž   rº   rM   ru   r�   Úvaluesr“   rœ   Ú_ExperimentManagerÚkeysr|   Úexperiment_circuitsrT   rL   rÛ   rV   rN   Úsave_expectation_valuerW   r£   r-   ÚstrrO   r•   r¦   Úexperiment_indicesr§   ÚrandomÚdefault_rngÚrangerv   Úget_observable_keyr¨   r2   rõ   rŸ   rÈ   ÚsqrtÚnormalÚitemr—   r·   r   )"r[   rc   re   rf   r8   ri   r©   r�   r“   rÁ   ÚjÚvalueÚkÚvÚexperiment_managerÚ	key_indexr{   r!   rä   rŠ   r¶   r·   Úrngr  Úcombined_expvalÚcombined_varrå   Úobservable_keyr2   ÚexpvalÚvarrî   Ústandard_errorr¦   s"                                    @r(   rm   z%Estimator._compute_with_approximationÑ  s*  ø€ õ �X‰Œ¥ kÑ 2Ô 2°DÔ4GÐHˆØ—’ ¨Ñ.Ô.ˆð �$”+ÐÐÝ)­$Ñ/Ô/ˆOÝ" 8¨[Ð:JÑKÔKð 9ð 9‘��1�eØ×/Ò/°°qÑ9Ô9Ð9Ý Ô 0°Ô 3°UÑ;Ô;ð 9ð 9‘D�A�qØ˜O¨Q°¨FÔ3Ð3Ð3Ø'¨¨A¨Ô/°Ô2×9Ò9¸!Ñ<Ô<Ð<Ð<à67°S˜¨¨A¨Ô/°Ñ2Ð2ð	9ð
 "&¤¨SÔ!1ÐÝ15°o×6LÒ6LÑ6NÔ6NÑ1OÔ1OÐÔ.Ñ.à×$Ò$ XÑ.Ô.Ð.Ý!3Ñ!5Ô!5ÐÝ" 8¨[Ð:JÑKÔKð ñ ‘��1�eØ×/Ò/°°qÑ9Ô9Ð9Ø�q�6Ð/Ô4Ð4Ð4Ø 2Ô 7× =Ò =¸qÀ!¸fÑ EÔ E�IØ0ÔDÀYÔO�G�Gð  Ô3ðA˜œ qÔ)×.Ò.Ñ0Ô0Ð0à!Ô6°qÔ9×>Ò>Ñ@Ô@ð ð
 "&Ô!2°1Ô!5�JØ�}Ø×6Ò6°zÀ4Ä=ÐQRÔCSÑTÔTÐTÐTå/8¸Ô9JÑ/KÔ/Kð ð ™O˜H eØ#×:Ò:Ø % t¤}°QÔ'7½sÀ8¹}¼}ð ;ñ ô ð ð ð #×)Ò)Ø˜A˜Ý#'­¨DÔ,<¸QÔ,?ÀÑ(GÔ(GÑ#HÔ#HØ'.ð *ñ ô ð ñ ð  2ˆDŒK˜ÑØ"�”Ô"ØÔ2ð
ð 
à.Ô>ð
ð ð
ð 
÷ Š&‰(Œ(ð	 	ð ˆ=ð"ð "ð "ð "Ø=OÔ=bð"ñ "ô "Ððð ð ð à+Ô>ðñ ô ˆH‰Hð
 "$ÐÝ”)×'Ò'¨Ñ-Ô-ˆCØˆHØ!3Ô!FÐÝ�3Ð1Ñ2Ô2Ñ3Ô3ð ñ �Ø"%�Ø"�Ø1°!Ô4�Ø!3×!FÒ!FÀqÑ!IÔ!I�ÝÔ)¨$Ô*;¸NÔ*KÔ*RÑSÔS�Ø(.¯ª°LÑ(AÔ(A×(GÒ(GÑ(IÔ(Ið 3ð 3Ñ$�H˜fØ˜f a™i™-�CØ"¥3 x¡=¤=Ô1�EØ# v°¡~Ñ5�OØ  C¨%°©(¡NÑ2�L�Lå!#¤¨¸Ñ)=Ñ!>Ô!>�Ø"×)Ò)¨#¯*ª*°_ÀnÑ*UÔ*UÑVÔVÐVØ—’å$&Ô$4°\Ñ$BÔ$B×$GÒ$GÑ$IÔ$IØ!&Ø.4¬n¸\Ô.JÔ.Sðð ñô ð ñ õ �rÔ/Ð0BÑCÔCÀXÑNÔNÐNr*   c           	     óÒ   — t          |¦  «        t          | j        |         ¦  «        k    r;t          dt          |¦  «        › dt          | j        |         ¦  «        › d�¦  «        ‚d S )NzThe number of values (z+) does not match the number of parameters (z).)rv   rM   Ú
ValueError)r[   r¼   rÇ   s      r(   rº   z$Estimator._validate_parameter_length-  s}   € Ýˆy‰>Œ>�S Ô!1°-Ô!@ÑAÔAÒAÐAÝðV­¨Y©¬ð Vð VÝ-0°Ô1AÀ-Ô1PÑ-QÔ-QðVð Vð Vñô ð ð BÐAr*   c                óN   — | j         r|S t          || j        fi | j        j        ¤ŽS r„   )rT   r	   rO   rQ   Ú__dict__)r[   rc   s     r(   Ú
_transpilezEstimator._transpile4  s2   € ØÔ#ð 	ØˆOÝ˜ 4¤=ÐUÐU°DÔ4KÔ4TÐUÐUÐUr*   c                ól  ‡— | j         rJt          |¦  «        D ]8}| j        |         j        }t	          t          |¦  «        ¦  «        | j        |<   Œ9d S t          |¦  «        D ]Ñ}|| j        vrÆ| j        |                              ¦   «         }| 	                    ¦   «          |j        }| j
                             |¦  «         |                      |¦  «        }d„ t          |j        ¦  «        D ¦   «         Šˆfd„|| d …         D ¦   «         }|                     ¦   «          || j        |<   || j        |<   ŒÒd S )Nc                ó   — i | ]\  }}||“Œ	S rH   rH   )r…   r|   Úbits      r(   rÃ   z1Estimator._transpile_circuits.<locals>.<dictcomp>F  s   € ÐRÐRÐR©*¨%°˜3 ÐRÐRÐRr*   c                ó4   •— g | ]\  }}}‰|d                   ‘ŒS )r   rH   )r…   rÆ   ÚqrÚbit_maps      €r(   r‹   z1Estimator._transpile_circuits.<locals>.<listcomp>G  s'   ø€ ÐOÐOÐO©X¨Q°°A˜' " Q¤%œ.ÐOÐOÐOr*   )rT   ÚsetrL   rÌ   r�   r  rW   rV   rÛ   Úmeasure_allrO   Úset_max_qubitsr  r£   ÚqubitsÚremove_final_measurements)r[   rc   rÁ   rÌ   r{   rÕ   r   s         @r(   rœ   zEstimator._transpile_circuits9  sI  ø€ ØÔ#ð 	Ý˜‘]”]ð ;ð ;�Ø!œ^¨AÔ.Ô9�
Ý#'­¨jÑ(9Ô(9Ñ#:Ô#:�”˜aÑ Ð ØˆFÝ�X‘”ð 	*ð 	*ˆAØ˜Ô1Ð1Ð1Øœ.¨Ô+×0Ò0Ñ2Ô2�Ø×#Ò#Ñ%Ô%Ð%Ø$Ô/�
Ø”×,Ò,¨ZÑ8Ô8Ð8ØŸ/š/¨'Ñ2Ô2�ØRÐR½	À'Ä.Ñ8QÔ8QÐRÑRÔR�ØOÐOÐOÐO¸À*ÀÀÀÔ9NÐOÑOÔO�Ø×1Ò1Ñ3Ô3Ð3Ø/6�Ô)¨!Ñ,Ø#)�”˜aÑ øð	*ð 	*r*   )r6   r<   r7   r<   r8   r<   r9   r=   r:   r=   r;   r=   )rc   rd   re   rd   rf   rg   r#   r   )rc   rp   re   rq   rf   rg   r#   r   )r‘   r   rÇ   rÈ   )r{   r   rµ   rØ   )r#   rÈ   )r#   rê   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   Úpropertyr   r9   Úsetterro   r   rn   r™   Ústaticmethodrš   r�   r¥   ré   r›   rm   rº   r  rœ   Ú__classcell__)r\   s   @r(   r5   r5   V   s  ø€ € € € € ðð ðD (,Ø)-Ø#'Ø#Ø#(Ø!%ð92ð 92ð 92ð 92ð 92ð 92ð 92ð 92ðv Ø€^ØØ!Øðñ ô ð
#ð #ñô ñ „Xð#ð ÔØ€^ØØ!Øðñ ô ð

,ð 
,ñô ñ Ôð
,ðWð Wð Wð Wð$$ð $ð $ð $ðLUUð UUð UUðnð ð ð& ð1ð 1ñ „\ð1ð -ð -ð -ð -ð2 ð	ð 	ð 	ñ „\ð	ð ð
eð 
eð 
eñ „\ð
eð ð  ð  ð  ð>ZOð ZOð ZOðxð ð ðVð Vð Vð
*ð *ð *ð *ð *ð *ð *r*   r5   útuple[float, float]c                óà   — d}d}|                       ¦   «         D ]E\  }}t          |d¦  «        }||z  }||dt          |¦  «                             d¦  «        z  z  z  }ŒF||z  }d|dz  z
  }||fS )Nr   rù   é   éÿÿÿÿÚ1r   r   )rŸ   rÈ   ÚbinÚcount)ÚcountsÚdenomr  Úbin_outcomeÚfreqÚoutcomerú   s          r(   Ú_expval_with_variancer:  M  s‹   € Ø€EØ€FØ#Ÿ\š\™^œ^ð 9ð 9Ñˆ�TÝ�k 2Ñ&Ô&ˆØ�‰ˆØ�$˜"¥ W¡¤×!3Ò!3°CÑ!8Ô!8Ñ8Ñ8Ñ8ˆˆà
ˆe�O€Fà�6˜1‘9‰}€HØ�8ÐÐr*   c                  ó   — e Zd Zdd„Zdd„ZdS )rì   rí   ú	list[int]r-   úlist[PauliList]r2   úlist[list[float]]c                óD   — || _         || _        d„ |D ¦   «         | _        d S )Nc                ó6   — g | ]}t          j        |¦  «        ‘ŒS rH   )r§   Úarray)r…   Úcs     r(   r‹   z,_PostProcessing.__init__.<locals>.<listcomp>d  s    € Ð4Ð4Ð4¨�œ ™œÐ4Ð4Ð4r*   )Ú_result_indicesÚ_paulisÚ_coeffs)r[   rí   r-   r2   s       r(   rK   z_PostProcessing.__init__\  s,   € ð  .ˆÔØˆŒØ4Ð4¨VÐ4Ñ4Ô4ˆŒˆˆr*   r—   úlist[ExperimentResult]r#   útuple[float, dict]c                ó„  — d}d}g }t          | j        | j        | j        ¦  «        D �]k\  }}}|€;t	          j        dgt          ¬¦  «        t	          j        dgt          ¬¦  «        }	}d}
nô||         }|j        j        }t          | 
                    ¦   «         ¦  «        }
	 |j        j        d         }n## t          $ r |j        d         d         }Y nw xY wt	          j        |j        |j        z  ¦  «        d         }t#          j        |j        dd…|f         |j        dd…|f         d¦  «        }t'          ||¦  «        \  }}	|                     |j        ¦  «         |t	          j        ||¦  «        z  }|t	          j        |	|dz  ¦  «        z  }�Œm|
t	          j        |¦  «                             ¦   «         |d	œ}||fS )
z¬Coumpute expectation value.

        Args:
            results: list of ExperimentResult.

        Returns:
            tuple of an expectation value and metadata.
        rù   Nr   ©Údtyper   r‘   r·   r   )r�   rú   rø   )rž   rC  rD  rE  r§   rA  Úcomplexrõ   r5  r    rû   Úheaderr·   ÚAttributeErrorÚwherer.   r0   r   Úfrom_symplecticÚ_pauli_expval_with_varianceru   Údotr¨   r  )r[   r—   r  r  rø   Úc_ir-   r2   ÚexpvalsÚ	variancesr�   r¦   r4  r‘   ÚindicesÚmeasured_paulisr·   s                    r(   r•   z_PostProcessing.runf  sÏ  € ð ˆØˆØÐÝ#& tÔ';¸T¼\È4Ì<Ñ#XÔ#Xð 	9ñ 	9ÑˆC�˜Øˆ{å%'¤X¨q¨c½Ð%AÑ%AÔ%AÅ2Ä8ÈQÈCÕW^ÐC_ÑC_ÔC_˜�Ø��à  œ�ØœÔ*�Ý˜EŸLšL™NœNÑ+Ô+�ð?Ø"œMÔ2°7Ô;�E�EøÝ%ð ?ð ?ð ?Ø"œM¨*Ô5°gÔ>�E�E�Eð?øøøåœ( 5¤7¨U¬WÑ#4Ñ5Ô5°aÔ8�Ý"+Ô";Ø”H˜Q˜Q˜Q ˜ZÔ(¨&¬(°1°1°1°g°:Ô*>Àñ#ô #�õ &AÀÈÑ%XÔ%XÑ"�˜Ø"×)Ò)¨&¬/Ñ:Ô:Ð:Ø�rœv g¨vÑ6Ô6Ñ6ˆOØ�BœF 9¨f°a©iÑ8Ô8Ñ8ˆL‰LàÝÔ(¨Ñ6Ô6×;Ò;Ñ=Ô=Ø"4ð
ð 
ˆð
  Ð(Ð(s   Â!B4Â4CÃCN)rí   r<  r-   r=  r2   r>  )r—   rF  r#   rG  )r&  r'  r(  rK   r•   rH   r*   r(   rì   rì   [  s<   € € € € € ð5ð 5ð 5ð 5ð()ð ()ð ()ð ()ð ()ð ()r*   rì   r{   r   r·   r¹   c                óX   — | j         r| j                              |¦  «         n|| _         | S r„   )r·   Úupdate)r{   r·   s     r(   rß   rß   ‘  s4   € ØÔð $ØÔ×Ò Ñ)Ô)Ð)Ð)à#ˆÔØ€Nr*   r5  r-   r   útuple[np.ndarray, np.ndarray]c                óx  — t          |¦  «        }t          |¦  «        }t          j        |t          ¬¦  «        }d}|                      ¦   «         D ]Z\  }}t          |d¦  «        }||z  }t          |¦  «        D ]0}	dt          ||	         |z  ¦  «        z  }
||	xx         ||
z  z  cc<   Œ1Œ[||z  }d|dz  z
  }||fS )NrI  r   r0  r1  r   r   )	rv   Ú_paulis2indsr§   ÚzerosÚfloatrŸ   rÈ   r  Ú_parity)r5  r-   ÚsizeÚ	diag_indsrS  r6  Úhex_outcomer8  r9  r  rî   rT  s               r(   rP  rP  ™  sÜ   € åˆv‰;Œ;€DÝ˜VÑ$Ô$€IåŒh�t¥5Ð)Ñ)Ô)€GØ€EØ#Ÿ\š\™^œ^ð 'ð 'Ñˆ�TÝ�k 2Ñ&Ô&ˆØ�‰ˆÝ�t‘”ð 	'ð 	'ˆAØ�G I¨a¤L°7Ñ$:Ñ;Ô;Ñ;ˆEØ�AˆJˆJŒJ˜$ ™,Ñ&ˆJˆJ‰JˆJð	'ð
 ˆuÑ€Gà�G˜Q‘J‘€IØ�IÐÐr*   r<  c                ó  — | j         | j        z  }t          j        |dd¬¦  «                             t
          ¦  «        }ddt          j        |j        d         t
          ¬¦  «        z  z  }||z  }|                     ¦   «         S )Nr   Úlittle)ÚaxisÚbitorderé   rI  )	r.   r0   r§   ÚpackbitsÚastypeÚobjectrË   ÚshapeÚtolist)r-   ÚnonidÚpacked_valsÚpower_uint8Úindss        r(   r[  r[  ®  sy   € ØŒH�v”xÑ€EÝ”+˜e¨!°hÐ?Ñ?Ô?×FÒFÝñô €Kð ˜�BœI kÔ&7¸Ô&:Å&ÐIÑIÔIÑIÑJ€KØ˜Ñ$€DØ�;Š;‰=Œ=Ðr*   ÚintegerrÈ   c                óL   — t          | ¦  «                             d¦  «        dz  S )zReturn the parity of an integerr2  r   )r3  r4  )rp  s    r(   r^  r^  ¸  s!   € åˆw‰<Œ<×Ò˜cÑ"Ô" QÑ&Ð&r*   r   c                ó¬   — t          t          j                             | j        ¦  «        t          j                             | j        ¦  «        f¦  «        S r„   )r   r§   Ú
logical_orÚreducer.   r0   )r-   s    r(   r�   r�   ½  sC   € ÝåŒM× Ò  ¤Ñ*Ô*ÝŒM× Ò  ¤Ñ*Ô*ð	
ñô ð r*   c                  ó>   — e Zd Zd„ Zd„ Zed„ ¦   «         Zdd
„Zd„ ZdS )rü   c                óL   — g | _         g | _        g | _        g | _        d| _        d S )Nr   )rý   rþ   r“   Ú_input_indicesÚ_num_experimentra   s    r(   rK   z_ExperimentManager.__init__Ç  s/   € Ø+-ˆŒ	Ø9;ˆÔ ØMOˆÔØ/1ˆÔØ$%ˆÔÐÐr*   c                ó   — | j         S r„   )rx  ra   s    r(   Ú__len__z_ExperimentManager.__len__Î  s   € ØÔ#Ð#r*   c                ót   — t          j        t          | j        g ¦  «        ¦  «                             ¦   «         S )zindices of experiments)r§   Úargsortr    rw  rk  ra   s    r(   r  z%_ExperimentManager.experiment_indicesÑ  s-   € õ Œz�#˜dÔ1°2Ñ6Ô6Ñ7Ô7×>Ò>Ñ@Ô@Ð@r*   r©   útuple[int, int]rñ   ú dict[ParameterExpression, float]rò   r   c                óP  — || j         v r‚|r€| j                              |¦  «        }| j        |                              ¦   «         D ] \  }}|                     ||         ¦  «         Œ!| j        |                              | j        ¦  «         nŠ| j                             |¦  «         | j                              |¦  «         | j                             d„ |                     ¦   «         D ¦   «         ¦  «         | j                             | j        g¦  «         | xj        dz  c_        dS )zappend experimentsc                ó   — i | ]	\  }}||g“Œ
S rH   rH   )r…   r  r  s      r(   rÃ   z-_ExperimentManager.append.<locals>.<dictcomp>å  s    € Ð(SÐ(SÐ(S±D°A°q¨¨Q¨CÐ(SÐ(SÐ(Sr*   r   N)rý   r|   r“   rŸ   ru   rw  rx  rþ   )r[   r©   rñ   rò   r  r  Úvss          r(   ru   z_ExperimentManager.appendÖ  s#  € ð �$”)ÐÐ ÐØœ	Ÿš¨Ñ,Ô,ˆIØÔ-¨iÔ8×>Ò>Ñ@Ô@ð -ð -‘��2Ø—	’	˜.¨Ô+Ñ,Ô,Ð,Ð,ØÔ 	Ô*×1Ò1°$Ô2FÑGÔGÐGÐGàÔ$×+Ò+Ð,>Ñ?Ô?Ð?ØŒI×Ò˜SÑ!Ô!Ð!ØÔ ×'Ò'Ð(SÐ(S¸N×<PÒ<PÑ<RÔ<RÐ(SÑ(SÔ(SÑTÔTÐTØÔ×&Ò&¨Ô(<Ð'=Ñ>Ô>Ð>àÐÔ Ñ!ÐÔÐÐr*   c                ó†   — t          | j        ¦  «        D ]\  }}||v r| j        |         d         c S Œt          d¦  «        ‚)zreturn key of observablesr   zUnexpected behavior.)r£   rw  rý   r   )r[   r|   rÁ   Úinputss       r(   r  z%_ExperimentManager.get_observable_keyê  sS   € å" 4Ô#6Ñ7Ô7ð 	'ð 	'‰IˆAˆvØ˜ˆˆØ”y ”| A”Ð&Ð&Ð&ð åÐ-Ñ.Ô.Ð.r*   N)r©   r}  rñ   r~  rò   r   )	r&  r'  r(  rK   rz  r*  r  ru   r  rH   r*   r(   rü   rü   Æ  ss   € € € € € ð&ð &ð &ð$ð $ð $ð ðAð Añ „XðAð"ð "ð "ð "ð(/ð /ð /ð /ð /r*   rü   )r!   r"   r#   r   )r!   r   r#   r+   )r#   r.  )r{   r   r·   r¹   r#   r   )r5  r¹   r-   r   r#   rY  )r-   r   r#   r<  )rp  rÈ   r#   rÈ   )r-   r   r#   r   )<r)  Ú
__future__r   Úcollectionsr   Úcollections.abcr   Úwarningsr   Únumpyr§   Úqiskit.circuitr   r   Úqiskit.compilerr	   Úqiskit.primitivesr
   r   Úqiskit.primitives.primitive_jobr   Úqiskit.providersr   Úqiskit.quantum_infor   r   r   Ú+qiskit.quantum_info.operators.base_operatorr   Ú3qiskit.quantum_info.operators.symplectic.base_paulir   Úqiskit.result.modelsr   Úqiskit.transpilerr   r   Úqiskit.transpiler.passesr   r   r   r   r   Úqiskit.utilsr   Ú r   r   Úsamplerr    r)   r3   r5   r:  rì   rß   rP  r[  r^  r�   rü   rH   r*   r(   ú<module>r—     sé  ððð ð #Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø %Ð %Ð %Ð %Ð %Ð %Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø $Ð $Ð $Ð $Ð $Ð $Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø DÐ DÐ DÐ DÐ DÐ DØ IÐ IÐ IÐ IÐ IÐ IØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !ð)ð )ð )ð )ð.ð ð ð ð t*ð t*ð t*ð t*ð t*�ñ t*ô t*ð t*ðnð ð ð ð3)ð 3)ð 3)ð 3)ð 3)ñ 3)ô 3)ð 3)ðlð ð ð ðð ð ð ð*ð ð ð ð'ð 'ð 'ð 'ð
ð ð ð ð)/ð )/ð )/ð )/ð )/ñ )/ô )/ð )/ð )/ð )/r*   