Tim,
I think Dimitri's point is that all the references are implicitly defined
by list indices, rather than explicit keys. For example, something like
{
"atoms": {
"C1": { "element": "C", "location": [ 0.230811, 0.380820, -0.610968 ] },
"C2": { "element": "C", "location": [ -0.230811, -0.380820, 0.610968 ] }
},
"bonds": [
{ "atoms": [ "C1", "C2" ], "order": 1 }
]}
will result in generally cleaner code. That is,
molecule["atoms"]["C1"]["location"] is easier to understand than
molecule["elements"]["coords"]["3d"][0]. In that regard, I completely agree
with him.
While i somewhat agree with Dimitri's point about the stability associated
with lost bits (explicit keys will hold up better to a lost comma byte than
list indices), I also think that it's up to the socket infrastructure to
validate transmitted data.
On Thu, Jun 6, 2013 at 4:03 PM, Tim Vandermeersch <
tim.vandermeer...@gmail.com> wrote:
>
>
> On Thu, Jun 6, 2013 at 10:50 PM, Dimitri Maziuk <dmaz...@bmrb.wisc.edu>wrote:
>
>> On 06/06/2013 03:13 PM, Tim Vandermeersch wrote:
>> > Hi,
>> >
>> > The OpenChemsitry project also uses JSON (
>> > http://wiki.openchemistry.org/Chemical_JSON).
>>
>> Not criticizing your effort, specifically, as this is common to most
>> "life sciences" formats, but,
>>
>
> I was not involved with this effort but thought it might be good to make
> others aware of this. The OpenChemistry project was started by Kitware and
> I know Marcus Hanwell is working on this (I included him in the recipients).
>
>
>> I'm afraid to a programmer this has about 0 information content:
>>
>> elements": {
>> "number": [ 1, 6, 1, 1, 6, 1, 1, 1 ]
>> },
>> "coords": {
>> "3d": [ 1.185080, -0.003838, 0.987524,
>> 0.751621, -0.022441, -0.020839,
>> 1.166929, 0.833015, -0.569312,
>> 1.115519, -0.932892, -0.514525,
>> -0.751587, 0.022496, 0.020891,
>> -1.166882, -0.833372, 0.568699,
>> -1.115691, 0.932608, 0.515082,
>> -1.184988, 0.004424, -0.987522 ]
>> }
>> },
>> "bonds": {
>> "connections": {
>> "index": [ 0, 1,
>> 1, 2,
>> 1, 3,
>> 1, 4,
>> 4, 5,
>> 4, 6,
>> 4, 7 ]
>> },
>> "order": [ 1, 1, 1, 1, 1, 1, 1 ]
>>
>>
>> Where does it say which one's "C1" and which one's "H7"? All I can tell
>> from this is all atoms are linked with the same type of bond ("1" stands
>> for "aromatic" perhaps?) What do you draw if the "-0.932892" is missing
>> from the json the client sent you?
>>
>
> The molecule above contains al you need. The elements.number list contains
> the chemical element number (i.e. 1 = H, 6 = C) for the atoms in the order
> that will be adhered to in the rest of the JSON string (i.e. the list
> indices are the atom indices). Ths bond.connections.index list contains
> pairs that specify a start and end atom for a bond. The orders are the
> orders of the bonds as they are listed in the conncections.index list. 1
> simply means a single bond. The described molecule is therefore ethane with
> explicit hydrogens.
>
> I'm not sure what you mean by the "-0.932892" is missing, do you mean a
> single value from the list is missing? If so, the code that produced the
> JSON is wrong but this is not something the format tries to handle. Also
> the 3d coordinates may well be left out. AFAIK, this format was meant as a
> simple format to exchange molecules between different software modules
> using a JSON to ensure no handwritten parser code is needed.
>
> Marcus, could you elaborate on this?
>
>
>> If you want it machine-usable, you need at least the table of elements,
>> the table of bond "numbers" (might as well use names), and atoms encoded
>> as (element, index) pairs. Connections as (atom1, atom2, bond) tuples
>> and 3d coordinates as (x, y, z) tuples.
>>
>> One of the particularly annoying things about pubchem is nowhere in
>> their ASN.1, XML, or SDF you will find compound name that is shown on
>> the webpage.
>>
>> (Apologies for the mini-rant, I've been working for biochemists for too
>> long.)
>>
>
> No problem, any feedback is welcome :)
>
> Tim
>
>
>> --
>> Dimitri Maziuk
>> Programmer/sysadmin
>> BioMagResBank, UW-Madison -- http://www.bmrb.wisc.edu
>>
>>
>>
>> ------------------------------------------------------------------------------
>> How ServiceNow helps IT people transform IT departments:
>> 1. A cloud service to automate IT design, transition and operations
>> 2. Dashboards that offer high-level views of enterprise services
>> 3. A single system of record for all IT processes
>> http://p.sf.net/sfu/servicenow-d2d-j
>> _______________________________________________
>> OpenBabel-discuss mailing list
>> OpenBabel-discuss@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>>
>>
>
>
> ------------------------------------------------------------------------------
> How ServiceNow helps IT people transform IT departments:
> 1. A cloud service to automate IT design, transition and operations
> 2. Dashboards that offer high-level views of enterprise services
> 3. A single system of record for all IT processes
> http://p.sf.net/sfu/servicenow-d2d-j
> _______________________________________________
> OpenBabel-discuss mailing list
> OpenBabel-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
>
>
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss