Partition By Frame Node: list index out of range

   2627   11   0
User Avatar
Member
209 posts
Joined: Nov. 2010
Offline
Hi,

Is it possible to change PDG Partition By Frame Node to work not only if attr. value is starting from 0?
Please take a look at the attachment example how it could be. Correct me, please if it is not an acceptable workflow.

Thanks
Ostap

Attachments:
partition_question.hipnc (45.9 KB)

User Avatar
Staff
585 posts
Joined: May 2014
Offline
That sounds like a bug – I'll try to fix it for you this week.
User Avatar
Staff
585 posts
Joined: May 2014
Offline
This is fixed in tomorrow's daily build. You can set the Wedge Attribute on the Partition by Frame Node to any attribute. The values don't have to start at zero any more, and they can be strings as well. The node will group the work items by the values in that in attribute in sorted order and then do the partitioning, instead of assuming the values go from 0..N.

I also fixed an issue with the node not working properly with input work items that have a negative frame value.
User Avatar
Member
209 posts
Joined: Nov. 2010
Offline
Thank you very much for the fast fix!

And that is where SideFX is strong and easily can beat other rivals!
User Avatar
Member
209 posts
Joined: Nov. 2010
Offline
Another kind of related question:
Let's say that I'm looking for a node “partitionByNodeFrames” which allows me to combine frames from different nodes but prevent original node frames from partition between each other (attachment probably will explain better
Don't want to create a custom partition node if one already exists.

Attachments:
partition_by_node_frame.hipnc (107.5 KB)

User Avatar
Staff
585 posts
Joined: May 2014
Offline
There isn't anything quite like that, but we can add that functionality to the way the node handles the Wedge Attribute. Right now, if the wedge attribute isn't found on an input work item then that item gets ignored during the partitioning step. However, I can add an option to the Partition by Frame so that work items without the Wedge Attribute will be added to all partitions with the matching frame.

With that change, you'd be able to enable the Wedge Attribute and set it to “eye”. That would give you 20 partitions, one for each work item on the left branch, but with the corresponding dependency from the right branch.

I think it would also make sense to rename the Wedge Attribute to Split Attribute, since it'd no longer be used just for keeping wedges separated.
User Avatar
Staff
585 posts
Joined: May 2014
Offline
I should also add that I think it may also be useful for all partitioner nodes to have that Split Attribute as an option, so they can split work items by an attribute value before partitioning. It was added to the Partition by Frame since it was it obvious that it was needed for FX workflows with wedging, but it seems like it could be useful on other ones. Ideally it would be something we make built into PDG itself, so the custom partitioner nodes can also leverage that functionality easily.
User Avatar
Member
209 posts
Joined: Nov. 2010
Offline
That would be amazing!
Absolutely agree that “Wedge Attribute” name doesn't correspond for all cases.
User Avatar
Member
209 posts
Joined: Nov. 2010
Offline
Any estimation when those changes could be released?
User Avatar
Staff
585 posts
Joined: May 2014
Offline
The partition by frame changes I mentioned are in Monday morning's daily build (that'll be 18.0.428 I think). With those changes you can achieve the same thing you have in your file without needing to use a custom partitioner.

The changes to make it so the Split by Attribute feature is available for all partitioners will take a bit more time, but I hope to get those in next week.
Edited by tpetrick - April 5, 2020 22:22:17
User Avatar
Staff
585 posts
Joined: May 2014
Offline
Split by Attribute will be available on all partitioner nodes starting with tomorrow's daily build. It functions in the same way as the parm on the Partition by Frame node, which has also been updated to use the standard implementation. For example, if you want to wait for all work items for a particular wedge to complete, you can now use a Wait for All with the Split by Attribute set to “wedgeindex”.

PDG handles the splitting internally by invoking the partitioning logic once for each unique attribute value, with the list of work items that have that value. PDG will ensure that work items with different attrib values always end up in different partitions. Items that are missing the attribute can either go into all partitions, no partitions, or use a custom scheme defined by the node itself. This feature also works automatically for custom partitioners, for example ones created using the Python Partitioner.
User Avatar
Member
209 posts
Joined: Nov. 2010
Offline
Tested and it works as expected.
Thank you!
  • Quick Links