def get_downsampled_voxel_dims(num_hierarchy_levels, isotropic_level, hierarchy_method,
                               x_voxel_size, y_voxel_size, z_voxel_size,
                               iso=False):
    """Method to return a list, mapping resolution levels to voxel dimensions

    Args:
        num_hierarchy_levels(int): Number of levels to compute
        isotropic_level(iso): Resolution level closest to isotropic
        hierarchy_method(str): Downsampling method (anisotropic | isotropic)
        x_voxel_size(int): voxel size in x dimension
        y_voxel_size(int): voxel size in y dimension
        z_voxel_size(int): voxel size in z dimension
        iso(bool): If requesting isotropic dimensions (for anisotropic channels)

    Returns:
        (list): List where each element is the voxel coords in [x,y,z]. Array index = resolution level
    """
    voxel_dims = [[x_voxel_size, y_voxel_size, z_voxel_size]]
    for res in range(1, num_hierarchy_levels):
        if hierarchy_method == "isotropic":
            voxel_dims.append([voxel_dims[res-1][0] * 2,
                               voxel_dims[res-1][1] * 2,
                               voxel_dims[res-1][2] * 2])
        else:
            # Anisotropic channel
            if res > isotropic_level and iso is True:
                # You want the isotropic version
                voxel_dims.append([voxel_dims[res-1][0] * 2,
                                   voxel_dims[res-1][1] * 2,
                                   voxel_dims[res-1][2] * 2])
            else:
                # You want the anisotropic version
                voxel_dims.append([voxel_dims[res-1][0] * 2,
                                   voxel_dims[res-1][1] * 2,
                                   voxel_dims[res-1][2]])
    return voxel_dims