{"action":"opened","issue":{"url":"https://api.github.com/repos/ni/DelayGraph/issues/2","repository_url":"https://api.github.com/repos/ni/DelayGraph","labels_url":"https://api.github.com/repos/ni/DelayGraph/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/ni/DelayGraph/issues/2/comments","events_url":"https://api.github.com/repos/ni/DelayGraph/issues/2/events","html_url":"https://github.com/ni/DelayGraph/issues/2","id":194086868,"number":2,"title":"Problem with FindVertexGroups() and registered vertices","user":{"login":"jgoeders","id":1851142,"avatar_url":"https://avatars.githubusercontent.com/u/1851142?v=3","gravatar_id":"","url":"https://api.github.com/users/jgoeders","html_url":"https://github.com/jgoeders","followers_url":"https://api.github.com/users/jgoeders/followers","following_url":"https://api.github.com/users/jgoeders/following{/other_user}","gists_url":"https://api.github.com/users/jgoeders/gists{/gist_id}","starred_url":"https://api.github.com/users/jgoeders/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgoeders/subscriptions","organizations_url":"https://api.github.com/users/jgoeders/orgs","repos_url":"https://api.github.com/users/jgoeders/repos","events_url":"https://api.github.com/users/jgoeders/events{/privacy}","received_events_url":"https://api.github.com/users/jgoeders/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-12-07T15:52:32Z","updated_at":"2016-12-07T15:52:32Z","closed_at":null,"body":"During construction of a _DelayGraphSolution()_, _FixSolutionForSiblingVertices()_ is called, which ensures that for all registered vertices, their siblings are also registered.  This process relies upon _FindVertexGroups()_ to determine groupings of sibling vertices.\r\n\r\nI am running into inconsistencies between two scenarios in which I am creating a _DelayGraphSolution()_:\r\n1. **Using the NI-created _RegisterPlacement_ code**.  This code executes a register placement algorithm to obtain a set of _registeredTerminals_.  It then creates a _DelayGraphSolution_, passing in the set of _registeredTerminals_.  The _FindVertexGroups()_ code correctly finds all sibling groups, and siblings of vertices in the _registeredTerminals_ set are correctly marked as registered.\r\n\r\n2. **My own flow**.  This code executes a register placement algorithm to obtain a set of _registeredTerminals_.  In the graph these are marked as _isRegistered_, and the graph is written back out to a graphMl file.  This file is then imported back into the _DelayGraph_ structures, and a _DelayGraphSolution_ is constructed.  This differs from the first flow because now the registered vertices are already marked as properties in the graph, rather than in the separate _registeredTerminals_ set.  Under this flow, _FindVertexGroups()_ will behave differently, and will fail to return the siblings of the nodes that have the property _isRegistered_.\r\n\r\nFindVertexGroups() contains the following code comment:\r\n```\r\n\r\n// group vertices which are inputs and outputs of common node ids together\r\n// there are 3 types of vertices: IsRegistered, (!IsRegistered && IsInputTerminal), (!IsRegisted && !IsInputTerminal)\r\n// ignore IsRegistered vertices, and group the other types by common node id and types\r\n```\r\n\r\nSo it appears that the function is intentionally ignoring the vertices that are marked as _isRegistered_.  Is this  a bug?  If this is done intentionally, how can I go about my flow, where a graph is exported, then imported, and obtain the same results as the NI provided code?"}}
{"actor":{"display_login":"jgoeders"}}