<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _calibration_program(qc: QuantumComputer, tomo_experiment: TomographyExperiment, setting: ExperimentSetting) -> Program: """ 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 """

    # 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