JAL-1479 JAL- Fix to eradicate duplicate mapping output and further improvement for...
[jalview.git] / src / jalview / structure / StructureSelectionManager.java
index a5d9736..4dff04d 100644 (file)
@@ -506,17 +506,41 @@ public class StructureSelectionManager
                 .getMappingFromS1(false);
         if (targetChainId != null && !targetChainId.trim().isEmpty())
         {
-          StructureMapping mapping = getStructureMapping(seq, pdbFile,
-                  targetChainId, pdb, maxChain, sqmpping, maxAlignseq);
-          seqToStrucMapping.add(mapping);
+          StructureMapping mapping;
+          try
+          {
+            mapping = getStructureMapping(seq, pdbFile, targetChainId, pdb,
+                    maxChain, sqmpping, maxAlignseq);
+            seqToStrucMapping.add(mapping);
+          } catch (SiftsException e)
+          {
+            // e.printStackTrace();
+            // fall back to NW alignment
+            System.err.println(e.getMessage());
+            seqToStrucMapping.add(getNWMappings(seq, pdbFile,
+                    targetChainId,
+                    maxChain, pdb, maxAlignseq));
+          }
         }
         else
         {
-          for (PDBChain chain : pdb.getChains())
+          try
           {
-            StructureMapping mapping = getStructureMapping(seq, pdbFile,
-                    chain.id, pdb, chain, sqmpping, maxAlignseq);
-            seqToStrucMapping.add(mapping);
+            ArrayList<StructureMapping> tempMapping = new ArrayList<StructureMapping>();
+            for (PDBChain chain : pdb.getChains())
+            {
+              StructureMapping mapping = getStructureMapping(seq, pdbFile,
+                      chain.id, pdb, chain, sqmpping, maxAlignseq);
+              tempMapping.add(mapping);
+            }
+            seqToStrucMapping.addAll(tempMapping);
+          } catch (SiftsException e)
+          {
+            // e.printStackTrace();
+            // fall back to NW alignment
+            System.err.println(e.getMessage());
+            seqToStrucMapping.add(getNWMappings(seq, pdbFile, maxChainId,
+                    maxChain, pdb, maxAlignseq));
           }
         }
       }
@@ -546,11 +570,8 @@ public class StructureSelectionManager
   private StructureMapping getStructureMapping(SequenceI seq,
           String pdbFile, String targetChainId, StructureFile pdb,
           PDBChain maxChain, jalview.datamodel.Mapping sqmpping,
-          AlignSeq maxAlignseq)
+          AlignSeq maxAlignseq) throws SiftsException
   {
-    String maxChainId = targetChainId;
-    try
-    {
       StructureMapping curChainMapping = siftsClient
               .getSiftsStructureMapping(seq, pdbFile, targetChainId);
       try
@@ -565,15 +586,6 @@ public class StructureSelectionManager
         e.printStackTrace();
       }
       return curChainMapping;
-    } catch (SiftsException e)
-    {
-      System.err.println(e.getMessage());
-      System.err.println(">>> Now switching mapping with NW alignment...");
-      setProgressBar(null);
-      setProgressBar(">>> Now switching mapping with NW alignment...");
-      return getNWMappings(seq, pdbFile, maxChainId, maxChain, pdb,
-              maxAlignseq);
-    }
   }
 
   private StructureMapping getNWMappings(SequenceI seq,