def load_device_noise_properties(processor_id: str) -> cirq_google.GoogleNoiseProperties:
    """Loads NoiseProperties for the given device.

    This combines calibration data for the device with gate times from its specification, and
    the Z phases data, if available, to construct NoiseProperties for device simulation.

    Args:
        processor_id: name of the processor to simulate.
            Use `list_virtual_processors` to obtain available names.

    Raises:
        ValueError: if processor_id is not a supported QCS processor.
    """
    device = create_device_from_processor_id(processor_id)
    calibration = load_median_device_calibration(processor_id)
    zphase_data = load_sample_device_zphase(processor_id) if processor_id in ZPHASE_DATA else None
    if processor_id in ('rainbow', 'weber'):
        gate_times_ns = calibration_to_noise_properties.DEFAULT_GATE_NS
    else:
        gate_times_ns = extract_gate_times_ns_from_device(device)
    return calibration_to_noise_properties.noise_properties_from_calibration(
        calibration=calibration, gate_times_ns=gate_times_ns, zphase_data=zphase_data
    )
Loads NoiseProperties for the given device.

    This combines calibration data for the device with gate times from its specification, and
    the Z phases data, if available, to construct NoiseProperties for device simulation.

    Args:
        processor_id: name of the processor to simulate.
            Use `list_virtual_processors` to obtain available names.

    Raises:
        ValueError: if processor_id is not a supported QCS processor.
    
cirq-google/cirq_google/engine/virtual_engine_factory.py