JAL-1479 updated SIFTS FTP download URL, added improvement to ensure that new SIFTS...
[jalview.git] / src / jalview / structure / StructureSelectionManager.java
index 4dff04d..33c566d 100644 (file)
@@ -506,41 +506,53 @@ public class StructureSelectionManager
                 .getMappingFromS1(false);
         if (targetChainId != null && !targetChainId.trim().isEmpty())
         {
-          StructureMapping mapping;
+          StructureMapping siftsMapping;
           try
           {
-            mapping = getStructureMapping(seq, pdbFile, targetChainId, pdb,
-                    maxChain, sqmpping, maxAlignseq);
-            seqToStrucMapping.add(mapping);
+            siftsMapping = getStructureMapping(seq, pdbFile, targetChainId,
+                    pdb, maxChain, sqmpping, maxAlignseq);
+            seqToStrucMapping.add(siftsMapping);
+            maxChain.makeExactMapping(maxAlignseq, seq);
+            maxChain.transferRESNUMFeatures(seq, null);
+            maxChain.transferResidueAnnotation(siftsMapping, sqmpping);
           } catch (SiftsException e)
           {
-            // e.printStackTrace();
             // fall back to NW alignment
             System.err.println(e.getMessage());
-            seqToStrucMapping.add(getNWMappings(seq, pdbFile,
-                    targetChainId,
-                    maxChain, pdb, maxAlignseq));
+            StructureMapping nwMapping = getNWMappings(seq, pdbFile,
+                    targetChainId, maxChain, pdb, maxAlignseq);
+            seqToStrucMapping.add(nwMapping);
           }
         }
         else
         {
-          try
+          ArrayList<StructureMapping> foundSiftsMappings = new ArrayList<StructureMapping>();
+          for (PDBChain chain : pdb.getChains())
           {
-            ArrayList<StructureMapping> tempMapping = new ArrayList<StructureMapping>();
-            for (PDBChain chain : pdb.getChains())
+            try
             {
-              StructureMapping mapping = getStructureMapping(seq, pdbFile,
+              StructureMapping siftsMapping = getStructureMapping(seq,
+                      pdbFile,
                       chain.id, pdb, chain, sqmpping, maxAlignseq);
-              tempMapping.add(mapping);
+              foundSiftsMappings.add(siftsMapping);
+            } catch (SiftsException e)
+            {
+              System.err.println(e.getMessage());
             }
-            seqToStrucMapping.addAll(tempMapping);
-          } catch (SiftsException e)
+          }
+          if (!foundSiftsMappings.isEmpty())
           {
-            // e.printStackTrace();
-            // fall back to NW alignment
-            System.err.println(e.getMessage());
-            seqToStrucMapping.add(getNWMappings(seq, pdbFile, maxChainId,
-                    maxChain, pdb, maxAlignseq));
+            seqToStrucMapping.addAll(foundSiftsMappings);
+            maxChain.makeExactMapping(maxAlignseq, seq);
+            maxChain.transferRESNUMFeatures(seq, null);
+            maxChain.transferResidueAnnotation(foundSiftsMappings.get(0),
+                    sqmpping);
+          }
+          else
+          {
+            StructureMapping nwMapping = getNWMappings(seq, pdbFile,
+                    maxChainId, maxChain, pdb, maxAlignseq);
+            seqToStrucMapping.add(nwMapping);
           }
         }
       }