QNLP  v1.0
QNLP.proc.HammingDistance.HammingDistanceGroupRotate Class Reference
Inheritance diagram for QNLP.proc.HammingDistance.HammingDistanceGroupRotate:
Inheritance graph
Collaboration diagram for QNLP.proc.HammingDistance.HammingDistanceGroupRotate:
Collaboration graph

Public Member Functions

def __init__ (self, num_bits, simulator)
 
def calc (self, reg_mem, reg_aux, pattern)
 
def calc (self)
 

Data Fields

 gops
 
 val_range
 
 num_bits
 
 sim
 

Private Member Functions

def _angle_matrices (self)
 
def _oracle_angle_map (self)
 
def _set_bits_to_pattern (vals)
 

Detailed Description

Class attempt alternative for state amplitude weighting by
Hamming distance. Uses oracle-based pattern, applying the 
appropriate rotation angle to the state determined by matching
the number of set bits to a pre-defined set of values.

Definition at line 110 of file HammingDistance.py.

Constructor & Destructor Documentation

◆ __init__()

def QNLP.proc.HammingDistance.HammingDistanceGroupRotate.__init__ (   self,
  num_bits,
  simulator 
)

Reimplemented from QNLP.proc.HammingDistance.HammingDistanceOverwriteAux.

Definition at line 118 of file HammingDistance.py.

118  def __init__(self, num_bits, simulator):
119  super().__init__(num_bits, simulator)
120  self.gops = GateOps(simulator)
121  self.val_range = np.arange(-1.0, 1, 2/num_bits)
122 

Member Function Documentation

◆ _angle_matrices()

def QNLP.proc.HammingDistance.HammingDistanceGroupRotate._angle_matrices (   self)
private

Definition at line 132 of file HammingDistance.py.

132  def _angle_matrices(self):
133  vals = []
134  for i in self.val_range:
135  vals.append( DCMatrix( np.asarray( self.gops.RY(np.arccos(i)) ).flatten() ) )
136 
137  return vals
138 

References QNLP.proc.HammingDistance.HammingDistanceGroupRotate.gops, and QNLP.proc.HammingDistance.HammingDistanceGroupRotate.val_range.

Referenced by QNLP.proc.HammingDistance.HammingDistanceGroupRotate._oracle_angle_map().

Here is the caller graph for this function:

◆ _oracle_angle_map()

def QNLP.proc.HammingDistance.HammingDistanceGroupRotate._oracle_angle_map (   self)
private

Definition at line 139 of file HammingDistance.py.

139  def _oracle_angle_map(self):
140  val_map = {}
141  mats = self._angle_matrices()
142  for i in range(0, self.num_bits):
143  val_map.update({ 2**i - 1 : mats[i]})
144  return val_map
145 

References QNLP.proc.HammingDistance.HammingDistanceGroupRotate._angle_matrices(), and QNLP.proc.HammingDistance.HammingDistance.num_bits.

Referenced by QNLP.proc.HammingDistance.HammingDistanceGroupRotate.calc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _set_bits_to_pattern()

def QNLP.proc.HammingDistance.HammingDistanceGroupRotate._set_bits_to_pattern (   vals)
private

Definition at line 146 of file HammingDistance.py.

146  def _set_bits_to_pattern(vals):
147  if isinstance(vals, int):
148  return (2**vals) - 1
149  elif isinstance(vals, list):
150  return [(2**val) -1 for val in vals]
151  else:
152  return None

◆ calc() [1/2]

def QNLP.proc.HammingDistance.HammingDistance.calc (   self)
inherited

Definition at line 30 of file HammingDistance.py.

30  def calc(self):
31  pass
32 

◆ calc() [2/2]

def QNLP.proc.HammingDistance.HammingDistanceGroupRotate.calc (   self,
  reg_mem,
  reg_aux,
  pattern 
)

Reimplemented from QNLP.proc.HammingDistance.HammingDistanceOverwriteAux.

Definition at line 123 of file HammingDistance.py.

123  def calc(self, reg_mem, reg_aux, pattern):
124  self._encodePattern(reg_mem, reg_aux, pattern)
125  self._overwriteAux(reg_mem, reg_aux, pattern)
126  self.sim.groupQubits(reg_aux, False)
127  omap = self._oracle_angle_map()
128  for k,v in omap.items():
129  self.sim.addUToCache(v, "RY_{}".format(k))
130  self.sim.applyOracleU(k, self._oracle_angle_map()[k], reg_aux[0:-2], reg_aux[-2], "RY_{}".format(k))
131 

References QNLP.proc.HammingDistance.HammingDistanceOverwriteAux._encodePattern(), QNLP.proc.HammingDistance.HammingDistanceGroupRotate._oracle_angle_map(), QNLP.proc.HammingDistance.HammingDistanceOverwriteAux._overwriteAux(), and QNLP.proc.HammingDistance.HammingDistance.sim.

Here is the call graph for this function:

Field Documentation

◆ gops

QNLP.proc.HammingDistance.HammingDistanceGroupRotate.gops

◆ num_bits

QNLP.proc.HammingDistance.HammingDistance.num_bits
inherited

◆ sim

◆ val_range

QNLP.proc.HammingDistance.HammingDistanceGroupRotate.val_range

The documentation for this class was generated from the following file: