JAL-629 JAL-4124 JAL-3855 test to check we can import PAE matrices in a variety of...
[jalview.git] / src / jalview / ws / datamodel / alphafold / PAEContactMatrix.java
index 0349417..48071bd 100644 (file)
@@ -90,24 +90,24 @@ public class PAEContactMatrix implements ContactMatrixI
   @SuppressWarnings("unchecked")
   private void parse_version_2_pAE(Map<String, Object> pae_obj)
   {
-    elements = new float[length][length];
     // this is never going to be reached by the integer rounding.. or is it ?
     maxscore = ((Double) MapUtils.getFirst(pae_obj,
             "max_predicted_aligned_error", "max_pae")).floatValue();
-    Iterator<List<Long>> scoreRows = ((List<List<Long>>) MapUtils
+    List<List<Long>> scoreRows = ((List<List<Long>>) MapUtils
             .getFirst(pae_obj, "predicted_aligned_error", "pae"))
-            .iterator();
+            ;
+    elements = new float[scoreRows.size()][scoreRows.size()];
     int row = 0, col = 0;
-    while (scoreRows.hasNext())
+    for (List<Long> scoreRow:scoreRows)
     {
-      Iterator<Long> scores = scoreRows.next().iterator();
+      Iterator<Long> scores = scoreRow.iterator();
       while (scores.hasNext())
       {
         Object d = scores.next();
         if (d instanceof Double)
           elements[row][col++] = ((Double) d).longValue();
         else
-          elements[row][col++] = (float) d;
+          elements[row][col++] = (float) ((Long)d).longValue();
       }
       row++;
       col = 0;
@@ -131,7 +131,7 @@ public class PAEContactMatrix implements ContactMatrixI
     Iterator<Long> cols = ((List<Long>) pae_obj.get("residue2")).iterator();
     Iterator<Double> scores = ((List<Double>) pae_obj.get("distance"))
             .iterator();
-
+    // assume square matrix
     elements = new float[length][length];
     while (scores.hasNext())
     {