qiskit/circuit/quantumcircuit.py
def append(self, instruction, qargs=None, cargs=None):
        """Append an instruction to the end of the circuit, modifying
        the circuit in place.

        Args:
            instruction (Instruction or Operator): Instruction instance to append
            qargs (list(tuple)): qubits to attach instruction to
            cargs (list(tuple)): clbits to attach instruction to

        Returns:
            Instruction: a handle to the instruction that was just added

        Raises:
            QiskitError: if the gate is of a different shape than the wires
                it is being attached to.
        """
        qargs = qargs or []
        cargs = cargs or []

        # Convert input to instruction
        if not isinstance(instruction, Instruction) and hasattr(instruction, 'to_instruction'):
            instruction = instruction.to_instruction()
        if not isinstance(instruction, Instruction):
            raise QiskitError('object is not an Instruction.')

        # do some compatibility checks
        self._check_dups(qargs)
        self._check_qargs(qargs)
        self._check_cargs(cargs)
        if instruction.num_qubits != len(qargs) or \
                instruction.num_clbits != len(cargs):
            raise QiskitError("instruction %s with %d qubits and %d clbits "
                              "cannot be appended onto %d qubits and %d clbits." %
                              (instruction.name,
                               instruction.num_qubits, instruction.num_clbits,
                               len(qargs), len(cargs)))

        # add the instruction onto the given wires
        instruction_context = instruction, qargs, cargs
        self.data.append(instruction_context)

        # track variable parameters in instruction
        for param_index, param in enumerate(instruction.params):
            if isinstance(param, Parameter):
                current_symbols = self.parameters

                if param in current_symbols:
                    self._parameter_table[param].append((instruction, param_index))
                else:
                    self._parameter_table[param] = [(instruction, param_index)]

        return instruction
def append(self, instruction, qargs=None, cargs=None):
        qargs = qargs or []
        cargs = cargs or []

        # Convert input to instruction
        if not isinstance(instruction, Instruction) and hasattr(instruction, 'to_instruction'):
            instruction = instruction.to_instruction()
        if not isinstance(instruction, Instruction):
            raise QiskitError('object is not an Instruction.')

        # do some compatibility checks
        self._check_dups(qargs)
        self._check_qargs(qargs)
        self._check_cargs(cargs)
        if instruction.num_qubits != len(qargs) or \
                instruction.num_clbits != len(cargs):
            raise QiskitError("instruction %s with %d qubits and %d clbits "
                              "cannot be appended onto %d qubits and %d clbits." %
                              (instruction.name,
                               instruction.num_qubits, instruction.num_clbits,
                               len(qargs), len(cargs)))

        # add the instruction onto the given wires
        instruction_context = instruction, qargs, cargs
        self.data.append(instruction_context)

        # track variable parameters in instruction
        for param_index, param in enumerate(instruction.params):
            if isinstance(param, Parameter):
                current_symbols = self.parameters

                if param in current_symbols:
                    self._parameter_table[param].append((instruction, param_index))
                else:
                    self._parameter_table[param] = [(instruction, param_index)]

        return instruction
def append ( self , instruction , qargs = None , cargs = None ) : qargs = qargs or [ ] cargs = cargs or [ ] # Convert input to instruction if not isinstance ( instruction , Instruction ) and hasattr ( instruction , 'to_instruction' ) : instruction = instruction . to_instruction ( ) if not isinstance ( instruction , Instruction ) : raise QiskitError ( 'object is not an Instruction.' ) # do some compatibility checks self . _check_dups ( qargs ) self . _check_qargs ( qargs ) self . _check_cargs ( cargs ) if instruction . num_qubits != len ( qargs ) or instruction . num_clbits != len ( cargs ) : raise QiskitError ( "instruction %s with %d qubits and %d clbits " "cannot be appended onto %d qubits and %d clbits." % ( instruction . name , instruction . num_qubits , instruction . num_clbits , len ( qargs ) , len ( cargs ) ) ) # add the instruction onto the given wires instruction_context = instruction , qargs , cargs self . data . append ( instruction_context ) # track variable parameters in instruction for param_index , param in enumerate ( instruction . params ) : if isinstance ( param , Parameter ) : current_symbols = self . parameters if param in current_symbols : self . _parameter_table [ param ] . append ( ( instruction , param_index ) ) else : self . _parameter_table [ param ] = [ ( instruction , param_index ) ] return instruction
Append an instruction to the end of the circuit, modifying
        the circuit in place.

        Args:
            instruction (Instruction or Operator): Instruction instance to append
            qargs (list(tuple)): qubits to attach instruction to
            cargs (list(tuple)): clbits to attach instruction to

        Returns:
            Instruction: a handle to the instruction that was just added

        Raises:
            QiskitError: if the gate is of a different shape than the wires
                it is being attached to.
Append an instruction to the end of the circuit modifying the circuit in place .