Skip to content

Commit e160cc1

Browse files
authored
Merge pull request #235 from ruan-prog/master
add to_tqasm test
2 parents ea6f217 + fecb249 commit e160cc1

File tree

5 files changed

+310
-0
lines changed

5 files changed

+310
-0
lines changed

tests/01_test_gate.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import sys
2+
import os
3+
import matplotlib.pyplot as plt
4+
5+
# Add the directory containing your module to Python's search path
6+
module_path = ".."
7+
sys.path.insert(0, module_path)
8+
9+
from tensorcircuit import Circuit, Param, gates, waveforms
10+
from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties
11+
import re
12+
13+
# from dotenv import load_dotenv
14+
# load_dotenv()
15+
16+
shots_const = 1000
17+
18+
print("✅ TEST FILE LOADED")
19+
set_token(os.getenv("TOKEN"))
20+
set_provider("tencent")
21+
ds = list_devices()
22+
print(ds)
23+
24+
25+
def gen_gate_circuit(t):
26+
qc = Circuit(2)
27+
qc.h(0)
28+
qc.cnot(0, 1)
29+
30+
return qc
31+
32+
33+
def run_circuit(qc):
34+
device_name = "tianji_s2"
35+
d = get_device(device_name)
36+
t = submit_task(
37+
circuit=qc,
38+
shots=shots_const,
39+
device=d,
40+
enable_qos_gate_decomposition=False,
41+
enable_qos_qubit_mapping=False,
42+
)
43+
# print(qc.to_tqasm())
44+
# n = qc._nqubits
45+
rf = t.results()
46+
print(rf)
47+
48+
qc = gen_gate_circuit(1.0)
49+
result = run_circuit(qc)

tests/02_test_param_pulse.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import sys
2+
import os
3+
import matplotlib.pyplot as plt
4+
5+
# Add the directory containing your module to Python's search path
6+
module_path = ".."
7+
sys.path.insert(0, module_path)
8+
9+
from tensorcircuit import Circuit, Param, gates, waveforms
10+
from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties
11+
import re
12+
13+
# from dotenv import load_dotenv
14+
# load_dotenv()
15+
16+
shots_const = 1000
17+
18+
print("✅ TEST FILE LOADED")
19+
set_token(os.getenv("TOKEN"))
20+
set_provider("tencent")
21+
ds = list_devices()
22+
print(ds)
23+
24+
25+
def gen_parametric_waveform_circuit(t):
26+
qc = Circuit(2)
27+
28+
param0 = Param("a")
29+
30+
# 需根据以下定义的方式,修改代码
31+
builder = qc.calibrate("basic_pulse", [param0])
32+
frame = builder.new_frame("drive_frame", param0)
33+
builder.play(frame, waveforms.CosineDrag(t, 0.2, 0.0, 0.0))
34+
35+
builder.build()
36+
37+
qc.add_calibration(builder, [0])
38+
39+
# print(qc.to_tqasm())
40+
return qc
41+
42+
43+
def run_circuit(qc):
44+
device_name = "tianji_s2"
45+
d = get_device(device_name)
46+
t = submit_task(
47+
circuit=qc,
48+
shots=shots_const,
49+
device=d,
50+
enable_qos_gate_decomposition=False,
51+
enable_qos_qubit_mapping=False,
52+
)
53+
# print(qc.to_tqasm())
54+
# n = qc._nqubits
55+
rf = t.results()
56+
print(rf)
57+
58+
qc = gen_parametric_waveform_circuit(1.0)
59+
result = run_circuit(qc)

tests/03_test_gate_pulse_mix.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import sys
2+
import os
3+
import matplotlib.pyplot as plt
4+
5+
# Add the directory containing your module to Python's search path
6+
module_path = ".."
7+
sys.path.insert(0, module_path)
8+
9+
from tensorcircuit import Circuit, Param, gates, waveforms
10+
from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties
11+
import re
12+
13+
# from dotenv import load_dotenv
14+
# load_dotenv()
15+
16+
shots_const = 1000
17+
18+
print("✅ TEST FILE LOADED")
19+
set_token(os.getenv("TOKEN"))
20+
set_provider("tencent")
21+
ds = list_devices()
22+
print(ds)
23+
24+
25+
def gen_gate_pulse_mix_circuit(t):
26+
qc = Circuit(2)
27+
28+
param0 = Param("a")
29+
30+
builder = qc.calibrate("basic_pulse", [param0])
31+
frame = builder.new_frame("drive_frame", param0)
32+
builder.play(frame, waveforms.CosineDrag(t, 0.2, 0.0, 0.0))
33+
34+
builder.build()
35+
36+
qc.add_calibration(builder, [0])
37+
38+
qc.i(0)
39+
qc.x(0)
40+
41+
return qc
42+
43+
44+
def run_circuit(qc):
45+
device_name = "tianji_s2"
46+
d = get_device(device_name)
47+
t = submit_task(
48+
circuit=qc,
49+
shots=shots_const,
50+
device=d,
51+
enable_qos_gate_decomposition=False,
52+
enable_qos_qubit_mapping=False,
53+
)
54+
# print(qc.to_tqasm())
55+
# n = qc._nqubits
56+
rf = t.results()
57+
print(rf)
58+
59+
qc = gen_gate_pulse_mix_circuit(1.0)
60+
result = run_circuit(qc)

tests/04_test_custom_chip.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import sys
2+
import os
3+
import matplotlib.pyplot as plt
4+
5+
# Add the directory containing your module to Python's search path
6+
module_path = ".."
7+
sys.path.insert(0, module_path)
8+
9+
from tensorcircuit import Circuit, Param, gates, waveforms
10+
from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties
11+
import re
12+
13+
# from dotenv import load_dotenv
14+
# load_dotenv()
15+
16+
shots_const = 1000
17+
18+
print("✅ TEST FILE LOADED")
19+
set_token(os.getenv("TOKEN"))
20+
set_provider("tencent")
21+
ds = list_devices()
22+
print(ds)
23+
24+
def gen_custom_chip_circuit(t):
25+
qc = Circuit(2)
26+
27+
# 需添加 MapQubits(user_addr, chip_addr),对应 #pragram的qubits.mapping
28+
# 需添加 GridQubit(left_user_addr, right_user_addr),对应 #pragram的qubits.coupling
29+
30+
# 以下是两种映射方式
31+
qc.map_qubits([4,9,8,14])
32+
qc.map_qubits([4,9,8,14], [3,2,1,0])
33+
34+
35+
qc.i(0)
36+
qc.cnot(0)
37+
38+
# print(qc.to_tqasm())
39+
return qc
40+
41+
42+
43+
def gen_custom_chip_circuit(t):
44+
qc = Circuit(2)
45+
46+
# 需添加 MapQubit(user_addr, chip_addr),对应 #pragram的qubits.mapping
47+
# 需添加 GridQubit(left_user_addr, right_user_addr),对应 #pragram的qubits.coupling
48+
49+
50+
qc.MapQubit(0, 4)
51+
qc.MapQubit(1, 9)
52+
qc.MapQubit(2, 8)
53+
qc.MapQubit(3, 14)
54+
55+
qc.GridQubit(0, 1)
56+
qc.GridQubit(0, 2)
57+
qc.GridQubit(1, 3)
58+
59+
qc.i(0)
60+
qc.cnot(0)
61+
62+
# print(qc.to_tqasm())
63+
return qc
64+
65+
66+
def run_circuit(qc):
67+
device_name = "tianji_s2"
68+
d = get_device(device_name)
69+
t = submit_task(
70+
circuit=qc,
71+
shots=shots_const,
72+
device=d,
73+
enable_qos_gate_decomposition=False,
74+
enable_qos_qubit_mapping=False,
75+
)
76+
# print(qc.to_tqasm())
77+
# n = qc._nqubits
78+
rf = t.results()
79+
print(rf)
80+
81+
qc = gen_gate_pulse_mix_circuit(1.0)
82+
result = run_circuit(qc)

tests/05_test_multi_measure.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import sys
2+
import os
3+
import matplotlib.pyplot as plt
4+
5+
# Add the directory containing your module to Python's search path
6+
module_path = ".."
7+
sys.path.insert(0, module_path)
8+
9+
from tensorcircuit import Circuit, Param, gates, waveforms
10+
from tensorcircuit.cloud.apis import submit_task, get_device, set_provider, set_token, list_devices, list_properties
11+
import re
12+
13+
# from dotenv import load_dotenv
14+
# load_dotenv()
15+
16+
shots_const = 1000
17+
18+
print("✅ TEST FILE LOADED")
19+
set_token(os.getenv("TOKEN"))
20+
set_provider("tencent")
21+
ds = list_devices()
22+
print(ds)
23+
24+
25+
def gen_multi_measure_circuit(t):
26+
qc = Circuit(6)
27+
28+
qc.h(0)
29+
qc.cnot(0, 1)
30+
31+
# 参数门在 to_tqasm 中的转换丢失了参数
32+
# qc.rxx(0, 5, theta=1.04632)
33+
34+
# 需添加测量指令
35+
qc.measure(0, 1)
36+
qc.cz(0, 1)
37+
qc.measure(0, 1)
38+
39+
40+
# print(qc.to_tqasm())
41+
return qc
42+
43+
44+
def run_circuit(qc):
45+
device_name = "tianji_s2"
46+
d = get_device(device_name)
47+
t = submit_task(
48+
circuit=qc,
49+
shots=shots_const,
50+
device=d,
51+
enable_qos_gate_decomposition=False,
52+
enable_qos_qubit_mapping=False,
53+
)
54+
# print(qc.to_tqasm())
55+
# n = qc._nqubits
56+
rf = t.results() # 需返回 multi_results
57+
print(rf)
58+
59+
qc = gen_multi_measure_circuit(1.0)
60+
result = run_circuit(qc)

0 commit comments

Comments
 (0)