def create_group_tree(self, name):
        # Return Value
        # ------------
        # (lowest_subgroup: '', dataset: '')
        #
        # Using inline imports to put off making hdf/numpy required dependencies

        #try:
        name = self.assert_valid_name(name)
        tree_list, dataset = self.create_pathname(name)
        #except AssertionError as err:
        #    log.debug("The group/subgroup/dataset could not be created because of invalid name.")
        #    raise HDFEncoderException(err.message)

        # if list is empty, hang the array in a group called data directly underneath '/',
        # otherwise, keep popping group names from the list of names and create them using h5py
        #try:
        lowest_subgroup = self.h5pyfile.get('/')
        group = lowest_subgroup

        for group_name in tree_list:
            g = group.get(group_name) # if the group doesnt already exist in the file
            if g is None:
                group = group.create_group(group_name) # use group methods for creating a new subgroup
            else:
                group = g
        lowest_subgroup = group
        #except Exception as exc:
        #    log.debug('Error while creating group/subgroup/dataset using h5py.')
        #    raise HDFEncoderException(exc.message)

        return lowest_subgroup, dataset
Creates a group tree structure and returns the names of the dataset and the lowest subgroup to hang the array on
dataset/ETHPy150Open ooici/pyon/prototype/hdf/hdf_codec.py/HDFEncoder.create_group_tree