JAL-2035 improvement to bind Jalview to Chimera model when opening an mmCIF file
authortcofoegbu <tcnofoegbu@dundee.ac.uk>
Fri, 25 Mar 2016 16:12:42 +0000 (16:12 +0000)
committertcofoegbu <tcnofoegbu@dundee.ac.uk>
Fri, 25 Mar 2016 16:12:42 +0000 (16:12 +0000)
src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java

index 2de2829..2e5dbeb 100644 (file)
@@ -197,76 +197,21 @@ public class ChimeraManager
       logger.warn("Could not open " + modelPath);
       return null;
     }
-    List<ChimeraModel> models = new ArrayList<ChimeraModel>();
-    int[] modelNumbers = null;
-    if (type == ModelType.PDB_MODEL)
-    {
-      for (String line : response)
-      {
-        if (line.startsWith("#"))
-        {
-          modelNumbers = ChimUtils.parseOpenedModelNumber(line);
-          if (modelNumbers != null)
-          {
-            int modelNumber = ChimUtils.makeModelKey(modelNumbers[0],
-                    modelNumbers[1]);
-            if (currentModelsMap.containsKey(modelNumber))
-            {
-              continue;
-            }
-            ChimeraModel newModel = new ChimeraModel(modelName, type,
-                    modelNumbers[0], modelNumbers[1]);
-            currentModelsMap.put(modelNumber, newModel);
-            models.add(newModel);
-
-            //
-            // patch for Jalview - set model name in Chimera
-            // TODO: find a variant that works for sub-models
-            sendChimeraCommand("setattr M name " + modelName + " #"
-                    + modelNumbers[0], false);
-            // end patch for Jalview
-
-            modelNumbers = null;
-          }
-        }
-      }
-    }
-    else
-    {
-      // TODO: [Optional] Open smiles from file would fail. Do we need it?
-      // If parsing fails, iterate over all open models to get the right one
-      List<ChimeraModel> openModels = getModelList();
-      for (ChimeraModel openModel : openModels)
-      {
-        String openModelName = openModel.getModelName();
-        if (openModelName.endsWith("..."))
-        {
-          openModelName = openModelName.substring(0,
-                  openModelName.length() - 3);
-        }
-        if (modelPath.startsWith(openModelName))
-        {
-          openModel.setModelName(modelPath);
-          int modelNumber = ChimUtils
-                  .makeModelKey(openModel.getModelNumber(),
-                          openModel.getSubModelNumber());
-          if (!currentModelsMap.containsKey(modelNumber))
-          {
-            currentModelsMap.put(modelNumber, openModel);
-            models.add(openModel);
-          }
-        }
-      }
-    }
-
+    List<ChimeraModel> chimeraModels = getModelList();
     // assign color and residues to open models
-    for (ChimeraModel newModel : models)
-    {
+    for (ChimeraModel chimeraModel : chimeraModels)
+    {
+      // // patch for Jalview - set model name in Chimera
+      // // TODO: find a variant that works for sub-models
+      chimeraModel.setModelName(modelName);
+      sendChimeraCommand(
+              "setattr M name " + modelName + " #"
+                      + chimeraModel.getModelNumber(), false);
       // get model color
-      Color modelColor = getModelColor(newModel);
+      Color modelColor = getModelColor(chimeraModel);
       if (modelColor != null)
       {
-        newModel.setModelColor(modelColor);
+        chimeraModel.setModelColor(modelColor);
       }
 
       // Get our properties (default color scheme, etc.)
@@ -276,13 +221,13 @@ public class ChimeraManager
       // Create the information we need for the navigator
       if (type != ModelType.SMILES)
       {
-        addResidues(newModel);
+        addResidues(chimeraModel);
       }
     }
 
     sendChimeraCommand("focus", false);
     // startListening(); // see ChimeraListener
-    return models;
+    return chimeraModels;
   }
 
   /**