Skip to content
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

how to interpret _pdbx_item_linked_group_list? #32

Open
wojdyr opened this issue Nov 12, 2020 · 3 comments
Open

how to interpret _pdbx_item_linked_group_list? #32

wojdyr opened this issue Nov 12, 2020 · 3 comments

Comments

@wojdyr
Copy link
Contributor

wojdyr commented Nov 12, 2020

As an example, _pdbx_item_linked_group_list defines a relation between atom_site (child category) and pdbx_poly_seq_scheme (parent category).

atom_site                                9  '_atom_site.auth_asym_id'                             '_pdbx_poly_seq_scheme.pdb_strand_id'       pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.auth_comp_id'                             '_pdbx_poly_seq_scheme.pdb_mon_id'          pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.auth_seq_id'                              '_pdbx_poly_seq_scheme.pdb_seq_num'         pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.label_asym_id'                            '_pdbx_poly_seq_scheme.asym_id'             pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.label_comp_id'                            '_pdbx_poly_seq_scheme.mon_id'              pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.label_entity_id'                          '_pdbx_poly_seq_scheme.entity_id'           pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.label_seq_id'                             '_pdbx_poly_seq_scheme.seq_id'              pdbx_poly_seq_scheme
atom_site                                9  '_atom_site.pdbx_PDB_ins_code'                        '_pdbx_poly_seq_scheme.pdb_ins_code'        pdbx_poly_seq_scheme

How to validate such a relation?
In this case, atoms in polymers are expected to have parents in _pdbx_poly_seq_scheme and atoms in non-polymers don't, because pdbx_poly_seq_scheme is for polymers only.
Are there general rules to tell when parent in linked group must exist?

@epeisach
Copy link
Contributor

This creates a group of linked items.

It says there must be a match between atom_site and pdbx_poly_seq_scheme in which the pairs would match.

This allows the dictionary to say a row in atom_site must match the same in pdbx_poly_seq_scheme.
Otherwise, a simple parent/child relationship limits you to say that for a a value of atom_site.auth_asym_id - there is at least one value in pdbx_poly_seq_schee.pdb_strand_id that matches, which is a pretty low bar. Requiring that all attributes match at one time is useful to have.

The 9 is a group id.

@wojdyr
Copy link
Contributor Author

wojdyr commented Dec 15, 2020

It says there must be a match between atom_site and pdbx_poly_seq_scheme in which the pairs would match.

This allows the dictionary to say a row in atom_site must match the same in pdbx_poly_seq_scheme.

As we know, it's not true in general, because rows in atom_site that correspond to non-polymers don't match anything in pdbx_poly_seq.
Are there general rules to tell when parent in linked group must exist?

@epeisach
Copy link
Contributor

epeisach commented Jul 7, 2021

In theory the rules should apply to all. However, I see that there is some logic in cpp-cif-file/src/CifParentChild that will allow certain ones to be missing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants