Revision: 20772 http://sourceforge.net/p/jmol/code/20772 Author: hansonr Date: 2015-09-14 11:56:50 +0000 (Mon, 14 Sep 2015) Log Message: ----------- Jmol.___JmolVersion="14.3.16_2015.09.14"
bug fix: Crystallographic Open Database CIF files have unusual atom_site_label ("MgT") and no atom_site_type_symbol, leading to missing element assignments Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java trunk/Jmol/src/org/jmol/adapter/readers/quantum/GamessUKReader.java trunk/Jmol/src/org/jmol/adapter/readers/quantum/MopacGraphfReader.java trunk/Jmol/src/org/jmol/adapter/readers/quantum/SpartanReader.java trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java 2015-09-14 04:27:09 UTC (rev 20771) +++ trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java 2015-09-14 11:56:50 UTC (rev 20772) @@ -316,9 +316,8 @@ private void readSingleAtom() { Atom atom = new Atom(); atom.set(0, 0, 0); - String s = atom.atomName = parser.fullTrim(data); - atom.elementSymbol = s.length() == 1 ? s : s.substring(0, 1) - + s.substring(1, 2).toLowerCase(); + atom.atomName = parser.fullTrim(data); + atom.getElementSymbol(); asc.addAtom(atom); } @@ -1246,13 +1245,8 @@ + " has invalid/unknown coordinates"); continue; } - if (atom.elementSymbol == null && atom.atomName != null) { - String sym = atom.atomName; - int pt = 0; - while (pt < sym.length() && PT.isLetter(sym.charAt(pt))) - pt++; - atom.elementSymbol = (pt == 0 || pt > 2 ? "Xx" : sym.substring(0, pt)); - } + if (atom.elementSymbol == null && atom.atomName != null) + atom.getElementSymbol(); if (!filterCIFAtom(atom, assemblyId)) continue; setAtomCoord(atom); Modified: trunk/Jmol/src/org/jmol/adapter/readers/quantum/GamessUKReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/quantum/GamessUKReader.java 2015-09-14 04:27:09 UTC (rev 20771) +++ trunk/Jmol/src/org/jmol/adapter/readers/quantum/GamessUKReader.java 2015-09-14 11:56:50 UTC (rev 20772) @@ -110,7 +110,7 @@ String[] tokens = getTokens(); int atomicNumber = (int) parseFloatStr(tokens[2]); Atom atom = setAtomCoordScaled(null, tokens, 3, ANGSTROMS_PER_BOHR); - atom.elementSymbol = AtomSetCollectionReader.getElementSymbol(atomicNumber); + atom.elementSymbol = getElementSymbol(atomicNumber); atomNames.addLast(atom.atomName = tokens[1]); } } Modified: trunk/Jmol/src/org/jmol/adapter/readers/quantum/MopacGraphfReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/quantum/MopacGraphfReader.java 2015-09-14 04:27:09 UTC (rev 20771) +++ trunk/Jmol/src/org/jmol/adapter/readers/quantum/MopacGraphfReader.java 2015-09-14 11:56:50 UTC (rev 20772) @@ -75,7 +75,7 @@ parseFloatRange(line, 29, 41)); if (line.length() > 41) atom.partialCharge = parseFloatStr(line.substring(41)); - atom.elementSymbol = AtomSetCollectionReader.getElementSymbol(atomicNumbers[i]); + atom.elementSymbol = getElementSymbol(atomicNumbers[i]); //System.out.println(atom.elementSymbol + " " + atom.x + " " + atom.y + " " + atom.z); } } Modified: trunk/Jmol/src/org/jmol/adapter/readers/quantum/SpartanReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/quantum/SpartanReader.java 2015-09-14 04:27:09 UTC (rev 20771) +++ trunk/Jmol/src/org/jmol/adapter/readers/quantum/SpartanReader.java 2015-09-14 11:56:50 UTC (rev 20772) @@ -76,11 +76,9 @@ private void readAtoms() throws Exception { discardLinesUntilBlank(); while (rd() != null && (/* atomNum = */parseIntRange(line, 0, 3)) > 0) { - String elementSymbol = parseTokenRange(line, 4, 6); - String atomName = parseTokenRange(line, 7, 13); Atom atom = asc.addNewAtom(); - atom.elementSymbol = elementSymbol; - atom.atomName = atomName; + atom.elementSymbol = parseTokenRange(line, 4, 6); + atom.atomName = parseTokenRange(line, 7, 13); setAtomCoordXYZ(atom, parseFloatRange(line, 17, 30), parseFloatRange(line, 31, 44), parseFloatRange( line, 45, 58)); } Modified: trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java 2015-09-14 04:27:09 UTC (rev 20771) +++ trunk/Jmol/src/org/jmol/adapter/smarter/Atom.java 2015-09-14 11:56:50 UTC (rev 20772) @@ -104,30 +104,29 @@ } public String getElementSymbol() { - if (elementSymbol == null) - if (atomName != null) { - int len = atomName.length(); - int ichFirst = 0; - char chFirst = 0; - while (ichFirst < len && - !isValidSymChar1(chFirst = atomName.charAt(ichFirst))) - ++ichFirst; - switch(len - ichFirst) { - case 0: + if (elementSymbol == null && atomName != null) { + int len = atomName.length(); + int ichFirst = 0; + char chFirst = 0; + while (ichFirst < len + && !isValidSymChar1(chFirst = atomName.charAt(ichFirst))) + ++ichFirst; + switch (len - ichFirst) { + case 0: + break; + default: + char chSecond = atomName.charAt(ichFirst + 1); + if (isValidSymNoCase(chFirst, chSecond)) { + elementSymbol = "" + chFirst + chSecond; break; - default: - char chSecond = atomName.charAt(ichFirst + 1); - if (isValidSymNoCase(chFirst, chSecond)) { - elementSymbol = "" + chFirst + chSecond; - break; - } - //$FALL-THROUGH$ - case 1: - if (isValidSym1(chFirst)) - elementSymbol = "" + chFirst; - break; } + //$FALL-THROUGH$ + case 1: + if (isValidSym1(chFirst)) + elementSymbol = "" + chFirst; + break; } + } return elementSymbol; } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-09-14 04:27:09 UTC (rev 20771) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-09-14 11:56:50 UTC (rev 20772) @@ -58,8 +58,13 @@ TODO: image off stops JSmol -Jmol.___JmolVersion="14.3.16_2015.09.09" +Jmol.___JmolVersion="14.3.16_2015.09.14" +bug fix: Crystallographic Open Database CIF files have unusual atom_site_label ("MgT") + and no atom_site_type_symbol, leading to missing element assignments + +JmolVersion="14.3.16_2015.09.09" + new feature: SMILES/SMARTS atom designations [C(xxxx)] -- allows pointing to the same atom without connection numbers -- (xxxx) may be anything, including just () This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits