def free_parameters(self):
        """
        Returns a dictionary of free parameters for this source.
        We use the parameter path as the key because it's 
        guaranteed to be unique, unlike the parameter name.

        :return:
        """
        free_parameters = collections.OrderedDict()

        for component in self._components.values():

            for par in component.shape.parameters.values():

                if par.free:

                    free_parameters[par.path] = par

        for par in self.position.parameters.values():

            if par.free:

                free_parameters[par.path] = par

        return free_parameters
def free_parameters ( self ) : free_parameters = collections . OrderedDict ( ) for component in self . _components . values ( ) : for par in component . shape . parameters . values ( ) : if par . free : free_parameters [ par . path ] = par for par in self . position . parameters . values ( ) : if par . free : free_parameters [ par . path ] = par return free_parameters
Returns a dictionary of free parameters for this source.
        We use the parameter path as the key because it's 
        guaranteed to be unique, unlike the parameter name.

        :return: