tensorcircuit.applications.vags#

DQAS application kernels as vag functions

tensorcircuit.applications.vags.GHZ_vag(gdata: Any, nnp: Any, preset: Sequence[int], verbose: bool = False, n: int = 3) → Tuple[Any, Any][source]#
tensorcircuit.applications.vags.GHZ_vag_tfq(gdata: Any, nnp: Any, preset: Sequence[int], verbose: bool = False, index: Tuple[int, int, int, int, int, int, int, int] = (1, 1, 1, 0, 0, 1, 0, 0)) → Tuple[Any, Any][source]#
tensorcircuit.applications.vags.ave_func(state: Any, g: Any, *fs: Union[Tuple[Callable[[float], float], Callable[[Any], Any]], Tuple[Callable[[float], float], Callable[[Any], Any], Callable[[Any, Any], Any]]]) → Sequence[Any][source]#
Parameters
  • state – 1D array for full wavefunction, the basis is in lexcical order

  • g – nx.Graph

  • fs – transformation functions before averaged

Returns

tensorcircuit.applications.vags.compose_tc_circuit_with_multiple_pools(theta: Any, preset: Sequence[int], g: Any, pool_choice: Sequence[int], cset: Optional[Sequence[Any]] = None, measure_func: Optional[Callable[[tensorcircuit.densitymatrix.DMCircuit, Any], Any]] = None) → tensorcircuit.circuit.Circuit[source]#
tensorcircuit.applications.vags.correlation(m: Any, rho: Any) → Any[source]#
tensorcircuit.applications.vags.cvar(r: List[float], p: Any, percent: float = 0.2) → Sequence[float][source]#

as f3

Parameters
  • r –

  • p –

  • percent –

Returns

tensorcircuit.applications.vags.double_qubits_initial() → Iterator[Sequence[Any]][source]#
tensorcircuit.applications.vags.double_state(h: Any, beta: float = 1) → Any[source]#
tensorcircuit.applications.vags.energy(i: int, n: int, g: Any) → float[source]#

maxcut energy for n qubit wavefunction i-th basis

Parameters
  • i – ranged from 0 to 2**n-1

  • n – number of qubits

  • g – nx.Graph

Returns

tensorcircuit.applications.vags.entanglement_entropy(state: Any) → Any[source]#

deprecated as non tf and non flexible, use the combination of reduced_density_matrix and entropy instead.

tensorcircuit.applications.vags.entropy(rho: Any, eps: float = 1e-12) → Any[source]#

deprecated, current version in tc.quantum

tensorcircuit.applications.vags.evaluate_vag(params: Any, preset: Sequence[int], g: Any, lbd: float = 0.0, overlap_threhold: float = 0.0) → Tuple[Any, Any, Any, Any][source]#

value and gradient, currently only tensorflow backend is supported jax and numpy seems to be slow in circuit simulation anyhow. deprecated

Parameters
  • params –

  • preset –

  • g –

  • lbd – if lbd=0, take energy as objective

  • overlap_threhold – if as default 0, overlap will not compute in the process

Returns

tensorcircuit.applications.vags.exp_forward(theta: Any, preset: Sequence[int], g: Any, *fs: Tuple[Callable[[float], float], Callable[[Any], Any]]) → Sequence[Any][source]#
tensorcircuit.applications.vags.fidelity(rho: Any, rho0: Any) → Any[source]#
tensorcircuit.applications.vags.free_energy(rho: Any, h: Any, beta: float = 1, eps: float = 1e-12) → Any[source]#
tensorcircuit.applications.vags.gapfilling(circuit: cirq.circuits.circuit.Circuit, placeholder: Sequence[Any]) → cirq.circuits.circuit.Circuit[source]#

Fill single qubit gates according to placeholder on circuit

Parameters
  • circuit –

  • placeholder –

Returns

tensorcircuit.applications.vags.gatewise_vqe_vag(gdata: Any, nnp: Any, preset: Sequence[int], pool_choice: Sequence[int], measure_func: Optional[Callable[[Union[tensorcircuit.circuit.Circuit, tensorcircuit.densitymatrix.DMCircuit], Any], Any]] = None) → Tuple[Any, Any][source]#
tensorcircuit.applications.vags.gibbs_state(h: Any, beta: float = 1) → Any[source]#
tensorcircuit.applications.vags.heisenberg_measurements(g: Any, hxx: float = 1.0, hyy: float = 1.0, hzz: float = 1.0, one: bool = True) → Any[source]#

Hamiltonian measurements for Heisenberg model on graph lattice g

Parameters
  • g –

  • hxx –

  • hyy –

  • hzz –

  • one –

Returns

tensorcircuit.applications.vags.heisenberg_measurements_tc(c: Union[tensorcircuit.circuit.Circuit, tensorcircuit.densitymatrix.DMCircuit], g: Any, hzz: float = 1.0, hxx: float = 1.0, hyy: float = 1.0, hz: float = 0.0, hx: float = 0.0, hy: float = 0.0, reuse: bool = True) → Any[source]#
tensorcircuit.applications.vags.maxcut_measurements_tc(c: Union[tensorcircuit.circuit.Circuit, tensorcircuit.densitymatrix.DMCircuit], g: Any) → Any[source]#
tensorcircuit.applications.vags.noise_forward(theta: Any, preset: Sequence[int], g: Any, measure_func: Callable[[tensorcircuit.densitymatrix.DMCircuit, Any], Any], is_mc: bool = False) → Any[source]#
tensorcircuit.applications.vags.noisyfy(circuit: cirq.circuits.circuit.Circuit, error_model: str = 'bit_flip', p_idle: float = 0.2, p_sep: float = 0.02) → cirq.circuits.circuit.Circuit[source]#
tensorcircuit.applications.vags.q(i: int) → cirq.devices.line_qubit.LineQubit[source]#

short cut for cirq.LineQubit(i)

Parameters

i –

Returns

tensorcircuit.applications.vags.qaoa_block_vag(gdata: Any, nnp: Any, preset: Sequence[int], f: Tuple[Callable[[float], float], Callable[[Any], Any]]) → Tuple[Any, Any][source]#

QAOA block encoding kernel, support 2 params in one op

Parameters
  • gdata –

  • nnp –

  • preset –

  • f –

Returns

tensorcircuit.applications.vags.qaoa_block_vag_energy(gdata: Any, nnp: Any, preset: Sequence[int], *, f: Tuple[Callable[[float], float], Callable[[Any], Any]] = (<function _identity>, <function _neg>)) → Tuple[Any, Any]#

QAOA block encoding kernel, support 2 params in one op

Parameters
  • gdata –

  • nnp –

  • preset –

  • f –

Returns

tensorcircuit.applications.vags.qaoa_noise_vag(gdata: Any, nnp: Any, preset: Sequence[int], measure_func: Optional[Callable[[tensorcircuit.densitymatrix.DMCircuit, Any], Any]] = None, forward_func: Optional[Callable[[Any, Sequence[int], Any, Callable[[tensorcircuit.densitymatrix.DMCircuit, Any], Any]], Any]] = None, **kws: Any) → Tuple[Any, Any][source]#
tensorcircuit.applications.vags.qaoa_train(preset: Sequence[int], g: Union[Any, Iterator[Any]], *, epochs: int = 100, batch: int = 1, initial_param: Optional[Any] = None, opt: Optional[Any] = None, lbd: float = 0.0, overlap_threhold: float = 0.0, verbose: bool = True) → Tuple[Any, Sequence[float], Sequence[float], Sequence[float]][source]#

training QAOA with only optimizing circuit parameters, can be well replaced with more general function DQAS_search

Parameters
  • preset –

  • g –

  • epochs –

  • batch –

  • initial_param –

  • opt –

  • lbd –

  • overlap_threhold –

  • verbose –

Returns

tensorcircuit.applications.vags.qaoa_vag(gdata: Any, nnp: Any, preset: Sequence[int], f: Optional[Tuple[Callable[[float], float], Callable[[Any], Any]]] = None, forward_func: Optional[Callable[[Any, Sequence[int], Any, Tuple[Callable[[float], float], Callable[[Any], Any]]], Tuple[Any, Any]]] = None, verbose_fs: Optional[Sequence[Tuple[Callable[[float], float], Callable[[Any], Any]]]] = None) → Tuple[Any, Any][source]#
tensorcircuit.applications.vags.qaoa_vag_energy(gdata: Any, nnp: Any, preset: Sequence[int], *, f: Optional[Tuple[Callable[[float], float], Callable[[Any], Any]]] = (<function _identity>, <function _neg>), forward_func: Optional[Callable[[Any, Sequence[int], Any, Tuple[Callable[[float], float], Callable[[Any], Any]]], Tuple[Any, Any]]] = None, verbose_fs: Optional[Sequence[Tuple[Callable[[float], float], Callable[[Any], Any]]]] = None) → Tuple[Any, Any]#
tensorcircuit.applications.vags.qft_circuit(n: int) → cirq.circuits.circuit.Circuit[source]#
tensorcircuit.applications.vags.qft_qem_vag(gdata: Any, nnp: Any, preset: Sequence[int], n: int = 3, p_idle: float = 0.2, p_sep: float = 0.02) → Tuple[Any, Any][source]#
tensorcircuit.applications.vags.quantum_mp_qaoa_vag(gdata: Any, nnp: Any, preset: Sequence[int], measurements_func: Optional[Callable[[...], Any]] = None, **kws: Any) → Tuple[Any, Any][source]#

multi parameter for one layer

Parameters
  • gdata –

  • nnp –

  • preset –

  • measurements_func –

  • kws – kw arguments for measurements_func

Returns

loss function, gradient of nnp

tensorcircuit.applications.vags.quantum_qaoa_vag(gdata: Any, nnp: Any, preset: Sequence[int], measurements_func: Optional[Callable[[...], Any]] = None, **kws: Any) → Tuple[Any, Any][source]#

tensorflow quantum backend compare to qaoa_vag which is tensorcircuit backend

Parameters
  • gdata –

  • nnp –

  • preset –

  • measurements_func –

  • kws – kw arguments for measurements_func

Returns

tensorcircuit.applications.vags.reduced_density_matrix(state: Any, freedom: int, cut: Union[int, List[int]], p: Optional[Any] = None) → Any[source]#

deprecated, current version in tc.quantum

tensorcircuit.applications.vags.renyi_entropy(rho: Any, k: int = 2, eps: float = 1e-12) → Any[source]#
tensorcircuit.applications.vags.renyi_free_energy(rho: Any, h: Any, beta: float = 1) → Any[source]#
tensorcircuit.applications.vags.taylorlnm(x: Any, k: int) → Any[source]#
tensorcircuit.applications.vags.tfim_measurements(g: Any, hzz: float = 1, hx: float = 0, hz: float = 0, one: bool = True) → Any[source]#

Hamiltonian for tfim on lattice defined by graph g

Parameters
  • g –

  • hzz –

  • hx –

  • hz –

  • one –

Returns

cirq.PauliSum as operators for tfq expectation layer

tensorcircuit.applications.vags.tfim_measurements_tc(c: Union[tensorcircuit.circuit.Circuit, tensorcircuit.densitymatrix.DMCircuit], g: Any, hzz: float = 1.0, hx: float = 0.0, hz: float = 0.0) → Any[source]#
tensorcircuit.applications.vags.trace_distance(rho: Any, rho0: Any, eps: float = 1e-12) → Any[source]#
tensorcircuit.applications.vags.truncated_free_energy(rho: Any, h: Any, beta: float = 1, k: int = 2, eps: float = 1e-12) → Any[source]#
tensorcircuit.applications.vags.unitary_design(n: int, l: int = 3) → cirq.circuits.circuit.Circuit[source]#

generate random wavefunction from approximately Haar measure, reference: https://doi.org/10.1063/1.4983266

Parameters
  • n – number of qubits

  • l – repetition of the blocks

Returns

tensorcircuit.applications.vags.unitary_design_block(circuit: cirq.circuits.circuit.Circuit, n: int) → cirq.circuits.circuit.Circuit[source]#

random Haar measure approximation

Parameters
  • circuit – cirq.Circuit, empty circuit

  • n – # of qubit

Returns