def acquire_images(self, position_name, position_dir, position_metadata):
    "Override this method in a subclass to define the image-acquisition sequence.\n\n        All most subclasses will need to do is return the following as a tuple:\n        (images, image_names, new_metadata), where:\n            images is a list of the acquired images\n            image_names is a list of the generic names for each of these images\n                (not timepoint- or position-specific; e.g. 'GFP.png' or some such)\n            new_metadata is a dictionary of timepoint-specific information, such\n                as the latest focal plane z-position or similar. This will be\n                made available to future acquisition runs via the 'position_metadata'\n                argument described below.\n\n        The images and metadata will be written out by the superclass, and\n        must not be written by the overriding subclass.\n\n        Optionally, subclasses may choose to enter 'position_name' into the\n        self.skip_positions set to indicate that in the future this position\n        should not be acquired. (E.g. the worm is dead.)\n\n        Parameters:\n            position_name: identifier for this image-acquisition position. Useful\n                for adding this position to the skip_positions set.\n            position_dir: pathlib.Path object representing the directory where\n                position-specific data files and outputs should be written. Useful\n                only if additional data needs to be read in or out during\n                acquisition. (E.g. a background model or similar.)\n            position_metadata: list of all the stored position metadata from the\n                previous timepoints, in chronological order. In particular, this\n                dictionary is guaranteed to contain 'timestamp' which is the\n                time.time() at which that acquisition was started. Other values\n                (such as the latest focal plane) stored by previous acquisition\n                runs will also be available. The most recent metadata will be in\n                position_metadata[-1].\n        "
    raise NotImplementedError()
Override this method in a subclass to define the image-acquisition sequence.

All most subclasses will need to do is return the following as a tuple:
(images, image_names, new_metadata), where:
    images is a list of the acquired images
    image_names is a list of the generic names for each of these images
        (not timepoint- or position-specific; e.g. 'GFP.png' or some such)
    new_metadata is a dictionary of timepoint-specific information, such
        as the latest focal plane z-position or similar. This will be
        made available to future acquisition runs via the 'position_metadata'
        argument described below.

The images and metadata will be written out by the superclass, and
must not be written by the overriding subclass.

Optionally, subclasses may choose to enter 'position_name' into the
self.skip_positions set to indicate that in the future this position
should not be acquired. (E.g. the worm is dead.)

Parameters:
    position_name: identifier for this image-acquisition position. Useful
        for adding this position to the skip_positions set.
    position_dir: pathlib.Path object representing the directory where
        position-specific data files and outputs should be written. Useful
        only if additional data needs to be read in or out during
        acquisition. (E.g. a background model or similar.)
    position_metadata: list of all the stored position metadata from the
        previous timepoints, in chronological order. In particular, this
        dictionary is guaranteed to contain 'timestamp' which is the
        time.time() at which that acquisition was started. Other values
        (such as the latest focal plane) stored by previous acquisition
        runs will also be available. The most recent metadata will be in
        position_metadata[-1].
def acquire_images(self, position_name, position_dir, position_metadata):
    "Override this method in a subclass to define the image-acquisition sequence.\n\n        All most subclasses will need to do is return the following as a tuple:\n        (images, image_names, new_metadata), where:\n            images is a list of the acquired images\n            image_names is a list of the generic names for each of these images\n                (not timepoint- or position-specific; e.g. 'GFP.png' or some such)\n            new_metadata is a dictionary of timepoint-specific information, such\n                as the latest focal plane z-position or similar. This will be\n                made available to future acquisition runs via the 'position_metadata'\n                argument described below.\n\n        The images and metadata will be written out by the superclass, and\n        must not be written by the overriding subclass.\n\n        Optionally, subclasses may choose to enter 'position_name' into the\n        self.skip_positions set to indicate that in the future this position\n        should not be acquired. (E.g. the worm is dead.)\n\n        Parameters:\n            position_name: identifier for this image-acquisition position. Useful\n                for adding this position to the skip_positions set.\n            position_dir: pathlib.Path object representing the directory where\n                position-specific data files and outputs should be written. Useful\n                only if additional data needs to be read in or out during\n                acquisition. (E.g. a background model or similar.)\n            position_metadata: list of all the stored position metadata from the\n                previous timepoints, in chronological order. In particular, this\n                dictionary is guaranteed to contain 'timestamp' which is the\n                time.time() at which that acquisition was started. Other values\n                (such as the latest focal plane) stored by previous acquisition\n                runs will also be available. The most recent metadata will be in\n                position_metadata[-1].\n        "
    raise NotImplementedError()