def update_frame(self, key, ranges=None, element=None, empty=False):
        if element is None:
            element = self._get_frame(key)
        else:
            self.current_frame = element
            self.current_key = key

        if isinstance(self.hmap, DynamicMap):
            range_obj = element
            items = element.items()
        else:
            range_obj = self.hmap
            items = element.items()

        all_empty = empty
        ranges = self.compute_ranges(range_obj, key, ranges)
        for k, subplot in self.subplots.items():
            empty, el = False, None
            if isinstance(self.hmap, DynamicMap):
                idx = dynamic_update(self, subplot, k, element, items)
                empty = idx is None
                if not empty:
                    _, el = items.pop(idx)
            subplot.update_frame(key, ranges, element=el, empty=(empty or all_empty))

        if isinstance(self.hmap, DynamicMap) and items:
            raise Exception("Some Elements returned by the dynamic callback "
                            "were not initialized correctly and could not be "
                            "rendered.")

        if not self.overlaid and not self.tabs:
            self._update_ranges(element, ranges)
            self._update_plot(key, self.handles['plot'], element)
Read data from file
dataset/ETHPy150Open ioam/holoviews/holoviews/plotting/bokeh/element.py/OverlayPlot.update_frame--crossover with--dataset/ETHPy150Open modflowpy/flopy/flopy/utils/datafile.py/LayerFile._read_data