# Make qubits 3 to 5 in a HW=1 state qudit_start = 3 qudit_end = 5 HW = 1 init_prog = Dicke_state_local(init_prog, qudit_start, qudit_end, HW) # Make qubits 6 to 11 in a HW=3 state qudit_start = 6 qudit_end = 11 HW = 3 init_prog = Dicke_state_local(init_prog, qudit_start, qudit_end, HW) wfn = WavefunctionSimulator().wavefunction(init_prog) # print states with non-zero probability for state, prob in wfn.get_outcome_probs().items(): if (prob > 0): print(state, '%3.2f' % prob) #print(wfn.get_outcome_probs() ) print(init_prog) #Test senarios # test Dicke_state_local(prog, 0, 2, HW) output is the same as Dicke_state(3, HW) if 0: qudit_start = 0 qudit_end = 2 HW = 1 init_prog = Dicke_state(3, HW) wfn = WavefunctionSimulator().wavefunction(init_prog) print(wfn.get_outcome_probs())
import numpy as np from grove.pyqaoa.maxcut_qaoa import maxcut_qaoa from pyquil import get_qc from pyquil.api import WavefunctionSimulator from hidden_prints import hidden_prints from .rigetti_result_analysis import convert_result graph = [(0, 1), (0, 2), (0, 3)] qvm = get_qc('4q-qvm') with hidden_prints(): maxcut_solver = maxcut_qaoa(graph=graph, steps=4) # qaoa steps betas, gammas = maxcut_solver.get_angles() angles = np.hstack((betas, gammas)) param_prog = maxcut_solver.get_parameterized_program() prog = param_prog(angles) # gives the sequence of qubits and gates measurements = qvm.run_and_measure(prog, trials=1000) # simulate the program runs counts = convert_result(measurements) # plot_state_histogram(counts) wavefunction = WavefunctionSimulator().wavefunction( prog) # use wavefunction class to get theoretical measures prob_dict = wavefunction.get_outcome_probs( ) # extracts the probabilities of outcomes as a dict print(prob_dict) prob_dict.keys() # these store the bitstring outcomes