<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def convenience_split_params(self, params, return_all_types=False):
 """ Splits parameter vector into nest parameters and index parameters. Parameters all_params : 1D ndarray. Should contain all of the parameters being estimated (i.e. all the nest coefficients and all of the index coefficients). All elements should be ints, floats, or longs. rows_to_nests : 2D scipy sparse array. There should be one row per observation per available alternative and one column per nest. This matrix maps the rows of the design matrix to the unique nests (on the columns). return_all_types : bool, optional. Determines whether or not a tuple of 4 elements will be returned (with one element for the nest, shape, intercept, and index parameters for this model). If False, a tuple of 2 elements will be returned, as described below. The tuple will contain the nest parameters and the index coefficients. Returns ------- orig_nest_coefs : 1D ndarray. The nest coefficients being used for estimation. Note that these values are the logit of the inverse of the scale parameters for each lower level nest. index_coefs : 1D ndarray. The index coefficients of this nested logit model. Note ---- If `return_all_types == True` then the function will return a tuple of four objects. In order, these objects will either be None or the arrays representing the arrays corresponding to the nest, shape, intercept, and index parameters. """

        return split_param_vec(params,
                               self.rows_to_nests,
                               return_all_types=return_all_types)