Source code for deepfold.eval.msa
import numpy as np
from scipy.spatial.distance import pdist, squareform
[docs]
def compute_neff_v1(
msa: np.ndarray,
cutoff: float = 0.62,
eps: float = 1e-6,
) -> float:
# assert cutoff > 0.0
y = pdist(msa, metric="hamming")
d = squareform(y)
w = d > cutoff
neff = np.sum(1.0 / (w.sum(axis=0) + eps))
return neff
[docs]
def compute_neff_v2(
msa: np.ndarray,
cutoff: float = 0.62,
eps: float = 1e-10,
) -> float:
theta = 1.0 - cutoff
assert theta > 0.0
y = pdist(msa, metric="hamming")
d = squareform(y)
w = 1.0 / (1.0 + np.sum(d < theta, 0))
neff = np.log2(eps + np.sum(w))
return neff