Skip to content

Auto-generate Set key values? #7

@rowlesmr

Description

@rowlesmr

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

I think that would be a harmless rule to have. Maybe not as useful as it looks, because somewhere else that item will be referenced, otherwise there's no point to having it identified in the first place. So then that "other place" will need to know what the ID is. For example, if a parent structure wants to reference a child structure, or a phase wants to identify what structure it has.

but in this case, you're actually using multiblock features, and so you need to define them.

.

An example of my thinking is:

data_block
  _structure.id A
  _space_group.IT_number 62
  _cell.length_a 12.3456

_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 structure A with space group SOME_GUID_VALUE. The key of CELL is _cell.structure_id, so this takes the value A, 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 a Link to _space_group.id.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions