@classmethod
def from_isotherm(cls, isotherm, pressure=None, loading=None, isotherm_data
    =None, pressure_key=None, loading_key=None, model=None, param_guess=
    None, optimization_params=None, branch='ads', verbose=False):
    """
        Construct a ModelIsotherm using a parent isotherm as the template for
        all the parameters.

        Parameters
        ----------

        isotherm : Isotherm
            An instance of the Isotherm parent class.
        pressure : list
            Create an isotherm directly from an array. Values for pressure.
            If the ``isotherm_data`` dataframe is specified, these values are ignored.
        loading : list
            Create an isotherm directly from an array. Values for loading.
            If the ``isotherm_data`` dataframe is specified, these values are ignored.
        isotherm_data : DataFrame
            Pure-component adsorption isotherm data.
        pressure_key : str
            Column of the pandas DataFrame where the pressure is stored.
        loading_key : str
            Column of the pandas DataFrame where the loading is stored.
        model : str
            The model to be used to describe the isotherm.
        param_guess : dict
            Starting guess for model parameters in the data fitting routine.
        optimization_params : dict
            Dictionary to be passed to the minimization function to use in fitting model to data.
            See `here
            <https://docs.scipy.org/doc/scipy/reference/optimize.html#module-scipy.optimize>`__.
            Defaults to "Nelder-Mead".
        branch : ['ads', 'des'], optional
            The branch on which the model isotherm is based on. It is assumed to be the
            adsorption branch, as it is the most commonly modelled part, although may
            set to desorption as well.
        verbose : bool
            Prints out extra information about steps taken.
        """
    iso_params = isotherm.to_dict()
    iso_params['pressure'] = pressure
    iso_params['loading'] = loading
    iso_params['isotherm_data'] = isotherm_data
    iso_params['pressure_key'] = pressure_key
    iso_params['loading_key'] = loading_key
    iso_params['model'] = model
    iso_params['param_guess'] = param_guess
    iso_params['optimization_params'] = optimization_params
    iso_params['branch'] = branch
    iso_params['verbose'] = verbose
    return cls(**iso_params)
