Skip to content

Waveform

Add

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Add[Add]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Add
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Add href "" "bloqade.analog.ir.control.waveform.Add"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<add> ::= <waveform> '+' <waveform>

AlignedWaveform

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.AlignedWaveform[AlignedWaveform]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.AlignedWaveform
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.AlignedWaveform href "" "bloqade.analog.ir.control.waveform.AlignedWaveform"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<padded waveform> ::= <waveform> | <waveform> <alignment> <value>

<alignment> ::= 'left aligned' | 'right aligned'
<value> ::= 'left value' | 'right value' | <scalar expr>

Append

Bases: AppendTrait, Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Append[Append]
              bloqade.analog.ir.control.traits.append.AppendTrait[AppendTrait]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.traits.append.AppendTrait --> bloqade.analog.ir.control.waveform.Append
                
                bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Append
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Append href "" "bloqade.analog.ir.control.waveform.Append"
              click bloqade.analog.ir.control.traits.append.AppendTrait href "" "bloqade.analog.ir.control.traits.append.AppendTrait"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<append> ::= <waveform>+

Constant

Constant(value: ScalarType, duration: ScalarType)

Bases: Instruction


              flowchart TD
              bloqade.analog.ir.control.waveform.Constant[Constant]
              bloqade.analog.ir.control.waveform.Instruction[Instruction]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Instruction --> bloqade.analog.ir.control.waveform.Constant
                                bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Instruction
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                




              click bloqade.analog.ir.control.waveform.Constant href "" "bloqade.analog.ir.control.waveform.Constant"
              click bloqade.analog.ir.control.waveform.Instruction href "" "bloqade.analog.ir.control.waveform.Instruction"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<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
@beartype
def __init__(self, value: ScalarType, duration: ScalarType):
    object.__setattr__(self, "value", cast(value))
    object.__setattr__(self, "duration", cast(duration))

Instruction

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Instruction[Instruction]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Instruction
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Instruction href "" "bloqade.analog.ir.control.waveform.Instruction"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            

Instruction node in the IR.

  • [<linear>][bloqade.ir.control.waveform.Linear]
  • [<constant>][bloqade.ir.control.waveform.Constant]
  • [<poly>][bloqade.ir.control.waveform.Poly]
  • [<python-fn>][bloqade.ir.control.waveform.PythonFn]
<instruction> ::= <linear>
    | <constant>
    | <poly>
    | <python-fn>

Linear

Linear(
    start: ScalarType,
    stop: ScalarType,
    duration: ScalarType,
)

Bases: Instruction


              flowchart TD
              bloqade.analog.ir.control.waveform.Linear[Linear]
              bloqade.analog.ir.control.waveform.Instruction[Instruction]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Instruction --> bloqade.analog.ir.control.waveform.Linear
                                bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Instruction
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                




              click bloqade.analog.ir.control.waveform.Linear href "" "bloqade.analog.ir.control.waveform.Linear"
              click bloqade.analog.ir.control.waveform.Instruction href "" "bloqade.analog.ir.control.waveform.Instruction"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<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
@beartype
def __init__(self, start: ScalarType, stop: ScalarType, duration: ScalarType):
    object.__setattr__(self, "start", cast(start))
    object.__setattr__(self, "stop", cast(stop))
    object.__setattr__(self, "duration", cast(duration))

Negative

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Negative[Negative]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Negative
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Negative href "" "bloqade.analog.ir.control.waveform.Negative"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<negative> ::= '-' <waveform>

Poly

Poly(coeffs: Container[ScalarType], duration: ScalarType)

Bases: Instruction


              flowchart TD
              bloqade.analog.ir.control.waveform.Poly[Poly]
              bloqade.analog.ir.control.waveform.Instruction[Instruction]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Instruction --> bloqade.analog.ir.control.waveform.Poly
                                bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Instruction
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                




              click bloqade.analog.ir.control.waveform.Poly href "" "bloqade.analog.ir.control.waveform.Poly"
              click bloqade.analog.ir.control.waveform.Instruction href "" "bloqade.analog.ir.control.waveform.Instruction"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<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
@beartype
def __init__(self, coeffs: Container[ScalarType], duration: ScalarType):
    object.__setattr__(self, "coeffs", tuple(map(cast, coeffs)))
    object.__setattr__(self, "duration", cast(duration))

PythonFn

Bases: Instruction


              flowchart TD
              bloqade.analog.ir.control.waveform.PythonFn[PythonFn]
              bloqade.analog.ir.control.waveform.Instruction[Instruction]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Instruction --> bloqade.analog.ir.control.waveform.PythonFn
                                bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Instruction
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                




              click bloqade.analog.ir.control.waveform.PythonFn href "" "bloqade.analog.ir.control.waveform.PythonFn"
              click bloqade.analog.ir.control.waveform.Instruction href "" "bloqade.analog.ir.control.waveform.Instruction"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<python-fn> ::= 'python-fn' <python function def> <scalar expr>

Record

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Record[Record]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Record
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Record href "" "bloqade.analog.ir.control.waveform.Record"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<record> ::= 'record' <waveform> <var> <side>

Sample

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Sample[Sample]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Sample
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Sample href "" "bloqade.analog.ir.control.waveform.Sample"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<sample> ::= 'sample' <waveform> <interpolation> <scalar>

Scale

Scale(scalar, waveform: Waveform)

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Scale[Scale]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Scale
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Scale href "" "bloqade.analog.ir.control.waveform.Scale"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<scale> ::= <scalar expr> '*' <waveform>
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/waveform.py
754
755
756
def __init__(self, scalar, waveform: Waveform):
    object.__setattr__(self, "scalar", cast(scalar))
    object.__setattr__(self, "waveform", waveform)

Slice

Bases: SliceTrait, Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Slice[Slice]
              bloqade.analog.ir.control.traits.slice.SliceTrait[SliceTrait]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.traits.slice.SliceTrait --> bloqade.analog.ir.control.waveform.Slice
                
                bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Slice
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Slice href "" "bloqade.analog.ir.control.waveform.Slice"
              click bloqade.analog.ir.control.traits.slice.SliceTrait href "" "bloqade.analog.ir.control.traits.slice.SliceTrait"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<slice> ::= <waveform> <scalar.interval>

Smooth

Smooth(radius, kernel, waveform)

Bases: Waveform


              flowchart TD
              bloqade.analog.ir.control.waveform.Smooth[Smooth]
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.waveform.Waveform --> bloqade.analog.ir.control.waveform.Smooth
                                bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                



              click bloqade.analog.ir.control.waveform.Smooth href "" "bloqade.analog.ir.control.waveform.Smooth"
              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait"
            
<smooth> ::= 'smooth' <kernel> <waveform>
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/ir/control/waveform.py
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
def __init__(self, radius, kernel, waveform):
    if isinstance(kernel, str):
        if kernel == "Gaussian":
            kernel = GaussianKernel
        elif kernel == "Logistic":
            kernel = LogisticKernel
        elif kernel == "Sigmoid":
            kernel = SigmoidKernel
        elif kernel == "Triangle":
            kernel = TriangleKernel
        elif kernel == "Uniform":
            kernel = UniformKernel
        elif kernel == "Parabolic":
            kernel = ParabolicKernel
        elif kernel == "Biweight":
            kernel = BiweightKernel
        elif kernel == "Triweight":
            kernel = TriweightKernel
        elif kernel == "Tricube":
            kernel = TricubeKernel
        elif kernel == "Cosine":
            kernel = CosineKernel
        else:
            raise ValueError(f"Invalid kernel: {kernel}")

    object.__setattr__(self, "radius", cast(radius))
    object.__setattr__(self, "kernel", kernel)
    object.__setattr__(self, "waveform", waveform)

Waveform

Bases: HashTrait, CanonicalizeTrait


              flowchart TD
              bloqade.analog.ir.control.waveform.Waveform[Waveform]
              bloqade.analog.ir.control.traits.hash.HashTrait[HashTrait]
              bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait[CanonicalizeTrait]

                              bloqade.analog.ir.control.traits.hash.HashTrait --> bloqade.analog.ir.control.waveform.Waveform
                
                bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait --> bloqade.analog.ir.control.waveform.Waveform
                


              click bloqade.analog.ir.control.waveform.Waveform href "" "bloqade.analog.ir.control.waveform.Waveform"
              click bloqade.analog.ir.control.traits.hash.HashTrait href "" "bloqade.analog.ir.control.traits.hash.HashTrait"
              click bloqade.analog.ir.control.traits.canonicalize.CanonicalizeTrait href "" "bloqade.analog.ir.control.traits.canonicalize.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
def figure(self, **assignments):
    """get figure of the plotting the waveform.

    Returns:
        figure: a bokeh figure
    """
    return get_ir_figure(self, **assignments)