JAL-2136 JAL-2137 Improvements: enable STRUCTMODEL annotation statement to be less...
[jalview.git] / src / jalview / structure / StructureSelectionManager.java
index addf310..5ff2da4 100644 (file)
@@ -50,6 +50,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
@@ -89,7 +90,7 @@ public class StructureSelectionManager
 
   private List<SelectionListener> sel_listeners = new ArrayList<SelectionListener>();
 
-  private List<String> phyre2ModelTemplates = new ArrayList<String>();
+  private Map<String, String> phyre2ModelTemplates = new Hashtable<String, String>();
 
   /**
    * @return true if will try to use external services for processing secondary
@@ -599,10 +600,15 @@ public class StructureSelectionManager
         setProgressBar(null);
         setProgressBar(MessageManager
                 .getString("status.obtaining_mapping_with_phyre2_template_alignment"));
+        String fastaFile = getPhyre2FastaFileFor(pdbFile);
         StructureMapping phyre2ModelMapping = new Phyre2Client(pdb)
-                .getStructureMapping(seq, pdbFile, " ");
-
+                .getStructureMapping(seq, pdbFile, fastaFile, " ");
         seqToStrucMapping.add(phyre2ModelMapping);
+        maxChain.makeExactMapping(maxAlignseq, seq);
+        maxChain.transferRESNUMFeatures(seq, null);
+        jalview.datamodel.Mapping sqmpping = maxAlignseq
+                .getMappingFromS1(false);
+        maxChain.transferResidueAnnotation(phyre2ModelMapping, sqmpping);
         ds.addPDBId(maxChain.sequence.getAllPDBEntries().get(0));
       }
       else
@@ -628,9 +634,10 @@ public class StructureSelectionManager
     return pdb;
   }
 
-  public void registerPhyre2Template(String phyre2Template)
+  public void registerPhyre2Template(String phyre2Template,
+          String fastaMappingFile)
   {
-    phyre2ModelTemplates.add(phyre2Template);
+    phyre2ModelTemplates.put(phyre2Template, fastaMappingFile);
   }
 
   /**
@@ -1400,7 +1407,13 @@ public class StructureSelectionManager
     {
       return false;
     }
-    return (phyre2ModelTemplates.contains(structureFile));
+    return phyre2ModelTemplates.get(structureFile) != null
+            && !phyre2ModelTemplates.get(structureFile).isEmpty();
+  }
+
+  public String getPhyre2FastaFileFor(String structureFile)
+  {
+    return phyre2ModelTemplates.get(structureFile);
   }