Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
c = ClassicalRegister(4)
circuit = QuantumCircuit(q, c)
circuit.h(q[0]).c_if(c, 15)
Because cQASM has the same number of classical registers as qubits (2 in this case),
this circuit cannot be translated to valid cQASM.
Args:
experiment: The experiment with gate operations and header.
Raises:
QisKitBackendError: When the value is not correct.
"""
number_of_clbits = experiment.header.memory_slots
if number_of_clbits < 1:
raise QisKitBackendError("Invalid amount of classical bits ({})!".format(number_of_clbits))
if BaseBackend.configuration(self).conditional:
number_of_qubits = experiment.header.n_qubits
if number_of_clbits > number_of_qubits:
# no problem when there are no conditional gate operations
for instruction in experiment.instructions:
if hasattr(instruction, 'conditional'):
raise QisKitBackendError("Number of classical bits must be less than or equal to the"
" number of qubits when using conditional gate operations")
Args:
experiment: The experiment with gate operations and header.
Raises:
QisKitBackendError: When the circuit contains an invalid non-FSP measurement
"""
measurements: List[List[int]] = []
for instruction in experiment.instructions:
if instruction.name == 'measure':
for q, m in measurements:
if q == instruction.qubits[0] and m != instruction.memory[0]:
raise QisKitBackendError('Measurement of qubit {} to different classical registers '
'is not supported'.format(q))
if q != instruction.qubits[0] and m == instruction.memory[0]:
raise QisKitBackendError('Measurement of different qubits to the same classical register {0} '
'is not supported'.format(m))
measurements.append([instruction.qubits[0], instruction.memory[0]])
def retrieve_job(self, job_id: str) -> QIJob:
""" Retrieve a specified job by its job_id.
Args:
job_id: The job id.
Returns:
The job that has been retrieved.
Raises:
QisKitBackendError: If job not found or error occurs during retrieval of the job.
"""
try:
self.__api.get_project(int(job_id))
except (ErrorMessage, ValueError):
raise QisKitBackendError("Could not retrieve job with job_id '{}' ".format(job_id))
return QIJob(self, job_id, self.__api)
Args:
qi_job: A job that has already been submitted and which execution is completed.
Raises:
QisKitBackendError: If an error occurred during execution by the backend.
Returns:
A list of experiment results; containing the data, execution time, status, etc.
"""
jobs = self.__api.get_jobs_from_project(int(qi_job.job_id()))
results = [self.__api.get_result_from_job(job['id']) for job in jobs]
experiment_results = []
for result, job in zip(results, jobs):
if not result.get('histogram', {}):
raise QisKitBackendError(
'Result from backend contains no histogram data!\n{}'.format(result.get('raw_text')))
user_data = json.loads(str(job.get('user_data')))
measurements = user_data.pop('measurements')
histogram_obj, memory_data = self.__convert_result_data(result, measurements)
full_state_histogram_obj = self.__convert_histogram(result, measurements)
experiment_result_data = ExperimentResultData(counts=histogram_obj,
probabilities=full_state_histogram_obj,
memory=memory_data)
header = Obj.from_dict(user_data)
experiment_result_dictionary = {'name': job.get('name'), 'seed': 42, 'shots': job.get('number_of_shots'),
'data': experiment_result_data, 'status': 'DONE', 'success': True,
'time_taken': result.get('execution_time_in_seconds'), 'header': header}
experiment_results.append(ExperimentResult(**experiment_result_dictionary))
return experiment_results
experiment: The experiment with gate operations and header.
Raises:
QisKitBackendError: When the value is not correct.
"""
number_of_clbits = experiment.header.memory_slots
if number_of_clbits < 1:
raise QisKitBackendError("Invalid amount of classical bits ({})!".format(number_of_clbits))
if BaseBackend.configuration(self).conditional:
number_of_qubits = experiment.header.n_qubits
if number_of_clbits > number_of_qubits:
# no problem when there are no conditional gate operations
for instruction in experiment.instructions:
if hasattr(instruction, 'conditional'):
raise QisKitBackendError("Number of classical bits must be less than or equal to the"
" number of qubits when using conditional gate operations")
def __validate_number_of_shots(self, job: QasmQobj) -> None:
""" Checks whether the number of shots has a valid value.
Args:
job: The quantum job with the Qiskit algorithm and quantum inspire backend.
Raises:
QisKitBackendError: When the value is not correct.
"""
number_of_shots = job.config.shots
if number_of_shots < 1 or number_of_shots > self.__backend['max_number_of_shots']:
raise QisKitBackendError('Invalid shots (number_of_shots={})'.format(number_of_shots))