From: Miguel <mig...@us...> - 2005-05-31 14:05:40
|
Update of /cvsroot/jmol/Jmol/src/org/jmol/viewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8650/src/org/jmol/viewer Modified Files: Chain.java Compiler.java Eval.java Frame.java Mmset.java Model.java Log Message: fixed sequence code ranges to be completely independent of sequence code values Index: Chain.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Chain.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Chain.java 24 Jan 2005 19:42:52 -0000 1.7 +++ Chain.java 31 May 2005 14:05:30 -0000 1.8 @@ -88,6 +88,29 @@ } } + void selectSeqcodeRange(int seqcodeA, int seqcodeB, BitSet bs) { + int indexA = getSeqcodeIndex(seqcodeA); + if (indexA < 0) + return; + int indexB = getSeqcodeIndex(seqcodeB); + if (indexB < 0) + return; + if (indexA > indexB) { + int t = indexA; + indexA = indexB; + indexB = t; + } + for (int i = indexA; i <= indexB; ++i) + groups[i].selectAtoms(bs); + } + + int getSeqcodeIndex(int seqcode) { + int i; + for (i = groupCount; --i >= 0 && groups[i].seqcode != seqcode; ) + {} + return i; + } + int getSelectedGroupCount() { return selectedGroupCount; } Index: Compiler.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Compiler.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Compiler.java 20 Mar 2005 15:29:07 -0000 1.7 +++ Compiler.java 31 May 2005 14:05:31 -0000 1.8 @@ -1205,11 +1205,11 @@ return false; if (tokPeek() == Token.hyphen) { tokenNext(); - int seqcodeMin = seqcode; + int seqcodeA = seqcode; if (! clauseSequenceCode()) return false; return generateResidueSpecCode(new Token(Token.spec_seqcode_range, - seqcodeMin, + seqcodeA, new Integer(seqcode))); } return generateResidueSpecCode(new Token(Token.spec_seqcode, Index: Eval.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Eval.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- Eval.java 27 May 2005 20:33:27 -0000 1.36 +++ Eval.java 31 May 2005 14:05:31 -0000 1.37 @@ -873,9 +873,9 @@ stack[sp++] = getSpecSeqcode(instruction.intValue); break; case Token.spec_seqcode_range: - int min = instruction.intValue; - int last = ((Integer)instruction.value).intValue(); - stack[sp++] = getSpecSeqcodeRange(min, last); + int seqcodeA = instruction.intValue; + int seqcodeB = ((Integer)instruction.value).intValue(); + stack[sp++] = getSpecSeqcodeRange(seqcodeA, seqcodeB); break; case Token.spec_chain: stack[sp++] = getSpecChain((char)instruction.intValue); @@ -1142,15 +1142,10 @@ return bsResno; } - BitSet getSpecSeqcodeRange(int seqcodeMin, int seqcodeLast) { + BitSet getSpecSeqcodeRange(int seqcodeA, int seqcodeB) { Frame frame = viewer.getFrame(); BitSet bsResidue = new BitSet(); - for (int i = viewer.getAtomCount(); --i >= 0; ) { - Atom atom = frame.getAtomAt(i); - int atomSeqcode = atom.getSeqcode(); - if (atomSeqcode >= seqcodeMin && atomSeqcode <= seqcodeLast) - bsResidue.set(i); - } + frame.selectSeqcodeRange(seqcodeA, seqcodeB, bsResidue); return bsResidue; } Index: Frame.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Frame.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- Frame.java 6 Mar 2005 02:32:10 -0000 1.22 +++ Frame.java 31 May 2005 14:05:31 -0000 1.23 @@ -1703,4 +1703,8 @@ atoms[atomIndex].group.chain.selectAtoms(bsChain); return bsChain; } + + void selectSeqcodeRange(int seqcodeA, int seqcodeB, BitSet bs) { + mmset.selectSeqcodeRange(seqcodeA, seqcodeB, bs); + } } Index: Mmset.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Mmset.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Mmset.java 24 Jan 2005 19:43:11 -0000 1.8 +++ Mmset.java 31 May 2005 14:05:31 -0000 1.9 @@ -211,6 +211,11 @@ models[i].calcHydrogenBonds(); } + void selectSeqcodeRange(int seqcodeA, int seqcodeB, BitSet bs) { + for (int i = modelCount; --i >= 0; ) + models[i].selectSeqcodeRange(seqcodeA, seqcodeB, bs); + } + static class Structure { String typeName; byte type; Index: Model.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Model.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Model.java 24 Jan 2005 19:43:11 -0000 1.6 +++ Model.java 31 May 2005 14:05:31 -0000 1.7 @@ -86,6 +86,11 @@ polymers[i].calcSelectedMonomersCount(bsSelected); } + void selectSeqcodeRange(int seqcodeA, int seqcodeB, BitSet bs) { + for (int i = chainCount; --i >= 0; ) + chains[i].selectSeqcodeRange(seqcodeA, seqcodeB, bs); + } + int getGroupCount() { int groupCount = 0; for (int i = chainCount; --i >= 0; ) |