From: <ni...@us...> - 2006-03-26 09:00:28
|
Revision: 4707 Author: nicove Date: 2006-03-26 01:00:20 -0800 (Sun, 26 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4707&view=rev Log Message: ----------- Fixed warnings Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java Modified: trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java 2006-03-26 08:59:49 UTC (rev 4706) +++ trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java 2006-03-26 09:00:20 UTC (rev 4707) @@ -24,8 +24,6 @@ package org.jmol.adapter.smarter; -import org.jmol.api.JmolAdapter; - import java.io.BufferedReader; /** @@ -125,7 +123,7 @@ String line = readLineWithContinuation(reader); if (line == null || (! line.startsWith("M V30 "))) throw new Exception("unrecognized bond"); - int bondSerial = parseInt(line, 7); // currently unused + /*int bondSerial = */parseInt(line, 7); // currently unused int order = parseInt(line, ichNextParse); int atomSerial1 = parseInt(line, ichNextParse); int atomSerial2 = parseInt(line, ichNextParse); Modified: trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java 2006-03-26 08:59:49 UTC (rev 4706) +++ trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java 2006-03-26 09:00:20 UTC (rev 4707) @@ -25,8 +25,6 @@ package org.jmol.viewer; -import org.jmol.g3d.*; - class BallsRenderer extends ShapeRenderer { int minX, maxX, minY, maxY; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-26 21:07:40
|
Revision: 4709 Author: migueljmol Date: 2006-03-26 13:07:32 -0800 (Sun, 26 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4709&view=rev Log Message: ----------- preliminary work on getPublicProperties Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Atom.java trunk/Jmol/src/org/jmol/viewer/Bond.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/viewer/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-03-26 18:37:33 UTC (rev 4708) +++ trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-03-26 21:07:32 UTC (rev 4709) @@ -615,6 +615,10 @@ return colixAtom; } + int getArgb() { + return group.chain.frame.viewer.getColixArgb(colixAtom); + } + float getRadius() { if (madAtom == JmolConstants.MAR_DELETED) return 0; @@ -1140,4 +1144,20 @@ boolean isPyrimidine() { return group.isPyrimidine(); } + + //////////////////////////////////////////////////////////////// + + Hashtable getPublicProperties() { + Hashtable ht = new Hashtable(); + ht.put("element", getElementSymbol()); + ht.put("x", new Double(point3f.x)); + ht.put("y", new Double(point3f.y)); + ht.put("z", new Double(point3f.z)); + ht.put("atomIndex", new Integer(atomIndex)); + ht.put("modelIndex", new Integer(modelIndex)); + ht.put("argb", new Integer(getArgb())); + ht.put("radius", new Double(getRadius())); + ht.put("atomNumber", new Integer(getAtomNumber())); + return ht; + } } Modified: trunk/Jmol/src/org/jmol/viewer/Bond.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Bond.java 2006-03-26 18:37:33 UTC (rev 4708) +++ trunk/Jmol/src/org/jmol/viewer/Bond.java 2006-03-26 21:07:32 UTC (rev 4709) @@ -26,6 +26,7 @@ package org.jmol.viewer; import org.jmol.g3d.Graphics3D; +import java.util.Hashtable; class Bond { @@ -131,11 +132,55 @@ return order; } + String getOrderName() { + switch (order) { + case 1: + return "single"; + case 2: + return "double"; + case 3: + return "triple"; + case 4: + return "aromatic"; + } + if ((order & JmolConstants.BOND_HYDROGEN_MASK) != 0) + return "hbond"; + return "unknown"; + } + short getColix1() { return Graphics3D.inheritColix(colix, atom1.colixAtom); } + int getArgb1() { + return atom1.group.chain.frame.viewer.getColixArgb(getColix1()); + } + short getColix2() { return Graphics3D.inheritColix(colix, atom2.colixAtom); } + + int getArgb2() { + return atom1.group.chain.frame.viewer.getColixArgb(getColix2()); + } + + //////////////////////////////////////////////////////////////// + + Hashtable getPublicProperties() { + Hashtable ht = new Hashtable(); + ht.put("atomIndexA", new Integer(atom1.atomIndex)); + ht.put("atomIndexB", new Integer(atom2.atomIndex)); + ht.put("argbA", new Integer(getArgb1())); + ht.put("argbB", new Integer(getArgb2())); + ht.put("order", getOrderName()); + ht.put("radius", new Double(getRadius())); + ht.put("modelIndex", new Integer(atom1.modelIndex)); + ht.put("xA", new Double(atom1.point3f.x)); + ht.put("yA", new Double(atom1.point3f.y)); + ht.put("zA", new Double(atom1.point3f.z)); + ht.put("xB", new Double(atom2.point3f.x)); + ht.put("yB", new Double(atom2.point3f.y)); + ht.put("zB", new Double(atom2.point3f.z)); + return ht; + } } Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2006-03-26 18:37:33 UTC (rev 4708) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2006-03-26 21:07:32 UTC (rev 4709) @@ -699,6 +699,10 @@ refresh(0, "Viewer:setSelectionArgb()"); } + int getColixArgb(short colix) { + return g3d.getColixArgb(colix); + } + short getColixSelection() { return colorManager.getColixSelection(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-28 12:06:57
|
Revision: 4827 Author: migueljmol Date: 2006-03-28 04:06:47 -0800 (Tue, 28 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4827&view=rev Log Message: ----------- r4706 r4707 eclipse warnings + JUnit for V3000 Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java trunk/Jmol/test/org/jmol/adapter/smarter/TestSmarterJmolAdapter.java Modified: trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java 2006-03-28 11:18:58 UTC (rev 4826) +++ trunk/Jmol/src/org/jmol/adapter/smarter/V3000Reader.java 2006-03-28 12:06:47 UTC (rev 4827) @@ -24,8 +24,6 @@ package org.jmol.adapter.smarter; -import org.jmol.api.JmolAdapter; - import java.io.BufferedReader; /** @@ -125,7 +123,7 @@ String line = readLineWithContinuation(reader); if (line == null || (! line.startsWith("M V30 "))) throw new Exception("unrecognized bond"); - int bondSerial = parseInt(line, 7); // currently unused + /*int bondSerial = */parseInt(line, 7); // currently unused int order = parseInt(line, ichNextParse); int atomSerial1 = parseInt(line, ichNextParse); int atomSerial2 = parseInt(line, ichNextParse); Modified: trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java 2006-03-28 11:18:58 UTC (rev 4826) +++ trunk/Jmol/src/org/jmol/viewer/BallsRenderer.java 2006-03-28 12:06:47 UTC (rev 4827) @@ -24,8 +24,6 @@ package org.jmol.viewer; -import org.jmol.g3d.*; - class BallsRenderer extends ShapeRenderer { int minX, maxX, minY, maxY; Modified: trunk/Jmol/test/org/jmol/adapter/smarter/TestSmarterJmolAdapter.java =================================================================== --- trunk/Jmol/test/org/jmol/adapter/smarter/TestSmarterJmolAdapter.java 2006-03-28 11:18:58 UTC (rev 4826) +++ trunk/Jmol/test/org/jmol/adapter/smarter/TestSmarterJmolAdapter.java 2006-03-28 12:06:47 UTC (rev 4827) @@ -424,6 +424,13 @@ } /** + * Test for reading files in v3000/ + */ + public void testV3000() { + checkOpenFile("v3000", "WO0119816T.sdf"); + } + + /** * Test for reading files in xyz/ */ public void testXyz() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-28 12:55:30
|
Revision: 4829 Author: migueljmol Date: 2006-03-28 04:55:21 -0800 (Tue, 28 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4829&view=rev Log Message: ----------- r4709 preliminary work on getPublicProperties Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Atom.java trunk/Jmol/src/org/jmol/viewer/Bond.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/viewer/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-03-28 12:30:10 UTC (rev 4828) +++ trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-03-28 12:55:21 UTC (rev 4829) @@ -517,6 +517,10 @@ return colixAtom; } + int getArgb() { + return group.chain.frame.viewer.getColixArgb(colixAtom); + } + float getRadius() { if (madAtom == JmolConstants.MAR_DELETED) return 0; @@ -1001,4 +1005,20 @@ boolean isPyrimidine() { return group.isPyrimidine(); } + + //////////////////////////////////////////////////////////////// + + Hashtable getPublicProperties() { + Hashtable ht = new Hashtable(); + ht.put("element", getElementSymbol()); + ht.put("x", new Double(point3f.x)); + ht.put("y", new Double(point3f.y)); + ht.put("z", new Double(point3f.z)); + ht.put("atomIndex", new Integer(atomIndex)); + ht.put("modelIndex", new Integer(modelIndex)); + ht.put("argb", new Integer(getArgb())); + ht.put("radius", new Double(getRadius())); + ht.put("atomNumber", new Integer(getAtomNumber())); + return ht; + } } Modified: trunk/Jmol/src/org/jmol/viewer/Bond.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Bond.java 2006-03-28 12:30:10 UTC (rev 4828) +++ trunk/Jmol/src/org/jmol/viewer/Bond.java 2006-03-28 12:55:21 UTC (rev 4829) @@ -25,6 +25,7 @@ package org.jmol.viewer; import org.jmol.g3d.Graphics3D; +import java.util.Hashtable; class Bond { @@ -109,12 +110,56 @@ return order; } + String getOrderName() { + switch (order) { + case 1: + return "single"; + case 2: + return "double"; + case 3: + return "triple"; + case 4: + return "aromatic"; + } + if ((order & JmolConstants.BOND_HYDROGEN_MASK) != 0) + return "hbond"; + return "unknown"; + } + short getColix1() { return Graphics3D.inheritColix(colix, atom1.colixAtom); } + int getArgb1() { + return atom1.group.chain.frame.viewer.getColixArgb(getColix1()); + } + short getColix2() { return Graphics3D.inheritColix(colix, atom2.colixAtom); } + + int getArgb2() { + return atom1.group.chain.frame.viewer.getColixArgb(getColix2()); + } + + //////////////////////////////////////////////////////////////// + + Hashtable getPublicProperties() { + Hashtable ht = new Hashtable(); + ht.put("atomIndexA", new Integer(atom1.atomIndex)); + ht.put("atomIndexB", new Integer(atom2.atomIndex)); + ht.put("argbA", new Integer(getArgb1())); + ht.put("argbB", new Integer(getArgb2())); + ht.put("order", getOrderName()); + ht.put("radius", new Double(getRadius())); + ht.put("modelIndex", new Integer(atom1.modelIndex)); + ht.put("xA", new Double(atom1.point3f.x)); + ht.put("yA", new Double(atom1.point3f.y)); + ht.put("zA", new Double(atom1.point3f.z)); + ht.put("xB", new Double(atom2.point3f.x)); + ht.put("yB", new Double(atom2.point3f.y)); + ht.put("zB", new Double(atom2.point3f.z)); + return ht; + } } Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2006-03-28 12:30:10 UTC (rev 4828) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2006-03-28 12:55:21 UTC (rev 4829) @@ -605,6 +605,10 @@ refresh(); } + int getColixArgb(short colix) { + return g3d.getColixArgb(colix); + } + short getColixSelection() { return colorManager.getColixSelection(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-29 15:32:29
|
Revision: 4838 Author: migueljmol Date: 2006-03-29 07:32:26 -0800 (Wed, 29 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4838&view=rev Log Message: ----------- reintroduce compiler support for multiple embedded expressions Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-28 21:00:35 UTC (rev 4837) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-29 15:32:26 UTC (rev 4838) @@ -665,6 +665,9 @@ private boolean badArgumentCount() { return compileError("bad argument count"); } + private boolean expressionExpected() { + return compileError("expression expected"); + } private boolean endOfExpressionExpected() { return compileError("end of expression expected"); } @@ -755,9 +758,16 @@ } atokenCommand = new Token[ltoken.size()]; ltoken.copyInto(atokenCommand); - if ((tokCommand & (Token.expressionCommand|Token.embeddedExpression)) != 0 - && !compileExpression()) - return false; + if ((tokCommand & Token.expressionCommand) != 0) { + if (! compileExpression()) + return false; + } + else if ((tokCommand & Token.embeddedExpressions) != 0) { + int embeddedExpressionCount = compileEmbeddedExpressions(); + if (embeddedExpressionCount < 0) + return false; + System.out.println("embeddedExpressionCount=" + embeddedExpressionCount); + } if ((tokCommand & Token.colorparam) != 0 && !compileColorParam()) return false; if ((tokenCommand.intValue & Token.varArgCount) == 0 && @@ -832,24 +842,34 @@ */ - private boolean compileExpression() { + boolean compileExpression() { + int itokenStart = atokenCommand[0].tok == Token.define ? 2 : 1; + int itokenEnd = compileExpression(itokenStart); + if (itokenEnd < 0) + return false; + if (itokenEnd != atokenCommand.length) + return endOfExpressionExpected(); + return true; + } + + // -1 == error, >= 0 is count of embedded expressions + int compileEmbeddedExpressions() { + int expressionCount = 0; int i = 1; - int tokCommand = atokenCommand[0].tok; - if (tokCommand == Token.define) - i = 2; - else if ((tokCommand & Token.embeddedExpression) != 0) { - // look for the open parenthesis - while (i < atokenCommand.length && - atokenCommand[i].tok != Token.leftparen) + while (i < atokenCommand.length) { + if (atokenCommand[i].tok != Token.leftparen) { ++i; + } else { + i = compileExpression(i); + if (i < 0) // error + return -1; + ++expressionCount; + } } - if (i >= atokenCommand.length) - return true; - return compileExpression(i); + return expressionCount; } Vector ltokenPostfix = null; - Token[] atokenInfix; int itokenInfix; boolean addTokenToPostfix(Token token) { @@ -857,36 +877,35 @@ return true; } - boolean compileExpression(int itoken) { + // -1 == error, + == next token index; + int compileExpression(int itoken) { ltokenPostfix = new Vector(); + if (itoken >= atokenCommand.length) { + expressionExpected(); + return -1; + } for (int i = 0; i < itoken; ++i) addTokenToPostfix(atokenCommand[i]); - atokenInfix = atokenCommand; itokenInfix = itoken; addTokenToPostfix(Token.tokenExpressionBegin); if (! clauseOr()) - return false; + return -1; addTokenToPostfix(Token.tokenExpressionEnd); - if (itokenInfix != atokenInfix.length) { - /* - System.out.println("itokenInfix=" + itokenInfix + " atokenInfix.length=" - + atokenInfix.length); - for (int i = 0; i < atokenInfix.length; ++i) { - System.out.println("" + i + ":" + atokenInfix[i]); - } - */ - return endOfExpressionExpected(); - } + int returnIndex = ltokenPostfix.size(); + // preserve any tokens after this compiled expression + for (Token nextToken = null; (nextToken = tokenNext()) != null; ) + addTokenToPostfix(nextToken); atokenCommand = new Token[ltokenPostfix.size()]; ltokenPostfix.copyInto(atokenCommand); - return true; + ltokenPostfix = null; + return returnIndex; } Token tokenNext() { - if (itokenInfix == atokenInfix.length) + if (itokenInfix == atokenCommand.length) return null; - return atokenInfix[itokenInfix++]; + return atokenCommand[itokenInfix++]; } boolean isNextToken(int tok) { @@ -895,15 +914,15 @@ } Object valuePeek() { - if (itokenInfix == atokenInfix.length) + if (itokenInfix == atokenCommand.length) return null; - return atokenInfix[itokenInfix].value; + return atokenCommand[itokenInfix].value; } int tokPeek() { - if (itokenInfix == atokenInfix.length) + if (itokenInfix == atokenCommand.length) return 0; - return atokenInfix[itokenInfix].tok; + return atokenCommand[itokenInfix].tok; } boolean clauseOr() { Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2006-03-28 21:00:35 UTC (rev 4837) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2006-03-29 15:32:26 UTC (rev 4838) @@ -72,7 +72,7 @@ final static int command = (1 << 8); final static int expressionCommand = (1 << 9); // expression command - final static int embeddedExpression= (1 << 10); // embedded expression + final static int embeddedExpressions= (1 << 10); // embedded expressions final static int setparam = (1 << 11); // parameter to set command final static int showparam = (1 << 12); // parameter to show command final static int bool = (1 << 13); @@ -109,7 +109,7 @@ final static int center = command | 4 | showparam | expressionCommand; final static int clipboard = command | 5; final static int color = command | 6 | colorparam | setparam; - final static int connect = command | 7 | embeddedExpression; + final static int connect = command | 7 | embeddedExpressions; final static int define = command | 9 | expressionCommand; final static int dots = command | 10 | bool; final static int echo = command | 11 | setparam | specialstring; @@ -173,7 +173,7 @@ final static int bondorder = command | 89; final static int console = command | 90; final static int pmesh = command | 91; - final static int polyhedra = command | 92 | embeddedExpression; + final static int polyhedra = command | 92 | embeddedExpressions; final static int centerAt = command | 93; final static int isosurface = command | 94; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-29 23:59:23
|
Revision: 4842 Author: migueljmol Date: 2006-03-29 15:59:14 -0800 (Wed, 29 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4842&view=rev Log Message: ----------- reintroduction of 'connect' functionality prior to deleting bondorder Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Atom.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Sticks.java Modified: trunk/Jmol/src/org/jmol/viewer/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-03-29 21:12:26 UTC (rev 4841) +++ trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-03-29 23:59:14 UTC (rev 4842) @@ -140,14 +140,18 @@ } boolean isBonded(Atom atomOther) { + return getBond(atomOther) != null; + } + + Bond getBond(Atom atomOther) { if (bonds != null) for (int i = bonds.length; --i >= 0; ) { Bond bond = bonds[i]; if ((bond.atom1 == atomOther) || (bond.atom2 == atomOther)) - return true; + return bond; } - return false; + return null; } Bond bondMutually(Atom atomOther, short order, Frame frame) { Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-03-29 21:12:26 UTC (rev 4841) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-03-29 23:59:14 UTC (rev 4842) @@ -825,6 +825,7 @@ return copy; } + int pcLastExpressionInstruction; BitSet expression(Token[] code, int pcStart) throws ScriptException { int numberOfAtoms = viewer.getAtomCount(); BitSet bs; @@ -840,8 +841,9 @@ switch (instruction.tok) { case Token.expressionBegin: break; - case Token.expressionEnd: - break expression_loop; + case Token.expressionEnd: + pcLastExpressionInstruction = pc; + break expression_loop; case Token.all: bs = stack[sp++] = new BitSet(numberOfAtoms); for (int i = numberOfAtoms; --i >= 0; ) @@ -3334,41 +3336,45 @@ void bondorder() throws ScriptException { Token tokenArg = statement[1]; - short order = 0; + int intOrder = 0; + String stringOrder = null; + switch_tag: switch (tokenArg.tok) { case Token.integer: - order = (short)tokenArg.intValue; - if (order < 0 || order > 3) + intOrder = (int)tokenArg.intValue; + if (intOrder < 0 || intOrder > 3) invalidArgument(); + stringOrder = JmolConstants.bondOrderNames[intOrder]; break; - case Token.hbond: - order = JmolConstants.BOND_H_REGULAR; - break; case Token.decimal: float f = ((Float)tokenArg.value).floatValue(); - if (f == (short)f) { - order = (short)f; - if (order < 0 || order > 3) + if (f == (int)f) { + intOrder = (int)f; + if (intOrder < 0 || intOrder > 3) invalidArgument(); + stringOrder = JmolConstants.bondOrderNames[intOrder]; } else if (f == 0.5f) - order = JmolConstants.BOND_H_REGULAR; + stringOrder = "hbond"; else if (f == 1.5f) - order = JmolConstants.BOND_AROMATIC; + stringOrder = "aromatic"; else invalidArgument(); break; + case Token.none: + case Token.hbond: case Token.identifier: - if ("aromatic".equalsIgnoreCase((String)tokenArg.value)) { - order = JmolConstants.BOND_AROMATIC; - break; - } + String str = (String)tokenArg.value; + for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) + if (str.equalsIgnoreCase(JmolConstants.bondOrderNames[i])) { + stringOrder = JmolConstants.bondOrderNames[i]; + break switch_tag; + } // fall into default: invalidArgument(); } viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, - "bondOrder", - new Short(order)); + "bondOrder", stringOrder); } void console() { @@ -3645,7 +3651,7 @@ void connect() throws ScriptException { viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, - "maxDistance", new Float(100000000f)); + "resetConnectParameters", null); if (statementLength == 1) { viewer.rebond(); return; @@ -3653,41 +3659,53 @@ for (int i = 1; i < statementLength; ++i) { String propertyName = null; Object propertyValue = null; + switch_tag: switch (statement[i].tok) { case Token.on: case Token.off: viewer.rebond(); return; case Token.integer: - propertyName = "maxDistance"; + propertyName = "connectDistance"; propertyValue = new Float(statement[i].intValue); break; case Token.decimal: - propertyName = "maxDistance"; + propertyName = "connectDistance"; propertyValue = statement[i].value; + System.out.println("Token.decimal " + + propertyName + ":" + statement[i].value); break; case Token.expressionBegin: - propertyName = "targetSet"; + propertyName = "connectSet"; propertyValue = expression(statement, i); - // hack for now; - i = statement.length; + i = pcLastExpressionInstruction; // the for loop will increment i break; case Token.identifier: case Token.hbond: - String cmd = ((String)statement[i].value).toLowerCase(); - if (cmd.equals("single") || - cmd.equals("double") || - cmd.equals("triple") || - cmd.equals("aromatic") || - cmd.equals("hbond")) { - propertyName = "bondOrder"; - propertyValue = cmd; - } else { + String cmd = (String)statement[i].value; + for (int j = JmolConstants.bondOrderNames.length; --j >= 0; ) { + if (cmd.equalsIgnoreCase(JmolConstants.bondOrderNames[j])) { + cmd = JmolConstants.bondOrderNames[j]; + propertyName = "connectBondOrder"; + propertyValue = cmd; + break switch_tag; + } + } + // we need to come up with a word better than 'static' + if ("formOnly".equalsIgnoreCase(cmd)) + propertyValue = "formOnly"; + else if ("modifyOnly".equalsIgnoreCase(cmd)) + propertyValue = "modifyOnly"; + else if ("formAndModify".equalsIgnoreCase(cmd)) + propertyValue = "formAndModify"; + else unrecognizedSubcommand(); - } + propertyName = "connectOperation"; break; + case Token.none: case Token.delete: - propertyName = "delete"; + propertyName = "connectOperation"; + propertyValue = "delete"; break; default: invalidArgument(); @@ -3695,5 +3713,7 @@ viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, propertyName, propertyValue); } + viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, + "applyConnectParameters", null); } } Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-03-29 21:12:26 UTC (rev 4841) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-03-29 23:59:14 UTC (rev 4842) @@ -107,11 +107,11 @@ public final static short BOND_ALL_MASK = (short)0xFFFF; final static String[] bondOrderNames = { - "single", "double", "triple", "aromatic", "hbond", + "none", "single", "double", "triple", "aromatic", "hbond", }; final static short[] bondOrderValues = { - BOND_COVALENT_SINGLE, BOND_COVALENT_DOUBLE, BOND_COVALENT_TRIPLE, + 0, BOND_COVALENT_SINGLE, BOND_COVALENT_DOUBLE, BOND_COVALENT_TRIPLE, BOND_AROMATIC, BOND_H_REGULAR, }; Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-03-29 21:12:26 UTC (rev 4841) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-03-29 23:59:14 UTC (rev 4842) @@ -32,8 +32,19 @@ class Sticks extends Shape { - float maxBondingDistance; + final float[] connectDistances = new float[2]; + int connectDistanceCount; + final BitSet[] connectSets = new BitSet[2]; + int connectSetCount; + // initialized to -1; + // for delete this means 'delete all' + // for connect this gets turned into 'single' + short connectBondOrder; + int connectOperation; + private final static float DEFAULT_MAX_CONNECT_DISTANCE = 100000000f; + private final static float DEFAULT_MIN_CONNECT_DISTANCE = 0.1f; + void setSize(int size, BitSet bsSelected) { short mad = (short)size; setMadBond(mad, JmolConstants.BOND_COVALENT_MASK, bsSelected); @@ -55,31 +66,64 @@ return; } if ("bondOrder" == propertyName) { - if (value instanceof Short) { - short order = ((Short)value).shortValue(); - setOrderBond(order, bsSelected); - } - if (value instanceof String) { - String str = (String)value; - for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) - if (str.equals(JmolConstants.bondOrderNames[i])) - setOrderBond(JmolConstants.bondOrderValues[i], bsSelected); - } + short bondorder = bondOrderFromString((String)value); + if (bondorder == 0) + deleteBonds(bsSelected); + else if (bondorder > 0) + setOrderBond(bondorder, bsSelected); + else + System.out.println("unrecognized bond order name:" + value); return; } - if ("delete" == propertyName) { - deleteSelectedBonds(bsSelected); + if ("resetConnectParameters" == propertyName) { + connectDistanceCount = 0; + connectSetCount = 0; + connectBondOrder = -1; + connectOperation = FORM_AND_MODIFY; return; } - if ("maxDistance" == propertyName) { - maxBondingDistance = ((Float)value).floatValue(); + if ("connectDistance" == propertyName) { + if (connectDistanceCount < connectDistances.length) + connectDistances[connectDistanceCount++] = ((Float)value).floatValue(); + else + System.out.println("too many connect distances specified"); return; } - if ("targetSet" == propertyName) { - BitSet bsTarget = (BitSet)value; - addBonds(maxBondingDistance, bsSelected, bsTarget); + if ("connectSet" == propertyName) { + if (connectSetCount < connectSets.length) + connectSets[connectSetCount++] = (BitSet)value; + else + System.out.println("too many connect sets specified"); return; } + if ("connectBondOrder" == propertyName) { + connectBondOrder = bondOrderFromString((String)value); + return; + } + if ("connectOperation" == propertyName) { + connectOperation = connectOperationFromString((String)value); + return; + } + if ("applyConnectParameters" == propertyName) { + if (connectDistanceCount < 2) { + if (connectDistanceCount == 0) + connectDistances[0] = DEFAULT_MAX_CONNECT_DISTANCE; + connectDistances[1] = connectDistances[0]; + connectDistances[0] = DEFAULT_MIN_CONNECT_DISTANCE; + } + if (connectSetCount < 2) { + if (connectSetCount == 0) + connectSets[0] = bsSelected; + connectSets[1] = connectSets[0]; + connectSets[0] = bsSelected; + } + if (connectOperation >= 0) + makeConnections(connectDistances[0], connectDistances[1], + connectBondOrder, connectOperation, + connectSets[0], connectSets[1]); + return; + } + super.setProperty(propertyName, value, bsSelected); } void setMadBond(short mad, short bondTypeMask, BitSet bs) { @@ -107,13 +151,19 @@ iter.next().setTranslucent(isTranslucent); } + // note that the iterator in setBondOrder uses the global bondmodeOr flag void setOrderBond(short order, BitSet bs) { + if (order == 0) { + deleteBonds(bs); + return; + } BondIterator iter = frame.getBondIterator(JmolConstants.BOND_ALL_MASK, bs); while (iter.hasNext()) iter.next().setOrder(order); } - void deleteSelectedBonds(BitSet bs) { + // note that the iterator in deleteBonds uses the global bondmodeOr flag + void deleteBonds(BitSet bs) { BondIterator iter = frame.getBondIterator(JmolConstants.BOND_ALL_MASK, bs); BitSet bsDelete = new BitSet(); while (iter.hasNext()) { @@ -123,9 +173,23 @@ frame.deleteBonds(bsDelete); } - void addBonds(float maxDistance, BitSet bsA, BitSet bsB) { + private final static int DELETE_BONDS = 0; + private final static int FORM_ONLY = 1; + private final static int MODIFY_ONLY = 2; + private final static int FORM_AND_MODIFY = 3; + + void makeConnections(float minDistance, float maxDistance, + short order, int connectOperation, + BitSet bsA, BitSet bsB) { int atomCount = frame.atomCount; Atom[] atoms = frame.atoms; + if (connectOperation == DELETE_BONDS) { + deleteConnections(minDistance, maxDistance, order, bsA, bsB); + return; + } + if (order <= 0) + order = 1; // default + float minDistanceSquared = minDistance * minDistance; float maxDistanceSquared = maxDistance * maxDistance; for (int iA = atomCount; --iA >= 0; ) { if (! bsA.get(iA)) @@ -133,16 +197,79 @@ Atom atomA = atoms[iA]; Point3f pointA = atomA.point3f; for (int iB = atomCount; --iB >= 0; ) { + if (iB == iA) + continue; if (! bsB.get(iB)) continue; - if (iB == iA || - (iB < iA && bsA.get(iB) && bsB.get(iA))) + Atom atomB = atoms[iB]; + if (atomA.modelIndex != atomB.modelIndex) continue; - Atom atomB = atoms[iB]; + Bond bondAB = atomA.getBond(atomB); + if (FORM_ONLY == connectOperation && bondAB != null) + continue; + if (MODIFY_ONLY==connectOperation && bondAB == null) + continue; float distanceSquared = pointA.distanceSquared(atomB.point3f); - if (distanceSquared <= maxDistanceSquared) - frame.bondAtoms(atomA, atomB, JmolConstants.BOND_COVALENT_SINGLE); + if (distanceSquared < minDistanceSquared || + distanceSquared > maxDistanceSquared) + continue; + if (bondAB != null) + bondAB.setOrder(order); + else + frame.bondAtoms(atomA, atomB, order); + BitSet bsTwoAtoms=new BitSet(); } } } + + void deleteConnections(float minDistance, float maxDistance, short order, + BitSet bsA, BitSet bsB) { + int bondCount = frame.bondCount; + Bond[] bonds = frame.bonds; + BitSet bsDelete = new BitSet(); + float minDistanceSquared = minDistance * minDistance; + float maxDistanceSquared = maxDistance * maxDistance; + for (int i = bondCount; --i >= 0; ) { + Bond bond = bonds[i]; + Atom atom1 = bond.atom1; + Atom atom2 = bond.atom2; + if (bsA.get(atom1.atomIndex) && bsB.get(atom2.atomIndex) || + bsA.get(atom2.atomIndex) && bsB.get(atom1.atomIndex)) { + if (bond.atom1.isBonded(bond.atom2)) { + float distanceSquared = atom1.point3f.distanceSquared(atom2.point3f); + if (distanceSquared >= minDistanceSquared && + distanceSquared <= maxDistanceSquared) + if (order <= 0 || // order defaulted to -1 + order == bond.order || + (order & bond.order & JmolConstants.BOND_HYDROGEN_MASK) != 0) + bsDelete.set(i); + } + } + } + frame.deleteBonds(bsDelete); + } + + short bondOrderFromString(String bondOrderString) { + if (bondOrderString == null) + return 0; // we will interpret null string as none/delete + for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) { + if (bondOrderString.equalsIgnoreCase(JmolConstants.bondOrderNames[i])) + return JmolConstants.bondOrderValues[i]; + } + return -1; + } + + int connectOperationFromString(String connectOperationString) { + if ("delete".equalsIgnoreCase(connectOperationString)) + return DELETE_BONDS; + if ("formOnly".equalsIgnoreCase(connectOperationString)) + return FORM_ONLY; + if ("modifyOnly".equalsIgnoreCase(connectOperationString)) + return MODIFY_ONLY; + if ("formAndModify".equalsIgnoreCase(connectOperationString)) + return FORM_AND_MODIFY; + System.out.println("unrecognized connect operation:" + + connectOperationString); + return -1; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-30 02:49:38
|
Revision: 4843 Author: migueljmol Date: 2006-03-29 18:49:30 -0800 (Wed, 29 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4843&view=rev Log Message: ----------- eliminated bondorder command ... connect does a better job Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Sticks.java trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-29 23:59:14 UTC (rev 4842) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-30 02:49:30 UTC (rev 4843) @@ -766,7 +766,6 @@ int embeddedExpressionCount = compileEmbeddedExpressions(); if (embeddedExpressionCount < 0) return false; - System.out.println("embeddedExpressionCount=" + embeddedExpressionCount); } if ((tokCommand & Token.colorparam) != 0 && !compileColorParam()) return false; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-03-29 23:59:14 UTC (rev 4842) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-03-30 02:49:30 UTC (rev 4843) @@ -465,9 +465,6 @@ case Token.moveto: moveto(); break; - case Token.bondorder: - bondorder(); - break; case Token.console: console(); break; @@ -3334,49 +3331,6 @@ viewer.setRotation(matrixEnd); } - void bondorder() throws ScriptException { - Token tokenArg = statement[1]; - int intOrder = 0; - String stringOrder = null; - switch_tag: - switch (tokenArg.tok) { - case Token.integer: - intOrder = (int)tokenArg.intValue; - if (intOrder < 0 || intOrder > 3) - invalidArgument(); - stringOrder = JmolConstants.bondOrderNames[intOrder]; - break; - case Token.decimal: - float f = ((Float)tokenArg.value).floatValue(); - if (f == (int)f) { - intOrder = (int)f; - if (intOrder < 0 || intOrder > 3) - invalidArgument(); - stringOrder = JmolConstants.bondOrderNames[intOrder]; - } else if (f == 0.5f) - stringOrder = "hbond"; - else if (f == 1.5f) - stringOrder = "aromatic"; - else - invalidArgument(); - break; - case Token.none: - case Token.hbond: - case Token.identifier: - String str = (String)tokenArg.value; - for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) - if (str.equalsIgnoreCase(JmolConstants.bondOrderNames[i])) { - stringOrder = JmolConstants.bondOrderNames[i]; - break switch_tag; - } - // fall into - default: - invalidArgument(); - } - viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, - "bondOrder", stringOrder); - } - void console() { viewer.showConsole(statement[1].tok == Token.on); } @@ -3672,8 +3626,6 @@ case Token.decimal: propertyName = "connectDistance"; propertyValue = statement[i].value; - System.out.println("Token.decimal " + - propertyName + ":" + statement[i].value); break; case Token.expressionBegin: propertyName = "connectSet"; @@ -3691,13 +3643,12 @@ break switch_tag; } } - // we need to come up with a word better than 'static' - if ("formOnly".equalsIgnoreCase(cmd)) - propertyValue = "formOnly"; - else if ("modifyOnly".equalsIgnoreCase(cmd)) - propertyValue = "modifyOnly"; - else if ("formAndModify".equalsIgnoreCase(cmd)) - propertyValue = "formAndModify"; + if ("modify".equalsIgnoreCase(cmd)) + propertyValue = "modify"; + else if ("create".equalsIgnoreCase(cmd)) + propertyValue = "create"; + else if ("modifyOrCreate".equalsIgnoreCase(cmd)) + propertyValue = "modifyOrCreate"; else unrecognizedSubcommand(); propertyName = "connectOperation"; Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-03-29 23:59:14 UTC (rev 4842) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-03-30 02:49:30 UTC (rev 4843) @@ -107,11 +107,11 @@ public final static short BOND_ALL_MASK = (short)0xFFFF; final static String[] bondOrderNames = { - "none", "single", "double", "triple", "aromatic", "hbond", + "single", "double", "triple", "aromatic", "hbond", }; final static short[] bondOrderValues = { - 0, BOND_COVALENT_SINGLE, BOND_COVALENT_DOUBLE, BOND_COVALENT_TRIPLE, + BOND_COVALENT_SINGLE, BOND_COVALENT_DOUBLE, BOND_COVALENT_TRIPLE, BOND_AROMATIC, BOND_H_REGULAR, }; Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-03-29 23:59:14 UTC (rev 4842) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-03-30 02:49:30 UTC (rev 4843) @@ -65,21 +65,11 @@ JmolConstants.BOND_COVALENT_MASK, bsSelected); return; } - if ("bondOrder" == propertyName) { - short bondorder = bondOrderFromString((String)value); - if (bondorder == 0) - deleteBonds(bsSelected); - else if (bondorder > 0) - setOrderBond(bondorder, bsSelected); - else - System.out.println("unrecognized bond order name:" + value); - return; - } if ("resetConnectParameters" == propertyName) { connectDistanceCount = 0; connectSetCount = 0; connectBondOrder = -1; - connectOperation = FORM_AND_MODIFY; + connectOperation = MODIFY_OR_CREATE; return; } if ("connectDistance" == propertyName) { @@ -151,36 +141,19 @@ iter.next().setTranslucent(isTranslucent); } - // note that the iterator in setBondOrder uses the global bondmodeOr flag - void setOrderBond(short order, BitSet bs) { - if (order == 0) { - deleteBonds(bs); - return; - } - BondIterator iter = frame.getBondIterator(JmolConstants.BOND_ALL_MASK, bs); - while (iter.hasNext()) - iter.next().setOrder(order); - } + private final static int DELETE_BONDS = 0; + private final static int MODIFY_ONLY = 1; + private final static int CREATE_ONLY = 2; + private final static int MODIFY_OR_CREATE = 3; - // note that the iterator in deleteBonds uses the global bondmodeOr flag - void deleteBonds(BitSet bs) { - BondIterator iter = frame.getBondIterator(JmolConstants.BOND_ALL_MASK, bs); - BitSet bsDelete = new BitSet(); - while (iter.hasNext()) { - bsDelete.set(iter.nextIndex()); - iter.next(); - } - frame.deleteBonds(bsDelete); - } - - private final static int DELETE_BONDS = 0; - private final static int FORM_ONLY = 1; - private final static int MODIFY_ONLY = 2; - private final static int FORM_AND_MODIFY = 3; - void makeConnections(float minDistance, float maxDistance, short order, int connectOperation, BitSet bsA, BitSet bsB) { + /* + System.out.println("makeConnections(" + minDistance + "," + + maxDistance + "," + order + "," + connectOperation + + "," + bsA + "," + bsB + ")";) + */ int atomCount = frame.atomCount; Atom[] atoms = frame.atoms; if (connectOperation == DELETE_BONDS) { @@ -205,9 +178,9 @@ if (atomA.modelIndex != atomB.modelIndex) continue; Bond bondAB = atomA.getBond(atomB); - if (FORM_ONLY == connectOperation && bondAB != null) + if (MODIFY_ONLY == connectOperation && bondAB == null) continue; - if (MODIFY_ONLY==connectOperation && bondAB == null) + if (CREATE_ONLY == connectOperation && bondAB != null) continue; float distanceSquared = pointA.distanceSquared(atomB.point3f); if (distanceSquared < minDistanceSquared || @@ -250,24 +223,23 @@ } short bondOrderFromString(String bondOrderString) { - if (bondOrderString == null) - return 0; // we will interpret null string as none/delete - for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) { - if (bondOrderString.equalsIgnoreCase(JmolConstants.bondOrderNames[i])) - return JmolConstants.bondOrderValues[i]; - } - return -1; + if (bondOrderString != null) + for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) { + if (bondOrderString.equalsIgnoreCase(JmolConstants.bondOrderNames[i])) + return JmolConstants.bondOrderValues[i]; + } + return 0; } int connectOperationFromString(String connectOperationString) { if ("delete".equalsIgnoreCase(connectOperationString)) return DELETE_BONDS; - if ("formOnly".equalsIgnoreCase(connectOperationString)) - return FORM_ONLY; - if ("modifyOnly".equalsIgnoreCase(connectOperationString)) + if ("modify".equalsIgnoreCase(connectOperationString)) return MODIFY_ONLY; - if ("formAndModify".equalsIgnoreCase(connectOperationString)) - return FORM_AND_MODIFY; + if ("create".equalsIgnoreCase(connectOperationString)) + return CREATE_ONLY; + if ("createOrModify".equalsIgnoreCase(connectOperationString)) + return MODIFY_OR_CREATE; System.out.println("unrecognized connect operation:" + connectOperationString); return -1; Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2006-03-29 23:59:14 UTC (rev 4842) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2006-03-30 02:49:30 UTC (rev 4843) @@ -170,12 +170,11 @@ final static int rocket = command | 86; final static int sasurface = command | 87; final static int moveto = command | 88 | negnums; - final static int bondorder = command | 89; - final static int console = command | 90; - final static int pmesh = command | 91; - final static int polyhedra = command | 92 | embeddedExpressions; - final static int centerAt = command | 93; - final static int isosurface = command | 94; + final static int console = command | 89; + final static int pmesh = command | 90; + final static int polyhedra = command | 91 | embeddedExpressions; + final static int centerAt = command | 92; + final static int isosurface = command | 93; // parameters final static int ambient = setparam | 0; @@ -488,7 +487,6 @@ "rockets", null, "sasurface", new Token(sasurface,varArgCount, "sasurface"), "moveto", new Token(moveto, varArgCount, "moveto"), - "bondorder", new Token(bondorder, 1, "bondorder"), "console", new Token(console, onDefault1, "console"), "pmesh", new Token(pmesh, varArgCount, "pmesh"), "polyhedra", new Token(polyhedra,varArgCount, "polyhedra"), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-30 22:17:11
|
Revision: 4857 Author: migueljmol Date: 2006-03-30 14:16:58 -0800 (Thu, 30 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4857&view=rev Log Message: ----------- hbonds are created with default bond diameter. Affects both files that contain hbonds and hbonds that are created with 'connect hbond' Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Bond.java trunk/Jmol/src/org/jmol/viewer/Frame.java Modified: trunk/Jmol/src/org/jmol/viewer/Bond.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Bond.java 2006-03-30 20:16:44 UTC (rev 4856) +++ trunk/Jmol/src/org/jmol/viewer/Bond.java 2006-03-30 22:16:58 UTC (rev 4857) @@ -53,9 +53,7 @@ } Bond(Atom atom1, Atom atom2, short order, Frame frame) { - this(atom1, atom2, order, - ((order & JmolConstants.BOND_HYDROGEN_MASK) != 0 - ? 0 : frame.viewer.getMadBond()), (short)0); + this(atom1, atom2, order, frame.viewer.getMadBond(), (short)0); } boolean isCovalent() { Modified: trunk/Jmol/src/org/jmol/viewer/Frame.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-03-30 20:16:44 UTC (rev 4856) +++ trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-03-30 22:16:58 UTC (rev 4857) @@ -541,8 +541,7 @@ loadShape(JmolConstants.SHAPE_BALLS); loadShape(JmolConstants.SHAPE_STICKS); - if (fileHasHbonds) - loadShape(JmolConstants.SHAPE_HSTICKS); + loadShape(JmolConstants.SHAPE_HSTICKS); loadShape(JmolConstants.SHAPE_MEASURES); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-02 13:12:53
|
Revision: 4868 Author: migueljmol Date: 2006-04-02 06:12:47 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4868&view=rev Log Message: ----------- no longer autocalc hydrogen bonds up 'hbond on' or for secondary structure identification. Explicit calculation will be moved under 'connect' command Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java trunk/Jmol/src/org/jmol/viewer/Hsticks.java Modified: trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java 2006-04-02 13:06:27 UTC (rev 4867) +++ trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java 2006-04-02 13:12:47 UTC (rev 4868) @@ -270,7 +270,6 @@ */ void calculateStructures() { - calcHydrogenBonds(); char[] structureTags = new char[monomerCount]; float[] phi_psi = new float[2]; Modified: trunk/Jmol/src/org/jmol/viewer/Hsticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Hsticks.java 2006-04-02 13:06:27 UTC (rev 4867) +++ trunk/Jmol/src/org/jmol/viewer/Hsticks.java 2006-04-02 13:12:47 UTC (rev 4868) @@ -33,7 +33,10 @@ void setSize(int size, BitSet bsSelected) { //System.out.println("Hsticks.setSize()"); - frame.calcHbonds(); + // miguel 2006 04 02 + // disable 'automatic' calculation of hbonds + // now integrated into 'connect' + //frame.calcHbonds(); short mad = (short)size; setMadBond(mad, JmolConstants.BOND_HYDROGEN_MASK, bsSelected); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-02 13:29:47
|
Revision: 4869 Author: migueljmol Date: 2006-04-02 06:29:42 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4869&view=rev Log Message: ----------- framework for 'connect auto', including 'connect auto hbond' Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Sticks.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-02 13:12:47 UTC (rev 4868) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-02 13:29:42 UTC (rev 4869) @@ -3655,6 +3655,8 @@ propertyValue = "create"; else if ("modifyOrCreate".equalsIgnoreCase(cmd)) propertyValue = "modifyOrCreate"; + else if ("auto".equalsIgnoreCase(cmd)) + propertyValue = "auto"; else unrecognizedSubcommand(); propertyName = "connectOperation"; Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 13:12:47 UTC (rev 4868) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 13:29:42 UTC (rev 4869) @@ -145,6 +145,7 @@ private final static int MODIFY_ONLY = 1; private final static int CREATE_ONLY = 2; private final static int MODIFY_OR_CREATE = 3; + private final static int AUTO_BOND = 4; void makeConnections(float minDistance, float maxDistance, short order, int connectOperation, @@ -160,6 +161,10 @@ deleteConnections(minDistance, maxDistance, order, bsA, bsB); return; } + if (connectOperation == AUTO_BOND) { + autoBond(minDistance, maxDistance, order, bsA, bsB); + return; + } if (order <= 0) order = 1; // default float minDistanceSquared = minDistance * minDistance; @@ -239,8 +244,18 @@ return CREATE_ONLY; if ("createOrModify".equalsIgnoreCase(connectOperationString)) return MODIFY_OR_CREATE; + if ("auto".equalsIgnoreCase(connectOperationString)) + return AUTO_BOND; System.out.println("unrecognized connect operation:" + connectOperationString); return -1; } + + void autoBond(float minDistance, float maxDistance, int order, + BitSet bsA, BitSet bsB) { + System.out.println("Sticks.autobond(" + minDistance + "," + + maxDistance + "," + order + "," + + "bitset:" + bsA.cardinality() + "," + + "bitset:" + bsB.cardinality()+ ")"); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-02 13:56:54
|
Revision: 4870 Author: migueljmol Date: 2006-04-02 06:56:46 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4870&view=rev Log Message: ----------- removed script references to viewer.rebond() Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Sticks.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-02 13:29:42 UTC (rev 4869) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-02 13:56:46 UTC (rev 4870) @@ -3613,7 +3613,8 @@ viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, "resetConnectParameters", null); if (statementLength == 1) { - viewer.rebond(); + viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, + "rasmolCompatibleConnect", null); return; } for (int i = 1; i < statementLength; ++i) { @@ -3623,7 +3624,8 @@ switch (statement[i].tok) { case Token.on: case Token.off: - viewer.rebond(); + viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, + "rasmolCompatibleConnect", null); return; case Token.integer: propertyName = "connectDistance"; @@ -3675,4 +3677,5 @@ viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, "applyConnectParameters", null); } + } Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 13:29:42 UTC (rev 4869) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 13:56:46 UTC (rev 4870) @@ -36,6 +36,7 @@ int connectDistanceCount; final BitSet[] connectSets = new BitSet[2]; int connectSetCount; + final private static short NULL_BOND_ORDER = -1; // initialized to -1; // for delete this means 'delete all' // for connect this gets turned into 'single' @@ -68,7 +69,7 @@ if ("resetConnectParameters" == propertyName) { connectDistanceCount = 0; connectSetCount = 0; - connectBondOrder = -1; + connectBondOrder = NULL_BOND_ORDER; connectOperation = MODIFY_OR_CREATE; return; } @@ -113,6 +114,16 @@ connectSets[0], connectSets[1]); return; } + if ("rasmolCompatibleConnect" == propertyName) { + // miguel 2006 04 02 + // use of 'connect', 'connect on', 'connect off' is deprecated + // I suggest that support be dropped at some point in the near future + frame.deleteAllBonds(); + makeConnections(DEFAULT_MIN_CONNECT_DISTANCE, + DEFAULT_MAX_CONNECT_DISTANCE, + NULL_BOND_ORDER, AUTO_BOND, null, null); + return; + } super.setProperty(propertyName, value, bsSelected); } @@ -254,8 +265,14 @@ void autoBond(float minDistance, float maxDistance, int order, BitSet bsA, BitSet bsB) { System.out.println("Sticks.autobond(" + minDistance + "," + - maxDistance + "," + order + "," + - "bitset:" + bsA.cardinality() + "," + - "bitset:" + bsB.cardinality()+ ")"); + maxDistance + "," + order + ",...)"); + if (bsA == null) + System.out.println(" bsA: null"); + else + System.out.println(" bsA: " + bsA.cardinality()); + if (bsB == null) + System.out.println(" bsB: null"); + else + System.out.println(" bsB: " + bsB.cardinality()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-02 14:46:59
|
Revision: 4875 Author: migueljmol Date: 2006-04-02 07:46:54 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4875&view=rev Log Message: ----------- simplified rebonding a wee bit Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Frame.java trunk/Jmol/src/org/jmol/viewer/Sticks.java Modified: trunk/Jmol/src/org/jmol/viewer/Frame.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-02 14:22:21 UTC (rev 4874) +++ trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-02 14:46:54 UTC (rev 4875) @@ -1156,7 +1156,7 @@ getModelSetProperty("noautobond") == null) { if ((bondCount == 0) || (modelSetTypeName == "pdb" && (bondCount < (atomCount / 2)))) - rebond(false); + rebond(); } } @@ -1167,12 +1167,6 @@ private float minBondDistance2; void rebond() { - rebond(true); - } - - void rebond(boolean deleteFirst) { - if (deleteFirst) - deleteAllBonds(); if (maxBondingRadius == Float.MIN_VALUE) findMaxRadii(); bondTolerance = viewer.getBondTolerance(); Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 14:22:21 UTC (rev 4874) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 14:46:54 UTC (rev 4875) @@ -119,9 +119,7 @@ // use of 'connect', 'connect on', 'connect off' is deprecated // I suggest that support be dropped at some point in the near future frame.deleteAllBonds(); - makeConnections(DEFAULT_MIN_CONNECT_DISTANCE, - DEFAULT_MAX_CONNECT_DISTANCE, - NULL_BOND_ORDER, AUTO_BOND, null, null); + frame.rebond(); return; } super.setProperty(propertyName, value, bsSelected); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-02 16:00:43
|
Revision: 4877 Author: migueljmol Date: 2006-04-02 09:00:39 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4877&view=rev Log Message: ----------- checkin before removing rebond() code Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Frame.java trunk/Jmol/src/org/jmol/viewer/Sticks.java Modified: trunk/Jmol/src/org/jmol/viewer/Frame.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-02 15:50:45 UTC (rev 4876) +++ trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-02 16:00:39 UTC (rev 4877) @@ -1251,6 +1251,94 @@ addBond(atomA.bondMutually(atomB, order, this)); } + // null values for bitsets means "all" + /* + * miguel 2006 04 02 + * + * this should be merged with the rebond() code above. + * however, it will be safer to leave the separate for + * now, given the pending 10.1 release + * + * leaving them separate will mean that the only uses who + * run this code will be those running 'connect' script commands + */ + void autoBond(BitSet bsA, BitSet bsB) { + System.out.println("Frame.autoBond(" + bsA + "," + bsB + ")"); + if (maxBondingRadius == Float.MIN_VALUE) + findMaxRadii(); + bondTolerance = viewer.getBondTolerance(); + minBondDistance = viewer.getMinBondDistance(); + minBondDistance2 = minBondDistance*minBondDistance; + + //char chainLast = '?'; + //int indexLastCA = -1; + //Atom atomLastCA = null; + + initializeBspf(); + + long timeBegin = 0; + if (showRebondTimes) + timeBegin = System.currentTimeMillis(); + /* + * miguel 2006 04 02 + * note that the way that these loops + iterators are constructed, + * everything assumes that all possible pairs of atoms are going to + * be looked at. + * for example, the hemisphere iterator will only look at atom indexes + * that are >= (or <= ?) the specified atom. + * if we are going to allow arbitrary sets bsA and bsB, then this will + * not work. + * so, for now I will do it the ugly way. + * maybe enhance/improve in the future + */ + for (int i = atomCount; --i >= 0; ) { + boolean isAtomInSetA = (bsA == null || bsA.get(i)); + boolean isAtomInSetB = (bsB == null || bsB.get(i)); + if (!isAtomInSetA & !isAtomInSetB) + continue; + Atom atom = atoms[i]; + // Covalent bonds + float myBondingRadius = atom.getBondingRadiusFloat(); + if (myBondingRadius == 0) + continue; + float searchRadius = + myBondingRadius + maxBondingRadius + bondTolerance; + SphereIterator iter = bspf.getSphereIterator(atom.modelIndex); + iter.initializeHemisphere(atom, searchRadius); + while (iter.hasMoreElements()) { + Atom atomNear = (Atom)iter.nextElement(); + if (atomNear == atom) + continue; + int atomIndexNear = atomNear.atomIndex; + boolean isNearInSetA = (bsA == null || bsA.get(atomIndexNear)); + boolean isNearInSetB = (bsB == null || bsB.get(atomIndexNear)); + if (!isNearInSetA & !isNearInSetB) + continue; + if (! (isAtomInSetA & isNearInSetB || + isAtomInSetB & isNearInSetA)) + continue; + short order = getBondOrder(atom, myBondingRadius, atomNear, + atomNear.getBondingRadiusFloat(), + iter.foundDistance2()); + if (order > 0) + checkValencesAndBond(atom, atomNear, order); + } + iter.release(); + } + + if (showRebondTimes) { + long timeEnd = System.currentTimeMillis(); + System.out.println("Time to autoBond=" + (timeEnd - timeBegin)); + } + } + + //////////////////////////////////////////////////////////////// + // hbond code + + void autoHbond(BitSet bsA, BitSet bsB) { + System.out.println("Frame.autoHbond(BitSet,BitSet) not yet implemented"); + } + float hbondMax = 3.25f; float hbondMin = 2.5f; float hbondMin2 = hbondMin * hbondMin; Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 15:50:45 UTC (rev 4876) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 16:00:39 UTC (rev 4877) @@ -119,7 +119,8 @@ // use of 'connect', 'connect on', 'connect off' is deprecated // I suggest that support be dropped at some point in the near future frame.deleteAllBonds(); - frame.rebond(); + // go ahead and test out the autoBond(null, null) code a bit + frame.autoBond(null, null); return; } super.setProperty(propertyName, value, bsSelected); @@ -156,6 +157,9 @@ private final static int MODIFY_OR_CREATE = 3; private final static int AUTO_BOND = 4; + private final static String[] connectOperationStrings = + { "delete", "modify", "create", "modifyOrCreate", "auto" }; + void makeConnections(float minDistance, float maxDistance, short order, int connectOperation, BitSet bsA, BitSet bsB) { @@ -171,7 +175,7 @@ return; } if (connectOperation == AUTO_BOND) { - autoBond(minDistance, maxDistance, order, bsA, bsB); + autoBond(order, bsA, bsB); return; } if (order <= 0) @@ -236,41 +240,28 @@ } short bondOrderFromString(String bondOrderString) { - if (bondOrderString != null) - for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) { - if (bondOrderString.equalsIgnoreCase(JmolConstants.bondOrderNames[i])) - return JmolConstants.bondOrderValues[i]; - } + for (int i = JmolConstants.bondOrderNames.length; --i >= 0; ) { + if (JmolConstants.bondOrderNames[i].equalsIgnoreCase(bondOrderString)) + return JmolConstants.bondOrderValues[i]; + } return 0; } int connectOperationFromString(String connectOperationString) { - if ("delete".equalsIgnoreCase(connectOperationString)) - return DELETE_BONDS; - if ("modify".equalsIgnoreCase(connectOperationString)) - return MODIFY_ONLY; - if ("create".equalsIgnoreCase(connectOperationString)) - return CREATE_ONLY; - if ("createOrModify".equalsIgnoreCase(connectOperationString)) - return MODIFY_OR_CREATE; - if ("auto".equalsIgnoreCase(connectOperationString)) - return AUTO_BOND; - System.out.println("unrecognized connect operation:" + - connectOperationString); - return -1; + int i; + for (i = connectOperationStrings.length; --i >= 0; ) + if (connectOperationStrings[i].equalsIgnoreCase(connectOperationString)) + break; + return i; } - void autoBond(float minDistance, float maxDistance, int order, - BitSet bsA, BitSet bsB) { - System.out.println("Sticks.autobond(" + minDistance + "," + - maxDistance + "," + order + ",...)"); - if (bsA == null) - System.out.println(" bsA: null"); + void autoBond(short order, BitSet bsA, BitSet bsB) { + if (order == NULL_BOND_ORDER) + frame.autoBond(bsA, bsB); + else if (order == JmolConstants.BOND_H_REGULAR) + frame.autoHbond(bsA, bsB); else - System.out.println(" bsA: " + bsA.cardinality()); - if (bsB == null) - System.out.println(" bsB: null"); - else - System.out.println(" bsB: " + bsB.cardinality()); + System.out.println("connect auto command does not understand order:" + + connectOperationStrings[order]); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-02 19:10:36
|
Revision: 4881 Author: migueljmol Date: 2006-04-02 12:10:27 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4881&view=rev Log Message: ----------- full implementation of connect auto hbond with bitset restrictions Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java trunk/Jmol/src/org/jmol/viewer/Frame.java trunk/Jmol/src/org/jmol/viewer/Mmset.java trunk/Jmol/src/org/jmol/viewer/Model.java trunk/Jmol/src/org/jmol/viewer/NucleicPolymer.java trunk/Jmol/src/org/jmol/viewer/Polymer.java trunk/Jmol/src/org/jmol/viewer/Sticks.java Modified: trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -25,6 +25,7 @@ import javax.vecmath.Point3f; import javax.vecmath.Vector3f; +import java.util.BitSet; class AminoPolymer extends AlphaPolymer { @@ -41,38 +42,38 @@ boolean hasWingPoints() { return true; } - boolean hbondsAlreadyCalculated; - final static boolean debugHbonds = false; - void calcHydrogenBonds() { - if (! hbondsAlreadyCalculated) { - allocateHbondDataStructures(); - //Frame frame = model.mmset.frame; - //hbondMax2 = frame.hbondMax * frame.hbondMax; - calcProteinMainchainHydrogenBonds(); - hbondsAlreadyCalculated = true; - - if (debugHbonds) { - System.out.println("calcHydrogenBonds"); - for (int i = 0; i < monomerCount; ++i) { - System.out.println(" min1Indexes=" + min1Indexes[i] + - "\nmin1Energies=" + min1Energies[i] + - "\nmin2Indexes=" + min2Indexes[i] + + void calcHydrogenBonds(BitSet bsA, BitSet bsB) { + System.out.println("AminoPolymer.calcHydrogenBonds()"); + initializeHbondDataStructures(); + //Frame frame = model.mmset.frame; + //hbondMax2 = frame.hbondMax * frame.hbondMax; + calcProteinMainchainHydrogenBonds(bsA, bsB); + + if (debugHbonds) { + System.out.println("calcHydrogenBonds"); + for (int i = 0; i < monomerCount; ++i) { + System.out.println(" min1Indexes=" + min1Indexes[i] + + "\nmin1Energies=" + min1Energies[i] + + "\nmin2Indexes=" + min2Indexes[i] + "\nmin2Energies=" + min2Energies[i]); - } } } } - - - void allocateHbondDataStructures() { - mainchainHbondOffsets = new short[monomerCount]; - min1Indexes = new short[monomerCount]; - min1Energies = new short[monomerCount]; - min2Indexes = new short[monomerCount]; - min2Energies = new short[monomerCount]; + void initializeHbondDataStructures() { + if (mainchainHbondOffsets == null) { + mainchainHbondOffsets = new short[monomerCount]; + min1Indexes = new short[monomerCount]; + min1Energies = new short[monomerCount]; + min2Indexes = new short[monomerCount]; + min2Energies = new short[monomerCount]; + } else { + for (int i = monomerCount; --i >= 0; ) { + mainchainHbondOffsets[i] = min1Energies[i] = min2Energies[i] = 0; + } + } for (int i = monomerCount; --i >= 0; ) min1Indexes[i] = min2Indexes[i] = -1; } @@ -85,7 +86,8 @@ final Vector3f vectorPreviousOC = new Vector3f(); final Point3f aminoHydrogenPoint = new Point3f(); - void calcProteinMainchainHydrogenBonds() { + void calcProteinMainchainHydrogenBonds(BitSet bsA, BitSet bsB) { + System.out.println("calcProteinMainchainHydrogenBonds()"); Point3f carbonPoint; Point3f oxygenPoint; @@ -100,7 +102,7 @@ if (i > 0 && residue.getGroupID() != JmolConstants.GROUPID_PROLINE) { Point3f nitrogenPoint = residue.getNitrogenAtomPoint(); aminoHydrogenPoint.add(nitrogenPoint, vectorPreviousOC); - bondAminoHydrogen(i, aminoHydrogenPoint); + bondAminoHydrogen(i, aminoHydrogenPoint, bsA, bsB); } carbonPoint = residue.getCarbonylCarbonAtomPoint(); oxygenPoint = residue.getCarbonylOxygenAtomPoint(); @@ -114,10 +116,12 @@ private final static float maxHbondAlphaDistance = 9; private final static float maxHbondAlphaDistance2 = maxHbondAlphaDistance * maxHbondAlphaDistance; - private final static float minimumHbondDistance2 = 0.5f; // note: RasMol is 1/2 this. RMH + // note: RasMol is 1/2 this. RMH + private final static float minimumHbondDistance2 = 0.5f; private final static double QConst = -332 * 0.42 * 0.2 * 1000; - void bondAminoHydrogen(int indexDonor, Point3f hydrogenPoint) { + void bondAminoHydrogen(int indexDonor, Point3f hydrogenPoint, + BitSet bsA, BitSet bsB) { AminoMonomer source = (AminoMonomer)monomers[indexDonor]; Point3f sourceAlphaPoint = source.getLeadAtomPoint(); Point3f sourceNitrogenPoint = source.getNitrogenAtomPoint(); @@ -150,9 +154,9 @@ mainchainHbondOffsets[indexDonor] = (short)(indexDonor - indexMin1); min1Indexes[indexDonor] = (short)indexMin1; min1Energies[indexDonor] = (short)energyMin1; - createResidueHydrogenBond(indexDonor, indexMin1); + createResidueHydrogenBond(indexDonor, indexMin1, bsA, bsB); if (indexMin2 >= 0) { - createResidueHydrogenBond(indexDonor, indexMin2); + createResidueHydrogenBond(indexDonor, indexMin2, bsA, bsB); min2Indexes[indexDonor] = (short)indexMin2; min2Energies[indexDonor] = (short)energyMin2; } @@ -209,8 +213,8 @@ return energy; } - void createResidueHydrogenBond(int indexAminoGroup, - int indexCarbonylGroup) { + void createResidueHydrogenBond(int indexAminoGroup, int indexCarbonylGroup, + BitSet bsA, BitSet bsB) { short order; int aminoBackboneHbondOffset = indexAminoGroup - indexCarbonylGroup; if (debugHbonds) @@ -249,7 +253,7 @@ Atom nitrogen = donor.getNitrogenAtom(); AminoMonomer recipient = (AminoMonomer)monomers[indexCarbonylGroup]; Atom oxygen = recipient.getCarbonylOxygenAtom(); - model.mmset.frame.bondAtoms(nitrogen, oxygen, order); + model.mmset.frame.bondAtoms(nitrogen, oxygen, order, bsA, bsB); } /* Modified: trunk/Jmol/src/org/jmol/viewer/Frame.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -714,6 +714,15 @@ addBond(atom1.bondMutually(atom2, order, this)); } + void bondAtoms(Atom atom1, Atom atom2, short order, BitSet bsA, BitSet bsB) { + boolean atom1InSetA = bsA == null || bsA.get(atom1.atomIndex); + boolean atom1InSetB = bsB == null || bsB.get(atom1.atomIndex); + boolean atom2InSetA = bsA == null || bsA.get(atom2.atomIndex); + boolean atom2InSetB = bsB == null || bsB.get(atom2.atomIndex); + if (atom1InSetA & atom2InSetB || atom1InSetB & atom2InSetA) + addBond(atom1.bondMutually(atom2, order, this)); + } + Shape allocateShape(int shapeID) { String classBase = JmolConstants.shapeClassBases[shapeID]; // System.out.println("Frame.allocateShape(" + classBase + ")"); @@ -1278,25 +1287,16 @@ //////////////////////////////////////////////////////////////// // hbond code - void autoHbond(BitSet bsA, BitSet bsB) { - System.out.println("Frame.autoHbond(BitSet,BitSet) not yet implemented"); - } - float hbondMax = 3.25f; float hbondMin = 2.5f; float hbondMin2 = hbondMin * hbondMin; - boolean hbondsCalculated; - boolean useRasMolHbondsCalculation = true; - void calcHbonds() { - if (hbondsCalculated) - return; - hbondsCalculated = true; + void autoHbond(BitSet bsA, BitSet bsB) { if (useRasMolHbondsCalculation) { if (mmset != null) - mmset.calcHydrogenBonds(); + mmset.calcHydrogenBonds(bsA, bsB); return; } initializeBspf(); Modified: trunk/Jmol/src/org/jmol/viewer/Mmset.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Mmset.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/Mmset.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -205,9 +205,9 @@ models[i].calcSelectedMonomersCount(bsSelected); } - void calcHydrogenBonds() { + void calcHydrogenBonds(BitSet bsA, BitSet bsB) { for (int i = modelCount; --i >= 0; ) - models[i].calcHydrogenBonds(); + models[i].calcHydrogenBonds(bsA, bsB); } void selectSeqcodeRange(int seqcodeA, int seqcodeB, BitSet bs) { Modified: trunk/Jmol/src/org/jmol/viewer/Model.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Model.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/Model.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -126,8 +126,8 @@ return polymers[polymerIndex]; } - void calcHydrogenBonds() { + void calcHydrogenBonds(BitSet bsA, BitSet bsB) { for (int i = polymerCount; --i >= 0; ) - polymers[i].calcHydrogenBonds(); + polymers[i].calcHydrogenBonds(bsA, bsB); } } Modified: trunk/Jmol/src/org/jmol/viewer/NucleicPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/NucleicPolymer.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/NucleicPolymer.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -23,6 +23,7 @@ */ package org.jmol.viewer; +import java.util.BitSet; class NucleicPolymer extends Polymer { @@ -36,18 +37,18 @@ boolean hasWingPoints() { return true; } - void calcHydrogenBonds() { + void calcHydrogenBonds(BitSet bsA, BitSet bsB) { for (int i = model.getPolymerCount(); --i >= 0; ) { Polymer otherPolymer = model.getPolymer(i); if (otherPolymer == this) // don't look at self continue; if (otherPolymer == null || !(otherPolymer instanceof NucleicPolymer)) continue; - lookForHbonds((NucleicPolymer)otherPolymer); + lookForHbonds((NucleicPolymer)otherPolymer, bsA, bsB); } } - void lookForHbonds(NucleicPolymer other) { + void lookForHbonds(NucleicPolymer other, BitSet bsA, BitSet bsB) { //System.out.println("NucleicPolymer.lookForHbonds()"); for (int i = monomerCount; --i >= 0; ) { NucleicMonomer myNucleotide = (NucleicMonomer)monomers[i]; @@ -70,26 +71,26 @@ } } if (bestN3 != null) { - createHydrogenBond(myN1, bestN3); + createHydrogenBond(myN1, bestN3, bsA, bsB); if (myNucleotide.isGuanine()) { createHydrogenBond(myNucleotide.getN2(), - bestNucleotide.getO2()); + bestNucleotide.getO2(), bsA, bsB); createHydrogenBond(myNucleotide.getO6(), - bestNucleotide.getN4()); + bestNucleotide.getN4(), bsA, bsB); } else { createHydrogenBond(myNucleotide.getN6(), - bestNucleotide.getO4()); + bestNucleotide.getO4(), bsA, bsB); } } } } - void createHydrogenBond(Atom atom1, Atom atom2) { + void createHydrogenBond(Atom atom1, Atom atom2, BitSet bsA, BitSet bsB) { // System.out.println("createHydrogenBond:" + // atom1.getAtomNumber() + "<->" + atom2.getAtomNumber()); if (atom1 != null && atom2 != null) { Frame frame = model.mmset.frame; - frame.bondAtoms(atom1, atom2, JmolConstants.BOND_H_NUCLEOTIDE); + frame.bondAtoms(atom1, atom2, JmolConstants.BOND_H_NUCLEOTIDE, bsA, bsB); } } } Modified: trunk/Jmol/src/org/jmol/viewer/Polymer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Polymer.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/Polymer.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -243,7 +243,8 @@ boolean isNucleic() { return monomers[0].isNucleic(); } - void calcHydrogenBonds() { + void calcHydrogenBonds(BitSet bsA, BitSet bsB) { + // subclasses should override if they know how to calculate hbonds } Point3f[] getLeadMidpoints() { Modified: trunk/Jmol/src/org/jmol/viewer/Sticks.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 18:46:48 UTC (rev 4880) +++ trunk/Jmol/src/org/jmol/viewer/Sticks.java 2006-04-02 19:10:27 UTC (rev 4881) @@ -263,7 +263,6 @@ else if (order == JmolConstants.BOND_H_REGULAR) frame.autoHbond(bsA, bsB); else - System.out.println("connect auto command does not understand order:" + - connectOperationStrings[order]); + System.out.println("Sticks.autoBond() unknown order: " + order); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-03 01:41:18
|
Revision: 4886 Author: migueljmol Date: 2006-04-02 18:41:12 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4886&view=rev Log Message: ----------- exposed _bondedcount atom property as 'bondcount' for count of covalent bonds. replaces experimental 'connected' functionality introduced in r4664 Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-03 01:17:20 UTC (rev 4885) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-03 01:41:12 UTC (rev 4886) @@ -1314,7 +1314,7 @@ case Token.radius: propertyValue = atom.getRasMolRadius(); break; - case Token._bondedcount: + case Token.bondcount: propertyValue = atom.getCovalentBondCount(); break; case Token.model: Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-04-03 01:17:20 UTC (rev 4885) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-04-03 01:41:12 UTC (rev 4886) @@ -2100,7 +2100,7 @@ "@sheet _structure=2", "@helix _structure=3", - "@bonded _bondedcount>0", + "@bonded bondcount>0", // "@hetero", handled specially }; Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2006-04-03 01:17:20 UTC (rev 4885) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2006-04-03 01:41:12 UTC (rev 4886) @@ -287,7 +287,7 @@ final static int temperature = atomproperty | 4; final static int model = atomproperty | 5 | showparam | expression | command; - final static int _bondedcount = atomproperty | 6; + final static int bondcount = atomproperty | 6; final static int _groupID = atomproperty | 7; final static int _atomID = atomproperty | 8; final static int _structure = atomproperty | 9; @@ -387,7 +387,7 @@ final static String[] comparatorNames = {">", ">=", "<=", "<", "=", "!="}; final static String[] atomPropertyNames = { "atomno", "elemno", "resno", "radius", "temperature", "model", - "_bondedcount", "_groupID", "_atomID", "_structure"}; + "bondcount", "_groupID", "_atomID", "_structure"}; /* Note that the RasMol scripting language is case-insensitive. @@ -602,7 +602,7 @@ "resno", new Token(resno, "resno"), "temperature", new Token(temperature, "temperature"), "relativetemperature", null, - "_bondedcount", new Token(_bondedcount, "_bondedcount"), + "bondcount", new Token(bondcount, "bondcount"), "_groupID", new Token(_groupID, "_groupID"), "_g", null, "_atomID", new Token(_atomID, "_atomID"), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-03 01:47:52
|
Revision: 4887 Author: migueljmol Date: 2006-04-02 18:47:47 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4887&view=rev Log Message: ----------- introduced 'hbondcount' atom property and 'hbonded' predefined set Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Atom.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-04-03 01:41:12 UTC (rev 4886) +++ trunk/Jmol/src/org/jmol/viewer/Atom.java 2006-04-03 01:47:47 UTC (rev 4887) @@ -289,6 +289,16 @@ return n; } + int getHbondCount() { + if (bonds == null) + return 0; + int n = 0; + for (int i = bonds.length; --i >= 0; ) + if ((bonds[i].order & JmolConstants.BOND_HYDROGEN_MASK) != 0) + ++n; + return n; + } + Bond[] getBonds() { return bonds; } Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-03 01:41:12 UTC (rev 4886) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-04-03 01:47:47 UTC (rev 4887) @@ -1317,6 +1317,9 @@ case Token.bondcount: propertyValue = atom.getCovalentBondCount(); break; + case Token.hbondcount: + propertyValue = atom.getHbondCount(); + break; case Token.model: propertyValue = atom.getModelTagNumber(); break; Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-04-03 01:41:12 UTC (rev 4886) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-04-03 01:47:47 UTC (rev 4887) @@ -2101,6 +2101,7 @@ "@helix _structure=3", "@bonded bondcount>0", + "@hbonded hbondcount>0", // "@hetero", handled specially }; Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2006-04-03 01:41:12 UTC (rev 4886) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2006-04-03 01:47:47 UTC (rev 4887) @@ -293,6 +293,7 @@ final static int _structure = atomproperty | 9; final static int occupancy = atomproperty | 10; final static int polymerLength= atomproperty | 11; + final static int hbondcount = atomproperty | 12; final static int opGT = comparator | 0; final static int opGE = comparator | 1; @@ -603,6 +604,7 @@ "temperature", new Token(temperature, "temperature"), "relativetemperature", null, "bondcount", new Token(bondcount, "bondcount"), + "hbondcount", new Token(hbondcount, "hbondcount"), "_groupID", new Token(_groupID, "_groupID"), "_g", null, "_atomID", new Token(_atomID, "_atomID"), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-10-26 03:16:51
|
Revision: 6027 http://svn.sourceforge.net/jmol/?rev=6027&view=rev Author: hansonr Date: 2006-10-25 20:16:43 -0700 (Wed, 25 Oct 2006) Log Message: ----------- 3D echo! Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/EchoRenderer.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Text.java trunk/Jmol/src/org/jmol/viewer/TextShape.java Modified: trunk/Jmol/src/org/jmol/viewer/EchoRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/EchoRenderer.java 2006-10-26 02:20:47 UTC (rev 6026) +++ trunk/Jmol/src/org/jmol/viewer/EchoRenderer.java 2006-10-26 03:16:43 UTC (rev 6027) @@ -24,14 +24,22 @@ package org.jmol.viewer; import java.util.Enumeration; +import javax.vecmath.Point3i; class EchoRenderer extends ShapeRenderer { void render() { Echo echo = (Echo)shape; + Point3i pt = new Point3i(); Enumeration e = echo.texts.elements(); - while (e.hasMoreElements()) - ((Text)e.nextElement()).render(); + while (e.hasMoreElements()) { + Text t = (Text)e.nextElement(); + if (t.valign == Text.XYZ) { + viewer.transformPoint(t.xyz, pt); + t.setXYZs(pt.x, pt.y, pt.z, pt.z); + } + t.render(); + } } } Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-10-26 02:20:47 UTC (rev 6026) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-10-26 03:16:43 UTC (rev 6027) @@ -4287,6 +4287,12 @@ if (statementLength < 5) badArgumentCount(); int i = 3; + //set echo name {x y z} + if (isAtomCenterOrCoordinateNext(i)) { + viewer.setShapeProperty(JmolConstants.SHAPE_ECHO, "xyz", + atomCenterOrCoordinateParameter(i)); + return; + } int pos =intParameter(i++); String type; propertyValue = new Integer(pos); Modified: trunk/Jmol/src/org/jmol/viewer/Text.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Text.java 2006-10-26 02:20:47 UTC (rev 6026) +++ trunk/Jmol/src/org/jmol/viewer/Text.java 2006-10-26 03:16:43 UTC (rev 6027) @@ -24,6 +24,7 @@ package org.jmol.viewer; import java.awt.FontMetrics; +import javax.vecmath.Point3f; import org.jmol.g3d.Font3D; import org.jmol.g3d.Graphics3D; @@ -34,6 +35,7 @@ final static int LEFT = 1; final static int CENTER = 2; final static int RIGHT = 3; + final static int XYZ = 4; final static int TOP = 1; final static int BOTTOM = 2; @@ -41,8 +43,11 @@ boolean atomBased; Graphics3D g3d; + Point3f xyz; String target; String text; + String thisID; + String[] lines; int align; int valign; @@ -117,6 +122,11 @@ recalc(); } + void setXYZ(Point3f xyz) { + valign = XYZ; + this.xyz = xyz; + } + void setAdjustForWindow(boolean TF) { adjustForWindow = TF; } @@ -138,12 +148,12 @@ } void setMovableX(int x) { - valign = XY; + valign = (valign == XYZ ? XYZ : XY); movableX = x; } void setMovableY(int y) { - valign = XY; + valign = (valign == XYZ ? XYZ : XY); movableY = y; } @@ -165,7 +175,7 @@ void setPositions() { int xLeft, xCenter, xRight; - if (valign == XY) { + if (valign == XY || valign == XYZ) { xLeft = xRight = xCenter = movableX + offsetX; } else { xLeft = 5; Modified: trunk/Jmol/src/org/jmol/viewer/TextShape.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/TextShape.java 2006-10-26 02:20:47 UTC (rev 6026) +++ trunk/Jmol/src/org/jmol/viewer/TextShape.java 2006-10-26 03:16:43 UTC (rev 6027) @@ -32,6 +32,8 @@ import java.util.Hashtable; import java.util.Enumeration; +import javax.vecmath.Point3f; + class TextShape extends Shape { @@ -181,6 +183,12 @@ * (100 - ((Integer) value).intValue()) / 100); return; } - } + + if ("xyz" == propertyName) { + if (currentText != null) + currentText.setXYZ((Point3f)value); + return; + } } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-11-17 05:55:06
|
Revision: 6247 http://svn.sourceforge.net/jmol/?rev=6247&view=rev Author: hansonr Date: 2006-11-16 21:55:04 -0800 (Thu, 16 Nov 2006) Log Message: ----------- cleaner code Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Balls.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Mps.java trunk/Jmol/src/org/jmol/viewer/Shape.java Modified: trunk/Jmol/src/org/jmol/viewer/Balls.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Balls.java 2006-11-17 05:35:54 UTC (rev 6246) +++ trunk/Jmol/src/org/jmol/viewer/Balls.java 2006-11-17 05:55:04 UTC (rev 6247) @@ -54,13 +54,13 @@ colix = Graphics3D.USE_PALETTE; if (bsColixSet == null) bsColixSet = new BitSet(); - int pid = (value instanceof Byte ? ((Byte) value).intValue() - : -1); + int pid = (value instanceof Byte ? ((Byte) value).intValue() : -1); for (int i = atomCount; --i >= 0;) if (bs.get(i)) { Atom atom = atoms[i]; atom.setColixAtom(setColix(colix, pid, atom)); - bsColixSet.set(i, colix != Graphics3D.USE_PALETTE || pid > 0); + bsColixSet.set(i, colix != Graphics3D.USE_PALETTE + || pid != JmolConstants.PALETTE_NONE); atom.setPaletteID((short) pid); } return; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-11-17 05:35:54 UTC (rev 6246) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2006-11-17 05:55:04 UTC (rev 6247) @@ -2328,8 +2328,7 @@ colorShape(getShapeType(tokObject), itoken); } - void colorShape(int shapeType, int itoken) - throws ScriptException { + void colorShape(int shapeType, int itoken) throws ScriptException { if (itoken >= statementLength) badArgumentCount(); String translucentOrOpaque = null; @@ -2358,16 +2357,18 @@ colorvalue = (argb == 0 ? null : new Integer(argb)); } else { // "cpk" value would be "spacefill" - int pid = (tok == Token.cpk ? JmolConstants.PALETTE_CPK + byte pid = (tok == Token.cpk ? JmolConstants.PALETTE_CPK : JmolConstants.getPaletteID((String) statement[itoken].value)); - if (pid < 0 || pid == JmolConstants.PALETTE_TYPE && shapeType != JmolConstants.SHAPE_HSTICKS) + if (pid == JmolConstants.PALETTE_UNKNOWN + || pid == JmolConstants.PALETTE_TYPE + && shapeType != JmolConstants.SHAPE_HSTICKS) invalidArgument(); - colorvalue = new Byte((byte)pid); + colorvalue = new Byte((byte) pid); } //ok, the following five options require precalculation. //the state must not save them as paletteIDs, only as pure //color values. - + switch (tok) { case Token.surfacedistance: if (viewer.getFrame().getSurfaceDistanceMax() == 0) @@ -2389,9 +2390,11 @@ } viewer.loadShape(shapeType); if (shapeType == JmolConstants.SHAPE_STICKS) - viewer.setShapeProperty(shapeType, colorOrBgcolor + modifier, colorvalue, viewer.getSelectedAtomsOrBonds()); + viewer.setShapeProperty(shapeType, colorOrBgcolor + modifier, + colorvalue, viewer.getSelectedAtomsOrBonds()); else - viewer.setShapeProperty(shapeType, colorOrBgcolor + modifier, colorvalue); + viewer.setShapeProperty(shapeType, colorOrBgcolor + modifier, + colorvalue); } if (translucentOrOpaque != null) viewer.setShapeProperty(shapeType, "translucency" + modifier, Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-11-17 05:35:54 UTC (rev 6246) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2006-11-17 05:55:04 UTC (rev 6247) @@ -1179,30 +1179,32 @@ // this is only here for truly pathological cases public final static int MAXIMUM_AUTO_BOND_COUNT = 20; - public final static int PALETTE_VARIABLE = 0x40; - public final static int PALETTE_NONE = 0; - public final static int PALETTE_CPK = 1; - public final static int PALETTE_PARTIAL_CHARGE = 2; - public final static int PALETTE_FORMAL_CHARGE = 3; - public final static int PALETTE_TEMP = 4 | PALETTE_VARIABLE; + public final static byte PALETTE_VARIABLE = 0x40; + public final static byte PALETTE_UNKNOWN = (byte) 0xFF; - public final static int PALETTE_FIXEDTEMP = 5; - public final static int PALETTE_SURFACE = 6 | PALETTE_VARIABLE; - public final static int PALETTE_STRUCTURE = 7; - public final static int PALETTE_AMINO = 8; + public final static byte PALETTE_NONE = 0; + public final static byte PALETTE_CPK = 1; + public final static byte PALETTE_PARTIAL_CHARGE = 2; + public final static byte PALETTE_FORMAL_CHARGE = 3; + public final static byte PALETTE_TEMP = 4 | PALETTE_VARIABLE; - public final static int PALETTE_SHAPELY = 9; - public final static int PALETTE_CHAIN = 10; - public final static int PALETTE_GROUP = 11 | PALETTE_VARIABLE; - public final static int PALETTE_MONOMER = 12 | PALETTE_VARIABLE; - public final static int PALETTE_MOLECULE = 13 | PALETTE_VARIABLE; - public final static int PALETTE_ALTLOC = 14; + public final static byte PALETTE_FIXEDTEMP = 5; + public final static byte PALETTE_SURFACE = 6 | PALETTE_VARIABLE; + public final static byte PALETTE_STRUCTURE = 7; + public final static byte PALETTE_AMINO = 8; - public final static int PALETTE_INSERTION = 15; - public final static int PALETTE_JMOL = 16; - public final static int PALETTE_RASMOL = 17; - public final static int PALETTE_TYPE = 18; //b0001 0010 + public final static byte PALETTE_SHAPELY = 9; + public final static byte PALETTE_CHAIN = 10; + public final static byte PALETTE_GROUP = 11 | PALETTE_VARIABLE; + public final static byte PALETTE_MONOMER = 12 | PALETTE_VARIABLE; + public final static byte PALETTE_MOLECULE = 13 | PALETTE_VARIABLE; + public final static byte PALETTE_ALTLOC = 14; + public final static byte PALETTE_INSERTION = 15; + public final static byte PALETTE_JMOL = 16; + public final static byte PALETTE_RASMOL = 17; + public final static byte PALETTE_TYPE = 18; //b0001 0010 + private final static String[] paletteNames = { /* 0 */ "none", "cpk", "partialCharge", "formalCharge", "temperature", /* 5 */ "fixedTemperature", "surfaceDistance", "structure", "amino", @@ -1211,7 +1213,7 @@ /*18 */ "type" // hbonds only }; - private final static int[] paletteIDs = { + private final static byte[] paletteIDs = { PALETTE_NONE, PALETTE_CPK, PALETTE_PARTIAL_CHARGE, @@ -1241,16 +1243,18 @@ return ((pid & PALETTE_VARIABLE) != 0); } - public final static int getPaletteID(String paletteName) { + public final static byte getPaletteID(String paletteName) { for (int i = 0; i < paletteCount; i++) if (paletteNames[i].equalsIgnoreCase(paletteName)) return paletteIDs[i]; - return -1; + return PALETTE_UNKNOWN; } public final static String getPaletteName(int pid) { + if (pid == PALETTE_UNKNOWN) + return null; pid = pid & ~PALETTE_VARIABLE; - return (pid < 0 || pid >= paletteNames.length ? null : paletteNames[pid]); + return (pid >= paletteNames.length ? null : paletteNames[pid]); } /** Modified: trunk/Jmol/src/org/jmol/viewer/Mps.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Mps.java 2006-11-17 05:35:54 UTC (rev 6246) +++ trunk/Jmol/src/org/jmol/viewer/Mps.java 2006-11-17 05:55:04 UTC (rev 6247) @@ -419,7 +419,7 @@ if (bsSelected.get(atomIndex)) { colixes[i] = shape.setColix(colix, pid, atomIndex); paletteIDs[i] = (short) pid; - bsColixSet.set(i, colix != Graphics3D.INHERIT || pid > 0); + bsColixSet.set(i, colixes[i] != Graphics3D.INHERIT); } } } Modified: trunk/Jmol/src/org/jmol/viewer/Shape.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Shape.java 2006-11-17 05:35:54 UTC (rev 6246) +++ trunk/Jmol/src/org/jmol/viewer/Shape.java 2006-11-17 05:55:04 UTC (rev 6247) @@ -163,7 +163,7 @@ } String getColorCommand(String type, short pid, short colix) { - if (pid < 0 && colix == 0) + if (pid == JmolConstants.PALETTE_UNKNOWN && colix == Graphics3D.INHERIT) return ""; return "color " + type + " " + encodeTransColor(pid, colix); } @@ -173,7 +173,7 @@ } String encodeTransColor(short pid, short colix) { - if (pid < 0 && colix == 0) + if (pid == JmolConstants.PALETTE_UNKNOWN && colix == Graphics3D.INHERIT) return ""; String s = ""; /* nuance here is that some palettes depend upon a @@ -184,7 +184,7 @@ * Serialization of the palette name is just a convenience * anyway. */ - if (pid >= 0 && !JmolConstants.isPaletteVariable(pid)) { + if (pid != JmolConstants.PALETTE_UNKNOWN && !JmolConstants.isPaletteVariable(pid)) { if (Graphics3D.isColixTranslucent(colix)) s += "translucent "; s += JmolConstants.getPaletteName(pid); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-01-08 00:00:47
|
Revision: 6606 http://svn.sourceforge.net/jmol/?rev=6606&view=rev Author: hansonr Date: 2007-01-07 16:00:41 -0800 (Sun, 07 Jan 2007) Log Message: ----------- 11.1.5 slab reference $object; refactoring Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/TransformManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-01-07 23:47:42 UTC (rev 6605) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-01-08 00:00:41 UTC (rev 6606) @@ -3712,26 +3712,7 @@ checkLength2(); if (isSyntaxCheck) return; - plane = viewer.getSlabPlane(false); - Point4f plane2; - int slab = viewer.getSlabPercentSetting(); - int depth = viewer.getDepthPercentSetting(); - if (isDepth) { - plane = viewer.getDepthPlane(false); - plane2 = viewer.getSlabPlane(true); - viewer.slabReset(); - viewer.slabToPercent(slab); - viewer.slabInternal(plane, true); - viewer.slabInternal(plane2, false); - } else { - plane = viewer.getSlabPlane(false); - plane2 = viewer.getDepthPlane(true); - viewer.slabReset(); - viewer.depthToPercent(depth); - viewer.slabInternal(plane, false); - viewer.slabInternal(plane2, true); - } - viewer.slabInternalReference(null); + viewer.setSlabDepthInternal(isDepth); setBooleanProperty("slabEnabled", true); return; case Token.identifier: @@ -3748,7 +3729,7 @@ return; } if (parameterAsString(1).equalsIgnoreCase("reference")) { - Point3f pt = getCoordinate(2, true); + Point3f pt = centerParameter(2); if (!isSyntaxCheck) viewer.slabInternalReference(pt); return; Modified: trunk/Jmol/src/org/jmol/viewer/TransformManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/TransformManager.java 2007-01-07 23:47:42 UTC (rev 6605) +++ trunk/Jmol/src/org/jmol/viewer/TransformManager.java 2007-01-08 00:00:41 UTC (rev 6606) @@ -696,8 +696,11 @@ } Point4f getDepthPlane(boolean isInternal) { + // eval "slab set" if (isInternal) return depthPlane; + if (!slabEnabled) + return null; pointT.set(0, 0, 0); transformPoint(pointT, pointT2); pointT2.z = depthValue; @@ -708,8 +711,11 @@ } Point4f getSlabPlane(boolean isInternal) { + // eval "slab set" if (isInternal) return slabPlane; + if (!slabEnabled) + return null; pointT.set(0, 0, 0); transformPoint(pointT, pointT2); pointT2.z = slabValue; @@ -728,6 +734,35 @@ slabRefDistance = Float.NaN; } + /** + * set internal slab or depth from screen-based slab or depth + * @param isDepth + */ + void setSlabDepthInternal(boolean isDepth) { + setSlabDepthInternal(isDepth); + Point4f plane = getSlabPlane(false); + Point4f plane2; + int slab = slabPercentSetting; + int depth = depthPercentSetting; + if (isDepth) { + plane = getDepthPlane(false); + plane2 = getSlabPlane(true); + slabReset(); + slabToPercent(slab); + slabInternal(plane, true); + slabInternal(plane2, false); + } else { + plane = getSlabPlane(false); + plane2 = getDepthPlane(true); + slabReset(); + depthToPercent(depth); + slabInternal(plane, false); + slabInternal(plane2, true); + } + slabInternalReference(null); + } + + void slabInternalReference(Point3f ptRef) { slabRef = ptRef; if (ptRef == null) { @@ -748,6 +783,8 @@ pt2.sub(slabRef); slabRef.set(-slabRef.x + 2 * pt2.x, -slabRef.y + 2 * pt2.y, -slabRef.z + 2 * pt2.z); + } else { + // nothing to do if neither is defined } } slabRefDistance = Float.NaN; Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2007-01-07 23:47:42 UTC (rev 6605) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2007-01-08 00:00:41 UTC (rev 6606) @@ -632,14 +632,6 @@ return transformManager.slabEnabled; } - int getSlabPercentSetting() { - return transformManager.slabPercentSetting; - } - - int getDepthPercentSetting() { - return transformManager.depthPercentSetting; - } - void slabByPixels(int pixels) { //MouseManager.mouseSinglePressDrag transformManager.slabByPercentagePoints(pixels); @@ -696,6 +688,10 @@ refresh(0, "Viewer:setSlabEnabled()"); } + void setSlabDepthInternal(boolean isDepth) { + transformManager.setSlabDepthInternal(isDepth); + } + public Matrix4f getUnscaledTransformMatrix() { return transformManager.getUnscaledTransformMatrix(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-19 17:37:34
|
Revision: 6870 http://svn.sourceforge.net/jmol/?rev=6870&view=rev Author: hansonr Date: 2007-02-19 09:37:32 -0800 (Mon, 19 Feb 2007) Log Message: ----------- 11.1.14 explanation and bug fixing Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-02-19 15:53:13 UTC (rev 6869) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-02-19 17:37:32 UTC (rev 6870) @@ -96,6 +96,30 @@ clearDefinitionsAndLoadPredefined(); } + final static String EXPRESSION_KEY = "e_x_p_r_e_s_s_i_o_n"; + /** + * a general-use method to evaluate a "SET" type expression. + * @param viewer + * @param expr + * @return an object of one of the following types: + * Boolean, Integer, Float, String, Point3f, BitSet + */ + + public static Object evaluateExpression(Viewer viewer, String expr) { + // Text.formatText for MESSAGE and ECHO + Eval e = new Eval(viewer); + try { + if (e.loadScript(null, EXPRESSION_KEY + " = " + expr)) { + e.statement = e.aatoken[0]; + e.statementLength = e.statement.length; + return e.parameterExpression(2, ""); + } + } catch (Exception ex) { + Logger.error("Error evaluating: " + expr + "\n" + ex); + } + return "ERROR"; + } + BitSet getAtomBitSet(String atomExpression) throws ScriptException { //SelectionManager BitSet bs = new BitSet(); @@ -7927,20 +7951,6 @@ } } - static Object evaluateExpression(Viewer viewer, String expr) { - Eval e = new Eval(viewer); - try { - if (e.loadScript(null, "x = " + expr)) { - e.statement = e.aatoken[0]; - e.statementLength = e.statement.length; - return e.parameterExpression(2, ""); - } - } catch (Exception ex) { - Logger.error("Error evaluating: " + expr + "\n" + ex); - } - return "ERROR"; - } - static BitSet getAtomBitSet(Viewer viewer, Object atomExpression) { if (atomExpression instanceof BitSet) return (BitSet) atomExpression; @@ -7977,7 +7987,6 @@ int maxLevel; int parenCount; int squareCount; - boolean isUnary = true; boolean wasX = false; Rpn(int maxLevel) { @@ -8081,11 +8090,12 @@ break; case Token.rightparen: case Token.rightsquare: - isUnary = false; wasX = true; break; + case Token.propselector: + wasX = (op.intValue != Token.distance); + break; default: - isUnary = true; wasX = false; } if (op.tok == Token.rightparen || op.tok == Token.rightsquare) Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2007-02-19 15:53:13 UTC (rev 6869) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2007-02-19 17:37:32 UTC (rev 6870) @@ -63,56 +63,197 @@ allows measurements to be recalculated on the fly. - BRACES NOT PARENTHESES - BIG change is that now we use {} in SET and %{} for designating atom expressions. - This was necessary in order to align SET and %{} with IF, where () are also allowed. + MATH OPERATOR PRECEDENCE AND PARENTHESES - set a {oxygen}.temperature - message %{{carbon}.x} - if {O22}.bondCount > 2;goto ... + Jmol 11.1.14 supports full standard operator precedence and parentheses + in IF, SET, and %{} expressions + degUnsat = ({carbon} * 2 + {nitrogen} + 2 - {hydrogen}) / 2 + + + BRACES INDICATE ATOM EXPRESSIONS - .DISTANCE ATOM PROPERTY FOR SET, IF, and %{} + Use {} in IF, SET and %{} for designating atom expressions. + We are still using () for "embedded expressions" in all other commands. + + nOxygen = {oxygen} + xOxygen = {oxygen}.x + ptOxygen = {oxygen.xyz} + + a = {oxygen}.temperature + message %{{carbon}.x} + if {O22}.bondCount > 2;goto ... + but + + draw line1 (atomno=2) (atomno=3) + + + + ATOM EXPRESSION ITEM SELECTOR [n] + + In SET, IF, and %{ } in MESSAGE and ECHO you can now specify a subset of the + atom expression. + + x = {carbon}[3] # the third carbon atom + x = {carbon}[3][5] # the third through fifth carbon atoms + x = {carbon}[3][0] # the third through last carbon atoms + + ATOM EXPRESSION AUTOMATIC DEFINE + + When you set a variable to a value, and that value is a point or atom expression, + then Jmol automatically registers the result as follows: + + points: + a "DRAW varName {x y z} off" command is effected + + atom expressions: + a "DEFINE ~varName ...." is effected + + Thus we have: + + set x = {oxygen}.xyz + set y = {carbon}.xyz + draw x on; draw y on + draw x off; draw y off + draw line1 $x $y + + and + + set x = {carbon}[3][5] + select ~x + color geen + + POINTS IN IF, SET, and %{} + + Points in IF, SET, and %{} can be designated using the standard {x y z} + notation WITHOUT commas. This is because we have to distinguish between + atom expressions {1,2,3} and coordinates {x y z}, and this seems to me the + simplest way to do it. (Comma means "or" in atom expressions.) In all other + instances, the commas are fine, including "SET UNITCELL" and "SET DEFAULTLATTICE". + + x = {1 1 0} + {oxygen}.xyz + + + { }.distance ATOM PROPERTY FOR SET, IF, and %{} + d = {oxygen and * /1}.distance{oxygen and * /2} set echo top left echo the O-O distance is %{{oxygen and * /1}.distance{oxygen and * /2}} message %{{atomno=3}.distance{atomno=4}} + message %{{atomno=3}.distance{1/2 1/2 1/2}} - - MATH + Note that when more than one atom is involved in a set, + the following are different: - -- full standard operator precedence and parentheses + x1 = {molecule=1}.distance{molecule=2} + x2 = {molecule=1}.xyz - {molecule=2}.xyz - degUnsat = ({carbon} * 2 + {nitrogen} + 2 - {hydrogen}) / 2 + x1 is a NUMBER that is the "average distance measured + from each molecule 1 atom to the average molecule 2 position" + x2 is a point representing the VECTOR from the "average position of molecule 2" + to the "average position of molecule 1" - -- selected atoms from an atom expression in math + x3 = {molecule=1}.xyz.distance{molecule=2} + x4 = 0.0 + ({molecule=1}.xyz - {molecule=2}.xyz) + x5 = ({molecule=1}.xyz - {molecule=2}.xyz).distance{0 0 0} + + These are all equivalent -- the distance from the center of molecule 1 + to the center of molecule 2 + + + SELECTED ATOMS FROM ATOM EXPRESSIONS + You can selecte atoms from an atom expression using [n]. + "[0]" means "and everything after". + x = {atom expression}[3].ident x = {atom expression}[3][0].xyz # 3 and after (average position) x = {atom expression}[3][5].x # 3-5 (average x) - -- expanded modulus % operator + TYPE CONVERSION + + We have six different variable types now: + + boolean True/False + integer 0, 1, 2, .... + decimal 3.5, 3.25E-3 + string "test" "3.5" + point3f {2.3 3.4 5.6} {0 1/2 1} + bitset {oxygen} + + These can be mixed and matched to good effect. Certain relatively + intuitive rules apply. Usually the operand on the left sets + the overall type, allowing for easy type conversion depending upon + operand order: + + int + float: + + 0 + 3.6 ==> 3 (int on left rounds float on right) + 3.6 + 0 ==> 3.6 (float on left sets result) + + int/float + string: + + 0.0 + "3.5" ==> 3.5 (string converted to float) + 0 + "3.5" ==> 3 (string converted to float, then int) + "3.5" + 0 ==> "3.50" (integer converted to string) + "3.5" + 0.0 ==> "3.50.0" (float converted to string) + + 1.0 + {carbon}.xyz ==> 1 + distance from {0 0 0} to {carbon} center + {carbon}.xyz + 1 ==> {carbon} center point offset by {1 1 1} + + x = {carbon}.xyz * {1 0 0} ==> (dot product) + + Now x is the average x coordinate of carbon + + Boolean expressions are a bit different in that the operators + AND, OR, XOR, and NOT all require conversion to boolean UNLESS both + operands are atom expressions, in which case these operate directly on the + atom sets and return a new atom set, just like in SELECT. + + 3 and 0.5 ==> TRUE (both are nonzero) + false OR 2.0 ==> true (2.0 is not 0, so it is TRUE) + {oxygen} and {molecule=1} ==> all oxygen atoms in the first molecule + + x = ({oxygen} and {molecule=1}).xyz + + x is now the center point of all oxygen atoms in the first molecule + + In standard math, boolean TRUE evaluates to 1.0; FALSE evaluates to 0.0 + + true + 2.0 ==> 3.0 ("TRUE" evaluates to 1.0 in math operations) + 2 + true ==> 3 ("TRUE" evaluates to 1.0 and is then turned into an integer) + + + EXPANDED MODULUS % OPERATOR IN IF, SET, AND %{} + Usually modulus is reserved for integer math, so we extend that here to add some useful "modulus-like" capability: - - -- type conversion - - We have five different variable types now: + string modulus for trimming and padding + + "test" %3 ==> left trim: "tes" + "test" %6 ==> right pad: "test " + "test" %-3 ==> right trim: "est" + "test" %-6 ==> left pad: " test" + + float modulus for rounding and scientific notation + + 3.5456 %3 ==> "3.546" (STRING!) + 3545.6 %-3 ==> "3.55E+3" (STRING!) - boolean - integer - decimal - string - point3f + 0.0 + 3.5456 %3 ==> 3.546 (float) + 0.0 + 3545.6 %-3 ==> 3550.0 - These can be mixed and matched to good effect + point modulus for getting base unit cell equivalent position + + {3/2 1/2 1/1} % 0 ==> {1/2 1/2 0} - + + 11.1.13: DATA "coord set" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-27 04:47:32
|
Revision: 6957 http://svn.sourceforge.net/jmol/?rev=6957&view=rev Author: hansonr Date: 2007-02-26 20:47:27 -0800 (Mon, 26 Feb 2007) Log Message: ----------- 11.1.15 bug fix for clickability of protein alpha carbons Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Mps.java trunk/Jmol/src/org/jmol/viewer/NucleicMonomer.java Modified: trunk/Jmol/src/org/jmol/viewer/Mps.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Mps.java 2007-02-27 04:25:22 UTC (rev 6956) +++ trunk/Jmol/src/org/jmol/viewer/Mps.java 2007-02-27 04:47:27 UTC (rev 6957) @@ -459,22 +459,17 @@ if (!isActive || wingVectors == null) return; boolean isNucleicPolymer = polymer instanceof NucleicPolymer; - //boolean isProtein = polymer instanceof AlphaPolymer; - int cartoonflag = JmolConstants.getShapeVisibilityFlag(JmolConstants.SHAPE_CARTOON); - //if (!isNucleicPolymer) - //return; for (int i = monomerCount; --i >= 0;) { if (mads[i] <= 0) continue; int iAtom = leadAtomIndices[i]; if (frame.bsHidden.get(iAtom)) continue; - frame.atoms[iAtom].clickabilityFlags |= cartoonflag; - - if (isNucleicPolymer) { - ((NucleicMonomer) monomers[i]).setModelClickability(cartoonflag); - } + frame.atoms[iAtom].clickabilityFlags |= JmolConstants.ALPHA_CARBON_VISIBILITY_FLAG; + if (isNucleicPolymer) + ((NucleicMonomer) monomers[i]).setModelClickability(); } } + } } Modified: trunk/Jmol/src/org/jmol/viewer/NucleicMonomer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/NucleicMonomer.java 2007-02-27 04:25:22 UTC (rev 6956) +++ trunk/Jmol/src/org/jmol/viewer/NucleicMonomer.java 2007-02-27 04:47:27 UTC (rev 6957) @@ -239,21 +239,19 @@ closest.atom = lead; } - void setModelClickability(int cartoonflag) { + void setModelClickability() { Atom atom; atom = getLeadAtom(); if (chain.frame.bsHidden.get(atom.atomIndex)) return; -// int cartoonflag = JmolConstants.getShapeVisibilityFlag(JmolConstants.SHAPE_CARTOON); - for (int i = 6; --i >= 0; ) { atom = getAtomFromOffsetIndex(i + 3); - atom.clickabilityFlags |= cartoonflag; + atom.clickabilityFlags |= JmolConstants.CARTOON_VISIBILITY_FLAG; } if (isPurine) for (int i = 5; --i >= 0; ) { atom = getAtomFromOffsetIndex(ring5OffsetIndexes[i]); - atom.clickabilityFlags |= cartoonflag; + atom.clickabilityFlags |= JmolConstants.CARTOON_VISIBILITY_FLAG; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-03-21 06:23:01
|
Revision: 7196 http://svn.sourceforge.net/jmol/?rev=7196&view=rev Author: hansonr Date: 2007-03-20 23:22:47 -0700 (Tue, 20 Mar 2007) Log Message: ----------- 11.1.26 -isosurface fix for writing improper bicolor JVXL files bug was introduced on 12/15/06 into 11.1 -also, fix for jmxl files from MOs Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Isosurface.java trunk/Jmol/src/org/jmol/viewer/IsosurfaceRenderer.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java trunk/Jmol/src/org/jmol/viewer/Mesh.java trunk/Jmol/src/org/jmol/viewer/MeshRenderer.java Modified: trunk/Jmol/src/org/jmol/viewer/Isosurface.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Isosurface.java 2007-03-21 05:12:29 UTC (rev 7195) +++ trunk/Jmol/src/org/jmol/viewer/Isosurface.java 2007-03-21 06:22:47 UTC (rev 7196) @@ -1671,6 +1671,8 @@ case SURFACE_FILE: default: voxelValue = getNextVoxelValue(); + if (voxelValue < 0) + System.out.println("vv " +voxelValue); } } strip[z] = voxelValue; @@ -2594,6 +2596,7 @@ // ... mappedDataMin mappedDataMax valueMappedToRed valueMappedToBlue ... definitionLine += " " + mesh.mappedDataMin + " " + mesh.mappedDataMax + " " + mesh.valueMappedToRed + " " + mesh.valueMappedToBlue; + info += "\n# data mimimum = " + mesh.mappedDataMin + "; data maximum = " + mesh.mappedDataMax + " " + "\n# value mapped to red = " + mesh.valueMappedToRed + "; value mapped to blue = " @@ -2601,6 +2604,7 @@ if (mesh.jvxlCompressionRatio > 0) info += "; approximate compressionRatio=" + mesh.jvxlCompressionRatio + ":1"; + info += "\n# created using Jmol Version " + Viewer.getJmolVersion(); return (isInfo ? info : definitionLine); } @@ -2797,11 +2801,15 @@ boolean checkCutoff(int v1, int v2, int v3) { // never cross a +/- junction with a triangle in the case of orbitals, // where we are using |psi| instead of psi for the surface generation. + // note that for bicolor maps, where the values are all positive, we + // check this later in the meshRenderer if (v1 < 0 || v2 < 0 || v3 < 0) return false; + float val1 = thisMesh.vertexValues[v1]; float val2 = thisMesh.vertexValues[v2]; float val3 = thisMesh.vertexValues[v3]; + return (val1 * val2 >= 0 && val2 * val3 >= 0); } Modified: trunk/Jmol/src/org/jmol/viewer/IsosurfaceRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/IsosurfaceRenderer.java 2007-03-21 05:12:29 UTC (rev 7195) +++ trunk/Jmol/src/org/jmol/viewer/IsosurfaceRenderer.java 2007-03-21 06:22:47 UTC (rev 7196) @@ -28,10 +28,10 @@ void render() { Isosurface isosurface = (Isosurface)shape; for (int i = isosurface.meshCount; --i >= 0; ) - render1(isosurface.meshes[i]); + render1((IsosurfaceMesh)isosurface.meshes[i]); } boolean render1(IsosurfaceMesh mesh) { - return super.renderMesh(mesh, mesh.jvxlPlane != null, mesh.isContoured); + return super.renderMesh(mesh, mesh.jvxlPlane != null, mesh.isContoured, mesh.isBicolorMap); } } Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2007-03-21 05:12:29 UTC (rev 7195) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2007-03-21 06:22:47 UTC (rev 7196) @@ -34,13 +34,20 @@ // for now, just update this by hand // perhaps use ant filter later ... but mth doesn't like it :-( public final static String copyright = "(C) 2007 Jmol Development"; - public final static String version = "11.1.25"; + public final static String version = "11.1.26"; /* * * * - * + * + 11.1.26 + fixes two nasty bugs relating to isosurfaces and JVXL files. + -- JVXL files created from molecular orbitals will show up with no color + in 11.1.0 - 11.1.25 because of a missing number in the definition line :( + -- JVXL files created from molecular orbitals will show unwanted cross-over + surfaces from + to -. + 11.1.25 --fully dissociates geosurface from dots; @@ -80,7 +87,7 @@ color xxxx translucent N - where N is -1 to 6. + where N is -1 to 9. OR OR translucent -1 same as Jmol 10.2 @@ -160,7 +167,7 @@ adds "bwr" colorscheme as opposed to "rwb", which I think is backward. - isosurface -- now supports APBS (http://apbs.sourceforge.net) + isosurface -- now supports APBS ( ) molecular electrostatic potential output files write -- modified to allow unquoted filename in @@ -194,7 +201,7 @@ This build allows for the applet to be "bare-bones" -- only the essential classes included in the Jar file; others never included or possibly in accompanying jar files, such as, perhaps, JmolPopupMenu.jar, - JmolNavigation.jar, JmolBio.jar, JmolSurface.jar, JmolXtal.jar, etc. + JmolNavigation.jar, JmolBio.jar, Jm olSurface.jar, JmolXtal.jar, etc. Then a developer can slim down the download. The minimum is 697K, about 58% of the full package. All that gets you is atoms, bonds, Modified: trunk/Jmol/src/org/jmol/viewer/Mesh.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Mesh.java 2007-03-21 05:12:29 UTC (rev 7195) +++ trunk/Jmol/src/org/jmol/viewer/Mesh.java 2007-03-21 06:22:47 UTC (rev 7196) @@ -78,6 +78,8 @@ final static int DRAW_PLANE = 5; final static int DRAW_POINT = 6; final static int DRAW_TRIANGLE = 7; + final static int ISOSURFACE_BICOLOR = 8; + int drawType = DRAW_TRIANGLE; int[] drawTypes; Modified: trunk/Jmol/src/org/jmol/viewer/MeshRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/MeshRenderer.java 2007-03-21 05:12:29 UTC (rev 7195) +++ trunk/Jmol/src/org/jmol/viewer/MeshRenderer.java 2007-03-21 06:22:47 UTC (rev 7196) @@ -34,6 +34,7 @@ boolean iShowNormals; boolean iHideBackground; boolean isContoured; + boolean isBicolorMap; short backgroundColix; Point3f[] vertices; Point3i[] screens; @@ -44,13 +45,14 @@ Vector3f[] transformedVectors; boolean render1(Mesh mesh) { - return renderMesh(mesh, false, false); + return renderMesh(mesh, false, false, false); } - boolean renderMesh(Mesh mesh, boolean isPlane, boolean isContoured) { + boolean renderMesh(Mesh mesh, boolean isPlane, boolean isContoured, boolean isBicolorMap) { if (mesh == null || mesh.visibilityFlags == 0 || !g3d.setColix(mesh.colix)) return false; this.isContoured = isContoured; + this.isBicolorMap = isBicolorMap; int vertexCount = mesh.vertexCount; if (vertexCount == 0) return false; @@ -218,6 +220,9 @@ colixA = vertexColixes[iA]; colixB = vertexColixes[iB]; colixC = vertexColixes[iC]; + if (isBicolorMap && (colixA != colixB || colixB != colixC)) + continue; + //System.out.println("meshrender " + colixA + " " + colixB + " " + colixC); } else { colixA = colixB = colixC = colix; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-04-11 16:06:22
|
Revision: 7376 http://svn.sourceforge.net/jmol/?rev=7376&view=rev Author: hansonr Date: 2007-04-11 09:06:19 -0700 (Wed, 11 Apr 2007) Log Message: ----------- 11.1.28 or 29 -- one more goodie: set echo myecho script "background red" needs some work to acknowledge a hover action, I think. Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Echo.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Text.java Modified: trunk/Jmol/src/org/jmol/viewer/Echo.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Echo.java 2007-04-11 15:34:27 UTC (rev 7375) +++ trunk/Jmol/src/org/jmol/viewer/Echo.java 2007-04-11 16:06:19 UTC (rev 7376) @@ -59,6 +59,11 @@ Logger.debug("Echo.setProperty(" + propertyName + "," + value + ")"); } + if ("script" == propertyName) { + if (currentText != null) + currentText.setScript((String)value); + return; + } if ("target" == propertyName) { String target = ((String) value).intern().toLowerCase(); if (target != "none" && target != "all") { @@ -108,5 +113,20 @@ } return s.toString(); } + + boolean checkObjectClicked(int x, int y, int modifiers) { + Enumeration e = texts.elements(); + while (e.hasMoreElements()) { + Text t = (Text) e.nextElement(); + if (t.checkObjectClicked(x, y)) { + String s = t.getScript(); + if (s != null) + viewer.evalStringQuiet(s); + return true; + } + } + return false; + } + } Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-04-11 15:34:27 UTC (rev 7375) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-04-11 16:06:19 UTC (rev 7376) @@ -6365,17 +6365,18 @@ propertyName = "allOff"; break; case Token.none: - checkLength3(); echoShapeActive = false; + //fall through case Token.all: checkLength3(); + //fall through case Token.left: case Token.right: case Token.top: case Token.bottom: case Token.center: case Token.identifier: - propertyValue = statement[2].value; + propertyValue = parameterAsString(2); break; case Token.string: echo(2); @@ -6407,14 +6408,21 @@ case Token.bottom: case Token.center: case Token.identifier: //middle - propertyValue = statement[3].value; + propertyValue = parameterAsString(3); break; default: invalidArgument(); - } + } setShapeProperty(JmolConstants.SHAPE_ECHO, propertyName, propertyValue); return; } + //set echo name script "some script" + if (statementLength == 5 && getToken(3).tok == Token.script) { + propertyName = "script"; + propertyValue = parameterAsString(4); + setShapeProperty(JmolConstants.SHAPE_ECHO, propertyName, propertyValue); + return; + } //set echo name x-pos y-pos getToken(4); int i = 3; Modified: trunk/Jmol/src/org/jmol/viewer/Text.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Text.java 2007-04-11 15:34:27 UTC (rev 7375) +++ trunk/Jmol/src/org/jmol/viewer/Text.java 2007-04-11 16:06:19 UTC (rev 7376) @@ -56,6 +56,8 @@ Point3f xyz; String target; String text, textUnformatted; + String script; + boolean doFormatText; String[] lines; @@ -204,6 +206,14 @@ setZs(z, zSlab); } + void setScript(String script) { + this.script = (script == null || script.length() == 0 ? null : script); + } + + String getScript() { + return script; + } + void setPositions() { int xLeft, xCenter, xRight; if (valign == XY || valign == XYZ) { @@ -590,4 +600,9 @@ s.append(";\n"); return s.toString(); } + + boolean checkObjectClicked(int x, int y) { + return (script != null && + x >= boxX && x <= boxX + boxWidth && y >= boxY && y <= boxY + boxHeight); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-08-07 13:08:51
|
Revision: 8043 http://jmol.svn.sourceforge.net/jmol/?rev=8043&view=rev Author: hansonr Date: 2007-08-07 06:08:49 -0700 (Tue, 07 Aug 2007) Log Message: ----------- 11.3.9 # new feature: symmetryRange: load {mmm nnn 1|0} x.x where x.x is a maximum distance away from closest atom in the base cell Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-08-07 13:03:45 UTC (rev 8042) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2007-08-07 13:08:49 UTC (rev 8043) @@ -3716,16 +3716,17 @@ int iGroup = -1; int[] p; float distance = 0; - if (isFloatParameter(i)) { + if (tokAt(i) == Token.range) { + i++; distance = floatParameter(i++); - loadScript.append(" ").append(distance); + loadScript.append(" range ").append(distance); } htParams.put("symmetryRange", new Float(distance)); if (tokAt(i) == Token.spacegroup) { ++i; String spacegroup = TextFormat.simpleReplace(parameterAsString(i++), "''", "\""); - loadScript.append(" ").append(Escape.escape(spacegroup)); + loadScript.append(" spacegroup ").append(Escape.escape(spacegroup)); if (spacegroup.equalsIgnoreCase("ignoreOperators")) { iGroup = -999; } else { @@ -3751,7 +3752,7 @@ p[4] = iGroup; float[] fparams = new float[6]; i = floatParameterSet(i, fparams); - loadScript.append(" {"); + loadScript.append(" unitcell {"); for (int j = 0; j < 6; j++) { p[5 + j] = (int) (fparams[j] * 10000f); loadScript.append((j == 0 ? "" : " ")).append(p[5 + j]); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2007-08-07 13:03:45 UTC (rev 8042) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2007-08-07 13:08:49 UTC (rev 8043) @@ -1,7 +1,7 @@ version=11.3.9_dev # new feature: synchronization of applets using JavaScript -# new feature: symmetryRange: load {mmm nnn 1|0} x.x where x.x is a maximum distance away from closest atom in the base cell +# new feature: symmetryRange: load {mmm nnn 1|0} range x.x where x.x is a maximum distance away from closest atom in the base cell # # ----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-04-03 01:50:51
|
Revision: 4888 Author: migueljmol Date: 2006-04-02 18:50:45 -0700 (Sun, 02 Apr 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4888&view=rev Log Message: ----------- removed extraneous System.out.println() output Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java trunk/Jmol/src/org/jmol/viewer/Frame.java Modified: trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java 2006-04-03 01:47:47 UTC (rev 4887) +++ trunk/Jmol/src/org/jmol/viewer/AminoPolymer.java 2006-04-03 01:50:45 UTC (rev 4888) @@ -45,7 +45,6 @@ final static boolean debugHbonds = false; void calcHydrogenBonds(BitSet bsA, BitSet bsB) { - System.out.println("AminoPolymer.calcHydrogenBonds()"); initializeHbondDataStructures(); //Frame frame = model.mmset.frame; //hbondMax2 = frame.hbondMax * frame.hbondMax; @@ -87,7 +86,6 @@ final Point3f aminoHydrogenPoint = new Point3f(); void calcProteinMainchainHydrogenBonds(BitSet bsA, BitSet bsB) { - System.out.println("calcProteinMainchainHydrogenBonds()"); Point3f carbonPoint; Point3f oxygenPoint; Modified: trunk/Jmol/src/org/jmol/viewer/Frame.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-03 01:47:47 UTC (rev 4887) +++ trunk/Jmol/src/org/jmol/viewer/Frame.java 2006-04-03 01:50:45 UTC (rev 4888) @@ -1046,7 +1046,6 @@ bspf.addTuple(atom.modelIndex, atom); } } else { - System.out.println("sequential bspt order"); for (int i = atomCount; --i >= 0; ) { Atom atom = atoms[i]; if (! atom.isDeleted()) @@ -1214,7 +1213,6 @@ // null values for bitsets means "all" void autoBond(BitSet bsA, BitSet bsB) { - System.out.println("Frame.autoBond(" + bsA + "," + bsB + ")"); if (maxBondingRadius == Float.MIN_VALUE) findMaxRadii(); float bondTolerance = viewer.getBondTolerance(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |