Skip to content

Commit 87fd24b

Browse files
committed
Fix LDDT becoming NaN for residues with very large distances #419
1 parent 9c31b42 commit 87fd24b

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/commons/LDDT.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,20 @@ class LDDTCalculator {
100100
scoreLength = 0;
101101
}
102102
LDDTScoreResult(float *reduce_score, int alignLength) {
103-
scoreLength = alignLength;
104103
if(perCaLddtScore) {
105104
delete[] perCaLddtScore;
106105
}
107-
perCaLddtScore = new float[scoreLength];
106+
perCaLddtScore = new float[alignLength];
108107
float sum = 0.0;
109-
for(int i = 0; i < scoreLength; i++) {
110-
sum += reduce_score[i];
111-
perCaLddtScore[i] = reduce_score[i];
108+
scoreLength = alignLength;
109+
for(int i = 0; i < alignLength; i++) {
110+
if (std::isnan(reduce_score[i])) {
111+
scoreLength = scoreLength - 1;
112+
perCaLddtScore[i] = 0;
113+
} else {
114+
sum += reduce_score[i];
115+
perCaLddtScore[i] = reduce_score[i];
116+
}
112117
}
113118
avgLddtScore = (double)(sum/(float)scoreLength);
114119
}

0 commit comments

Comments
 (0)