def METHOD_NAME(self, data):
    """Generate noise timestreams.
    This iterates over all observations and detectors and generates
    the noise timestreams based on the noise object for the current
    observation.
    Args:
        data (toast.Data): The distributed data.
    Raises:
        KeyError: If an observation in data does not have noise
            object defined under given key.
        RuntimeError: If observations are not split into chunks.
    """
    for obs in data.obs:
        obsindx = 0
        if "id" in obs:
            obsindx = obs["id"]
        else:
            print("Warning: observation ID is not set, using zero!")
        telescope = 0
        if "telescope" in obs:
            telescope = obs["telescope_id"]
        global_offset = 0
        if "global_offset" in obs:
            global_offset = obs["global_offset"]
        tod = obs["tod"]
        if self._noisekey in obs:
            nse = obs[self._noisekey]
        else:
            raise KeyError(
                "Observation does not contain noise under "
                '"{}"'.format(self._noisekey)
            )
        if tod.local_chunks is None:
            raise RuntimeError(
                "noise simulation for uniform distributed "
                "samples not implemented"
            )
        # eventually we'll redistribute, to allow long correlations...
        if self._rate is None:
            times = tod.local_times()
        else:
            times = None
        # Iterate over each chunk.
        chunk_first = tod.local_samples[0]
        for curchunk in range(tod.local_chunks[1]):
            chunk_first += self.simulate_chunk(
                tod=tod,
                nse=nse,
                curchunk=curchunk,
                chunk_first=chunk_first,
                obsindx=obsindx,
                times=times,
                telescope=telescope,
                global_offset=global_offset,
            )
    return