[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bob
Reply to: [list | sender only]
Re: CIF-JSON draft 2017-05-15
- Subject: Re: CIF-JSON draft 2017-05-15
- From: Robert Hanson <hansonr@xxxxxxxxxx>
- Date: Tue, 16 May 2017 23:06:02 -0500
- DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stolaf.edu; s=stolaf;h=mime-version:in-reply-to:references:from:date:message-id:subject:to;bh=uBWCPQEc5gxL5K4fKQdjzE1YUfMYCvvOUW7HoWGZpI0=;b=YMkztYBWS237iyFvJmvKKFYaUqPX7q8vrgfT1ANMQ4yP7ko5XfBbUCVu8yyqRsbNpwvPaUB9m0xgPmH9DsSItBQDmSDKLVa/0LVZX3dBvVCaNNMJFXMtEGyMdxBdbxWVMoBV0xCqXO4rINbIkV5l8TCuqN/X1ENlO10PYPLDmyA=
- In-Reply-To: <CAM+dB2fz+Y45c+Cgk7BABsSPQB2FKe9JxX2j+fRgPC+ehh-ddw@mail.gmail.com>
- References: <CAM+dB2cAAY3CjC741WU0GqaWmAi2iGHtwZ82iA1bCwuNoG6nQg@mail.gmail.com><CAF_YUvVa0JXgAN9Bec6fjd6Nmco5W7EHWLN=Ba=daRR9U-2PzQ@mail.gmail.com><CACaHzQVYeOfS9zTe4gDJMVNCTgxtat0zhMAd2EMX=etXj5g2Gw@mail.gmail.com><CAF_YUvWV3huhwoBuCOkKXqCcYH+8kjFCPjoa=j_v61JC4H32Jg@mail.gmail.com><CAF_YUvUMbVz2j5=XXD5WD3G+0XB4tY=r1zwXuADB14qQNZTPvg@mail.gmail.com><CAF_YUvXPj9g6CEnsKmwZwrp7p550nyykrnQY9iN5wpEnDzrrYQ@mail.gmail.com><CAF_YUvUaJM0bwV4vKZwARQw4Q44LN+TOyr4Ghge3P_qn90tUHQ@mail.gmail.com><CAF_YUvUGexW-7iSfJWQ_c=WZNnbzBJeFaNfzKRVK4DKmdydp+A@mail.gmail.com><CAM+dB2dY8xEp8BeSJfXD5E9+H6-qkBCodMV_gc-fetLNp=x_WA@mail.gmail.com><CAF_YUvU+O3yb-JG_zZWvTW0i7EuzA1_J3c0Q8drWqb6rScSkEw@mail.gmail.com><CAF_YUvWT4ZGT_BbpmB2G3Ya7ttzj70qXD7UofyAsPb010W_XJw@mail.gmail.com><CAF_YUvXb4jbKxSh=Q9Q76Zay-RMi8xXU_geQ5FB76cj5iozkOQ@mail.gmail.com><CAF_YUvW01EL98PYcAq0fADvF9BK6oJTdhe4Ju9byg5x5bmGc2Q@mail.gmail.com><CAM+dB2fz+Y45c+Cgk7BABsSPQB2FKe9JxX2j+fRgPC+ehh-ddw@mail.gmail.com>
On Tue, May 16, 2017 at 1:00 AM, James Hester <jamesrhester@gmail.com> wrote:
On 16 May 2017 at 14:30, Robert Hanson <hansonr@stolaf.edu> wrote:Two last comments:suggests that CIF-JSON absolutely cannot be round-tripped back to CIF format.
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.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.
Ah, right! Because then you know if a value is supposed to be a number or not. I get it.
{"CIF-JSON":{....}}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.
It's always possible to do that. If it seems valuable, I suggest requiring it. Like I said, someone is going to just save this thing, and then I am going to get a request to create a reader for it in Jmol. Or even with out that, the Jmol load command could be directed to a server of CIF-JSON and have to determine on the fly what it is reading so it can assign a reader automatically.
And then I have to create a resolver step to identify it among several dozen other formats. :( I guess Jmol could read the entire JSON string in prior to making a decision, but that is not the philosophy of Jmol. Right now there are only a couple of obscure formats that require coercing Jmol to use an explicit reader; all others are figured out automatically from the header area of the data stream.
Without a clear header, it would be a nightmare to tease out whether or not this thing is a CIF-JSON stream or not, particularly because the Metadata item could be anywhere in the file. I am so tired of formats that presume: "You wouldn't be reading this if you didn't know exactly what it was." Such designers think only of their own product and do not consider the broader context of its use.
And then I have to create a resolver step to identify it among several dozen other formats. :( I guess Jmol could read the entire JSON string in prior to making a decision, but that is not the philosophy of Jmol. Right now there are only a couple of obscure formats that require coercing Jmol to use an explicit reader; all others are figured out automatically from the header area of the data stream.
Without a clear header, it would be a nightmare to tease out whether or not this thing is a CIF-JSON stream or not, particularly because the Metadata item could be anywhere in the file. I am so tired of formats that presume: "You wouldn't be reading this if you didn't know exactly what it was." Such designers think only of their own product and do not consider the broader context of its use.
Bob
_______________________________________________ cif-developers mailing list cif-developers@iucr.org http://mailman.iucr.org/cgi-bin/mailman/listinfo/cif-developers
Reply to: [list | sender only]
- Follow-Ups:
- Re: CIF-JSON draft 2017-05-15 (Marcin Wojdyr)
- References:
- CIF-JSON draft 2017-05-15 (James Hester)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Marcin Wojdyr)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (James Hester)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (Robert Hanson)
- Re: CIF-JSON draft 2017-05-15 (James Hester)
- Prev by Date: Re: CIF-JSON draft 2017-05-15
- Next by Date: Re: CIF-JSON draft 2017-05-15
- Prev by thread: Re: CIF-JSON draft 2017-05-15
- Next by thread: Re: CIF-JSON draft 2017-05-15
- Index(es):