Source code for pyproteome.pathways.plsr
import numpy as np
[docs]def vip(model):
'''
Calculate VIP scores for a PLSR model.
Parameters
----------
model
Returns
-------
:class:`numpy.array`
'''
try:
t = model.x_scores_
w = model.x_weights_
q = model.y_loadings_
except:
t = model.x_scores
w = model.x_weights
q = model.y_loadings
p, h = w.shape
vips = np.zeros((p,))
s = np.diag(t.T @ t @ q.T @ q).reshape(h, -1)
total_s = np.sum(s)
for i in range(p):
weight = np.array([
(w[i, j] / np.linalg.norm(w[:, j])) ** 2
for j in range(h)
])
vips[i] = np.sqrt(p*(s.T @ weight) / total_s)
return vips