def fromfuncs(funcs, n_sessions, eqdata, **kwargs):
_skipatstart = kwargs.get('<STR_LIT>', <NUM_LIT:0>)<EOL>_constfeat = kwargs.get('<STR_LIT>', True)<EOL>_outcols = ['<STR_LIT>'] if _constfeat else []<EOL>_n_allrows = len(eqdata.index)<EOL>_n_featrows = _n_allrows - _skipatstart - n_sessions + <NUM_LIT:1><EOL>for _func in funcs:<EOL><INDENT>_outcols += map(partial(_concat, strval='<STR_LIT:U+0020>' + _func.title), range(-n_sessions + <NUM_LIT:1>, <NUM_LIT:1>))<EOL><DEDENT>_features = pd.DataFrame(index=eqdata.index[_skipatstart + n_sessions - <NUM_LIT:1>:],<EOL>columns=_outcols, dtype=np.float64)<EOL>_offset = <NUM_LIT:0><EOL>if _constfeat:<EOL><INDENT>_features.iloc[:, <NUM_LIT:0>] = <NUM_LIT:1.><EOL>_offset += <NUM_LIT:1><EOL><DEDENT>for _func in funcs:<EOL><INDENT>_values = _func(eqdata).values<EOL>_n_values = len(_values)<EOL>for i in range(n_sessions):<EOL><INDENT>_val_end = _n_values - n_sessions + i + <NUM_LIT:1><EOL>_features.iloc[:, _offset + i] = _values[_val_end - _n_featrows:_val_end]<EOL><DEDENT>_offset += n_sessions<EOL><DEDENT>return _features<EOL>
Generate features using a list of functions to apply to input data

Parameters
----------
funcs : list of function
    Functions to apply to eqdata. Each function is expected
    to output a dataframe with index identical to a slice of `eqdata`.
    The slice must include at least `eqdata.index[skipatstart + n_sessions - 1:]`.
    Each function is also expected to have a function attribute
    `title`, which is used to generate the column names of the
    output features.

n_sessions : int
    Number of sessions over which to create features.

eqdata : DataFrame
    Data from which to generate features. The data will often
    be retrieved using `pn.get()`.

constfeat : bool, optional
    Whether or not the returned features will have the constant
    feature.

skipatstart : int, optional
    Number of rows to omit at the start of the output DataFrame.
    This parameter is necessary if any of the functions requires
    a rampup period before returning valid results, e.g. `sma()` or
    functions calculating volume relative to a past baseline.
    Defaults to 0.

Returns
----------
features : DataFrame