Selects a random subset of sites with a specific label and gives them a different label.

        Args:
            old_site_label (String or List(String)): Site label(s) of the sites to be modified..
            new_site_label (String):                 Site label to be applied to the modified sites.
            n_sites_to_change (Int):                 Number of sites to modify.

        Returns:
            None

def transmute_sites( self, old_site_label, new_site_label, n_sites_to_change ):
        """
        Selects a random subset of sites with a specific label and gives them a different label.

        Args:
            old_site_label (String or List(String)): Site label(s) of the sites to be modified..
            new_site_label (String):                 Site label to be applied to the modified sites.
            n_sites_to_change (Int):                 Number of sites to modify.

        Returns:
            None
        """
        selected_sites = self.select_sites( old_site_label )
        for site in random.sample( selected_sites, n_sites_to_change ):
            site.label = new_site_label
        self.site_labels = set( [ site.label for site in self.sites ] )