private int idx_mqual;
+ private int idx_mqualtype;
+
private int idx_resol;
/**
idx_mprov = lastTdbRequest.getFieldIndex("Provider");
idx_mqual = lastTdbRequest.getFieldIndex("Confidence");
idx_resol = lastTdbRequest.getFieldIndex("Resolution");
+ idx_mqualtype = lastTdbRequest.getFieldIndex("Confidence Score Type");
}
/**
int idx = EXP_CATEGORIES.indexOf(upper_cat);
if (idx == -1)
{
- System.out.println("Unknown category: '" + cat + "'");
+ jalview.bin.Console.outPrintln("Unknown category: '" + cat + "'");
EXP_CATEGORIES.add(upper_cat);
idx = EXP_CATEGORIES.size() - 1;
}
int o2_cat = scoreCategory((String) o2data[idx_mcat]);
String o2_prov = ((String) o2data[idx_mprov])
.toUpperCase(Locale.ROOT);
+ String o1_qualtype = (String) o1data[idx_mqualtype],
+ o2_qualtype = (String) o2data[idx_mqualtype];
if (o1_cat == o2_cat)
{
}
else
{
+ // 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_qualtype) ? -1
+ : "pLDDT".equals(o2_qualtype) ? 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];
- return (o2_mq < o1_mq) ? 1 : (o2_mq == o1_mq) ? 0 : -1;
+ int res = (o2_mq < o1_mq) ? 1 : (o2_mq == o1_mq) ? 0 : -1;
+ return ("pLDDT".equals(o1_qualtype)) ? -res : res;
}
}
else