Revision: 20783 http://sourceforge.net/p/jmol/code/20783 Author: hansonr Date: 2015-09-21 12:17:42 +0000 (Mon, 21 Sep 2015) Log Message: ----------- DSSR fix; Ras3D reader for DSSR
Modified Paths: -------------- trunk/Jmol/src/org/jmol/dssx/DSSR1.java trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java trunk/Jmol/src/org/jmol/viewer/FileManager.java Added Paths: ----------- trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java Modified: trunk/Jmol/src/org/jmol/dssx/DSSR1.java =================================================================== --- trunk/Jmol/src/org/jmol/dssx/DSSR1.java 2015-09-21 02:16:07 UTC (rev 20782) +++ trunk/Jmol/src/org/jmol/dssx/DSSR1.java 2015-09-21 12:17:42 UTC (rev 20783) @@ -136,9 +136,9 @@ if (x != null) { info.put("dssr", x); setGroup1(vwr.ms, modelIndex); + fixDSSRJSONMap(x); + setBioPolymers((BioModel) vwr.ms.am[modelIndex], false); } - fixDSSRJSONMap(x); - } catch (Exception e) { info = null; out = "" + e; @@ -240,13 +240,7 @@ Lst<Map<String, Object>> singles = (info == null ? null : (Lst<Map<String, Object>>) info.get("ssSegments")); if (pairs == null && singles == null) { - BioModel m = (BioModel) vwr.ms.am[modelIndex]; - int n = m.getBioPolymerCount(); - for (int i = n; --i >= 0;) { - BioPolymer bp = m.bioPolymers[i]; - if (bp.isNucleic()) - ((NucleicPolymer) bp).isDssrSet = true; - } + setBioPolymers((BioModel) vwr.ms.am[modelIndex], true); return; } BS bsAtoms = ms.am[modelIndex].bsAtoms; @@ -278,6 +272,15 @@ } + private void setBioPolymers(BioModel m, boolean b) { + int n = m.getBioPolymerCount(); + for (int i = n; --i >= 0;) { + BioPolymer bp = m.bioPolymers[i]; + if (bp.isNucleic()) + ((NucleicPolymer) bp).isDssrSet = b; + } + } + private NucleicMonomer setRes(Atom atom) { NucleicMonomer m = (NucleicMonomer) atom.group; ((NucleicPolymer) m.bioPolymer).isDssrSet = true; Modified: trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java 2015-09-21 02:16:07 UTC (rev 20782) +++ trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java 2015-09-21 12:17:42 UTC (rev 20783) @@ -290,11 +290,11 @@ // 2 if (vertexCount == 4) { nTriangles += 2; - addTriangleCheck(vertices[0], vertices[1], vertices[3], 5, color, false, -1); - addTriangleCheck(vertices[1], vertices[2], vertices[3], 3, color, false, -1); + addTriangleCheck(vertices[0], vertices[1], vertices[3], 5, 0, false, color); + addTriangleCheck(vertices[1], vertices[2], vertices[3], 3, 0, false, color); } else { nTriangles++; - addTriangleCheck(vertices[0], vertices[1], vertices[2], 7, color, false, -1); + addTriangleCheck(vertices[0], vertices[1], vertices[2], 7, 0, false, color); } } if (isBinary) Added: trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java =================================================================== --- trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java (rev 0) +++ trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java 2015-09-21 12:17:42 UTC (rev 20783) @@ -0,0 +1,150 @@ +/* $RCSfile$ + * $Author: hansonr $ + * $Date: 2007-03-30 11:40:16 -0500 (Fri, 30 Mar 2007) $ + * $Revision: 7273 $ + * + * Copyright (C) 2007 Miguel, Bob, Jmol Development + * + * Contact: hans...@stolaf.edu + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jmol.jvxl.readers; + +import java.io.BufferedReader; +import java.util.Hashtable; +import java.util.Map; + +import javajs.util.CU; +import javajs.util.P3; + +import org.jmol.jvxl.data.JvxlCoder; +import org.jmol.util.Logger; + +/* + * + */ + + +class Ras3DReader extends PolygonFileReader { + + private String pmeshError; + private String type; + private boolean asQuads; + private int nPolygons; + + + Ras3DReader(){} + + @Override + void init2(SurfaceGenerator sg, BufferedReader br) { + init2PR(sg, br); + } + + protected void init2PR(SurfaceGenerator sg, BufferedReader br) { + init2PFR(sg, br); + String fileName = (String) ((Object[])sg.getReaderData())[0]; + if (fileName == null) + return; + type = "ras3d"; + setHeader(); + } + + protected void setHeader() { + jvxlFileHeaderBuffer.append(type + + " file format\nvertices and triangles only\n"); + JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(volumeData, + jvxlFileHeaderBuffer); + } + + @Override + void getSurfaceData() throws Exception { + if (readVerticesAndPolygons()) + Logger.info(type + " file contains " + + nVertices + " vertices and " + nPolygons + " polygons for " + + nTriangles + " triangles"); + else + Logger.error(params.fileName + ": " + + (pmeshError == null ? "Error reading pmesh data " + : pmeshError)); + } + + protected boolean readVerticesAndPolygons() { + try { + if (readVertices()) + return true; + } catch (Exception e) { + if (pmeshError == null) + pmeshError = type + " ERROR: " + e; + } + return false; + } + + Map<String, Integer> htVertices; + + private boolean readVertices() throws Exception { + htVertices = new Hashtable<String, Integer>(); + int[] v0 = new int[3]; + int[] v1 = new int[3]; + int[] v2; + int c0 = 0, c1 = 0, c2; + if (rd().indexOf("DSSR") >= 0) + asQuads = true; + while (rd() != null) { + while (!line.equals("1")) { + rd(); + } + // triangles only + rd(); + String[] tokens = getTokens(); + v0[0] = getPoint(tokens, 0); + v0[1] = getPoint(tokens, 3); + v0[2] = getPoint(tokens, 6); + nTriangles++; + c0 = CU.colorTriadToFFRGB(parseFloatStr(tokens[9]), + parseFloatStr(tokens[10]), parseFloatStr(tokens[11])); + System.out.println(CU.colorPtFromInt(c0, new P3())); + if (asQuads) { + if (nTriangles % 2 == 1) { + v2 = v1; + v1 = v0; + v0 = v2; + c2 = c1; + c1 = c0; + c0 = c2; + continue; + } + addTriangleCheck(v0[0], v0[1], v0[2], 6, 0, false, c0); + addTriangleCheck(v1[0], v1[1], v1[2], 3, 0, false, c1); + } else { + addTriangleCheck(v0[0], v0[1], v0[2], 7, 0, false, c0); + } + nPolygons++; + } + return true; + } + + private int getPoint(String[] tokens, int i) { + String key = tokens[i] + ";" + tokens[i+1] + ";" + tokens[i+2]; + Integer v = htVertices.get(key); + if (v == null) { + addVertexCopy(P3.new3(parseFloatStr(tokens[i]),parseFloatStr(tokens[i+1]),parseFloatStr(tokens[i+2])), 0, nVertices, false); + htVertices.put(key, v = Integer.valueOf(nVertices++)); + } + return v.intValue(); + } + + +} Property changes on: trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2015-09-21 02:16:07 UTC (rev 20782) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2015-09-21 12:17:42 UTC (rev 20783) @@ -1387,6 +1387,8 @@ return "Nff"; if (line.indexOf("BEGIN_DATAGRID_3D") >= 0 || line.indexOf("BEGIN_BANDGRID_3D") >= 0) return "Xsf"; + if (line.indexOf("tiles in x, y") >= 0) + return "Ras3D"; // binary formats: problem here is that the buffered reader // may be translating byte sequences into unicode // and thus shifting the offset 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