JAL-1473 exclude score models not compatible with PCA algorithm
authorJim Procter <jprocter@dundee.ac.uk>
Tue, 3 Jun 2014 13:29:45 +0000 (14:29 +0100)
committerJim Procter <jprocter@dundee.ac.uk>
Tue, 3 Jun 2014 13:29:45 +0000 (14:29 +0100)
src/jalview/gui/PCAPanel.java

index d1216b9..133c0ce 100644 (file)
@@ -116,26 +116,34 @@ public class PCAPanel extends GPCAPanel implements Runnable,
     scoreMatrixMenu.removeAll();
     for (final String sm:ResidueProperties.scoreMatrices.keySet())
     {
-      JCheckBoxMenuItem jm=new JCheckBoxMenuItem();
-      jm.setText(MessageManager.getStringOrReturn("label.score_model", sm));
-      jm.setSelected(pcaModel.getScore_matrix().equals(sm));
-      if (pcaModel.isNucleotide()==ResidueProperties.scoreMatrices.get(sm).isDNA())
+      if (ResidueProperties.getScoreMatrix(sm) != null)
       {
-        final PCAPanel us = this;
-        jm.addActionListener(new ActionListener()
+        // create an entry for this score matrix for use in PCA
+        JCheckBoxMenuItem jm = new JCheckBoxMenuItem();
+        jm.setText(MessageManager
+                .getStringOrReturn("label.score_model", sm));
+        jm.setSelected(pcaModel.getScore_matrix().equals(sm));
+        if ((ResidueProperties.scoreMatrices.get(sm).isDNA() && ResidueProperties.scoreMatrices
+                .get(sm).isProtein())
+                || pcaModel.isNucleotide() == ResidueProperties.scoreMatrices
+                        .get(sm).isDNA())
         {
-          @Override
-          public void actionPerformed(ActionEvent e)
+          final PCAPanel us = this;
+          jm.addActionListener(new ActionListener()
           {
-            if (!pcaModel.getScore_matrix().equals((String) sm))
+            @Override
+            public void actionPerformed(ActionEvent e)
             {
-              pcaModel.setScore_matrix((String) sm);
-              Thread worker = new Thread(us);
-              worker.start();
+              if (!pcaModel.getScore_matrix().equals((String) sm))
+              {
+                pcaModel.setScore_matrix((String) sm);
+                Thread worker = new Thread(us);
+                worker.start();
+              }
             }
-          }
-        });
-        scoreMatrixMenu.add(jm);
+          });
+          scoreMatrixMenu.add(jm);
+        }
       }
     }
   }