The TopScores class compute() algorithm differs from the old
Cross compute algorithm and must be wrong...reverting to
Cross highScores instead of getHighScores seems to fix the
problem
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There is an evil off-by-one error somewhere. I think
Cross.getScore(Year) may be broken. It returns different
results than getScoreOld(index) for the same indices.
Basically the diff() of the Year given to getScore(Year)
will result in an index that is greater by one than the loop
index. This is the difference between the two years, and is
correct. E.g. if the difference between years is 14, the
old computeHighScores will be in loop iteration 13 and refer
to data[13] while getScore(Year) will deduce 14 and retrieve
data[14]. Correspondingly all the high scores from
TopScores are off by one. The avoidance of the minimum
overlap masks this problem by avoiding any potential
ArrayIndexOutOfBounds (but they WILL occur if you take the
minimum overlap condition out). Strangely it's not just
that the significant scores are off by one row, it's that
they are completely different in the Significant Scores
view. I can't tell whether that is because they really
*are* different, or because of the way the decimal format
renderers are set up (maybe they just *look* different).
Unless the All Scores view is multiplying by 10 or
something, and even then, I can't really match up the scores
it finds with the ones in Signficant Scores. The All Scores
view does the minimumSignificant test itself and correctly
highlights the high scores. Almost all the high scores i
see when printing out diagnostics from TopScores/HighScore
for chil1 vs. chil2 are < 0 fractions, yet All Scores shows
high scores > 3.4... etc.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I believe the problem is due to assumptions about how the
data in the Cross class is accessed and how the top scores
are calculated and stored relative to a starting date.
Simply moving the redateBy(+1) to the end of the loop in
compute appears to fix the issue and produce results that
match the old implementation in Cross.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=1290
Highlighted significant scores from All Scores tab must show
up in Significant Scores tab. Not zeros.
Logged In: YES
user_id=1290
The TopScores class compute() algorithm differs from the old
Cross compute algorithm and must be wrong...reverting to
Cross highScores instead of getHighScores seems to fix the
problem
Logged In: YES
user_id=1290
There is an evil off-by-one error somewhere. I think
Cross.getScore(Year) may be broken. It returns different
results than getScoreOld(index) for the same indices.
Basically the diff() of the Year given to getScore(Year)
will result in an index that is greater by one than the loop
index. This is the difference between the two years, and is
correct. E.g. if the difference between years is 14, the
old computeHighScores will be in loop iteration 13 and refer
to data[13] while getScore(Year) will deduce 14 and retrieve
data[14]. Correspondingly all the high scores from
TopScores are off by one. The avoidance of the minimum
overlap masks this problem by avoiding any potential
ArrayIndexOutOfBounds (but they WILL occur if you take the
minimum overlap condition out). Strangely it's not just
that the significant scores are off by one row, it's that
they are completely different in the Significant Scores
view. I can't tell whether that is because they really
*are* different, or because of the way the decimal format
renderers are set up (maybe they just *look* different).
Unless the All Scores view is multiplying by 10 or
something, and even then, I can't really match up the scores
it finds with the ones in Signficant Scores. The All Scores
view does the minimumSignificant test itself and correctly
highlights the high scores. Almost all the high scores i
see when printing out diagnostics from TopScores/HighScore
for chil1 vs. chil2 are < 0 fractions, yet All Scores shows
high scores > 3.4... etc.
Logged In: YES
user_id=1290
I believe the problem is due to assumptions about how the
data in the Cross class is accessed and how the top scores
are calculated and stored relative to a starting date.
Simply moving the redateBy(+1) to the end of the loop in
compute appears to fix the issue and produce results that
match the old implementation in Cross.