- // models, so rank on qmean
- float o1_mq = (Float) o1data[idx_mqual];
- float o2_mq = (Float) o2data[idx_mqual];
+ // RANK ON QUALITY - DOWNRANK THOSE WITH NO QUALITY MEASURE
+ if (eitherNull(idx_mqualtype, o1data, o2data))
+ {
+ return nonNullFirst(idx_mqualtype, o1data, o2data);
+ }
+ // ONLY COMPARE LIKE QUALITY SCORES
+ if (!o1_qualtype.equals(o2_qualtype))
+ {
+ // prefer LDDT measure over others
+ return "pLDDT".equals(o1_prov) ? -1
+ : "pLDDT".equals(o2_prov) ? 1 : 0;
+ }
+ // OR NO VALUE FOR THE QUALITY
+ if (eitherNull(idx_mqual, o1data, o2data))
+ {
+ return nonNullFirst(idx_mqual, o1data, o2data);
+ }
+ // models, so rank on qmean - b
+ double o1_mq = (Double) o1data[idx_mqual];
+ double o2_mq = (Double) o2data[idx_mqual];