-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix bugs for Waveform visitor and more tests (#287)
* add more tests and enhance cast 1) add tests for scales 2) add tests for bravais 3) to do 2) this commit add cast for tuple type * tmp * add more testing cases, bumping to 71% * fix baravias bugs and more test 1) fix bugs on wrong index*elementary vectors 2) bump testing cases on bravias to 96 3) fix bugs on Rectangular when spacing_y dose not specify * update to comply ruff * modify to comply ruff * add test for double parallel * modify to comply black * modify format * try * test pre-compile * pre-commit linter fix * waveform visitors 1) add more testing 2) fix waveform visitors Error types inconsistent bug 3) fix waveform visitors not waveform ast error bug 4) fix GaussianKernel typo --------- Co-authored-by: Kai-Hsin Wu <khwu@KHWus-MBP.hsd1.ma.comcast.net> Co-authored-by: Kai-Hsin Wu <khwu@KHWus-MacBook-Pro.local>
- Loading branch information
1 parent
6514f67
commit b4f3c32
Showing
10 changed files
with
320 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
from bloqade.ir.location import Square | ||
import pytest | ||
import json | ||
|
||
|
||
def test_braket_unsupport_parallel(): | ||
prog = Square(3) | ||
|
||
prog = prog.rydberg.detuning.uniform.piecewise_constant([0.1], [32]) | ||
prog = prog.parallelize(4) | ||
|
||
with pytest.raises(TypeError): | ||
prog.braket_local_simulator(10) | ||
|
||
|
||
def test_in_house_simulator_entry(): | ||
prog = Square(3) | ||
|
||
prog = prog.rydberg.detuning.uniform.piecewise_constant([0.1], [32]) | ||
prog = prog.parallelize(4) | ||
|
||
with pytest.raises(NotImplementedError): | ||
prog.simu(4) | ||
|
||
|
||
def test_braket(): | ||
prog = Square(3) | ||
|
||
prog = prog.rydberg.detuning.uniform.piecewise_constant([0.1], [32]) | ||
|
||
job = prog.braket(4) | ||
|
||
x = json.loads(job.json()) | ||
assert x["tasks"]["0"]["task_ir"]["nshots"] == 4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,80 @@ | ||
from bloqade.ir.location import ListOfLocations | ||
import bloqade.ir as ir | ||
from bloqade.ir.location import ListOfLocations, AtomArrangement | ||
from bloqade.ir.location import Square | ||
from bloqade import cast | ||
import pytest | ||
|
||
lp = ListOfLocations( | ||
[(0, 0), (0, 1), (1, 0), (1, 1)] | ||
) # enumerate method gives a generator that can be taken advantage of | ||
|
||
def test_listOfLocatoions(): | ||
lattice = ListOfLocations( | ||
[(0, 0), (0, 1), (1, 0), (1, 1)] | ||
) # enumerate method gives a generator that can be taken advantage of | ||
|
||
positions1 = set(map(lambda info: info.position, lattice.enumerate())) | ||
positions_expected = set( | ||
cast( | ||
[ | ||
(0, 0), | ||
(1, 0), | ||
(0, 1), | ||
(1, 1), | ||
] | ||
) | ||
) | ||
assert positions1 == positions_expected | ||
|
||
# scale: | ||
lattice = lattice.scale(3.2) | ||
|
||
positions1 = set(map(lambda info: info.position, lattice.enumerate())) | ||
positions_expected = set( | ||
cast( | ||
[ | ||
(0, 0), | ||
(3.2, 0), | ||
(0, 3.2), | ||
(3.2, 3.2), | ||
] | ||
) | ||
) | ||
assert positions1 == positions_expected | ||
|
||
|
||
def test_addlocs_on_square(): | ||
lattice = Square(2, lattice_spacing=1.0) | ||
lattice1 = lattice.add_positions([(9, 6), (4, 4)]) | ||
|
||
# type(lattice) | ||
assert type(lattice1) == ir.location.ListOfLocations | ||
|
||
positions1 = set(map(lambda info: info.position, lattice1.enumerate())) | ||
positions_expected1 = set(cast([(0, 0), (1, 0), (0, 1), (1, 1), (9, 6), (4, 4)])) | ||
|
||
assert positions1 == positions_expected1 | ||
|
||
|
||
def test_addlocs_filling_options(): | ||
lattice = Square(2, lattice_spacing=1.0) | ||
lattice = lattice.add_positions([(9, 6), (4, 4)], filling=[False, True]) | ||
|
||
# type(lattice) | ||
assert type(lattice) == ir.location.ListOfLocations | ||
|
||
for info in lattice.enumerate(): | ||
if info.position == cast((9, 6)): | ||
assert bool(info.filling) is False | ||
else: | ||
assert bool(info.filling) is True | ||
|
||
|
||
def test_internal_base_listofloc(): | ||
lattice = AtomArrangement() | ||
|
||
with pytest.raises(NotImplementedError): | ||
set(map(lambda info: info.position, lattice.enumerate())) | ||
|
||
with pytest.raises(NotImplementedError): | ||
lattice.n_atoms | ||
|
||
with pytest.raises(NotImplementedError): | ||
lattice.n_dims |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,70 @@ | ||
import pytest | ||
from bloqade.ir.location import Square | ||
from bloqade import start | ||
|
||
|
||
# create lattice | ||
lattice = Square(3, lattice_spacing=6) | ||
|
||
quantum_task = ( | ||
lattice.rydberg.detuning.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[ | ||
"initial_detuning", | ||
"initial_detuning", | ||
"final_detuning", | ||
"final_detuning", | ||
], | ||
) | ||
.rydberg.rabi.amplitude.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[0, "rabi_amplitude_max", "rabi_amplitude_max", 0], | ||
) | ||
.parallelize(10.0) | ||
.assign( | ||
initial_detuning=-10, | ||
up_time=0.1, | ||
final_detuning=15, | ||
anneal_time=10, | ||
rabi_amplitude_max=15, | ||
def test_parallel_task(): | ||
lattice = Square(3, lattice_spacing=6) | ||
|
||
quantum_task = ( | ||
lattice.rydberg.detuning.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[ | ||
"initial_detuning", | ||
"initial_detuning", | ||
"final_detuning", | ||
"final_detuning", | ||
], | ||
) | ||
.rydberg.rabi.amplitude.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[0, "rabi_amplitude_max", "rabi_amplitude_max", 0], | ||
) | ||
.parallelize(10.0) | ||
.assign( | ||
initial_detuning=-10, | ||
up_time=0.1, | ||
final_detuning=15, | ||
anneal_time=10, | ||
rabi_amplitude_max=15, | ||
) | ||
.mock(10) | ||
) | ||
.mock(10) | ||
) | ||
|
||
assert quantum_task.tasks[0].parallel_decoder | ||
assert quantum_task.tasks[0].parallel_decoder | ||
|
||
|
||
def test_error_parallel_doublecall(): | ||
with pytest.raises(TypeError): | ||
lattice = Square(3, lattice_spacing=6) | ||
( | ||
lattice.rydberg.detuning.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[ | ||
"initial_detuning", | ||
"initial_detuning", | ||
"final_detuning", | ||
"final_detuning", | ||
], | ||
) | ||
.rydberg.rabi.amplitude.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[0, "rabi_amplitude_max", "rabi_amplitude_max", 0], | ||
) | ||
.parallelize(10.0) | ||
.parallelize(4.0) | ||
) | ||
|
||
|
||
def test_error_parallel_noatom(): | ||
with pytest.raises(ValueError): | ||
start.rydberg.detuning.uniform.piecewise_linear( | ||
durations=["up_time", "anneal_time", "up_time"], | ||
values=[ | ||
"initial_detuning", | ||
"initial_detuning", | ||
"final_detuning", | ||
"final_detuning", | ||
], | ||
).parallelize(10.0) |
Oops, something went wrong.