API specification
The emu-sv API is based on the specification here. Concretely, the classes are as follows:
SVBackend
              Bases: EmulatorBackend
A backend for emulating Pulser sequences using state vectors and sparse matrices. Noisy simulation is supported by solving the Lindblad equation and using effective noise channel or jump operators
Source code in pulser/backend/abc.py
                    
                  
            run()
    Emulates the given sequence.
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Results
                
             | 
            
               the simulation results  | 
          
SVConfig
              Bases: EmulationConfig
The configuration of the emu-sv SVBackend. The kwargs passed to this class are passed on to the base class. See the API for that class for a list of available options.
| PARAMETER | DESCRIPTION | 
|---|---|
                dt
             | 
            
               the timestep size that the solver uses. Note that observables are only calculated if the evaluation_times are divisible by dt. 
                  
                    TYPE:
                        | 
          
                max_krylov_dim
             | 
            
               the size of the krylov subspace that the Lanczos algorithm maximally builds 
                  
                    TYPE:
                        | 
          
                krylov_tolerance
             | 
            
               the Lanczos algorithm uses this as the convergence tolerance 
                  
                    TYPE:
                        | 
          
                gpu
             | 
            
               choosing the number of gpus to use during the simulation
- if  
                  
                    TYPE:
                        | 
          
                interaction_cutoff
             | 
            
               Set interaction coefficients below this value to  
                  
                    TYPE:
                        | 
          
                log_level
             | 
            
               How much to log. Set to  
                  
                    TYPE:
                        | 
          
                log_file
             | 
            
               If specified, log to this file rather than stout. 
                  
                    TYPE:
                        | 
          
                kwargs
             | 
            
               arguments that are passed to the base class 
                  
                    TYPE:
                        | 
          
Examples:
>>> gpu = True
>>> dt = 1 #this will impact the runtime
>>> krylov_tolerance = 1e-8 #the simulation will be faster, but less accurate
>>> SVConfig(gpu=gpu, dt=dt, krylov_tolerance=krylov_tolerance,
>>>     with_modulation=True) #the last arg is taken from the base class
Source code in emu_sv/sv_config.py
                    StateVector
              Bases: State[complex, Tensor]
Represents a quantum state vector in a computational basis.
This class extends the State class to handle state vectors,
providing various utilities for initialization, normalization,
manipulation, and measurement. The state vector must have a length
that is a power of 2, representing 2ⁿ basis states for n qubits.
| ATTRIBUTE | DESCRIPTION | 
|---|---|
vector | 
            
               1D tensor representation of a state vector. 
  | 
          
gpu | 
            
               store the vector on GPU if True, otherwise on CPU 
  | 
          
Source code in emu_sv/state_vector.py
                    
            n_qudits
  
      property
  
    The number of qudits in the state.
            __add__(other)
    Sum of two state vectors
| PARAMETER | DESCRIPTION | 
|---|---|
                other
             | 
            
               the vector to add to this vector 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    StateVector
                
             | 
            
               The summed state  | 
          
Source code in emu_sv/state_vector.py
              
            __rmul__(scalar)
    Scalar multiplication
| PARAMETER | DESCRIPTION | 
|---|---|
                scalar
             | 
            
               the scalar to multiply with 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    StateVector
                
             | 
            
               The scaled state  | 
          
Source code in emu_sv/state_vector.py
              
            inner(other)
    Compute 
| PARAMETER | DESCRIPTION | 
|---|---|
                other
             | 
            
               the other state 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               the inner product  | 
          
Source code in emu_sv/state_vector.py
              
            make(num_sites, gpu=True)
  
      classmethod
  
    Returns a State vector in the ground state |00..0>.
| PARAMETER | DESCRIPTION | 
|---|---|
                num_sites
             | 
            
               the number of qubits 
                  
                    TYPE:
                        | 
          
                gpu
             | 
            
               whether gpu or cpu 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    StateVector
                
             | 
            
               The described state  | 
          
Examples:
Source code in emu_sv/state_vector.py
              
            norm()
    Returns the norm of the state
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               the norm of the state  | 
          
            sample(*, num_shots=1000, one_state=None, p_false_pos=0.0, p_false_neg=0.0)
    Samples bitstrings, taking into account the specified error rates.
| PARAMETER | DESCRIPTION | 
|---|---|
                num_shots
             | 
            
               how many bitstrings to sample 
                  
                    TYPE:
                        | 
          
                p_false_pos
             | 
            
               the rate at which a 0 is read as a 1 
                  
                    TYPE:
                        | 
          
                p_false_neg
             | 
            
               teh rate at which a 1 is read as a 0 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Counter[str]
                
             | 
            
               the measured bitstrings, by count  | 
          
Source code in emu_sv/state_vector.py
              
            zero(num_sites, gpu=True, eigenstates=('r', 'g'))
  
      classmethod
  
    Returns a zero uninitialized "state" vector. Warning, this has no physical meaning as-is!
| PARAMETER | DESCRIPTION | 
|---|---|
                num_sites
             | 
            
               the number of qubits 
                  
                    TYPE:
                        | 
          
                gpu
             | 
            
               whether gpu or cpu 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    StateVector
                
             | 
            
               The zero state  | 
          
Examples:
Source code in emu_sv/state_vector.py
              inner
Wrapper around StateVector.inner.
| PARAMETER | DESCRIPTION | 
|---|---|
                left
             | 
            
               StateVector argument 
                  
                    TYPE:
                        | 
          
                right
             | 
            
               StateVector argument 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               the inner product  | 
          
Examples:
>>> factor = math.sqrt(2.0)
>>> basis = ("r","g")
>>> string_state1 = {"gg":1.0,"rr":1.0}
>>> state1 = StateVector.from_state_string(basis=basis,
    ... nqubits=nqubits,strings=string_state1)
>>> string_state2 = {"gr":1.0/factor,"rr":1.0/factor}
>>> state2 = StateVector.from_state_string(basis=basis,
    ... nqubits=nqubits,strings=string_state2)
>>> state1 = StateVector.from_state_amplitudes(eigenstates=basis,
...     amplitudes=string_state1)
>>> string_state2 = {"gr":1.0/factor,"rr":1.0/factor}
>>> state2 = StateVector.from_state_amplitudes(eigenstates=basis,
...     amplitudes=string_state2)
>>> inner(state1,state2).item()
(0.49999999144286444+0j)
Source code in emu_sv/state_vector.py
              DenseOperator
              Bases: Operator[complex, Tensor, StateVector]
DenseOperator in EMU-SV use dense matrices
Source code in emu_sv/dense_operator.py
                    
                  
            __add__(other)
    Element-wise addition of two DenseOperators.
| PARAMETER | DESCRIPTION | 
|---|---|
                other
             | 
            
               a DenseOperator instance. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    DenseOperator
                
             | 
            
               A new DenseOperator representing the sum.  | 
          
Source code in emu_sv/dense_operator.py
              
            __matmul__(other)
    Compose two DenseOperators via matrix multiplication.
| PARAMETER | DESCRIPTION | 
|---|---|
                other
             | 
            
               a DenseOperator instance. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    DenseOperator
                
             | 
            
               A new DenseOperator representing the product   | 
          
Source code in emu_sv/dense_operator.py
              
            __rmul__(scalar)
    Scalar multiplication of the DenseOperator.
| PARAMETER | DESCRIPTION | 
|---|---|
                scalar
             | 
            
               a number to scale the operator. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    DenseOperator
                
             | 
            
               A new DenseOperator scaled by the given scalar.  | 
          
Source code in emu_sv/dense_operator.py
              
            
            apply_to(other)
    Apply the DenseOperator to a given StateVector.
| PARAMETER | DESCRIPTION | 
|---|---|
                other
             | 
            
               a StateVector instance. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    StateVector
                
             | 
            
               A new StateVector after applying the operator.  | 
          
Source code in emu_sv/dense_operator.py
              
            expect(state)
    Compute the expectation value of the operator with respect to a state.
| PARAMETER | DESCRIPTION | 
|---|---|
                state
             | 
            
               a StateVector instance. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               The expectation value as a float or complex number.  |