How to get edges for Conflicts, Assignments, Custom Max Papers, and more
If you want to get all edges for any type of Edge Invitation you can use the get_grouped_edges
API call. The most common edges to retrieve are for Conflicts, Assignments and Custom Max Papers.
get_grouped_edges
requires at least 2 fields:
Invitation: The ID of the Edge Invitation.
Groupby: The field of the Edge you want to group the edges by. Typically you will group by the edge's
head
ortail
. The value of head and tail are determined by their Invitation. You can view the invitation by going to:https://openreview.net/invitation/edit?id=invitation_id
get_grouped_edges
will return list of dictionaries each containing 2 keys: id
and values
. The id
will contain the field you grouped by and values
will contain all the edges in that group.
Getting all Conflict Edges for the Reviewers Group
This is an example of how to use get_grouped_edges
to retrieve Reviewer Conflict edges. You can use this method to get any type of Edge.
Mapping reviewer IDs to their conflict edges
Get the conflict invitation ID for the API call:
Get the venue group. The content of the venue group contains many settings for your venue including invitation IDs. The Reviewer Conflict invitation ID is stored as reviewers_conflict_id
in the content. It follows the format: venue_id/reviewers_name/-/Conflict
.
venue_group = client.get_group(venue_id)
conflict_invitation_id = venue_group.content['reviewers_conflict_id']['value']
Get the edges using
get_grouped_edges
:
Call get_grouped_edges
, pass the invitation ID, and group by the tail
. Conflict edges are configured so that the head
is the paper ID and the tail
is the user with the conflict. When you group by the head
you can access all the conflicts for a specific paper. Alternatively, if you group by the tail
, you can access all conflicts for a specific user:
grouped_edges = client.get_grouped_edges(
invitation = conflict_invitation_id,
groupby = 'tail'
)
Map each reviewer profile ID with their conflict edges:
rev_conflict_map = { group['id']['tail']: group['values'] for group in grouped_edges }
Mapping paper IDs to their conflict edges
If you want to see all conflicts for a specific paper, group by the head instead.
grouped_edges = client.get_grouped_edges(
invitation = conflict_invitation_id,
groupby = 'head'
)
paper_conflict_map = { group['id']['head']: group['values'] for group in grouped_edges }
How to get other types of edges
You can use the same method to get any type of Edge by simply changing the invitation ID. For example:
To get all Reviewer Assignment edges, pass the Assignment invitation ID:
assignment_invitation_id = venue_group.content['reviewers_assignment_id']['value']
To get all Reviewer Custom Max Paper edges, pass the Custom Max Papers invitation ID:
custom_max_papers_invitation_id = venue_group.content['reviewers_custom_max_papers_id']['value']
To get all Reviewer Affinity Score edges, pass the Affinity Score invitation ID:
affinity_score_invitation_id = venue_group.content['reviewers_affinity_score_id']['value']
To get the corresponding invitation IDs for Area Chairs or Senior Area Chairs, just replace reviewers
with area_chairs
or senior_area_chairs
. For example, area_chairs_assignment_id
or senior_area_chairs_assignment_id
. If your venue uses other role names, those names will automatically get replaced in the invitation IDs.
Optional parameters and other use cases
It may be helpful to pass other parameters to get_grouped_edges
to further filter the edges.
Using label
to map reviewer IDs to their proposed assignments
label
to map reviewer IDs to their proposed assignmentsSome Edge Invitations allow for edges to be posted with a label
. To know if this is possible, you have to examine the invitation and see if label
is configured. If so, you may pass label='Some label'
to get_grouped_edges
to retrieve only a subset of those edges.
This is often used when retrieving Proposed Assignment edges. The matcher will post these edges where the label is the title of the matching configuration:
proposed_assignment_invitation_id = venue_group.content['reviewers_proposed_assignment_id']['value']
grouped_edges = client.get_grouped_edges(
invitation = proposed_assignment_invitation_id,
groupby = 'tail',
label = 'rev-matching-1'
)
rev_proposed_assignment_map = { group['id']['tail']: group['values'] for group in grouped_edges }
Using select
to map reviewer IDs to their assignment count
select
to map reviewer IDs to their assignment countYou can pass select = 'count'
to get the number of edges for each grouped entity. In this case, we will group by the user ID with tail
so that we can map them to their assignment counts.
grouped_edges = client.get_grouped_edges(
invitation = assignment_invitation_id,
groupby = 'tail',
select = 'count'
)
rev_assignment_count_map = { group['id']['tail']: group['count'] for group in grouped_edges }
You may also select by any field(s) of the Edge if you don't need to retrieve all the data in the edges. For example, you may pass select='head,tail'
if you only want to see the head and tail of the edge.
Last updated
Was this helpful?