Index
start
module-attribute
start = ListOfLocations()
A Program starting point, alias of empty
[ListOfLocations
][bloqade.ir.location.list.ListOfLocations].
- Next possible steps to build your program are:
- Specify which level coupling to address with:
start.rydberg
: for [Rydberg
][bloqade.builder.coupling.Rydberg] Level couplingstart.hyperfine
: for [Hyperfine
][bloqade.builder.coupling.Hyperfine] Level coupling- LOCKOUT: You cannot add atoms to your geometry after specifying level coupling.
- continue/start building your geometry with:
start.add_position()
: to add atom(s) to current register. It will accept:- A single coordinate, represented as a tuple (e.g.
(5,6)
) with a value that can either be:- integers:
(5,6)
- floats:
(5.1, 2.5)
- strings (for later variable assignment):
("x", "y")
- [
Scalar
][bloqade.ir.scalar.Scalar] objects:(2*cast("x"), 5+cast("y"))
- integers:
- A list of coordinates, represented as a list of types mentioned previously.
- A numpy array with shape (n, 2) where n is the total number of atoms
- A single coordinate, represented as a tuple (e.g.
AlignedWaveform
Bases: Waveform
<padded waveform> ::= <waveform> | <waveform> <alignment> <value>
<alignment> ::= 'left aligned' | 'right aligned'
<value> ::= 'left value' | 'right value' | <scalar expr>
AnalogCircuit
AnalogCircuit is a dummy type that bundle register and sequence together.
register
property
register
Get the register of the program.
Returns:
Type | Description |
---|---|
register (Union["AtomArrangement", "ParallelRegister"]) |
Note
If the program is built with
[parallelize()
][bloqade.builder.emit.Emit.parallelize],
The the register will be a
[ParallelRegister
][bloqade.ir.location.base.ParallelRegister].
Otherwise it will be a
[AtomArrangement
][bloqade.ir.location.base.AtomArrangement].
show
show(**assignments)
Interactive visualization of the program
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**assignments
|
assigning the instance value (literal) to the existing variables in the program |
{}
|
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/analog_circuit.py
122 123 124 125 126 127 128 129 130 |
|
AtomArrangement
AtomArrangement(parent: Optional[Builder] = None)
Bases: ProgramStart
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
n_atoms
property
n_atoms: int
number of atoms (filled sites) in the register.
n_dims
property
n_dims: int
number of dimensions in the register.
n_sites
property
n_sites: int
number of sites in the register.
n_vacant
property
n_vacant: int
number of vacant sites in the register.
add_position
add_position(
position: Union[
PositionArray,
List[Tuple[ScalarType, ScalarType]],
Tuple[ScalarType, ScalarType],
],
filling: Optional[
Union[BoolArray, List[bool], bool]
] = None,
) -> ListOfLocations
Add a position or multiple positions to a pre-existing geometry.
add_position
is capable of accepting:
- A single tuple for one atom coordinate: (1.0, 2.5)
- A list of tuples: `[(0.0, 1.0), (2.0,1.5), etc.]
- A numpy array of shape (N, 2) where N is the number of atoms
You may also intersperse variables anywhere a value may be present.
You can also pass in an optional argument which determines the atom "filling" (whether or not at a specified coordinate an atom should be present).
Usage Example:
# single coordinate
>>> reg = start.add_position((0,0))
# you may chain add_position calls
>>> reg_plus_two = reg.add_position([(2,2),(5.0, 2.1)])
# you can add variables anywhere a value may be present
>>> reg_with_var = reg_plus_two.add_position(("x", "y"))
# and specify your atom fillings
>>> reg_with_filling = reg_with_var.add_position([(3.1, 0.0), (4.1, 2.2)],
[True, False])
# alternatively you could use one boolean to specify
# all coordinates should be empty/filled
>>> reg_with_more_filling = reg_with_filling.add_positions([(3.1, 2.9),
(5.2, 2.2)], False)
- Next possible steps are:
- Continuing to build your geometry via:
...add_position(positions).add_position(positions)
: to add more positions...add_position(positions).apply_defect_count(n_defects)
: to randomly drop out n_atoms...add_position(positions).apply_defect_density(defect_probability)
: to drop out atoms with a certain probability...add_position(positions).scale(scale)
: to scale the geometry
- Targeting a level coupling once you're done with the atom geometry:
...add_position(positions).rydberg
: to specify Rydberg coupling...add_position(positions).hyperfine
: to specify Hyperfine coupling
- Visualizing your atom geometry:
...add_position(positions).show()
: shows your geometry in your web browser
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 |
|
apply_defect_count
apply_defect_count(
n_defects: int, rng: Generator = np.random.default_rng()
)
Drop n_defects
atoms from the geometry randomly. Internally this occurs
by setting certain sites to have a SiteFilling set to false indicating
no atom is present at the coordinate.
A default numpy-based Random Number Generator is used but you can explicitly override this by passing in your own.
Usage Example:
>>> from bloqade.analog.atom_arrangement import Chain
>>> import numpy as np
# set a custom seed for a numpy-based RNG
>>> custom_rng = np.random.default_rng(888)
# randomly remove two atoms from the geometry
>>> reg = Chain(11).apply_defect_count(2, custom_rng)
# you may also chain apply_defect_count calls
>>> reg.apply_defect_count(2, custom_rng)
# you can also use apply_defect_count on custom geometries
>>> from bloqade import start
>>> start.add_position([(0,0), (1,1)]).apply_defect_count(1, custom_rng)
- Next possible steps are:
- Continuing to build your geometry via:
...apply_defect_count(defect_counts).add_position(positions)
: to add more positions...apply_defect_count(defect_counts) .apply_defect_count(n_defects)
: to randomly drop out n_atoms...apply_defect_count(defect_counts) .apply_defect_density(defect_probability)
: to drop out atoms with a certain probability...apply_defect_count(defect_counts).scale(scale)
: to scale the geometry
- Targeting a level coupling once you're done with the atom geometry:
...apply_defect_count(defect_counts).rydberg
: to specify Rydberg coupling...apply_defect_count(defect_counts).hyperfine
: to specify Hyperfine coupling
- Visualizing your atom geometry:
...apply_defect_count(defect_counts).show()
: shows your geometry in your web browser
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 |
|
apply_defect_density
apply_defect_density(
defect_probability: float,
rng: Generator = np.random.default_rng(),
)
Drop atoms randomly with defect_probability
probability (range of 0 to 1).
Internally this occurs by setting certain sites to have a SiteFilling
set to false indicating no atom is present at the coordinate.
A default numpy-based Random Number Generator is used but you can explicitly override this by passing in your own.
Usage Example:
>>> from bloqade.analog.atom_arrangement import Chain
>>> import numpy as np
# set a custom seed for a numpy-based RNG
>>> custom_rng = np.random.default_rng(888)
# randomly remove two atoms from the geometry
>>> reg = Chain(11).apply_defect_density(0.2, custom_rng)
# you may also chain apply_defect_density calls
>>> reg.apply_defect_count(0.1, custom_rng)
# you can also use apply_defect_density on custom geometries
>>> from bloqade import start
>>> start.add_position([(0,0), (1,1)])
.apply_defect_density(0.5, custom_rng)
- Next possible steps are:
- Continuing to build your geometry via:
...apply_defect_count(defect_counts).add_position(positions)
: to add more positions...apply_defect_count(defect_counts).apply_defect_count(n_defects)
: to randomly drop out n_atoms...apply_defect_count(defect_counts) .apply_defect_density(defect_probability)
: to drop out atoms with a certain probability...apply_defect_count(defect_counts).scale(scale)
: to scale the geometry
- Targeting a level coupling once you're done with the atom geometry:
...apply_defect_count(defect_counts).rydberg
: to specify Rydberg coupling...apply_defect_count(defect_counts).hyperfine
: to specify Hyperfine coupling
- Visualizing your atom geometry:
...apply_defect_count(defect_counts).show()
: shows your geometry in your web browser
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 |
|
enumerate
enumerate() -> Generator[LocationInfo, None, None]
enumerate all locations in the register.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
128 129 130 |
|
figure
figure(fig_kwargs=None, **assignments)
obtain a figure object from the atom arrangement.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
132 133 134 |
|
rydberg_interaction
rydberg_interaction(**assignments) -> NDArray
calculate the Rydberg interaction matrix.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**assignments
|
the values to assign to the variables in the register. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
NDArray |
NDArray
|
the Rydberg interaction matrix in the lower triangular form. |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
|
scale
scale(scale: ScalarType)
Scale the geometry of your atoms.
Usage Example:
>>> reg = start.add_position([(0,0), (1,1)])
# atom positions are now (0,0), (2,2)
>>> new_reg = reg.scale(2)
# you may also use scale on pre-defined geometries
>>> from bloqade.analog.atom_arrangement import Chain
# atoms in the chain will now be 2 um apart versus
# the default 1 um
>>> Chain(11).scale(2)
- Next possible steps are:
- Continuing to build your geometry via:
...add_position(positions).add_position(positions)
: to add more positions...add_position(positions).apply_defect_count(n_defects)
: to randomly drop out n_atoms...add_position(positions).apply_defect_density(defect_probability)
: to drop out atoms with a certain probability...add_position(positions).scale(scale)
: to scale the geometry
- Targeting a level coupling once you're done with the atom geometry:
...add_position(positions).rydberg
: to specify Rydberg coupling...add_position(positions).hyperfine
: to specify Hyperfine coupling
- Visualizing your atom geometry:
...add_position(positions).show()
: shows your geometry in your web browser
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
|
show
show(**assignments) -> None
Display the current program being defined with the given arguments and batch ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args
|
Additional arguments for display. |
()
|
|
batch_id
|
int
|
The batch ID to be displayed. Defaults to 0. |
0
|
Note
This method uses the display_builder
function to render the builder's state.
Example:
>>> class MyBuilder(Show):
... pass
>>> builder = MyBuilder()
>>> builder.show()
>>> builder.show(batch_id=1)
>>> builder.show('arg1', 'arg2', batch_id=2)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
136 137 |
|
BoundedBravais
BoundedBravais(parent: Optional[Builder] = None)
Bases: AtomArrangement
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
__match_args__
class-attribute
instance-attribute
__match_args__ = ('shape', 'lattice_spacing')
Base classe for Bravais lattices
[AtomArrangement
][bloqade.ir.location.base.AtomArrangement].
- [
Square
][bloqade.ir.location.bravais.Square] - [
Chain
][bloqade.ir.location.bravais.Chain] - [
Honeycomb
][bloqade.ir.location.bravais.Honeycomb] - [
Triangular
][bloqade.ir.location.bravais.Triangular] - [
Lieb
][bloqade.ir.location.bravais.Lieb] - [
Kagome
][bloqade.ir.location.bravais.Kagome] - [
Rectangular
][bloqade.ir.location.bravais.Rectangular]
n_atoms
cached
property
n_atoms: int
number of atoms (filled sites) in the register.
n_dims
property
n_dims
dimension of the lattice
Returns:
Name | Type | Description |
---|---|---|
int |
dimension of the lattice |
n_sites
property
n_sites: int
number of sites in the register.
n_vacant
property
n_vacant: int
number of vacant sites in the register.
coordinates
coordinates(index: List[int]) -> NDArray
calculate the coordinates of a cell in the lattice given the cell index.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
113 114 115 116 117 118 119 120 121 122 |
|
enumerate
enumerate() -> Generator[LocationInfo, None, None]
enumerate all locations in the register.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
124 125 126 127 128 |
|
scale
scale(factor: ScalarType) -> BoundedBravais
Scale the current location with a factor.
(x,y) -> factor*(x,y)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
factor
|
str | Real | Decimal | Scalar
|
scale factor |
required |
Returns:
Name | Type | Description |
---|---|---|
BoundedBravais |
BoundedBravais
|
The lattice with the scaled locations |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
|
Chain
Chain(
L: int,
*,
lattice_spacing: ScalarType = 1.0,
vertical_chain: bool = False
)
Bases: BoundedBravais
Chain lattice.
- 1D lattice
- primitive (cell) vector(s)
- a1 = (1,0).
- unit cell (1 atom(s))
- loc (0,0)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
L
|
int
|
number of sites in the chain |
required |
lattice_spacing
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
183 184 185 186 187 188 189 190 |
|
Constant
Constant(value: ScalarType, duration: ScalarType)
Bases: Instruction
<constant> ::= 'constant' <scalar expr>
f(t=0:duration) = value
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value
|
Scalar
|
the constant value |
required |
duration
|
Scalar
|
the time span of the constant waveform. |
required |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/waveform.py
323 324 325 326 |
|
Field
Bases: FieldExpr
Field node in the IR. Which contains collection(s) of
[Waveform
][bloqade.ir.control.waveform.Waveform]
<field> ::= ('field' <spatial modulation> <padded waveform>)*
show
show(**assignments)
Interactive visualization of the Field
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**assignments
|
assigning the instance value (literal) to the existing variables in the Field |
{}
|
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/field.py
262 263 264 265 266 267 268 269 270 271 |
|
Honeycomb
Honeycomb(
L1: int,
L2: Optional[int] = None,
*,
lattice_spacing: ScalarType = 1.0
)
Bases: BoundedBravais
Honeycomb lattice.
- 2D lattice
- primitive (cell) vector(s)
- a1 = (1, 0)
- a2 = (1/2, sqrt(3)/2)
- unit cell (2 atom(s))
- loc1 (0, 0)
- loc2 (1/2, 1/(2*sqrt(3))
Parameters:
Name | Type | Description | Default |
---|---|---|---|
L1
|
int
|
number of unit cells in linear direction. n_atoms = L1 * L1 * 2. |
required |
L2
|
Optional[int]
|
number of unit cells in direction a2. n_atoms = L1 * L2 * 2, default is L1. |
None
|
lattice_spacing
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
420 421 422 423 424 425 426 427 428 429 430 431 |
|
Kagome
Kagome(
L1: int,
L2: Optional[int] = None,
*,
lattice_spacing: ScalarType = 1.0
)
Bases: BoundedBravais
Kagome lattice.
- 2D lattice
- primitive (cell) vector(s)
- a1 = (1, 0)
- a2 = (1/2, sqrt(3)/2)
- unit cell (3 atom(s))
- loc1 (0, 0)
- loc2 (0.5, 0)
- loc3 (0.25 ,0.25sqrt(3))
Parameters:
Name | Type | Description | Default |
---|---|---|---|
L1
|
int
|
number of sites in linear direction. n_atoms = 3 * L1 * L1. |
required |
L2
|
Optional[int]
|
number of unit cells along a2 direction, n_atoms = 3 * L1 * L2, default is L1. |
None
|
lattice_spacing
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
589 590 591 592 593 594 595 596 597 598 599 |
|
Lieb
Lieb(
L1: int,
L2: Optional[int] = None,
*,
lattice_spacing: ScalarType = 1.0
)
Bases: BoundedBravais
Lieb lattice.
- 2D lattice
- primitive (cell) vector(s)
- a1 = (1, 0)
- a2 = (0, 1)
- unit cell (3 atom(s))
- loc1 (0, 0)
- loc2 (0.5, 0)
- loc3 (0 ,0.5)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
L1
|
int
|
number of unit cells in linear direction. n_atoms = 3* L1 * L1. |
required |
L2
|
Optional[int]
|
number of unit cells along a2 direction, n_atoms = 3 * L1 * L2, default is L1. |
None
|
lattice_spacing
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
534 535 536 537 538 539 540 541 542 |
|
Linear
Linear(
start: ScalarType,
stop: ScalarType,
duration: ScalarType,
)
Bases: Instruction
<linear> ::= 'linear' <scalar expr> <scalar expr>
f(t=0:duration) = start + (stop-start)/duration * t
Parameters:
Name | Type | Description | Default |
---|---|---|---|
start
|
Scalar
|
start value |
required |
stop
|
Scalar
|
stop value |
required |
duration
|
Scalar
|
the time span of the linear waveform. |
required |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/waveform.py
274 275 276 277 278 |
|
ListOfLocations
ListOfLocations(
location_list: List[
Union[LocationInfo, Tuple[ScalarType, ScalarType]]
] = [],
)
Bases: AtomArrangement
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 |
|
n_atoms
property
n_atoms
number of atoms (filled sites) in the register.
n_dims
property
n_dims
number of dimensions in the register.
n_sites
property
n_sites
number of sites in the register.
n_vacant
property
n_vacant
number of vacant sites in the register.
enumerate
enumerate()
enumerate all locations in the register.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
661 662 |
|
Literal
Bases: Real
value
instance-attribute
value: Decimal
Scalar Literal, which stores a decimaal value instance.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value
|
Decimal
|
decimal value instance |
required |
ParallelRegister
ParallelRegister(parent: Optional[Builder] = None)
Bases: ProgramStart
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
n_atoms
property
n_atoms
Return the number of atoms in the program.
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
The number of atoms in the parsed register. |
Raises:
Type | Description |
---|---|
ValueError
|
If the register type is unsupported. |
Note
If the register is of type ParallelRegister, the number of atoms is extracted from its internal register.
Example:
>>> class MyBuilder(Parse):
... pass
>>> builder = MyBuilder()
>>> n_atoms = builder.n_atoms
show
show(**assignments) -> None
Display the current program being defined with the given arguments and batch ID.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args
|
Additional arguments for display. |
()
|
|
batch_id
|
int
|
The batch ID to be displayed. Defaults to 0. |
0
|
Note
This method uses the display_builder
function to render the builder's state.
Example:
>>> class MyBuilder(Show):
... pass
>>> builder = MyBuilder()
>>> builder.show()
>>> builder.show(batch_id=1)
>>> builder.show('arg1', 'arg2', batch_id=2)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/location.py
559 560 |
|
Poly
Poly(coeffs: Container[ScalarType], duration: ScalarType)
Bases: Instruction
<poly> ::= <scalar>+
f(t=0:duration) = c[0] + c[1]t + c[2]t^2 + ... + c[n-1]t^n-1 + c[n]t^n
Parameters:
Name | Type | Description | Default |
---|---|---|---|
coeffs
|
Tuple[Scalar]
|
the coefficients c[] of the polynomial. |
required |
duration
|
Scalar
|
the time span of the waveform. |
required |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/waveform.py
362 363 364 365 |
|
Pulse
Bases: PulseExpr
<pulse> ::= (<field name> <field>)+
show
show(**assignments)
Interactive visualization of the Pulse
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**assignments
|
assigning the instance value (literal) to the existing variables in the Pulse |
{}
|
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/pulse.py
194 195 196 197 198 199 200 201 202 203 |
|
PythonFn
Record
Rectangular
Rectangular(
width: int,
height: int,
*,
lattice_spacing_x: ScalarType = 1.0,
lattice_spacing_y: ScalarType = 1.0
)
Bases: BoundedBravais
Rectangular lattice.
- 2D lattice
- primitive (cell) vector(s)
- a1 = (1,0)
- a2 = (0,1)
- unit cell (1 atom(s))
- loc (0,0)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
width
|
int
|
number of sites in x direction. |
required |
height
|
int
|
number of sites in y direction. |
required |
lattice_spacing_x
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
lattice_spacing_y
|
(Scalar, Real)
|
lattice spacing in y direction. optional. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 |
|
Sample
Scalar
Base class for all scalar expressions.
<scalar> ::= <literal>
| <variable>
| <default>
| <negative>
| <add>
| <mul>
| <min>
| <max>
| <slice>
| <inverval>
<mul> ::= <scalar> '*' <scalar>
<add> ::= <scalar> '+' <scalar>
<min> ::= 'min' <scalar>+
<max> ::= 'max' <scalar>+
<slice> ::= <scalar expr> '[' <interval> ']'
<interval> ::= <scalar expr> '..' <scalar expr>
<real> ::= <literal> | <var>
Sequence
Bases: SequenceExpr
Sequence of a program, which includes pulses informations.
show
show(**assignments)
Interactive visualization of the Sequence
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**assignments
|
assigning the instance value (literal) to the existing variables in the Sequence |
{}
|
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/sequence.py
166 167 168 169 170 171 172 173 174 175 |
|
Square
Square(
L1: int,
L2: Optional[int] = None,
*,
lattice_spacing: ScalarType = 1.0
)
Bases: BoundedBravais
Square lattice.
- 2D lattice
- primitive (cell) vector(s)
- a1 = (1,0)
- a2 = (0,1)
- unit cell (1 atom(s))
- loc (0,0)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
L1
|
int
|
number of sites in linear direction. n_atoms = L1 * L1. |
required |
L2
|
Optional[int]
|
number of sites in direction a2. n_atoms = L1 * L2, default is L1 |
None
|
lattice_spacing
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
240 241 242 243 244 245 246 247 248 249 |
|
Triangular
Triangular(
L1: int,
L2: Optional[int] = None,
*,
lattice_spacing: ScalarType = 1.0
)
Bases: BoundedBravais
Triangular lattice.
- 2D lattice
- primitive (cell) vector(s)
- a1 = (1, 0)
- a2 = (1/2, sqrt(3)/2)
- unit cell (1 atom(s))
- loc (0, 0)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
L
|
int
|
number of sites in linear direction. n_atoms = L * L. |
required |
L2
|
Optional[int]
|
number of sites along a2 direction, n_atoms = L1 * L2, default is L1. |
None
|
lattice_spacing
|
(Scalar, Real)
|
lattice spacing. Defaults to 1.0. |
1.0
|
- Possible Next:
continue with
.
to see possible next step in auto-prompt supported setting (IPython, IDE ...)
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/location/bravais.py
477 478 479 480 481 482 483 484 485 486 487 |
|
Variable
Bases: Real
Variable, which stores a variable name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
variable instance. |
required |
Waveform
Bases: HashTrait
, CanonicalizeTrait
Waveform node in the IR.
- [
<instruction>
][bloqade.ir.control.waveform.Instruction] - [
<smooth>
][bloqade.ir.control.waveform.Smooth] - [
<slice>
][bloqade.ir.control.waveform.Slice] - [
<apppend>
][bloqade.ir.control.waveform.Append] - [
<negative>
][bloqade.ir.control.waveform.Negative] - [
<scale>
][bloqade.ir.control.waveform.Scale] - [
<add>
][bloqade.ir.control.waveform.Add] - [
<record>
][bloqade.ir.control.waveform.Record] - [
<sample>
][bloqade.ir.control.waveform.Sample]
<waveform> ::= <instruction>
| <smooth>
| <slice>
| <append>
| <negative>
| <scale>
| <add>
| <record>
| <sample>
figure
figure(**assignments)
get figure of the plotting the waveform.
Returns:
Name | Type | Description |
---|---|---|
figure |
a bokeh figure |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/waveform.py
96 97 98 99 100 101 102 |
|
cast
cast(py) -> Scalar
-
cast Real number (or list/tuple of Real numbers) to [
Scalar Literal
][bloqade.ir.scalar.Literal]. -
cast str (or list/tuple of Real numbers) to [
Scalar Variable
][bloqade.ir.scalar.Variable].
Parameters:
Name | Type | Description | Default |
---|---|---|---|
py
|
Union[str, Real, Tuple[Real], List[Real]]
|
python object to cast |
required |
Returns:
Type | Description |
---|---|
Scalar
|
Scalar |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/scalar.py
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
|
var
var(py: str) -> Variable
cast string (or list/tuple of strings)
to [Variable
][bloqade.ir.scalar.Variable].
Parameters:
Name | Type | Description | Default |
---|---|---|---|
py
|
Union[str, List[str]]
|
a string or list/tuple of strings |
required |
Returns:
Type | Description |
---|---|
Variable
|
Union[Variable] |
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/scalar.py
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
|