code: def _calibration_program(qc: QuantumComputer, tomo_experiment: TomographyExperiment,
                           setting: ExperimentSetting) -> Program:
      
      # Inherit any noisy attributes from main Program, including gate definitions
      # and applications which can be handy in creating simulating noisy channels
      calibr_prog = Program()
      # Inherit readout errro instructions from main Program
      readout_povm_instruction = [i for i in tomo_experiment.program.out().split('\n') if 'PRAGMA READOUT-POVM' in i]
      calibr_prog += readout_povm_instruction
      # Inherit any definitions of noisy gates from main Program
      kraus_instructions = [i for i in tomo_experiment.program.out().split('\n') if 'PRAGMA ADD-KRAUS' in i]
      calibr_prog += kraus_instructions
      # Prepare the +1 eigenstate for the out operator
      for q, op in setting.out_operator.operations_as_set():
          calibr_prog += _one_q_pauli_prep(label=op, index=0, qubit=q)
      # Measure the out operator in this state
      for q, op in setting.out_operator.operations_as_set():
          calibr_prog += _local_pauli_eig_meas(op, q)
  
      return calibr_prog
docs: Program required for calibration in a tomography-like experiment.
  
      :param tomo_experiment: A suite of tomographic observables
      :param ExperimentSetting: The particular tomographic observable to measure
      :param symmetrize_readout: Method used to symmetrize the readout errors (see docstring for
          `measure_observables` for more details)
      :param cablir_shots: number of shots to take in the measurement process
      :return: Program performing the calibration