JAL-3829 make sure structure data type reflects actual format identified
[jalview.git] / src / jalview / ext / jmol / JmolParser.java
index ae8ff7a..18d8e05 100644 (file)
@@ -160,7 +160,31 @@ public class JmolParser extends StructureFile implements JmolStatusListener
     return validator;
   }
 
-
+  PDBEntry.Type jmolFiletype=null;
+  /**
+   * resolve a jmol filetype string and update the jmolFiletype field accordingly
+   * @param jmolIdentifiedFileType
+   * @return true if filetype was identified as MMCIF, PDB
+   */
+  public boolean updateFileType(String jmolIdentifiedFileType)
+  {
+    if (jmolIdentifiedFileType == null 
+            || jmolIdentifiedFileType.trim().equals(""))
+    {
+      return false;
+    }
+    if ("mmcif".equalsIgnoreCase(jmolIdentifiedFileType)) {
+      jmolFiletype = PDBEntry.Type.MMCIF;
+      return true;
+    }
+    if ("pdb".equalsIgnoreCase(jmolIdentifiedFileType))
+    {
+      jmolFiletype = PDBEntry.Type.PDB;
+      return true;
+    } 
+    return false;
+  }
+  
   public void transformJmolModelToJalview(ModelSet ms) throws IOException
   {
     try
@@ -171,8 +195,15 @@ public class JmolParser extends StructureFile implements JmolStatusListener
       List<SequenceI> prot = new ArrayList<SequenceI>();
       PDBChain tmpchain;
       String pdbId = (String) ms.getInfo(0, "title");
-      String isMMCIF = (String) ms.getInfo(0, "fileType");
-
+      boolean isMMCIF = false;
+      String jmolFileType_String = (String) ms.getInfo(0, "fileType");
+      if (updateFileType(jmolFileType_String))
+      {
+        setStructureFileType(jmolFiletype.toString());
+      }
+      
+      isMMCIF = PDBEntry.Type.MMCIF.equals(jmolFiletype);
+      
       if (pdbId == null)
       {
         setId(safeName(getDataName()));
@@ -182,7 +213,7 @@ public class JmolParser extends StructureFile implements JmolStatusListener
       {
         setId(pdbId);
         setPDBIdAvailable(true);
-        alphaFoldModel = alphaFold.search(pdbId) && isMMCIF!=null && isMMCIF.equalsIgnoreCase("mmcif");  
+        alphaFoldModel = alphaFold.search(pdbId) && isMMCIF;  
 
       }
       List<Atom> significantAtoms = convertSignificantAtoms(ms);
@@ -199,7 +230,13 @@ public class JmolParser extends StructureFile implements JmolStatusListener
           tmpchain.atoms.addElement(tmpatom);
         } else
         {
-          tmpchain = new PDBChain(getId(), tmpatom.chain,isAlphafoldModel());
+          String tempFString=null;
+          if (isAlphafoldModel())
+          {
+            tempFString = "Alphafold Reliability";
+          }
+
+          tmpchain = new PDBChain(getId(), tmpatom.chain,tempFString);
           getChains().add(tmpchain);
           tmpchain.atoms.addElement(tmpatom);
         }