Revision: 21290
          http://sourceforge.net/p/jmol/code/21290
Author:   hansonr
Date:     2016-11-29 04:02:07 +0000 (Tue, 29 Nov 2016)
Log Message:
-----------
Jmol.___JmolVersion="14.7.4_2016.11.28"

new feature: MagCIF reader upgraded to new IUCR standard 
 -- see http://comcifs.github.io/magCIF.dic.html
 -- only required these two key changes:

    // old: _magnetic_space_group.transform_from_parent_Pp_abc
    // new: _parent_space_group.child_transform_Pp_abc

    // old: _magnetic_space_group.transform_to_standard_Pp_abc
    // new: _space_group_magn.transform_BNS_Pp_abc
      
new feature: CIF reader allows for [ .... ] array notation
 -- still returned as a string since it can contain error bars:  [0.24(05) 
0.34(10)]

new feature: CIF 2.0 reader
 -- just a class extension for now
 -- no difference from CIF 1.1 yet

Modified Paths:
--------------
    trunk/Jmol/src/javajs/util/CifDataParser.java
    trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java
    trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties

Added Paths:
-----------
    trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2DataParser.java
    trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2Reader.java
    trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdr.java
    trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdrInterface.java

Modified: trunk/Jmol/src/javajs/util/CifDataParser.java
===================================================================
--- trunk/Jmol/src/javajs/util/CifDataParser.java       2016-11-10 02:30:53 UTC 
(rev 21289)
+++ trunk/Jmol/src/javajs/util/CifDataParser.java       2016-11-29 04:02:07 UTC 
(rev 21290)
@@ -10,6 +10,7 @@
 import javajs.api.GenericLineReader;
 
 
+// BH 11/21/16 -- adds support for array grouping [...] - used in 2016-format 
magCIF files
 
 /**
 *
@@ -616,7 +617,7 @@
    * @return  the next line or null if EOF
    * @throws Exception
    */
-  private String setStringNextLine() throws Exception {
+  protected String setStringNextLine() throws Exception {
     setString(readLine());
     if (line == null || line.length() == 0)
       return line;
@@ -644,7 +645,7 @@
    * @return TRUE if there are more tokens in the line buffer
    * 
    */
-  private boolean strHasMoreTokens() {
+  protected boolean strHasMoreTokens() {
     if (str == null)
       return false;
     char ch = '#';
@@ -662,12 +663,12 @@
    *
    * @return null if no more tokens, "\0" if '.' or '?', or next token 
    */
-  private String nextStrToken() {
+  protected String nextStrToken() {
     if (ich == cch)
       return null;
     int ichStart = ich;
     char ch = str.charAt(ichStart);
-    if (ch != '\'' && ch != '"' && ch != '\1') {
+    if (ch != '\'' && ch != '"' && ch != '\1') {// && ch != '[') {
       wasUnQuoted = true;
       while (ich < cch && (ch = str.charAt(ich)) != ' ' && ch != '\t')
         ++ich;
@@ -678,18 +679,19 @@
       return s;
     }
     wasUnQuoted = false;
-    char chOpeningQuote = ch;
+    boolean isArray = (ch  == '[');
+    char chClosingQuote = (isArray ? ']' : ch);
     boolean previousCharacterWasQuote = false;
     while (++ich < cch) {
       ch = str.charAt(ich);
       if (previousCharacterWasQuote && (ch == ' ' || ch == '\t'))
         break;
-      previousCharacterWasQuote = (ch == chOpeningQuote);
+      previousCharacterWasQuote = (ch == chClosingQuote);
     }
-    if (ich == cch) {
-      if (previousCharacterWasQuote) // close quote was last char of string
+    if (ich == cch || isArray) {
+      if (previousCharacterWasQuote && !isArray) // close quote was last char 
of string
         return str.substring(ichStart + 1, ich - 1);
-      // reached the end of the string without finding closing '
+      // reached the end of the string without finding closing ', or we have 
[...]
       return str.substring(ichStart, ich);
     }
     ++ich; // throw away the last white character

Added: trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2DataParser.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2DataParser.java             
                (rev 0)
+++ trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2DataParser.java     
2016-11-29 04:02:07 UTC (rev 21290)
@@ -0,0 +1,26 @@
+package org.jmol.adapter.readers.cif;
+
+import javajs.util.CifDataParser;
+
+/**
+ * see http://journals.iucr.org/j/issues/2016/01/00/aj5269/index.html
+ * 
+ */
+public class Cif2DataParser extends CifDataParser {
+
+  
+  /**
+   * 
+   * @return the next token of any kind, or null
+   * @throws Exception
+   */
+  @Override
+  public String getNextToken() throws Exception {
+    while (!strHasMoreTokens())
+      if (setStringNextLine() == null)
+        return null;
+    return nextStrToken();
+  }
+
+
+}


Property changes on: 
trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2DataParser.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2Reader.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2Reader.java                 
        (rev 0)
+++ trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2Reader.java 2016-11-29 
04:02:07 UTC (rev 21290)
@@ -0,0 +1,73 @@
+/* $RCSfile$
+ * $Author: hansonr $
+ * $Date: 2006-10-20 07:48:25 -0500 (Fri, 20 Oct 2006) $
+ * $Revision: 5991 $
+ *
+ * Copyright (C) 2003-2005  Miguel, Jmol Development, www.jmol.org
+ *
+ * Contact: jmol-develop...@lists.sf.net
+ *
+ *  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 Public 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.adapter.readers.cif;
+
+import java.util.Hashtable;
+import java.util.Map;
+
+import javajs.api.GenericCifDataParser;
+import javajs.util.CifDataParser;
+import javajs.util.Lst;
+import javajs.util.M4;
+import javajs.util.P3;
+import javajs.util.PT;
+import javajs.util.SB;
+
+import org.jmol.adapter.smarter.Atom;
+import org.jmol.adapter.smarter.AtomSetCollectionReader;
+import org.jmol.adapter.smarter.Structure;
+import org.jmol.api.JmolAdapter;
+import org.jmol.c.STR;
+import org.jmol.java.BS;
+import org.jmol.util.BSUtil;
+import org.jmol.util.Logger;
+import org.jmol.util.SimpleUnitCell;
+
+
+/**
+ * 
+ * Preliminary Cif2 reader. Just a shell. 
+ * 
+ * See http://journals.iucr.org/j/issues/2016/01/00/aj5269/index.html
+ * 
+ * 
+ * @author Bob Hanson (hans...@stolaf.edu)
+ * 
+ */
+public class Cif2Reader extends CifReader {
+  
+  @Override
+  protected GenericCifDataParser getCifDataParser() {
+    return new Cif2DataParser().set(this, null);
+  }
+
+
+  
+  
+  
+}
+
+
+
+


Property changes on: trunk/Jmol/src/org/jmol/adapter/readers/cif/Cif2Reader.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java  2016-11-10 
02:30:53 UTC (rev 21289)
+++ trunk/Jmol/src/org/jmol/adapter/readers/cif/CifReader.java  2016-11-29 
04:02:07 UTC (rev 21290)
@@ -77,7 +77,8 @@
 public class CifReader extends AtomSetCollectionReader {
 
   private static final String titleRecords = 
"__citation_title__publ_section_title__active_magnetic_irreps_details__";
-  private MSCifRdr mr;
+  private MSCifRdr modr; // Modulated Structure subreader
+//  private MagCifRdr magr;// Magnetic CIF subreader - not necessary
 
   // no need for reflection here -- the CIF reader is already
   // protected by reflection
@@ -97,7 +98,7 @@
   protected boolean iHaveDesiredModel;
   protected boolean isMMCIF;
   protected boolean isLigand;
-  boolean isMagCIF;
+  protected boolean isMagCIF;
   boolean haveHAtoms;
   private String molecularType = "GEOM_BOND default";
   private char lastAltLoc = '\0';
@@ -167,7 +168,7 @@
      * than that, we are checking here for proper CIF syntax, and Jmol will
      * report if it finds data where a key is supposed to be.
      */
-    parser = new CifDataParser().set(this, null);
+    parser = getCifDataParser();
     line = "";
     while ((key = parser.peekToken()) != null)
       if (!readAllData())
@@ -181,6 +182,11 @@
     }
   }
 
+  protected GenericCifDataParser getCifDataParser() {
+    // overridden in Cif2Reader
+    return new CifDataParser().set(this, null);
+  }
+
   private boolean readAllData() throws Exception {
     if (key.startsWith("data_")) {
       isLigand = false;
@@ -276,7 +282,9 @@
           || key.contains("_magn_name") || key.contains("_bns_name") // PRELIM
       ) {
         processSymmetrySpaceGroupName();
-      } else if (key.startsWith("_space_group_transform")) {
+      } else if (key.startsWith("_space_group_transform") 
+          || key.startsWith("_parent_space_group") 
+          || key.startsWith("_space_group_magn_transform")) {
         processUnitCellTransform();
       } else if (key.contains("_database_code")) {
         addModelTitle("ID");
@@ -302,9 +310,28 @@
 
   private void processUnitCellTransform() {
     data = PT.replaceAllCharacters(data, " ", "");
-    if (key.contains("_from_parent"))
+    
+    // old:
+      
+      
+    // _magnetic_space_group.transform_from_parent_Pp_abc  
'-1/3a+1/3b-2/3c,-a-b,-4/3a+4/3b+4/3c;0,0,0'
+    // _magnetic_space_group.transform_to_standard_Pp_abc  'a-c,-b,-2a+c;0,0,0'
+      
+    // new: 
+    // _parent_space_group.child_transform_Pp_abc   
'-1/3a+1/3b-2/3c,-a-b,-4/3a+4/3b+4/3c;0,0,0'
+    // _space_group_magn.transform_BNS_Pp_abc    '-a-c,-b,c;0,0,0'
+      
+    //  related:
+        
+    // _space_group_magn.transform_OG_Pp_abc     '-a-c,-b,1/2c;0,0,0'
+    // _parent_space_group.transform_Pp_abc   'a,b,c;0,0,0'
+
+    
+      
+    
+    if (key.contains("_from_parent") || key.contains("child_transform"))
       addCellType("parent", data, true);
-    else if (key.contains("_to_standard"))
+    else if (key.contains("_to_standard") || 
key.contains("transform_bns_pp_abc"))
       addCellType("standard", data, false);
     appendLoadNote(key + ": " + data);
   }
@@ -339,16 +366,26 @@
   }
 
   private MSCifRdr getModulationReader() throws Exception {
-    return (mr == null ? initializeMSCIF() : mr);
+    return (modr == null ? initializeMSCIF() : modr);
   }
 
   private MSCifRdr initializeMSCIF() throws Exception {
-    if (mr == null)
-      ms = mr = (MSCifRdr) 
getInterface("org.jmol.adapter.readers.cif.MSCifRdr");
-    modulated = (mr.initialize(this, modDim) > 0);
-    return mr;
+    if (modr == null)
+      ms = modr = (MSCifRdr) 
getInterface("org.jmol.adapter.readers.cif.MSCifRdr");
+    modulated = (modr.initialize(this, modDim) > 0);
+    return modr;
   }
 
+//  private MagCifRdr getMagCifReader() throws Exception {
+//    return (magr == null ? initializeMagCIF() : magr);
+//  }
+
+//  private MagCifRdr initializeMagCIF() throws Exception {
+//    if (magr == null)
+//      magr = (MagCifRdr) 
getInterface("org.jmol.adapter.readers.cif.MagCifRdr");
+//    return magr;
+//  }
+
   public Map<String, Integer> modelMap;
 
   protected void newModel(int modelNo) throws Exception {
@@ -466,7 +503,7 @@
       addLatticeVectors();
       asc.setTensors();
       getModulationReader().setModulation(true, sym);
-      mr.finalizeModulation();
+      modr.finalizeModulation();
     }
     if (isMagCIF) {
       asc.setNoAutoBond();
@@ -609,9 +646,13 @@
       }
     }
     if (lattvecs != null && lattvecs.size() > 0
-        && asc.getSymmetry().addLatticeVectors(lattvecs))
+        && asc.getSymmetry().addLatticeVectors(lattvecs)) {
       appendLoadNote("Note! " + lattvecs.size()
           + " symmetry operators added for lattice centering " + latticeType);
+      for (int i = 0; i < lattvecs.size(); i++)
+        appendLoadNote(PT.toJSON(null, lattvecs.get(i)));
+    }
+    
     latticeType = null;
   }
 

Added: trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdr.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdr.java                  
        (rev 0)
+++ trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdr.java  2016-11-29 
04:02:07 UTC (rev 21290)
@@ -0,0 +1,69 @@
+/* $RCSfile$
+ * $Author: hansonr $
+ * $Date: 2006-10-20 07:48:25 -0500 (Fri, 20 Oct 2006) $
+ * $Revision: 5991 $
+ *
+ * Copyright (C) 2003-2005  Miguel, Jmol Development, www.jmol.org
+ *
+ * Contact: jmol-develop...@lists.sf.net
+ *
+ *  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 Public 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.adapter.readers.cif;
+
+import java.util.Hashtable;
+import java.util.Map;
+
+import javajs.util.Lst;
+import javajs.util.M4;
+import javajs.util.P3;
+import javajs.util.PT;
+import javajs.util.SB;
+
+import org.jmol.adapter.smarter.Atom;
+import org.jmol.adapter.smarter.AtomSetCollectionReader;
+import org.jmol.adapter.smarter.Structure;
+import org.jmol.api.JmolAdapter;
+import org.jmol.c.STR;
+import org.jmol.java.BS;
+import org.jmol.util.BSUtil;
+import org.jmol.util.Logger;
+import org.jmol.util.SimpleUnitCell;
+
+
+/**
+ * 
+ * magCIF files are recognized after class creation, so this is a subreader
+ * but it turned out not to be necessary.
+ * 
+ * 
+ * @author Bob Hanson (hans...@stolaf.edu)
+ * 
+ */
+public class MagCifRdr implements MagCifRdrInterface {
+
+  
+  private AtomSetCollectionReader r;
+
+  public MagCifRdr() {
+    // for reflection
+  }
+
+  @Override
+  public void initialize(AtomSetCollectionReader r) throws Exception {
+     this.r = r;
+  }
+
+}


Property changes on: trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdr.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdrInterface.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdrInterface.java         
                (rev 0)
+++ trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdrInterface.java 
2016-11-29 04:02:07 UTC (rev 21290)
@@ -0,0 +1,145 @@
+package org.jmol.adapter.readers.cif;
+
+import org.jmol.adapter.smarter.AtomSetCollectionReader;
+
+public interface MagCifRdrInterface {
+
+  void initialize(AtomSetCollectionReader r) throws Exception;
+
+}
+
+// see http://comcifs.github.io/magCIF.dic.html
+
+
+//  Table of Contents
+//  MAGNETIC
+//  ATOM_SITE_MOMENT_FOURIER
+//  _atom_site_moment_Fourier.atom_site_label
+//  _atom_site_moment_Fourier.axis
+//  _atom_site_moment_Fourier.id•
+//  _atom_site_moment_Fourier.wave_vector_seq_id
+//  ATOM_SITE_MOMENT_FOURIER_PARAM
+//  _atom_site_moment_Fourier_param.cos
+//  _atom_site_moment_Fourier_param.cos_symmform
+//  _atom_site_moment_Fourier_param.id•
+//  _atom_site_moment_Fourier_param.modulus
+//  _atom_site_moment_Fourier_param.modulus_symmform
+//  _atom_site_moment_Fourier_param.phase
+//  _atom_site_moment_Fourier_param.phase_symmform
+//  _atom_site_moment_Fourier_param.sin
+//  _atom_site_moment_Fourier_param.sin_symmform
+//  ATOM_SITE_MOMENT_SPECIAL_FUNC
+//  _atom_site_moment_special_func.atom_site_label•
+//  _atom_site_moment_special_func.sawtooth_ax
+//  _atom_site_moment_special_func.sawtooth_ay
+//  _atom_site_moment_special_func.sawtooth_az
+//  _atom_site_moment_special_func.sawtooth_c
+//  _atom_site_moment_special_func.sawtooth_w
+//  ATOM_SITES_MOMENT_FOURIER
+//  _atom_sites_moment_Fourier.axes_description
+//  PARENT_PROPAGATION_VECTOR
+//  _parent_propagation_vector.id•
+//  _parent_propagation_vector.kxkykz
+//  PARENT_SPACE_GROUP
+//  _parent_space_group.child_transform_Pp_abc
+//  _parent_space_group.IT_number
+//  _parent_space_group.name_H-M_alt
+//  _parent_space_group.reference_setting
+//  _parent_space_group.transform_Pp_abc
+//  SPACE_GROUP_MAGN
+//  _space_group_magn.name_BNS
+//  _space_group_magn.name_OG
+//  _space_group_magn.number_BNS
+//  _space_group_magn.OG_wavevector_kxkykz
+//  _space_group_magn.point_group_name
+//  _space_group_magn.point_group_number
+//  _space_group_magn.ssg_name
+//  _space_group_magn.ssg_number
+//  _space_group_magn.transform_BNS_Pp
+//  _space_group_magn.transform_BNS_Pp_abc
+//  _space_group_magn.transform_OG_Pp
+//  _space_group_magn.transform_OG_Pp_abc
+//  SPACE_GROUP_MAGN_SSG_TRANSFORMS
+//  _space_group_magn_ssg_transforms.description
+//  _space_group_magn_ssg_transforms.id•
+//  _space_group_magn_ssg_transforms.Pp_superspace
+//  _space_group_magn_ssg_transforms.source
+//  SPACE_GROUP_MAGN_TRANSFORMS
+//  _space_group_magn_transforms.description
+//  _space_group_magn_transforms.id•
+//  _space_group_magn_transforms.Pp
+//  _space_group_magn_transforms.Pp_abc
+//  _space_group_magn_transforms.source
+//  SPACE_GROUP_SYMOP_MAGN_CENTERING
+//  _space_group_symop_magn_centering.description
+//  _space_group_symop_magn_centering.id•
+//  _space_group_symop_magn_centering.xyz
+//  SPACE_GROUP_SYMOP_MAGN_OG_CENTERING
+//  _space_group_symop_magn_OG_centering.description
+//  _space_group_symop_magn_OG_centering.id•
+//  _space_group_symop_magn_OG_centering.xyz
+//  SPACE_GROUP_SYMOP_MAGN_OPERATION
+//  _space_group_symop_magn_operation.description
+//  _space_group_symop_magn_operation.id•
+//  _space_group_symop_magn_operation.xyz
+//  SPACE_GROUP_SYMOP_MAGN_SSG_CENTERING
+//  _space_group_symop_magn_ssg_centering.algebraic
+//  _space_group_symop_magn_ssg_centering.id•
+//  SPACE_GROUP_SYMOP_MAGN_SSG_OPERATION
+//  _space_group_symop_magn_ssg_operation.algebraic
+//  _space_group_symop_magn_ssg_operation.id•
+//  ATOM_SITE_MOMENT
+//  _atom_site_moment.Cartn
+//  _atom_site_moment.crystalaxis_x
+//  _atom_site_moment.crystalaxis_y
+//  _atom_site_moment.crystalaxis_z
+//  _atom_site_moment.Cartn_z
+//  _atom_site_moment.Cartn_x
+//  _atom_site_moment.spherical_polar
+//  _atom_site_moment.crystalaxis
+//  _atom_site_moment.refinement_flags_magnetic
+//  _atom_site_moment.Cartn_y
+//  _atom_site_moment.label•
+//  _atom_site_moment.spherical_azimuthal
+//  _atom_site_moment.spherical_modulus
+//  _atom_site_moment.modulation_flag
+//  _atom_site_moment.symmform
+//  ATOM_SITE_FOURIER_WAVE_VECTOR (Original category from: CIF_MS)
+//  atom_site_Fourier_wave_vector.q3_coeff
+//  atom_site_Fourier_wave_vector.q_coeff
+//  atom_site_Fourier_wave_vector.q2_coeff
+//  atom_site_Fourier_wave_vector.q1_coeff
+//  ATOM_TYPE_SCAT (Original category from: CIF_CORE)
+//  _atom_type_scat.neutron_magnetic_j0_D
+//  _atom_type_scat.neutron_magnetic_j0_e
+//  _atom_type_scat.neutron_magnetic_j2_a2
+//  _atom_type_scat.neutron_magnetic_j2_A1
+//  _atom_type_scat.neutron_magnetic_j2_D
+//  _atom_type_scat.neutron_magnetic_j2_e
+//  _atom_type_scat.neutron_magnetic_j4_D
+//  _atom_type_scat.neutron_magnetic_j4_e
+//  _atom_type_scat.neutron_magnetic_j4_c2
+//  _atom_type_scat.neutron_magnetic_j6_C1
+//  _atom_type_scat.neutron_magnetic_j6_c2
+//  _atom_type_scat.neutron_magnetic_j4_C1
+//  _atom_type_scat.neutron_magnetic_j6_a2
+//  _atom_type_scat.neutron_magnetic_j6_A1
+//  _atom_type_scat.neutron_magnetic_j4_A1
+//  _atom_type_scat.neutron_magnetic_j4_a2
+//  _atom_type_scat.neutron_magnetic_j0_A1
+//  _atom_type_scat.neutron_magnetic_j6_D
+//  _atom_type_scat.neutron_magnetic_j6_e
+//  _atom_type_scat.neutron_magnetic_j0_B1
+//  _atom_type_scat.neutron_magnetic_j2_C1
+//  _atom_type_scat.neutron_magnetic_j0_b2
+//  _atom_type_scat.neutron_magnetic_source
+//  _atom_type_scat.neutron_magnetic_j2_c2
+//  _atom_type_scat.neutron_magnetic_j0_a2
+//  _atom_type_scat.neutron_magnetic_j4_B1
+//  _atom_type_scat.neutron_magnetic_j4_b2
+//  _atom_type_scat.neutron_magnetic_j6_b2
+//  _atom_type_scat.neutron_magnetic_j6_B1
+//  _atom_type_scat.neutron_magnetic_j2_b2
+//  _atom_type_scat.neutron_magnetic_j2_B1
+//  _atom_type_scat.neutron_magnetic_j0_c2
+//  _atom_type_scat.neutron_magnetic_j0_C1


Property changes on: 
trunk/Jmol/src/org/jmol/adapter/readers/cif/MagCifRdrInterface.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java
===================================================================
--- trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java       2016-11-10 
02:30:53 UTC (rev 21289)
+++ trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java       2016-11-29 
04:02:07 UTC (rev 21290)
@@ -47,7 +47,7 @@
   private final static String classBase = "org.jmol.adapter.readers.";
   private final static String[] readerSets = new String[] {
     "aflow.", ";AFLOW;",
-    "cif.", ";Cif;MMCif;MMTF;",
+    "cif.", ";Cif;Cif2;MMCif;MMTF;MagCif",
     "molxyz.", ";Mol3D;Mol;Xyz;",
     "more.", ";BinaryDcd;Gromacs;Jcampdx;MdCrd;MdTop;Mol2;TlsDataOnly;",
     "quantum.", 
";Adf;Csf;Dgrid;GamessUK;GamessUS;Gaussian;GaussianFchk;GaussianWfn;Jaguar;" +
@@ -383,6 +383,10 @@
 
   private final static String[] p2nStartRecords = 
   { "P2n", "REMARK   1 P2N" };
+  
+  private final static String[] cif2StartRecords = 
+  { "Cif2", "#\\#CIF_2.0" };
+  
 
   private final static String[] xmlStartRecords = 
   { "Xml", "<?xml" };
@@ -393,7 +397,7 @@
     moldenFileStartRecords, dcdFileStartRecords, tlsDataOnlyFileStartRecords,
     inputFileStartRecords, magresFileStartRecords, pymolStartRecords, 
     janaStartRecords, jsonStartRecords, jcampdxStartRecords, 
-    jmoldataStartRecords, pqrStartRecords, p2nStartRecords };
+    jmoldataStartRecords, pqrStartRecords, p2nStartRecords, cif2StartRecords };
 
   ////////////////////////////////////////////////////////////////
   // Test 3. check first time for special file types
@@ -833,6 +837,9 @@
   private final static String[] aflowContainsRecords =
   { "AFLOW", "/AFLOWDATA/"};
 
+  private final static String[] magCifContainsRecords =
+  { "MagCif", "_space_group_magn"};
+
   private final static String[][] headerContainsRecords =
   { sptRecords, bilbaoContainsRecords, xmlContainsRecords, 
gaussianContainsRecords, 
     ampacContainsRecords, mopacContainsRecords, qchemContainsRecords, 
@@ -844,7 +851,7 @@
     dmolContainsRecords, gulpContainsRecords, 
     espressoContainsRecords, siestaContainsRecords, xcrysDenContainsRecords,
     
mopacArchiveContainsRecords,abinitContainsRecords,gaussianFchkContainsRecords,
-    inputContainsRecords, aflowContainsRecords
+    inputContainsRecords, aflowContainsRecords, magCifContainsRecords
     
   };
   

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-11-10 02:30:53 UTC 
(rev 21289)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2016-11-29 04:02:07 UTC 
(rev 21290)
@@ -47,8 +47,32 @@
  -- sets the echo offset to a specific screen pixel offset
  -- TODO not saved in state
 
-Jmol.___JmolVersion="14.7.4_2016.11.05"
+Jmol.___JmolVersion="14.7.4_2016.11.28"
 
+new feature: MagCIF reader upgraded to new IUCR standard 
+ -- see http://comcifs.github.io/magCIF.dic.html
+ -- only required these two key changes:
+
+    // old: _magnetic_space_group.transform_from_parent_Pp_abc
+    // new: _parent_space_group.child_transform_Pp_abc
+
+    // old: _magnetic_space_group.transform_to_standard_Pp_abc
+    // new: _space_group_magn.transform_BNS_Pp_abc
+      
+new feature: CIF reader allows for [ .... ] array notation
+ -- still returned as a string since it can contain error bars:  [0.24(05) 
0.34(10)]
+
+new feature: CIF 2.0 reader
+ -- just a class extension for now
+ -- no difference from CIF 1.1 yet
+ 
+JmolVersion="14.7.4_2016.11.22"
+
+new feature: adds MagCIF reader based on 
http://comcifs.github.io/magCIF.dic.html
+new feature: adds CIF array [...] reading (as a string only; reader needs to 
parse this) 
+
+JmolVersion="14.7.4_2016.11.05"
+
 bug fix: miscalculates vector scale and direction for incommensurate 
modulation of magnetic spin  
 bug fix: MoleculeInfo.nElements incremented by number of elements on each 
subsequent call rather
     rather than being properly reset to zero before recalculating.

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

Reply via email to