From: Bob H. <ha...@st...> - 2006-01-31 19:06:45
|
Excellent! Thanks. Questions: How do I run the latest version after a "commit"? Where do I get the compiled JmolApplet<n>.jar files? Bob SourceForge.net wrote: > Bugs item #1418722, was opened at 2006-01-30 16:57 > Message generated for change (Comment added) made by nicove > You can respond by visiting: > https://sourceforge.net/tracker/?func=detail&atid=379133&aid=1418722&group_id=23629 > > Please note that this message will contain a full copy of the comment thread, > including the initial issue submission, for this request, > not just the latest update. > Category: File Input/Output > Group: None > >>Status: Closed >>Resolution: Fixed > > Priority: 5 > Submitted By: Bob Hanson (hansonr) > >>Assigned to: Nicolas (nicove) > > Summary: CIF bonding block being misread > > Initial Comment: > JmolApplet 10.00.47 > > In the attached CIF file, also found at > http://www.stolaf.edu/people/hansonr/jmol/docs/ > examples/mc2.cif > > the block > > loop_ > _geom_bond_atom_site_label_1 > _geom_bond_site_symmetry_1 > _geom_bond_atom_site_label_2 > _geom_bond_site_symmetry_2 > _geom_bond_distance > _geom_bond_publ_flag > Cu1 . S1 . 2.2466(15) yes > ... > > is being misread, resulting in file load failure. The > reader is not properly recognizing that the two labels > aren't the first two fields and instead trying to read > the second label from the symmetry_1 field, resulting > in an error. > > When I remove this block or change this block to > > loop_ > _geom_bond_atom_site_label_1 > _geom_bond_atom_site_label_2 > _geom_bond_site_symmetry_2 > _geom_bond_distance > _geom_bond_publ_flag > Cu1 S1 . 2.2466(15) yes > ... > > the modified file is read properly, so I'm sure this > is all it is. > > Bob Hanson > > > ---------------------------------------------------------------------- > > >>Comment By: Nicolas (nicove) > > Date: 2006-01-31 19:18 > > Message: > Logged In: YES > user_id=1096197 > > I have just committed the modification to the CIF Reader. > Your file is now being read without problems. > You can check if the result is ok. > > ---------------------------------------------------------------------- > > Comment By: Nicolas (nicove) > Date: 2006-01-31 01:07 > > Message: > Logged In: YES > user_id=1096197 > > Forget my first analysis: the problem is quite simple in fact. > > The method processGeomBondLoopBlock() never checks for the > end of the loop (for example for a loop_ line). It should do > something like the processAtomSiteLoopBlock(). > > It crashes in your case because after the first _geom_bond > loop, there's a whitespace at the beginning of the lines. > The crash is happening only because there's no test to check > the end of the loop. > > I can't fix right now, the CVS problem is blocking me (and > probably everyone else) to do an update or a commit. > > ---------------------------------------------------------------------- > > Comment By: Nicolas (nicove) > Date: 2006-01-30 22:22 > > Message: > Logged In: YES > user_id=1096197 > > Bob, I am trying to commit modifications to the Cif reader > in CVS but I have a big problem with CVS. The commit failed > and now there's a lock I can't get rid of > (https://sourceforge.net/tracker/index.php?func=detail&aid=1419160&group_id=1&atid=200001) > > > Could you test the modification with a few Cif files ? > > To Miguel: I think the Cif reader works only in some > situations (probably the most common). It requires that the > known fields are present and at the beginning: for example, > if _geom_bond_distance is put before one of the three > others, it won't work. > > The modification has to be made from line 399 in > CifReader.java. The text up to the comment about helix and > turn structure data has to be replaced by: > final static byte GEOM_BOND_ATOM_SITE_LABEL_1 = 1; > final static byte GEOM_BOND_ATOM_SITE_LABEL_2 = 2; > final static byte GEOM_BOND_SITE_SYMMETRY_1 = 3; > final static byte GEOM_BOND_SITE_SYMMETRY_2 = 4; > // final static byte GEOM_BOND_DISTANCE = 5; > > final static byte GEOM_BOND_PROPERTY_MAX = 5; > > final static String[] geomBondFields = { > "_geom_bond_atom_site_label_1", > "_geom_bond_atom_site_label_2", > "_geom_bond_site_symmetry_1", > "_geom_bond_site_symmetry_2", > // "_geom_bond_distance", > }; > > final static byte[] geomBondFieldMap = { > GEOM_BOND_ATOM_SITE_LABEL_1, > GEOM_BOND_ATOM_SITE_LABEL_2, > GEOM_BOND_SITE_SYMMETRY_1, > GEOM_BOND_SITE_SYMMETRY_2, > // GEOM_BOND_DISTANCE, > }; > > final static boolean[] geomBondFieldRequired = { > true, > true, > false, > true, > }; > > void processGeomBondLoopBlock() throws Exception { > int[] fieldTypes = new int[100]; // should be enough > boolean[] propertyReferenced = new > boolean[GEOM_BOND_PROPERTY_MAX]; > int fieldCount = parseLoopParameters(geomBondFields, > geomBondFieldMap, > fieldTypes, > propertyReferenced); > for (int i = GEOM_BOND_PROPERTY_MAX; --i > 0; ) // only > >>0, not >= 0 > > if (! propertyReferenced[i] && geomBondFieldRequired[i]) { > logger.log("?que? missing _geom_bond property:" + i); > skipLoopData(); > return; > } > > for (; line != null && > (line = line.trim()).length() > 0 && > line.charAt(0) != '#'; > line = reader.readLine()) { > tokenizer.setString(line); > int atomIndex1 = -1; > int atomIndex2 = -1; > String symmetry1 = null; > String symmetry2 = null; > for (int i = 0; i < fieldCount; ++i) { > if (! tokenizer.hasMoreTokens()) > tokenizer.setString(reader.readLine()); > String field = tokenizer.nextToken(); > switch (fieldTypes[i]) { > case NONE: > break; > case GEOM_BOND_ATOM_SITE_LABEL_1: > atomIndex1 = > atomSetCollection.getAtomNameIndex(field); > break; > case GEOM_BOND_ATOM_SITE_LABEL_2: > atomIndex2 = > atomSetCollection.getAtomNameIndex(field); > break; > case GEOM_BOND_SITE_SYMMETRY_1: > if (field.charAt(0) != '.') > symmetry1 = field; > break; > case GEOM_BOND_SITE_SYMMETRY_2: > if (field.charAt(0) != '.') > symmetry2 = field; > break; > } > } > if (atomIndex1 >= 0 && atomIndex2 >= 0) { > //TODO > // miguel 2004 11 19 > // for now, do not deal with symmetry > if ((symmetry1 == null) && (symmetry2 == null)) { > Bond bond = new Bond(); > bond.atomIndex1 = atomIndex1; > bond.atomIndex2 = atomIndex2; > atomSetCollection.addBond(bond); > } > } > } > } > > > ---------------------------------------------------------------------- > > Comment By: Nicolas (nicove) > Date: 2006-01-30 20:27 > > Message: > Logged In: YES > user_id=1096197 > > In the CIF reader, there's no code for handling > "_geom_bond_site_symmetry_1" (not even parsing) > > The handling of "_geom_bond_site_symmetry_2" only consists > of parsing the value, not using it. > > Would it be ok to deal with symmetry_1 the same way as > symmetry_2: parsing it but not using it ? > > ---------------------------------------------------------------------- > > You can respond by visiting: > https://sourceforge.net/tracker/?func=detail&atid=379133&aid=1418722&group_id=23629 > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 > _______________________________________________ > Jmol-developers mailing list > Jmo...@li... > https://lists.sourceforge.net/lists/listinfo/jmol-developers -- Robert M. Hanson, ha...@st..., 507-646-3107 Professor of Chemistry, St. Olaf College 1520 St. Olaf Ave., Northfield, MN 55057 mailto:ha...@st... http://www.stolaf.edu/people/hansonr "Imagination is more important than knowledge." - Albert Einstein |