- @Override
- public int compare(FTSData o1, FTSData o2)
- {
- int o1_s = (Integer) o1.getSummaryData()[idx_ups];
- int o1_e = (Integer) o1.getSummaryData()[idx_upe];
- int o1_cat = scoreCategory((String) o1.getSummaryData()[idx_mcat]);
- int o2_s = (Integer) o2.getSummaryData()[idx_ups];
- int o2_e = (Integer) o2.getSummaryData()[idx_upe];
- int o2_cat = scoreCategory((String) o2.getSummaryData()[idx_mcat]);
-
- if (o1_cat == o2_cat)
- {
- if (o1_s == o2_s)
- {
- int o1_xtent = o1_e - o1_s;
- int o2_xtent = o2_e - o2_s;
- if (o1_xtent == o2_xtent)
- {
- if (o1_cat == scoreCategory(EXP_CATEGORIES.get(0)))
- {
- // experimental structures, so rank on quality
- double o1_res = (Double) o1.getSummaryData()[idx_resol];
- double o2_res = (Double) o2.getSummaryData()[idx_resol];
- return (o2_res < o1_res) ? 1 : (o2_res == o1_res) ? 0 : -1;
- }
- else
- {
- // models, so rank on qmean
- float o1_mq = (Float) o1.getSummaryData()[idx_mqual];
- float o2_mq = (Float) o2.getSummaryData()[idx_mqual];
- return (o2_mq < o1_mq) ? 1 : (o2_mq == o1_mq) ? 0 : -1;
- }
- }
- else
- {
- return o1_xtent - o2_xtent;
- }
- }
- else
- {
- return o1_s - o2_s;
- }
- }
- else
- {
- return o2_cat - o1_cat;
- }
- }