A view is a type of table. Views display rows and columns of information, and they can be shared and queried just like a table. Unlike tables, views do not store data. Instead, views are essentially queries of other data already in Synapse. They allow you to see groups of files, tables, projects, or submissions and any associated metadata annotations about those items. The scope of a view defines what items that you want to group together. For example, you can set the scope to be multiple projects or a small number of folders
Annotations are an essential component to building a view. Annotations are labels that you apply to your data, stored as key-value pairs in Synapse.
Find more information on annotating your data at /wiki/spaces/DOCS/pages/2667708522.
You can use annotations to select specific subsets of your data across many projects or folders and group things together in one view.
You can use a view to:
Search and query many files, tables, projects, and submissions at once
View and edit file or table metadata annotations in bulk
Group or link files, tables, projects, or submissions together by their annotations
This guide explains how to create views from the web client. Instructions for creating views using the programmatic clients can be found in the Python docs and the R docs.
What Is a Schema?
A schema is the structure of your dataset. In a view, a schema defines the structure by specifying the column names. A schema may also define the values or types of data allowed in each column.
You can define table columns to contain common data types like text, numbers, and dates, or you can define columns to include references to other Synapse objects, like files and folders. Synapse currently supports several kinds of text columns (STRING, LARGE TEXT), dates (as TIMESTAMP), a variety of numeric columns (INTEGER, DOUBLE), and various Synapse identifiers (ENTITYID, USER). For a complete list of column types and definitions, see the REST docs on columnTypes.
...
Creating a File View
A file view lists all files or tables within one or more folders or projects. To create a file view, navigate to the project where you would like to create the view. The project you choose does not have to contain the items you are including in your file view. Navigate into the Tables tab and select Add File View from the Tables Tools menu. You will select the files of interest by defining the scope, which is the project(s) and folders that contain your files. File views can also contain tables or folders; you can choose which kinds of items you would like to include during the setup process. The scope of a file view can have a maximum of 20,000 folders or sub-folders.
...
Creating a Project View
A project view lists all projects you’ve added to the view. To create a project view, select the project in which you would like to create the view. Navigate into the Tables tab and select Add Project View from the Tables Tools menu. You will select the projects of interest by defining the scope as above for file views. The only notable difference between creating a project view and a file view is that for project views, there is a 1:1 relationship between the projects you select in your scope and the projects that are shown in the view. The scope of a project view can have a maximum of 20,000 projects.
...
View Limits
File and Project views are limited in the count of objects in scope.
File views can have a maximum of 35,000 containers in scope.
Project/Folder views can have a maximum of 10,000 child objects.
For example: A single view for a project may have 35,000 folders, with 10,000 files in each folder for a total of 350,000,000 child objects.
Creating a Submission View
A submission view lists all submissions within one or multiple evaluation queues. To create a submission view, navigate to the project where you would like to create the view. The project you choose does not have to contain the submissions or the evaluation queues that are included in the view. Navigate to the Tables tab and select Add Submission View in the Tables Tools menu. The submissions that are included in the view are defined by its scope, which is the list of evaluation queues containing the submissions. For more information, read about how to use submission views with /wiki/spaces/DOCS/pages/1985151345evaluation queues. The scope of a submission view can have a maximum of 20,000 evaluation queues.
Updating the Scope or Content of a View
Views can be edited to change the scope or what types of content are The scope of a view defines what items are grouped together to appear in the view. For example, you can set the scope to be multiple projects or a small number of folders. You can change the scope to edit the types of content displayed. Navigate to the view and then select Show Scope of View in the Tools menu. Click Edit Scope to view and change your view preferences. Once you click Save, Synapse may take a few moments to rebuild the updated view.
...
Querying a View
A view can be queried like any other table in Synapse. See Searching Tables and Views
See /wiki/spaces/DOCS/pages/2667642897 for more information.
...
Inserting a View into a Wiki
Views can also be embedded in a wiki. You can embed the entire view or a subset of it.
...
To embed a subset of a view, use the WHERE
clause to select certain rows. For example, entering SELECT * FROM syn12345678 WHERE Cell_Type = ‘PSC’
embeds only rows where the value PSC
is entered in the column for cell type. Save the query to embed the view.
...
...
Updating Annotations in Bulk Using a View
Views can be used to update annotations for many files or tables at once.
To add new annotations, see the Annotations and Queries article. To update other metadata in bulk, such as Provenance, see the Upload and Download Data in Bulk article. /wiki/spaces/DOCS/pages/2667708522.
For example, if you would like to use the Python client to update the annotation “dogSays:bark” to “dogSays:woof” for every file in a file view with the synID syn12345678
, you can use:
Code Block | ||
---|---|---|
| ||
from synapseclient import Table
foo = syn.tableQuery('select * from syn456')
bar = foo.asDataFrame()
# add in annotation as a column
bar['dogSays'] = 'woof'
# store the fileview with the new annotation in Synapse
fv = syn.store(synapseclient.Table(foo.tableId, bar))
|
Versioning a View
You can create a version history for any view in Synapse. Versioning helps you keep a record of what changes you made to the view and when you made them.
For more information on versioning a view, see the Versioning Tables and Views page.
See Also
Annotations and Queries, Tables, Wikis
Include Page