From: Miguel <mig...@us...> - 2004-11-30 20:35:12
|
Update of /cvsroot/jmol/Jmol/src/org/jmol/viewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27424/src/org/jmol/viewer Modified Files: Atom.java Chain.java ColorManager.java Eval.java Frame.java Group.java JmolConstants.java Mmset.java Model.java ModelManager.java Monomer.java Polymer.java Token.java Viewer.java Log Message: implemented 'color polymerIndex' and 'color groupNumber' Index: Atom.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Atom.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Atom.java 29 Nov 2004 17:55:39 -0000 1.2 +++ Atom.java 30 Nov 2004 20:34:57 -0000 1.3 @@ -506,6 +506,10 @@ return group.getPolymerLength(); } + int getPolymerIndex() { + return group.getPolymerIndex(); + } + int getAtomIndex() { return atomIndex; } Index: Chain.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Chain.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Chain.java 30 Nov 2004 14:54:56 -0000 1.2 +++ Chain.java 30 Nov 2004 20:34:58 -0000 1.3 @@ -48,14 +48,6 @@ } void addGroup(Group group) { - int groupSeqcode = group.seqcode; - if (groupCount == 0) - minSeqcode = maxSeqcode = groupSeqcode; - else if (groupSeqcode < minSeqcode) - minSeqcode = groupSeqcode; - else if (groupSeqcode > maxSeqcode) - maxSeqcode = groupSeqcode; - if (groupCount == groups.length) groups = (Group[])Util.doubleLength(groups); groups[groupCount++] = group; @@ -78,4 +70,18 @@ bs.set(i); } } + + void calcMinMaxSeqcode(BitSet bsSelected) { + minSeqcode = Integer.MAX_VALUE; + maxSeqcode = Integer.MIN_VALUE; + for (int i = groupCount; --i >= 0; ) { + Group group = groups[i]; + if (bsSelected == null || group.isSelected(bsSelected)) { + if (group.seqcode < minSeqcode) + minSeqcode = group.seqcode; + if (group.seqcode > maxSeqcode) + maxSeqcode = group.seqcode; + } + } + } } Index: ColorManager.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/ColorManager.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- ColorManager.java 30 Nov 2004 14:54:56 -0000 1.7 +++ ColorManager.java 30 Nov 2004 20:34:58 -0000 1.8 @@ -237,6 +237,7 @@ short getColixAtomPalette(Atom atom, byte palette) { int argb = 0; int index; + boolean selectedSetOnly = false; switch (palette) { case JmolConstants.PALETTE_NONE_CPK: // Note that CPK colors can be changed based upon user preference @@ -299,13 +300,25 @@ ? JmolConstants.argbsChainHetero : JmolConstants.argbsChainAtom)[chain]; break; - case JmolConstants.PALETTE_GROUP_SCALE: + case JmolConstants.PALETTE_GROUP_NUMBER: + selectedSetOnly = true; + // fall into + case JmolConstants.PALETTE_GROUP_RASMOL: + viewer.calcMinMaxSeqcode(selectedSetOnly); index = quantize(viewer.getMinSeqcode(), viewer.getMaxSeqcode(), atom.getSeqcode(), JmolConstants.argbsGroupScale.length); argb = JmolConstants.argbsGroupScale[index]; break; + case JmolConstants.PALETTE_POLYMER_INDEX: + index = quantize(0, + atom.getPolymerLength(), + atom.getPolymerIndex(), + JmolConstants.argbsRwbScale.length); + index = JmolConstants.argbsRwbScale.length - index - 1; + argb = JmolConstants.argbsRwbScale[index]; + break; } if (argb == 0) return Graphics3D.HOTPINK; Index: Eval.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Eval.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Eval.java 30 Nov 2004 14:54:56 -0000 1.2 +++ Eval.java 30 Nov 2004 20:34:58 -0000 1.3 @@ -1438,6 +1438,8 @@ case Token.formalCharge: case Token.partialCharge: case Token.user: + case Token.groupNumber: + case Token.polymerIndex: colorObject(Token.atom, 1); break; case Token.label: @@ -1533,7 +1535,13 @@ palette = JmolConstants.PALETTE_FIXEDTEMP; break; case Token.group: - palette = JmolConstants.PALETTE_GROUP_SCALE; + palette = JmolConstants.PALETTE_GROUP_RASMOL; + break; + case Token.groupNumber: + palette = JmolConstants.PALETTE_GROUP_NUMBER; + break; + case Token.polymerIndex: + palette = JmolConstants.PALETTE_POLYMER_INDEX; break; case Token.user: Index: Frame.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Frame.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Frame.java 30 Nov 2004 14:54:56 -0000 1.4 +++ Frame.java 30 Nov 2004 20:34:59 -0000 1.5 @@ -1456,6 +1456,10 @@ } } + void calcMinMaxSeqcode(BitSet bsSelected) { + mmset.calcMinMaxSeqcode(bsSelected); + } + int getMinSeqcode() { return mmset.minSeqcode; } Index: Group.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Group.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Group.java 18 Nov 2004 20:52:31 -0000 1.1 +++ Group.java 30 Nov 2004 20:34:59 -0000 1.2 @@ -106,6 +106,10 @@ return 0; } + int getPolymerIndex() { + return -1; + } + byte getProteinStructureType() { return JmolConstants.PROTEIN_STRUCTURE_NONE; } @@ -182,6 +186,13 @@ for (int i = firstAtomIndex; i <= lastAtomIndex; ++i) bs.set(i); } + + boolean isSelected(BitSet bs) { + for (int i = firstAtomIndex; i <= lastAtomIndex; ++i) + if (bs.get(i)) + return true; + return false; + } public String toString() { return "[" + getGroup3() + "-" + getSeqcodeString() + "]"; Index: JmolConstants.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/JmolConstants.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- JmolConstants.java 30 Nov 2004 14:54:56 -0000 1.22 +++ JmolConstants.java 30 Nov 2004 20:34:59 -0000 1.23 @@ -31,7 +31,7 @@ // for now, just update this by hand // perhaps use ant filter later ... but mth doesn't like it :-( public final static String copyright = "(C) 2004 The Jmol Development Team"; - public final static String version = "10pre20b"; + public final static String version = "10pre20c"; public final static String cvsDate = "$Date$"; public final static String date = cvsDate.substring(7, 23); @@ -60,13 +60,17 @@ public final static byte PALETTE_TYPE = 7; public final static byte PALETTE_TEMPERATURE = 8; public final static byte PALETTE_FIXEDTEMP = 9; - public final static byte PALETTE_GROUP_SCALE = 10; - public final static byte PALETTE_MAX = 11; + public final static byte PALETTE_GROUP_RASMOL = 10; + public final static byte PALETTE_GROUP_NUMBER = 11; + public final static byte PALETTE_POLYMER_INDEX = 12; + public final static byte PALETTE_MAX = 13; public final static String[] colorSchemes = { "cpk", "charge", "structure", "amino", "shapely", "chain", "partialCharge", "type", - "temperature", "fixedtemperature", "group"}; + "temperature", "fixedTemperature", "group", "groupNumber", + "polymerIndex" + }; public final static byte AXES_NONE = 0; public final static byte AXES_UNIT = 1; Index: Mmset.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Mmset.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Mmset.java 30 Nov 2004 14:54:56 -0000 1.2 +++ Mmset.java 30 Nov 2004 20:34:59 -0000 1.3 @@ -25,6 +25,7 @@ package org.jmol.viewer; import java.util.Properties; +import java.util.BitSet; // Mmset == Molecular Model set @@ -84,16 +85,6 @@ } propogateSecondaryStructure(); - if (modelCount > 0) { - minSeqcode = models[0].minSeqcode; - maxSeqcode = models[0].maxSeqcode; - for (int i = modelCount; --i > 0; ) { - if (models[i].minSeqcode < minSeqcode) - minSeqcode = models[i].minSeqcode; - if (models[i].maxSeqcode > maxSeqcode) - maxSeqcode = models[i].maxSeqcode; - } - } } void setModelSetProperties(Properties modelSetProperties) { @@ -192,6 +183,25 @@ return groupCount; } + void calcMinMaxSeqcode(BitSet bsSelected) { + minSeqcode = Integer.MAX_VALUE; + maxSeqcode = Integer.MIN_VALUE; + if (modelCount > 0) { + Model model = models[0]; + model.calcMinMaxSeqcode(bsSelected); + minSeqcode = model.minSeqcode; + maxSeqcode = model.maxSeqcode; + for (int i = modelCount; --i > 0; ) { + model = models[i]; + model.calcMinMaxSeqcode(bsSelected); + if (model.minSeqcode < minSeqcode) + minSeqcode = model.minSeqcode; + if (model.maxSeqcode > maxSeqcode) + maxSeqcode = model.maxSeqcode; + } + } + } + void calcHydrogenBonds() { for (int i = modelCount; --i >= 0; ) models[i].calcHydrogenBonds(); Index: Model.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Model.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Model.java 30 Nov 2004 14:54:56 -0000 1.2 +++ Model.java 30 Nov 2004 20:34:59 -0000 1.3 @@ -23,6 +23,7 @@ * 02111-1307 USA. */ package org.jmol.viewer; +import java.util.BitSet; final class Model { @@ -87,6 +88,25 @@ return polymerCount; } + void calcMinMaxSeqcode(BitSet bsSelected) { + minSeqcode = Integer.MAX_VALUE; + maxSeqcode = Integer.MIN_VALUE; + if (chainCount > 0) { + Chain chain = chains[0]; + chain.calcMinMaxSeqcode(bsSelected); + minSeqcode = chain.minSeqcode; + maxSeqcode = chain.maxSeqcode; + for (int i = chainCount; --i > 0; ) { + chain = chains[i]; + chain.calcMinMaxSeqcode(bsSelected); + if (chain.minSeqcode < minSeqcode) + minSeqcode = chain.minSeqcode; + if (chain.maxSeqcode > maxSeqcode) + maxSeqcode = chain.maxSeqcode; + } + } + } + int getGroupCount() { int groupCount = 0; for (int i = chainCount; --i >= 0; ) Index: ModelManager.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/ModelManager.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- ModelManager.java 30 Nov 2004 14:54:56 -0000 1.13 +++ ModelManager.java 30 Nov 2004 20:34:59 -0000 1.14 @@ -328,12 +328,17 @@ return (frame == null) ? null : frame.getGroupsPresentBitSet(); } + void calcMinMaxSeqcode(BitSet bsSelected) { + if (frame != null) + frame.calcMinMaxSeqcode(bsSelected); + } + int getMinSeqcode() { - return (frame == null) ? 0 : frame.getMinSeqcode(); + return (frame == null) ? Integer.MAX_VALUE : frame.getMinSeqcode(); } int getMaxSeqcode() { - return (frame == null) ? 0 : frame.getMaxSeqcode(); + return (frame == null) ? Integer.MIN_VALUE : frame.getMaxSeqcode(); } //////////////////////////////////////////////////////////////// Index: Monomer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Monomer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Monomer.java 18 Nov 2004 20:52:31 -0000 1.1 +++ Monomer.java 30 Nov 2004 20:34:59 -0000 1.2 @@ -47,6 +47,10 @@ return polymer == null ? 0 : polymer.count; } + int getPolymerIndex() { + return polymer == null ? -1 : polymer.getIndex(this); + } + //////////////////////////////////////////////////////////////// static byte[] scanForOffsets(int firstAtomIndex, Index: Polymer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Polymer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Polymer.java 18 Nov 2004 20:52:31 -0000 1.1 +++ Polymer.java 30 Nov 2004 20:34:59 -0000 1.2 @@ -175,6 +175,14 @@ return atomIndices; } + int getIndex(Monomer monomer) { + int i; + for (i = count; --i >= 0; ) + if (monomers[i] == monomer) + break; + return i; + } + int getIndex(char chainID, int seqcode) { int i; for (i = count; --i >= 0; ) Index: Token.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Token.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Token.java 18 Nov 2004 20:52:31 -0000 1.1 +++ Token.java 30 Nov 2004 20:34:59 -0000 1.2 @@ -323,6 +323,8 @@ final static int type = misc | 35; final static int fixedtemp = misc | 36; final static int rubberband = misc | 37; + final static int polymerIndex = misc | 38; + final static int groupNumber = misc | 39; final static int amino = predefinedset | 0; final static int hetero = predefinedset | 1 | setparam; @@ -609,6 +611,8 @@ "type", new Token(type, "type"), "fixedtemperature", new Token(fixedtemp, "fixedtemperature"), "rubberband", new Token(rubberband, "rubberband"), + "polymerindex", new Token(polymerIndex, "polymerIndex"), + "groupnumber", new Token(groupNumber, "groupnumber"), }; static Hashtable map = new Hashtable(); Index: Viewer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Viewer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Viewer.java 30 Nov 2004 14:54:56 -0000 1.4 +++ Viewer.java 30 Nov 2004 20:34:59 -0000 1.5 @@ -1292,6 +1292,12 @@ return modelManager.getGroupsPresentBitSet(); } + void calcMinMaxSeqcode(boolean selectedOnly) { + modelManager.calcMinMaxSeqcode(selectedOnly + ? selectionManager.bsSelection + : null); + } + int getMinSeqcode() { return modelManager.getMinSeqcode(); } |