Skip to content

Commit

Permalink
Udate package
Browse files Browse the repository at this point in the history
  • Loading branch information
vutuanhai237 committed Nov 30, 2023
1 parent 23a3064 commit ae7d42a
Show file tree
Hide file tree
Showing 61 changed files with 584 additions and 997 deletions.
12 changes: 9 additions & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,15 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Remove folder qsee
uses: JesseTG/[email protected]
with:
path: qsee
- name: Install dependecies
run: pip install -r requirements.txt
run: |
pip install -r requirements.txt
git clone https://github.com/vutuanhai237/qsee.git
- name: Run testcases
run: |
cd tests
pytest
cd test
python -m pytest
380 changes: 76 additions & 304 deletions codes/demos/AME_state.ipynb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions codes/demos/fubini_study.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
"import numpy as np\n",
"import sys\n",
"sys.path.insert(1, '../../')\n",
"import qsee.gradient, qsee.ansatz, qsee.constant\n",
"from qsee.core import state, ansatz, gradient\n",
"from qsee.compilation.qcompilation import QuantumCompilation\n",
"from qsee.backend import constant\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
Expand All @@ -33,8 +35,8 @@
}
],
"source": [
"ghz_circuit = qsee.state.ghz(3)\n",
"a = qsee.ansatz.create_linear_ansatz(3, 1).compose(ghz_circuit.inverse())\n",
"ghz_circuit = state.ghz(3)\n",
"a = ansatz.linear(3, 1).compose(ghz_circuit.inverse())\n",
"a.draw('mpl')"
]
},
Expand All @@ -61,7 +63,7 @@
" qc.cry(thetas[2], 0, 1)\n",
" return qc\n",
"thetas = [np.pi/3, np.pi, 0]\n",
"print(qsee.gradient.qng(create_circuit(thetas)))\n"
"print(gradient.qng(create_circuit(thetas)))\n"
]
}
],
Expand Down
167 changes: 16 additions & 151 deletions codes/demos/hessian_qng.ipynb

Large diffs are not rendered by default.

29 changes: 14 additions & 15 deletions codes/demos/mixed_state.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@
"source": [
"%load_ext autoreload\n",
"%autoreload 2\n",
"import tqix, qiskit, qsee.ansatz, qsee.utilities\n",
"\n",
"import tqix, qiskit\n",
"import numpy as np\n",
"from qsee.backend import utilities\n",
"from qsee.core import state, ansatz\n",
"from sklearn.preprocessing import normalize"
]
},
Expand Down Expand Up @@ -53,8 +56,8 @@
"init_state[0] = 1\n",
"rho = (u_haar @ init_state) @ np.conjugate(np.transpose(u_haar @ init_state))\n",
"# normalized_rho = qsee.utilities.normalize_matrix(rho)\n",
"print(qsee.utilities.is_pos_def(rho))\n",
"print(qsee.utilities.is_normalized(rho))"
"print(utilities.is_pos_def(rho))\n",
"print(utilities.is_normalized(rho))"
]
},
{
Expand Down Expand Up @@ -82,10 +85,7 @@
}
],
"source": [
"n_walltoall = qsee.ansatz.calculate_n_walltoall(num_qubits)\n",
"thetas = np.ones(num_layers* 3 * num_qubits + num_layers*n_walltoall)\n",
"qc = qiskit.QuantumCircuit(num_qubits, num_qubits)\n",
"qc = qsee.ansatz.create_Walltoall_layered_ansatz(qc, thetas, num_layers)\n",
"qc = ansatz.Walltoall_zxz(num_qubits, num_layers)\n",
"qc.draw('mpl')\n"
]
},
Expand All @@ -112,10 +112,10 @@
}
],
"source": [
"V = qiskit.quantum_info.DensityMatrix.from_instruction(qc).data\n",
"V = qi.DensityMatrix.from_instruction(qc).data\n",
"rho_1 = np.conjugate(np.transpose(V)) @ rho @ V\n",
"print(qsee.utilities.is_pos_def(rho_1))\n",
"print(qsee.utilities.is_normalized(rho_1))"
"print(utilities.is_pos_def(rho_1))\n",
"print(utilities.is_normalized(rho_1))"
]
},
{
Expand Down Expand Up @@ -156,7 +156,7 @@
}
],
"source": [
"psi = qiskit.quantum_info.Statevector.from_instruction(qc).data\n",
"psi = qi.Statevector.from_instruction(qc).data\n",
"psi = np.expand_dims(psi, 1)\n",
"reconstructed_state = psi @ np.conjugate(np.transpose(psi)) \n",
"print(psi)"
Expand All @@ -177,9 +177,8 @@
}
],
"source": [
"\n",
"print(qsee.utilities.is_pos_def(reconstructed_state))\n",
"print(qsee.utilities.is_normalized(reconstructed_state))"
"print(utilities.is_pos_def(reconstructed_state))\n",
"print(utilities.is_normalized(reconstructed_state))"
]
},
{
Expand All @@ -188,7 +187,7 @@
"metadata": {},
"outputs": [],
"source": [
"state = qiskit.quantum_info.Statevector.from_instruction(qc).data\n"
"state = qi.Statevector.from_instruction(qc).data"
]
},
{
Expand Down
48 changes: 17 additions & 31 deletions codes/demos/qfim.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"import numpy as np\n",
"import sys\n",
"sys.path.insert(1, '../../')\n",
"import \n",
"from qsee.core import state, ansatz, gradient, measure\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
Expand All @@ -57,11 +57,11 @@
"\n",
"thetas = [np.pi/2, np.pi/2]\n",
"qc = create_test_circuit()\n",
"grad_psi1 = .grad_psi(qc, thetas, 1/2, np.pi)\n",
"grad_loss = .grad_loss(qc, thetas)\n",
"grad_psi1 = gradient.grad_psi(qc, thetas, 1/2, np.pi)\n",
"grad_loss = gradient.grad_loss(qc, thetas)\n",
"qc_copy = create_test_circuit()\n",
"psi = qiskit.quantum_info.Statevector.from_instruction(qc_copy.bind_parameters(thetas)).data\n",
"F = qsee.gradient.qfim(psi, grad_psi1)\n",
"psi = qi.Statevector.from_instruction(qc_copy.assign_parameters(thetas)).data\n",
"F = gradient.qfim(psi, grad_psi1)\n",
"\n",
"print(F)\n"
]
Expand Down Expand Up @@ -91,11 +91,11 @@
"thetas = np.zeros((1,))\n",
"\n",
"qc = create_test_circuit2()\n",
"grad_psi1 = .grad_psi(qc, thetas, 1/2, np.pi)\n",
"grad_loss = .grad_loss(qc, thetas)\n",
"grad_psi1 = gradient.grad_psi(qc, thetas, 1/2, np.pi)\n",
"grad_loss = gradient.grad_loss(qc, thetas)\n",
"qc_copy = create_test_circuit2()\n",
"psi = qiskit.quantum_info.Statevector.from_instruction(qc_copy.bind_parameters(thetas)).data\n",
"F = qsee.gradient.qfim(psi, grad_psi1)\n",
"psi = qi.Statevector.from_instruction(qc_copy.assign_parameters(thetas)).data\n",
"F = gradient.qfim(psi, grad_psi1)\n",
"\n",
"print(F)\n"
]
Expand All @@ -122,20 +122,6 @@
"Below is the test for my own QNG, the examples have taken from Pennylane.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"import qiskit\n",
"import numpy as np\n",
"import \n",
"import qsee.constant\n",
"import qsee.ansatz\n",
"import qsee.gradient"
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down Expand Up @@ -183,8 +169,8 @@
"qc = create_psi()\n",
"qc.rz(1, 0)\n",
"qc.rz(2, 1)\n",
"ob = qsee.gradient.create_observers(qc, k=2)\n",
"qsee.gradient.calculate_g(qc, ob)\n"
"ob = gradient.create_observers(qc, k=2)\n",
"print(gradient.calculate_g(qc, ob))\n"
]
},
{
Expand All @@ -211,7 +197,7 @@
" ['ry', 0]\n",
"]\n",
"\n",
"a = qsee.gradient.calculate_g(qc, ob)\n",
"a = gradient.calculate_g(qc, ob)\n",
"print(a)\n",
"b = np.ones((3, 3))\n",
"\n",
Expand Down Expand Up @@ -286,9 +272,9 @@
"qc.ry(1.12, 1)\n",
"qc.rx(2, 2)\n",
"\n",
"ob = qsee.gradient.create_observers(qc, k=2)\n",
"ob = gradient.create_observers(qc, k=2)\n",
"print(ob)\n",
"qsee.gradient.calculate_g(qc, ob)\n"
"gradient.calculate_g(qc, ob)\n"
]
},
{
Expand Down Expand Up @@ -325,7 +311,7 @@
"\n",
"loss_values_ghz = []\n",
"thetass_ghz = []\n",
"G1 = qsee.gradient.calculate_linear_state(qc.copy(), thetas, num_layers)\n"
"G1 = gradient.calculate_linear_state(qc.copy(), thetas, num_layers)\n"
]
},
{
Expand Down Expand Up @@ -378,9 +364,9 @@
"num_layers = 2\n",
"thetas = np.random.uniform(low=0, high=2*np.pi, size=num_qubits*num_layers*5)\n",
"qc = qiskit.QuantumCircuit(num_qubits, num_qubits)\n",
"G1 = qsee.gradient.calculate_binho_state(qc.copy(), thetas, num_layers)\n",
"G1 = gradient.calculate_binho_state(qc.copy(), thetas, num_layers)\n",
"\n",
"qc = qsee.ansatz.create_GHZchecker_binho(qc, thetas, num_layers, theta)\n",
"qc = ansatz.create_GHZchecker_binho(qc, thetas, num_layers, theta)\n",
"qc.draw('mpl')\n"
]
}
Expand Down
50 changes: 25 additions & 25 deletions codes/demos/state_preparation_GHZ.ipynb

Large diffs are not rendered by default.

78 changes: 36 additions & 42 deletions codes/demos/tomography_1qubit.ipynb

Large diffs are not rendered by default.

62 changes: 23 additions & 39 deletions codes/demos/tomography_nqubit.ipynb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion codes/multi_process.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
"import qiskit\n",
"import numpy as np\n",
"psi = qsee.state.haar(num_qubits = 3)\n",
"print(np.real(qiskit.quantum_info.Statevector(psi)))\n",
"print(np.real(qi.Statevector(psi)))\n",
"print(psi)"
]
},
Expand Down
3 changes: 1 addition & 2 deletions codes/multi_process_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ def f(num_qubits, num_layers):
vdagger = qsee.state.ame(num_qubits).inverse(),
optimizer = optimizer,
loss_func = 'loss_fubini_study'
)
compiler.fit(num_steps = 100, verbose = 1)
).fit()
qspobj = qsee.qsp.QuantumStatePreparation.load_from_compiler(
compiler = compiler, ansatz = qsee.ansatz.g2gn)
qspobj.save(state = 'ame', file_name='../experiments/qsp/')
Expand Down
10 changes: 5 additions & 5 deletions codes/plot/plot_bloch_sphere/u3initstate_zbasis.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
"qc.u3(theta, phi, lambdaz, 0)\n",
"\n",
"thetass_sgd, loss_values_sgd = .fit(\n",
" qc, num_steps = 100, thetas = thetas, \n",
" qc, num_steps = constant.DEFAULT_NUM_STEPS, thetas = thetas, \n",
" create_circuit_func = qsee.ansatz.u_onequbit, \n",
" grad_func = .grad_loss,\n",
" loss_func = qsee.loss.loss_fubini_study,\n",
Expand Down Expand Up @@ -107,7 +107,7 @@
"qc.u3(theta, phi, lambdaz, 0)\n",
"\n",
"thetas_adam, loss_values_adam = .fit(\n",
" qc, num_steps = 100, thetas = thetas, \n",
" qc, num_steps = constant.DEFAULT_NUM_STEPS, thetas = thetas, \n",
" create_circuit_func = qsee.ansatz.u_onequbit, \n",
" grad_func = .grad_loss,\n",
" loss_func = qsee.loss.loss_fubini_study,\n",
Expand Down Expand Up @@ -253,12 +253,12 @@
"metadata": {},
"outputs": [],
"source": [
"psi = state_coords(qiskit.quantum_info.Statevector.from_instruction(qc).data)\n",
"psi = state_coords(qi.Statevector.from_instruction(qc).data)\n",
"psi_hat_qng = []\n",
"psi_hat_sgd = []\n",
"for thetas in thetas_qng:\n",
" \n",
" temp = qiskit.quantum_info.Statevector(.get_u_hat(\n",
" temp = qi.Statevector(.get_u_hat(\n",
" thetas = thetas, \n",
" create_circuit_func = qsee.ansatz.u_onequbit, \n",
" num_qubits = qc.num_qubits, \n",
Expand All @@ -268,7 +268,7 @@
"\n",
"for thetas in thetass_sgd:\n",
" \n",
" temp = qiskit.quantum_info.Statevector(.get_u_hat(\n",
" temp = qi.Statevector(.get_u_hat(\n",
" thetas = thetas, \n",
" create_circuit_func = qsee.ansatz.u_onequbit, \n",
" num_qubits = qc.num_qubits, \n",
Expand Down
4 changes: 2 additions & 2 deletions codes/plot/plot_compare_ansatz.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -735,8 +735,8 @@
"num_layers = 2\n",
"qc = qiskit.QuantumCircuit(num_qubits, num_qubits)\n",
"qc = qsee.ansatz.create_star2graph_state(qc, thetas, num_layers)\n",
"psi = qiskit.quantum_info.Statevector.from_instruction(qc)\n",
"rho_psi = qiskit.quantum_info.DensityMatrix(psi)\n",
"psi = qi.Statevector.from_instruction(qc)\n",
"rho_psi = qi.DensityMatrix(psi)\n",
"print(psi)"
]
},
Expand Down
259 changes: 70 additions & 189 deletions codes/qcompilation.ipynb

Large diffs are not rendered by default.

14 changes: 5 additions & 9 deletions codes/qcompilation_evo.ipynb

Large diffs are not rendered by default.

118 changes: 101 additions & 17 deletions codes/qdart.ipynb

Large diffs are not rendered by default.

Loading

0 comments on commit ae7d42a

Please sign in to comment.