Skip to content
19 changes: 19 additions & 0 deletions docs/reference/experimental/async/submission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Submission

Contained within this file are experimental interfaces for working with the Synapse Python
Client. Unless otherwise noted these interfaces are subject to change at any time. Use
at your own risk.

## API Reference

::: synapseclient.models.Submission
options:
inherited_members: true
members:
- store_async
- get_async
- delete_async
- cancel_async
- get_evaluation_submissions_async
- get_user_submissions_async
- get_submission_count_async
14 changes: 14 additions & 0 deletions docs/reference/experimental/async/submission_bundle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Submission Bundle

Contained within this file are experimental interfaces for working with the Synapse Python
Client. Unless otherwise noted these interfaces are subject to change at any time. Use
at your own risk.

## API Reference

::: synapseclient.models.SubmissionBundle
options:
inherited_members: true
members:
- get_evaluation_submission_bundles_async
- get_user_submission_bundles_async
16 changes: 16 additions & 0 deletions docs/reference/experimental/async/submission_status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Submission Status

Contained within this file are experimental interfaces for working with the Synapse Python
Client. Unless otherwise noted these interfaces are subject to change at any time. Use
at your own risk.

## API Reference

::: synapseclient.models.SubmissionStatus
options:
inherited_members: true
members:
- get_async
- store_async
- get_all_submission_statuses_async
- batch_update_submission_statuses_async
19 changes: 19 additions & 0 deletions docs/reference/experimental/sync/submission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Submission

Contained within this file are experimental interfaces for working with the Synapse Python
Client. Unless otherwise noted these interfaces are subject to change at any time. Use
at your own risk.

## API Reference

::: synapseclient.models.Submission
options:
inherited_members: true
members:
- store
- get
- delete
- cancel
- get_evaluation_submissions
- get_user_submissions
- get_submission_count
14 changes: 14 additions & 0 deletions docs/reference/experimental/sync/submission_bundle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Submission Bundle

Contained within this file are experimental interfaces for working with the Synapse Python
Client. Unless otherwise noted these interfaces are subject to change at any time. Use
at your own risk.

## API Reference

::: synapseclient.models.SubmissionBundle
options:
inherited_members: true
members:
- get_evaluation_submission_bundles
- get_user_submission_bundles
16 changes: 16 additions & 0 deletions docs/reference/experimental/sync/submission_status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Submission Status

Contained within this file are experimental interfaces for working with the Synapse Python
Client. Unless otherwise noted these interfaces are subject to change at any time. Use
at your own risk.

## API Reference

::: synapseclient.models.SubmissionStatus
options:
inherited_members: true
members:
- get
- store
- get_all_submission_statuses
- batch_update_submission_statuses
157 changes: 157 additions & 0 deletions docs/tutorials/python/submission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# Submissions, SubmissionStatuses, SubmissionBundles
## What are Submissions?

In Synapse, a Submission is your entry to a challenge or evaluation queue. When you participate in a computational challenge or collaborative project, you submit your work (such as predictions, models, or analysis results) as a Submission to be evaluated and scored.

## Key Concepts

Before working with Submissions, it's helpful to understand how they fit into Synapse:

- **Entity**: Your actual work stored in Synapse (like a File containing predictions or a Docker image with your model)
- **Evaluation**: A queue that accepts and organizes submissions for a specific challenge or project
- **Submission**: The object associated with submitting your Entity to an Evaluation queue, creating a record that can be tracked and scored

## How Submissions Work

When you submit an Entity to an Evaluation:
- The Submission creates an immutable record linking your Entity to that Evaluation
- The Evaluation owns this Submission record (not you as the submitter)
- Organizers can add scores and feedback through a SubmissionStatus object
- You can track your Submissions and view their statuses

## Related Objects

The Python client provides three object types for working with Submissions:

- **Submission**: Represents your entry in an Evaluation queue
- **SubmissionStatus**: Tracks scoring information and feedback for a Submission
- **SubmissionBundle**: Combines a Submission and its SubmissionStatus for convenient access

## What You'll Learn

This tutorial covers two perspectives:

1. **Participating in challenges**: Making and tracking your submissions
1. **Organizing challenges**: Scoring and managing submissions from participants

## Tutorial Purpose

In this tutorial:

As a participant of a Synapse challenge, you will

1. Make a submission to an existing evaluation queue on Synapse
1. Fetch your existing submission
1. Count your submissions
1. Fetch all of your submissions from an existing evaluation queue on Synapse
1. Check the status of your submission
1. Cancel your submission

As an organizer of a Synapse challenge, you will

1. Annotate a submission to score it
1. Batch-update submission statuses
1. Fetch the submission bundle for a given submission
1. Allow cancellation of submissions
1. Delete submissions

## Prerequisites
* You have completed the [Evaluation](./evaluation.md) tutorial, or have an existing Evaluation on Synapse to work from
* You have an existing entity with which to make a submission (can be a [File](./file.md) or Docker Repository)
* You have the correct permissions on the Evaluation queue for your desired tutorial section (participant or organizer)

## 1. Participating in a Synapse challenge

### 1. Make a submission to an existing evaluation queue on Synapse

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!lines=32-54}
```

### 2. Fetch your existing submission

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!lines=56-71}
```

### 3. Count your submissions

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!lines=72-88}
```

### 4. Fetch all of your submissions from an existing evaluation queue on Synapse

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!lines=90-101}
```

### 5. Check the status of your submission

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!lines=103-125}
```

### 6. Cancel your submission

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!lines=126-143}
```

## 2. Organizing a Synapse challenge

### 1. Annotate a submission to score it

```python
{!docs/tutorials/python/tutorial_scripts/submission_organizer.py!lines=33-60}
```

### 2. Batch-update submission statuses

```python
{!docs/tutorials/python/tutorial_scripts/submission_organizer.py!lines=62-99}
```

### 3. Fetch the submission bundle for a given submission

```python
{!docs/tutorials/python/tutorial_scripts/submission_organizer.py!lines=101-136}
```

### 4. Allow cancellation of submissions

```python
{!docs/tutorials/python/tutorial_scripts/submission_organizer.py!lines=138-177}
```

### 5. Delete submissions

```python
{!docs/tutorials/python/tutorial_scripts/submission_organizer.py!lines=179-209}
```

## Source code for this tutorial

<details class="quote">
<summary>Click to show me (source code for Participant)</summary>

```python
{!docs/tutorials/python/tutorial_scripts/submission_participant.py!}
```
</details>

<details class="quote">
<summary>Click to show me (source code for Organizer)</summary>

```python
{!docs/tutorials/python/tutorial_scripts/submission_organizer.py!}
```
</details>

## References
- [Evaluation][synapseclient.models.Evaluation]
- [File][synapseclient.models.File]
- [Submission][synapseclient.models.Submission]
- [SubmissionStatus][synapseclient.models.SubmissionStatus]
- [SubmissionBundle][synapseclient.models.SubmissionBundle]
- [syn.login][synapseclient.Synapse.login]
Loading
Loading