You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm not sure what you mean by "logic dataset order" but the IHM dictionary doesn't mandate ordering for any table IIRC. python-ihm generally will output objects in a consistent but unsorted order. In the case of datasets they will be output in the same order they're encountered in the Python object hierarchy. This is not a bug unless the output dataset IDs are actually wrong.
BTW, generally it should not be necessary to place objects in the various orphan_ lists. python-ihm stores objects in a hierarchy, so generally something like a Dataset should be referenced by another object in that hierarchy (such as a Restraint or another Dataset). But on reading an mmCIF file it's possible that an object such as a dataset is listed in a table but nothing refers to it. The orphan_ lists are provided to keep references to such objects.
My first impression was that it should, just as you said, traverse the hierarchy (something like a depth-first search, starting from primary datasets). But it looks like object hierarchy is more complicated. For instance, in the example above, objects were created in the following order: B20, B00, B10, B11. and yet B00-B11 end up on top of the list, while B10-B20 are at the bottom.
A branched topology of datasets (see below) breaks a logic dataset order in the mmcif file.
With a topology like this
the Dataset table looks like this:
But if i delete a parallel node B11, everything is ordered in a more reasonable manner:
I'm adding B11 to the protocol as
po.system.orphan_datasets.append(B11)
. Am I missing something, or is this a bug?The text was updated successfully, but these errors were encountered: