Skip to content

Commit 21bc18b

Browse files
committed
Apply only with more than 2 valid samples
1 parent cb54fef commit 21bc18b

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

pysteps/verification/detcontscores.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -635,8 +635,20 @@ def get_iterable(x):
635635
pred = np.reshape(pred, (np.prod(shp_rows), -1))
636636
obs = np.reshape(obs, (np.prod(shp_rows), -1))
637637

638-
corr_s = spearmanr(pred, obs, axis=0, nan_policy="omit")[0]
639-
if corr_s.size > 1:
640-
corr_s = np.diag(corr_s, pred.shape[1]).reshape(shp_cols)
638+
# apply only with more than 2 valid samples
639+
# although this does not seem to solve the error
640+
# "ValueError: The input must have at least 3 entries!" ...
641+
corr_s = np.zeros(pred.shape[1]) * np.nan
642+
nsamp = np.sum(np.logical_and(np.isfinite(pred), np.isfinite(obs)), axis=0)
643+
idx = nsamp > 2
644+
if np.any(idx):
645+
corr_s_ = spearmanr(
646+
pred[:, idx], obs[:, idx], axis=0, nan_policy="omit"
647+
)[0]
648+
649+
if corr_s_.size > 1:
650+
corr_s[idx] = np.diag(corr_s_, idx.sum())
651+
else:
652+
corr_s = corr_s_
641653

642-
return float(corr_s) if corr_s.size == 1 else corr_s
654+
return float(corr_s) if corr_s.size == 1 else corr_s.reshape(shp_cols)

0 commit comments

Comments
 (0)