def get_unique_chemical_names(reagents):
    """Get the unique chemical species names in a list of reagents.

    The concentrations of these species define the vector space in which we sample possible experiments

    :param reagents: a list of perovskitereagent objects
    :return: a list of the unique chemical names in all of the reagent
    """
    chemical_species = set()

    if isinstance(reagents, dict):
        reagents = [v for v in reagents.values()]

    for reagent in reagents:
        chemical_species.update(reagent.chemicals)
    return sorted(list(chemical_species))