Participating in a Challenge


This tutorial will teach you the steps of participating in a challenge.

Challenge Registration

If you do not have a Synapse account, please go to our getting started guide to become a certified Synapse user. Participants must be registered for the challenge if they want to submit and participate. The registration button can be found on the home page or How to Participate page for every challenge. In order to be fully registered for any challenge, you must:

(1) have a Synapse account and become a certified user;
(2) agree to the DREAM Rules of participation, and
(3) agree to the Terms of Use to work with the Challenge data.

Join or Create a Team

We encourage you to form a team with other participants for the challenge. You can either join a team or create your own team of collaborators. See instructions on how to form a team here. It is important to note that you cannot be on more than one team. Once you have submitted as a team or individual, you will not be able to submit as another team. If you decide to be part of a team, please register your team to the challenge - there will be a place to do this in every challenge wiki.

Accessing Challenge Data

The data stored on the challenge Synapse site can be accessed using the Synapse website or programmatically using the Synapse R or Python clients. Instructions on using Synapse are provided in the Synapse User Guide. File descriptions are provided on the Data Description page in each challenge wiki.

Run your Algorithms and Submit to the Challenge

There are multiple ways you can submit to a challenge queue by using the R, Python or web client. The most conventional way is to submit through the web. All submissions must be first uploaded onto a private Synapse page. Follow instructions here on how to upload to a project. Most challenge queues will be labeled by challengename-subchallenge# as a challenge may have different questions that it may want you to answer.

In the R and Python examples, you will have to know the evaluation ID of the subchallenge you are trying to submit to. The examples below will show you the process of uploading a file to an example project and then submitting that file to the challenge. The submission function takes two optional parameters: name and team. Name can be provided to serve as a custom name of the submission. If a name isn not provided, the name of the entity being submitted will be used. Teams can optionally be provided to give credit to members of the team that contributed to the submission.

import synapseclient
from synapseclient import File
syn = synapseclient.login()

parentId = "syn12345" # folder/project to upload your file to
my_prediction_file = File("/path/to/file.csv", parent=parentId)
my_prediction_file =

# if you're submitting as a team, get team entity
team_entity = syn.getTeam("NameOfYourTeam")
# submit to the challenge queue
my_submission = syn.submit(evaluation=evaluationId123, entity=my_prediction_file, name="Blue Team", team=team_entity)

Share Ideas and Ask Questions

Every challenge has a discussion forum for participants (the Discussion tab on the Challenge Project page). The forum is a space for participants to ask any questions and raise ideas.

Instructions on how to use the discussion forum can be found here

Need More Help?

Try posting a question to our Forum.

Let us know what was unclear or what has not been covered. Reader feedback is key to making the documentation better, so please let us know or open an issue in our Github repository (Sage-Bionetworks/synapseDocs).