<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fgrad_X(self, X):
 """Compute the gradient of warping function with respect to X Parameters X : array_like, shape = (n_samples, n_features) The location to compute gradient Returns ------- grad : array_like, shape = (n_samples, n_features) The gradient for every location at X Math ---- grad = a * b * x ^(a-1) * (1 - x^a)^(b-1) """

        grad = np.zeros(X.shape)
        for i_seq, i_fea in enumerate(self.warping_indices):
            a, b = self.params[i_seq][0], self.params[i_seq][1]
            grad[:, i_fea] = a * b * np.power(self.X_normalized[:, i_fea], a-1) *  \
                             np.power(1 - np.power(self.X_normalized[:, i_fea], a), b-1) * self.scaling[i_fea]
        return grad