code: def remove_noise(time, magnitude, error, error_limit=3, std_limit=5):
      
      data, mjd = magnitude, time
  
      data_len = len(mjd)
      error_mean = np.mean(error)
      error_tolerance = error_limit * (error_mean or 1)
      data_mean = np.mean(data)
      data_std = np.std(data)
  
      mjd_out, data_out, error_out = [], [], []
      for i in range(data_len):
          is_not_noise = (
              error[i] < error_tolerance and
              (np.absolute(data[i] - data_mean) / data_std) < std_limit)
  
          if is_not_noise:
              mjd_out.append(mjd[i])
              data_out.append(data[i])
              error_out.append(error[i])
  
      data_out = np.asarray(data_out)
      mjd_out = np.asarray(mjd_out)
      error_out = np.asarray(error_out)
  
      return mjd_out, data_out, error_out
docs: Points within 'std_limit' standard deviations from the mean and with
      errors greater than 'error_limit' times the error mean are
      considered as noise and thus are eliminated.