Discussion List Archives

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CIF-JSON draft 2017-05-15

On 16 May 2017 at 14:30, Robert Hanson <hansonr@stolaf.edu> wrote:
Two last comments:

1. This comment in the CIF1 spec:

13. The base CIF specification distinguishes between character and numeric values (see paragraph 15 of the document Common semantic features). Particular CIF applications may make more finely-grained distinctions within these types. The paragraphs immediately above have the corollary that a data value such as 12 that appears within a CIF may be quoted (e.g. '12') if, and only if it is to be interpreted and stored in computer memory as a character string and not a numeric value. For example '12' might legitimately appear as a label for an atomic site, where another alphabetic or alphanumeric string such as 'C12' is also acceptable; but it may not legitimately be used to represent an integer quantity twelve.

​suggests that CIF-JSON absolutely cannot be round-tripped back to CIF format.

It can be round-tripped, if you have access to dictionary definitions for every data name appearing in every data block of the JSON object.  This is not true in general, but is probably true e.g. for a lot of the curated CIFs that are provided by structural databases. 

2. One thing we are missing here is a magic number. I know, transport should not need that. But before you know it, someone is going to put a CIF-JSON data stream into a file and then pass that file to another program such as Jmol, expecting the program to know what it is reading. This has always been a nightmare for Jmol. The #\#CIF_2.0 header takes care of that for CIF. In the past all too often people have created formats that don't quickly identify themselves, causing all sorts of headaches. What would you think of this?


This way a reader could  always know that it is reading CIF-JSON data immediately with just a 10-byte stream read. It would allow file saving and retrieval of the data.

Interesting idea.  We could change the 'Metadata' top-level JSON name to 'CIF-JSON' and recommend that this name appears first in the serialised stream, where possible. I don't think it is possible to make this stronger and mandate an order for keys in JSON objects, however.

cif-developers mailing list

T +61 (02) 9717 9907
F +61 (02) 9717 3145
M +61 (04) 0249 4148
cif-developers mailing list

Reply to: [list | sender only]
International Union of Crystallography

Scientific Union Member of the International Science Council (admitted 1947). Member of CODATA, the ISC Committee on Data. Partner with UNESCO, the United Nations Educational, Scientific and Cultural Organization in the International Year of Crystallography 2014.

International Science Council Scientific Freedom Policy

The IUCr observes the basic policy of non-discrimination and affirms the right and freedom of scientists to associate in international scientific activity without regard to such factors as ethnic origin, religion, citizenship, language, political stance, gender, sex or age, in accordance with the Statutes of the International Council for Science.