-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Auto-generate Set
key values?
#7
Comments
Yes, I agree that this is safe to do for single-datablock datasets. Indeed, we have to explicitly assume this as otherwise we're making all existing data blocks invalid due to lack of a key data name for the |
What about for a cif file with multiple blocks? I argue that it is still safe, as it emulates current cif behaviour, where each block is a distinct structure. |
Yes. If it is not asserted that these blocks belong together, then no problem, they are single-block datasets collected into one file. If it is asserted that they belong together, then using UUIDs for the missing id values before merging them would reflect the actual semantic disconnectedness of the blocks. |
Random collection of blocks, autogenerate to your heart's content. ✓
Non-random collection of blocks, autogenerate is good, as the CIF creator would have included keys if they meant to link things? |
A pathological question:
Maybe this?data_merged1 loop_ _cell.structure_id _cell.length_a _cell.length_b _cell.length_c _cell.angle_alpha _cell.angle_beta _cell.angle_gamma STRUCTURE_GUID_A 12.3456 . . . . . STRUCTURE_GUID_B . 12.3456 . . . . STRUCTURE_GUID_C . . 12.3456 . . . STRUCTURE_GUID_D . . . 90 . . STRUCTURE_GUID_E . . . . 90 . STRUCTURE_GUID_F . . . . . 90 |
Lacking any |
From discussion within COMCIFS/cif_core#445 and mentioned in #6 (comment)
I posit that if a
Set
category (or single packet Loop) key datavalue doesn't exist in a given datablock, then it is safe to autogenerate one.I believe that this would make most of the multiblock dictionary transparent to the end-user, as there is no requirement to give (for example)
_structure.id
or_space_group.id
values if you're not availing yourself of their features.James does say
but in this case, you're actually using multiblock features, and so you need to define them.
.
An example of my thinking is:
_structure.id
has been explicitly defined, so I must assume it could be used somewhere else._space_group.id
has not been defined, so I can give it some arbitrary value, as there is no other way to link space group information between datablocks*. This same arbitrary value is then also given to_structure.space_group_id
, linking** together structureA
with space groupSOME_GUID_VALUE
. The key ofCELL
is_cell.structure_id
, so this takes the valueA
, as it is in the same block as an explicitly defined_structure.id
.* Unless there are some
AUDIT_BLOCK
shenanigans you could do...** as
_structure.space_group_id
is literally aLink
to_space_group.id
.The text was updated successfully, but these errors were encountered: