Example #1
0
def create_dataset_err(n_samples, theta=0., phi=0., lbda=0., qubit=1):
  """Create dataset.
  
  Parameters:
  n_samples(int): Number of samples.
  theta(float): Parameter for the error.
  phi(float): Parameter for the error.
  lbda(float): Parameter for the error.
  qubit(int): In which qubit you want to put the error.
  
  Output:
  _measurements(list): Measurements.
  _measurements_err(list): Measurements with error.
  """
  
  _measurements = []
  _measurements_err = []

  #Basis Measured
  name_basis = ['I', 'X', 'Y', 'Z']
  basis = [qutip.identity(2), qutip.sigmax(),qutip.sigmay(),qutip.sigmaz()]



  for _ in range(n_samples):    
    density = qutip.rand_dm(4, density=0.75, dims=[[2,2],[2,2]])
    
    theta = theta*np.random.randn()
    
    density_err = add_error(density, theta, phi, lbda, qubit)    
  
    val_measurements = measurement(density_matrix=density, 
                                   base=basis, 
                                   name_base=name_basis)
    
    val_measurements_err = measurement(density_matrix=density_err,
                                       base=basis,
                                       name_base=name_basis)        
    
    _measurements.append(val_measurements)
    _measurements_err.append(val_measurements_err)
    
  return _measurements, _measurements_err
Example #2
0
def create_dataset(n_samples):
  """Create dataset.
  
  Parameters:
  n_samples(int): Number of samples
  
  Output:
  _states(list): States associated with each set of measurements.
  _measurements(list): Measurements.
  _labels(list): Label associated with each set of measurements.
  """

  _states = []
  _labels = []
  _measurements = []

  #Basis Measured
  name_basis = ['I', 'X', 'Y', 'Z']
  basis = [qutip.identity(2), qutip.sigmax(),qutip.sigmay(),qutip.sigmaz()]



  for _ in range(n_samples):    
    density = qutip.rand_dm(4, density=0.75, dims=[[2,2],[2,2]])
    
    #Partial Transpose
    density_partial_T = qutip.partial_transpose(density, [0,1])    
  
    #Labels: 1 if entangled 0 if separable (PPT Criterion)
    if (density_partial_T.eigenenergies() < 0).any():
      _labels.append(1)
  
    else:      
      _labels.append(-1)  

    _states.append(density)  
  
    val_measurements = measurement(density_matrix=density, 
                                   base=basis, 
                                   name_base=name_basis)
  
    _measurements.append(val_measurements)
    
  return _states, _measurements, _labels
Example #3
0
def generate_separable(n_samples):
  """Create n_samples separable states.
  
  Parameters:
  n_samples(int): Number of samples
  
  Output:
  states_train(list): States associated with each set of measurements.
  measurements_train(list):  measurements
  """
  _states = []  
  _measurements = []

  #Basis Measured
  name_basis = ['I', 'X', 'Y', 'Z']
  basis = [qutip.identity(2), qutip.sigmax(),qutip.sigmay(),qutip.sigmaz()]


  counter = 0

  while not counter == n_samples:    
    density = qutip.rand_dm(4, density=0.75, dims=[[2,2],[2,2]])
    
    #Partial Transpose
    density_partial_T = qutip.partial_transpose(density, [0,1])    
  
    #Labels: 1 if entangled 0 if separable (PPT Criterion)
    if (density_partial_T.eigenenergies() < 0).any():      
      pass
  
    else:      
      _states.append(density)  
  
      val_measurements = measurement(density_matrix=density, 
                                   base=basis, 
                                   name_base=name_basis)
  
      _measurements.append(val_measurements)
      
      counter += 1

  return _states, _measurements