OpenReview
  • Overview
    • OpenReview Documentation
  • Reports
    • Conferences
      • OpenReview NeurIPS 2021 Summary Report
      • OpenReview ECCV 2020 Summary Report
  • Getting Started
    • Frequently Asked Questions
      • I accidentally withdrew a submission, what do I do?
      • How do I add a Program Chair to my venue?
      • When will I be able to withdraw my submission?
      • I want to delete my withdrawn or desk-rejected paper, what do I do?
      • An author of a submission cannot access their own paper, what is the problem?
      • What should I do if I find a vulnerability in OpenReview?
      • How can I report a bug or request a feature?
      • What is the difference between due date (duedate) and expiration date (expdate)?
      • Will Reviewers be notified of their Assignments?
      • What is the max file size for uploads?
      • Why are the "rating" and "confidence" fields in my PC Console wrong?
      • What should I do if my question is not answered here?
      • My Profile is "Limited". What does that mean?
      • What field types are supported in the forms?
      • How do I recruit reviewers?
      • How do I obtain a letter of proof for my services as a reviewer?
      • How do I complete my tasks?
      • Can I automatically transfer my Expertise Selection to another venue?
      • Why does it take two weeks to moderate my profile?
      • What do the different 'status' values mean in the message logs?
      • I am an Independent Researcher, how do I sign up?
      • How do I locate the date a submission is made public?
      • I am a reviewer but I can't access my assigned submissions, what do I do?
      • Reviewers for my venue cannot see their assigned submissions, what should I do?
      • I am a reviewer and I don't have papers for Expertise Selection, what do I do?
      • How do I upload a publication with a license that is not listed?
      • I didn't receive a password reset email, what do I do?
      • How do I add/change an author of my submission after the deadline?
      • How do I find a venue id?
      • Why can't I update my DBLP link?
    • Using the API
      • Installing and Instantiating the Python client
      • Groups
    • Hosting a venue on OpenReview
      • Creating your Venue Instance
      • Navigating your Venue Pages
      • Customizing your submission form
      • Enabling Supplementary Material Upload
      • Changing your submission deadline
      • Enabling an Abstract Registration Deadline
    • Creating an OpenReview Profile
      • Signing up for OpenReview
      • Resending an activation link
      • Expediting Profile Activation
      • Add or remove a name from your profile
      • Add or remove an email address from your profile
      • Finding your profile ID
      • Entering Institutional Data
      • Importing papers from DBLP
      • Manually adding a publication to your profile
      • Finding and adding a Semantic Scholar URL to your profile
      • Finding and adding your ACL Anthology URL to your profile
      • Merging Profiles
    • Customizing Forms
    • Using the New Forum Page
    • Live Chat on the Forum Page
  • Workflows
    • Example Workflow
    • ARR Commitment Venues
    • Exercises for workflow chairs
      • Prerequisites
      • Exercise: Posting LLM generated reviews
  • How-To Guides
    • Modifying Venue Homepages
      • How to customize your venue homepage
      • How to modify the homepage layout to show decision tabs
    • Managing Groups
      • How to Recruit and Remind Recruited Reviewers
      • How to have multiple Reviewer or Area Chair groups
      • How to Add and Remove Members from a Group
      • Publication Chairs
      • How to Copy Members from One Group to Another
    • Workflow
      • How to Programmatically Post Support Request Form
      • How to test your venue workflow
      • How to Post a Test Submission
      • How to support different tracks for a venue
      • How to Make Submissions Available Before the Submission Deadline
      • How to Change the Expiration Date of the Submission Invitation
      • Desk Reject Submissions that are Missing PDFs
      • How to begin the Review Stage while Submissions are Open
      • How to Change Who can Access Submissions After the Deadline
      • How to Enable Commenting on Submissions
      • How to Set a Custom Deadline for Withdrawals
      • How to Enable an Ethics Review Stage
      • How to Hide Submission Fields from Reviewers
      • How to modify the Review, Meta Review, and Decision Forms
      • How to release reviews
      • How to Enable the Rebuttal Period
      • How to Undo a Paper Withdrawal
      • How to enable Camera Ready Revision Upload for accepted papers
      • How to make papers public after decisions are made
      • How to enable bidding for Senior Area Chair Assignment
      • How to release the identities of authors of accepted papers only
      • How to enable the Review Revision Stage
    • Paper Matching and Assignment
      • How to Compute Conflicts Between Users
      • How to Post a Custom Conflict
      • How to create your own Conflict Policy
      • How to Bid on Submissions
      • How to add/remove bids programmatically
      • How to do manual assignments
      • How to do automatic assignments
        • How to setup paper matching by calculating affinity scores and conflicts
        • How to run a paper matching
        • How to modify the proposed assignments
        • How to deploy the proposed assignments
        • How to modify assignments after deployment
      • How to enable Reviewer Reassignment for Area Chairs
      • How to Sync Manual and Automatic Assignments
      • How to Compute Affinity Scores
      • How to Undo Deployed Assignments
      • How to Modify Reviewer Assignments as an Area Chair
      • How to Get all Assignments for a User
      • How to Update Custom Max Papers for Reviewers or ACs
      • How to Make Assignments using Subject Areas
    • Communication
      • How to send messages through the UI
      • How to customize emails sent through OpenReview
      • How to send messages with the python client
      • How to Send Decision Notifications Using the UI
      • How to view messages sent through OpenReview
      • How to email the authors of accepted submissions
      • How to get email adresses
    • Submissions, comments, reviews, and decisions
      • How to add formatting to reviews or comments
      • How to submit a Review Revision
      • How to add formulas or use mathematical notation
      • How to edit a submission after the deadline - Authors
      • How to upload paper decisions in bulk
      • How to hide/reveal fields
      • Update camera-ready PDFs after the deadline expires
    • Data Retrieval and Modification
      • How to check the API version of a venue
      • How to view Camera-Ready Revisions
      • How to Export all Submission Attachments
      • How to loop through Accepted Papers and print the Authors and their Affiliations
      • How to add/remove fields from a submission
      • How to manually change the readers of a note
      • How to post/delete an Official Review using Python
      • How to Get Profiles and Their Relations
      • How to Get All the Reviews that I have written and their Corresponding Submissions
      • How to Get All Registration Notes
      • How to Get All Submissions
      • How to Get All Reviews
      • How to Export All Reviews into a CSV
      • How to get all Rebuttals
      • How to Get All Official Comments
      • How to Get All MetaReviews
      • How to Get All Decisions
      • How to Get All Venues
      • How to Retrieve Data for ACM Proceedings
      • How to Get Reviewer Ratings
  • Reference
    • API V1
      • OpenAPI definition
      • Entities
        • Edge
          • Fields
        • Note
          • Fields
        • Invitation
    • API V2
      • OpenAPI definition
      • Entities
        • Edge
          • Fields
        • Group
          • Fields
        • Note
          • Fields
        • Invitation
          • Types and Structure
          • Fields
          • Specifiers
          • Dollar Sign Notation
        • Edit
          • Fields
          • Inference
    • Stages
      • Revision
      • Registration Stage
      • Bid Stage
      • Review Stage
      • Rebuttal Stage
      • Meta Review Stage
      • Decision Stage
      • Comment Stage
      • Submission Revision Stage
      • Post Submission Stage
      • Post Decision Stage
      • Ethics Review Stage
    • Default Forms
      • Default Submission Form
      • Default Registration Form
      • Default Comment Form
      • Default Review Form
      • Default Rebuttal Form
      • Default Meta Review Form
      • Default Decision Form
      • Default Decision Notification
      • Default Ethics Review Form
    • OpenReview TeX
      • Common Issues with LaTeX Code Display
      • OpenReview TeX support
    • Mental Model on Blind Submissions and Revisions
Powered by GitBook
On this page
  • Submission form customization
  • Reviewer Registration Form
  • Next Steps
  • Score Invitation
  • Posting Edges
  • Score Specification

Was this helpful?

Export as PDF
  1. How-To Guides
  2. Paper Matching and Assignment

How to Make Assignments using Subject Areas

There are cases of program organizers wanting to enable authors and reviewers to select one or more subject areas/disciplines and assign reviewers to papers by subject area. This can be accomplished by creating a new "score" to be used in the matching process. This process can also be applied to Area Chairs and you can follow the same steps replacing Reviewers with Area Chairs.

You can use Subject Scores in addition to Affinity Scores. The benefit of calculating affinity scores is the score is based on the reviewer's publications, and Reviewers may select a subject area they desire without the publication history in that subject.

Submission form customization

First, you will need to add a field to the submission form that will allow authors to select the subject areas for their submission.

"subject_area": {
        "order": 3,
        "description": "Please select one primary Machine Learning subject area.",
        "value": {
            "param": {
                "type": "string",
                "enum": [
                    "Bayesian Inference",
                    "Computer Vision",
                    "Deep Learning",
                    "Graph Mining",
                    "Natural Language Processing",
                    "Reinforcement Learning",
                    "Representation Learning",
                    "Statistics",
                    "Supervised Learning",
                    "Unsupervised Learning"
                ],
                "input": "radio"
            }
        }
    }

If you're allowing authors to select more than one value, change type to "type": "string[]" and use items instead of enum.

"subject_area": {
        "order": 3,
        "description": "Please select one primary Machine Learning subject area.",
        "value": {
            "param": {
                "type": "string[]",
                "items": [
                  { "value": "Bayesian Inference", "description": "Bayesian Inference", "optional": true},
                  { "value": "Computer Vision", "description": "Computer Vision", "optional": true},
                  { "value": "Deep Learning", "description": "Deep Learning", "optional": true},
                  { "value": "Graph Mining", "description": "Graph Mining", "optional": true},
                  { "value": "Natural Language Processing", "description": "Natural Language Processing", "optional": true}
                ],
                "input": "checkbox"
            }
        }
    }

Reviewer Registration Form

Reviewers will also need to select subject areas of expertise, so they can be matched with submissions of the same subject area.

Next Steps

To continue with the setup you can either use the python client to post the invitation edit and edges that will be shared below or you can email support at info@openreview.net for assistance.

Score Invitation

An invitation will need to be created to allow the posting of edges. These edges are used to connect two entities, the submission note and the reviewer's profile ID. The edge will contain four properties:

  • head : the submission note

  • tail : the reviewer's profile ID

  • weight : the weight between two entities

  • label : the subject area in common

An example of posting a score invitation for subject areas:

Add your venue ID to venue_id.

venue_id = ''

client.post_invitation_edit(
    invitations=f'{venue_id}/-/Edit', 
    readers=[venue_id],
    writers=[venue_id],
    signatures=[venue_id],
    invitation=openreview.api.Invitation(
        id = f"{venue_id}/Reviewers/-/Subject_Score",
        invitees = [venue_id,"OpenReview.net/Support"],
        readers = [venue_id],
        writers = [venue_id],
        signatures = [venue_id],
        edge = {
                "id": {
                    "param": {
                        "withInvitation": f"{venue_id}/Reviewers/-/Subject_Score",
                        "optional": True
                    }
                },
                "ddate": {
                    "param": {
                        "range": [ 0, 9999999999999 ],
                        "optional": True,
                        "deletable": True
                    }
                },
                "cdate": {
                    "param": {
                        "range": [ 0, 9999999999999 ],
                        "optional": True,
                        "deletable": True
                    }
                },
                "readers": [
                    venue_id,
                    "${2/tail}"
                  ],
                  "nonreaders": [],
                  "writers": [
                    venue_id
                  ],
                "signatures": {
                    "param": {
                      "regex": f"{venue_id}$|{venue_id}/Program_Chairs",
                      "default": [
                        f"{venue_id}/Program_Chairs"
                      ]
                    }
                  },
                "head": {
                    "param": {
                      "type": "note",
                      "withInvitation": f"{venue_id}/-/Submission"
                    }
                  },
                "tail": {
                    "param": {
                      "type": "profile",
                      "options": {
                        "group": f"{venue_id}/Reviewers"
                      }
                    }
                  },
                "weight": {
                    "param": {
                      "minimum": -1
                    }
                  },
                "label": {
                    "param": {
                      "regex": ".*",
                      "optional": True,
                      "deletable": True
                    }
                  }
            }
    )
)

Posting Edges

To post the edges, you'll first need to get your reviewer's responses to the registration form.

For example, how to get the forum responses and set the reviewer's profile ID as the key and the content of their response as the value. The reviewer's ID is located in the signature of the response.

#get the forum id of the reviewers' registration page
registration_forum = ''
# get the venue id
venue_id = ''

# Get all replies to the registration forum
notes = client.get_all_notes(replyto=registration_forum)

# Create a dictionary with profile_id : [subject_area]
registrations = {}
for n in notes:
    signature = n.signatures[0]
    profile = client.get_profile(signature)
    profile_id = profile.id
    registrations[profile_id] = n.content['subject_area']['value']

Once you have the registration entries, iterate through submissions and and post an edge between the submission and every reviewer that shares the matching subject area.

# get all active submissions under review
venue_group = client.get_group(venue_id)
under_review_id = venue_group.content['submission_venue_id']['value']
submissions = client.get_all_notes(content={'venueid': under_review_id})

# the subject area field in the submission note may be different per venue, for this example we'll use 'subject_area'
for submission in submissions:
    submission_id = submission.id
    if 'subject_area' in submission.content:
        submission_subject_area = submission.content['subject_area']['value']
        for s in submission_subject_area:
            print(f'submission: {submission.id}, subject area: {s}')
            # Check registrations for any value that matches s and print the corresponding key
            for reviewer_id, subject in registrations.items():
                if s in subject:
                    #print(f"Reviewer ID: {reviewer_id}, Subject: {subject}")
                    client.post_edge(openreview.api.Edge(
                        invitation=f'{venue_id}/Reviewers/-/Subject_Score',
                        signatures=[venue_id],
                        head=submission_id,
                        tail=reviewer_id,
                        weight=1,
                        label=s
                    ))

Score Specification

For the Subject_Score edges to be included in the matching, you will need to add a specification to the Score Specification in the Assignment Configuration.

Add:

 Your/Venue/ID/Reviewers/-/Subject_Score: {
    weight: 1,
    default: 0
 }

To:

The Subject_Score is added to the Score Specification box, so it is included in the matching. Affinity scores should help make better matchings within a subject area.

After you run the Matching with the set configuration, you can check the assignment distribution in "View Statistics" by score when the proposed assignments are complete. The results will be as follows:

  • Matchings with high affinity and matching subject area will be maximized.

  • Subject area match will take priority over a low affinity score.

In this configuration, affinity scores will be a decimal ranging from 0 to 1 and the subject score is either 0 or 1. The resulting aggregated scores could then range between 0 and 2. Ideally in the histogram title "Distribution of Assignments by Scores" you would see a large clustering in the 1.7 to 2 interval and a smaller clustering in the 0.7 to 0.9 interval.

A matching may not entirely contain assignments that have a subject score or match, and a few reasons are:

  • Submissions may be conflicted with many, or all reviewers, in their designated subject area

  • Reviewers in that subject area might already be saturated and there are no more available assignments, so the matcher falls back to the affinity score

PreviousHow to Update Custom Max Papers for Reviewers or ACsNextCommunication

Last updated 1 month ago

Was this helpful?

The best way to do this is to create a form from the venue configuration page. There are default fields included in this form, you can choose to keep them or not. You'll need to add the same subject_area field and values you added to the submission form to accurately create a match between reviewers and submissions.

Reviewer Registration
Subject_Score is added to the Scores Specification