def build_slice_path( data_root, data_suffix, experiment_name, variable_name, time_index, xy_slice_index, index_precision=3 ):
    """
    Returns the on-disk path to a specific slice.  The path generated has the following
    form:

       <root>/<variable>/<experiment>-<variable>-z=<slice>-Nt=<time><suffix>

    <slice> and <time> are zero-padded integers formatted according to an
    optional precision parameter.

    Takes 7 arguments:

      data_root       - String specifying the root on-disk path for the slice.
      data_suffix     - String specifying the path suffix for the slice.
      experiment_name - String specifying the experiment that generated the slice.
      variable_name   - String specifying the variable associated with the slice.
      time_index      - Non-negative index specifying the time step associated with
                        the slice.
      xy_slice_index  - Non-negative index specifying the XY slice.
      index_precision - Optional non-negative integer specifying the precision used
                        when formatting "<slice>" and "<time>".  If omitted, defaults
                        to 3.

    Returns 1 value:

      slice_name - String specifying the constructed path.

    """

    return "{:s}/{:s}/{:s}-{:s}-z={:0{index_precision}d}-Nt={:0{index_precision}d}.png".format(
        data_root,
        variable_name,
        experiment_name,
        variable_name,
        xy_slice_index,
        time_index,
        index_precision=index_precision )