X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructures%2Fmodels%2FAAStructureBindingModel.java;fp=src%2Fjalview%2Fstructures%2Fmodels%2FAAStructureBindingModel.java;h=9ecf630b571a4b54639c3378e8308a16f1d561a8;hb=3efc24bc7b7855ff135fa96e35ab1004eaeb4f5e;hp=16dd96cbd92e579aa1d5c9f779b015b6990764e7;hpb=dae56c38c3f14e96308540c30f35ca8f1d917edf;p=jalview.git diff --git a/src/jalview/structures/models/AAStructureBindingModel.java b/src/jalview/structures/models/AAStructureBindingModel.java index 16dd96c..9ecf630 100644 --- a/src/jalview/structures/models/AAStructureBindingModel.java +++ b/src/jalview/structures/models/AAStructureBindingModel.java @@ -20,6 +20,8 @@ */ package jalview.structures.models; +import java.util.Locale; + import java.awt.Color; import java.io.File; import java.io.IOException; @@ -39,7 +41,7 @@ import jalview.api.FeatureRenderer; import jalview.api.SequenceRenderer; import jalview.api.StructureSelectionManagerProvider; import jalview.api.structures.JalviewStructureDisplayI; -import jalview.bin.Cache; +import jalview.bin.Console; import jalview.datamodel.AlignmentI; import jalview.datamodel.HiddenColumns; import jalview.datamodel.MappedFeatures; @@ -59,6 +61,7 @@ import jalview.structure.AtomSpec; import jalview.structure.AtomSpecModel; import jalview.structure.StructureCommandI; import jalview.structure.StructureCommandsI; +import jalview.structure.StructureCommandsI.AtomSpecType; import jalview.structure.StructureListener; import jalview.structure.StructureMapping; import jalview.structure.StructureSelectionManager; @@ -67,7 +70,7 @@ import jalview.util.MessageManager; /** * - * A base class to hold common function for protein structure model binding. + * A base class to hold common function for 3D structure model binding. * Initial version created by refactoring JMol and Chimera binding models, but * other structure viewers could in principle be accommodated in future. * @@ -89,6 +92,9 @@ public abstract class AAStructureBindingModel public String chain = ""; + /** + * is the mapped sequence not protein ? + */ public boolean isRna; /* @@ -165,6 +171,9 @@ public abstract class AAStructureBindingModel protected boolean colourBySequence = true; + /** + * true if all sequences appear to be nucleotide + */ private boolean nucleotide; private boolean finishedInit = false; @@ -582,6 +591,7 @@ public abstract class AAStructureBindingModel } } } + @Override public abstract void highlightAtoms(List atoms); @@ -713,7 +723,7 @@ public abstract class AAStructureBindingModel structures[pdbfnum].chain = chain; } structures[pdbfnum].pdbId = mapping.getPdbId(); - structures[pdbfnum].isRna = theSequence.getRNA() != null; + structures[pdbfnum].isRna = !theSequence.isProtein(); /* * move on to next pdb file (ignore sequences for other chains @@ -915,7 +925,8 @@ public abstract class AAStructureBindingModel */ // todo better way to ensure synchronous than setting getReply true!! executeCommands(commandGenerator.showBackbone(), true, null); - + + AtomSpecType backbone = structures[refStructure].isRna ? AtomSpecType.PHOSPHATE : AtomSpecType.ALPHA; /* * superpose each (other) structure to the reference in turn */ @@ -925,12 +936,12 @@ public abstract class AAStructureBindingModel { AtomSpecModel atomSpec = getAtomSpec(structures[i], matched); List commands = commandGenerator - .superposeStructures(refAtoms, atomSpec); + .superposeStructures(refAtoms, atomSpec, backbone); List replies = executeCommands(commands, true, null); for (String reply : replies) { // return this error (Chimera only) to the user - if (reply.toLowerCase().contains("unequal numbers of atoms")) + if (reply.toLowerCase(Locale.ROOT).contains("unequal numbers of atoms")) { error += "; " + reply; } @@ -1072,7 +1083,10 @@ public abstract class AAStructureBindingModel * executed. *

* If a reply is wanted, the execution is done synchronously (waits), - * otherwise it is done in a separate thread (doesn't wait). + * otherwise it is done in a separate thread (doesn't wait). WARNING: if you + * are sending commands that need to execute before later calls to + * executeCommand (e.g. mouseovers, which clean up after previous ones) then + * set getReply true to ensure that commands are not executed out of order. * * @param getReply * @param msg @@ -1096,7 +1110,10 @@ public abstract class AAStructureBindingModel for (StructureCommandI cmd : cmds) { List replies = executeCommand(cmd, true); - response.addAll(replies); + if (replies != null) + { + response.addAll(replies); + } } return response; } finally @@ -1213,8 +1230,7 @@ public abstract class AAStructureBindingModel } /** - * Returns the FeatureRenderer for the given alignment view, or null if - * feature display is turned off in the view. + * Returns the FeatureRenderer for the given alignment view * * @param avp * @return @@ -1227,9 +1243,7 @@ public abstract class AAStructureBindingModel { return null; } - return ap.getAlignViewport().isShowSequenceFeatures() - ? ap.getFeatureRenderer() - : null; + return ap.getFeatureRenderer(); } protected void setStructureCommands(StructureCommandsI cmd) @@ -1491,7 +1505,7 @@ public abstract class AAStructureBindingModel saveSession(f); } catch (IOException e) { - Cache.log.error(String.format("Error saving %s session: %s", prefix, + Console.error(String.format("Error saving %s session: %s", prefix, e.toString())); }