X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fext%2Frbvi%2Fchimera%2FChimeraCommands.java;h=dad85117fb15622f90656836a1bc7fffcc0f31e4;hb=cef8dbc4cf7c8b47864b11aad36596901003639a;hp=e665982a07a962c6b514e46ee7c721201664a929;hpb=799c26111d6936a2e70cb5f1fd7d7312311e6db9;p=jalview.git diff --git a/src/jalview/ext/rbvi/chimera/ChimeraCommands.java b/src/jalview/ext/rbvi/chimera/ChimeraCommands.java index e665982..dad8511 100644 --- a/src/jalview/ext/rbvi/chimera/ChimeraCommands.java +++ b/src/jalview/ext/rbvi/chimera/ChimeraCommands.java @@ -21,12 +21,14 @@ package jalview.ext.rbvi.chimera; import jalview.api.AlignViewportI; +import jalview.api.AlignmentViewPanel; import jalview.api.FeatureRenderer; import jalview.api.SequenceRenderer; import jalview.datamodel.AlignmentI; -import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; +import jalview.renderer.seqfeatures.FeatureColourFinder; import jalview.structure.StructureMapping; import jalview.structure.StructureMappingcommandSet; import jalview.structure.StructureSelectionManager; @@ -59,16 +61,16 @@ public class ChimeraCommands * @param sequence * @param sr * @param fr - * @param viewport + * @param viewPanel * @return */ public static StructureMappingcommandSet[] getColourBySequenceCommand( StructureSelectionManager ssm, String[] files, - SequenceI[][] sequence, SequenceRenderer sr, FeatureRenderer fr, - AlignViewportI viewport) + SequenceI[][] sequence, SequenceRenderer sr, + AlignmentViewPanel viewPanel) { Map colourMap = buildColoursMap(ssm, files, - sequence, sr, fr, viewport); + sequence, sr, viewPanel); List colourCommands = buildColourCommands(colourMap); @@ -186,10 +188,13 @@ public class ChimeraCommands */ protected static Map buildColoursMap( StructureSelectionManager ssm, String[] files, - SequenceI[][] sequence, SequenceRenderer sr, FeatureRenderer fr, - AlignViewportI viewport) + SequenceI[][] sequence, SequenceRenderer sr, + AlignmentViewPanel viewPanel) { - ColumnSelection cs = viewport.getColumnSelection(); + FeatureRenderer fr = viewPanel.getFeatureRenderer(); + FeatureColourFinder finder = new FeatureColourFinder(fr); + AlignViewportI viewport = viewPanel.getAlignViewport(); + HiddenColumns cs = viewport.getAlignment().getHiddenColumns(); AlignmentI al = viewport.getAlignment(); Map colourMap = new LinkedHashMap(); Color lastColour = null; @@ -228,14 +233,13 @@ public class ChimeraCommands continue; } - Color colour = sr.getResidueColour(seq, r, fr); + Color colour = sr.getResidueColour(seq, r, finder); /* * darker colour for hidden regions */ if (!cs.isVisible(r)) { - // colour = ColorUtils.darkerThan(colour); colour = Color.GRAY; } @@ -265,8 +269,8 @@ public class ChimeraCommands // final colour range if (lastColour != null) { - addColourRange(colourMap, lastColour, pdbfnum, startPos, lastPos, - lastChain); + addColourRange(colourMap, lastColour, pdbfnum, startPos, + lastPos, lastChain); } // break; } @@ -310,16 +314,15 @@ public class ChimeraCommands * @param ssm * @param files * @param seqs - * @param fr - * @param alignment + * @param viewPanel * @return */ public static StructureMappingcommandSet getSetAttributeCommandsForFeatures( - StructureSelectionManager ssm, String[] files, - SequenceI[][] seqs, FeatureRenderer fr, AlignmentI alignment) + StructureSelectionManager ssm, String[] files, SequenceI[][] seqs, + AlignmentViewPanel viewPanel) { Map> featureMap = buildFeaturesMap( - ssm, files, seqs, fr, alignment); + ssm, files, seqs, viewPanel); List commands = buildSetAttributeCommands(featureMap); @@ -339,22 +342,28 @@ public class ChimeraCommands * @param ssm * @param files * @param seqs - * @param fr - * @param alignment + * @param viewPanel * @return */ protected static Map> buildFeaturesMap( - StructureSelectionManager ssm, String[] files, - SequenceI[][] seqs, FeatureRenderer fr, AlignmentI alignment) + StructureSelectionManager ssm, String[] files, SequenceI[][] seqs, + AlignmentViewPanel viewPanel) { Map> theMap = new LinkedHashMap>(); + FeatureRenderer fr = viewPanel.getFeatureRenderer(); + if (fr == null) + { + return theMap; + } + List visibleFeatures = fr.getDisplayedFeatureTypes(); if (visibleFeatures.isEmpty()) { return theMap; } + AlignmentI alignment = viewPanel.getAlignment(); for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++) { StructureMapping[] mapping = ssm.getMapping(files[pdbfnum]); @@ -402,12 +411,8 @@ public class ChimeraCommands StructureMapping mapping, SequenceI seq, Map> theMap, int modelNumber) { - SequenceFeature[] sfs = seq.getSequenceFeatures(); - if (sfs == null) - { - return; - } - + List sfs = seq.getFeatures().getPositionalFeatures( + visibleFeatures.toArray(new String[visibleFeatures.size()])); for (SequenceFeature sf : sfs) { String type = sf.getType(); @@ -418,7 +423,7 @@ public class ChimeraCommands */ boolean isFromViewer = JalviewChimeraBinding.CHIMERA_FEATURE_GROUP .equals(sf.getFeatureGroup()); - if (isFromViewer || !visibleFeatures.contains(type)) + if (isFromViewer) { continue; } @@ -445,8 +450,8 @@ public class ChimeraCommands } for (int[] range : mappedRanges) { - addColourRange(featureValues, value, modelNumber, range[0], range[1], - mapping.getChain()); + addColourRange(featureValues, value, modelNumber, range[0], + range[1], mapping.getChain()); } } } @@ -508,9 +513,11 @@ public class ChimeraCommands * to an underscore. * * @param featureType - * @return
-   * @see https://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/midas/setattr.html
-   * 
+ * @return + * + *
+   * @see https://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/midas/setattr.html
+   *         
*/ protected static String makeAttributeName(String featureType) {