Spreadsheet submission tool that uses GoogleSheet’s AppScript to allow users to submit/modify metadata on the portal without installing any software or having any scripting experience. Users will need to fill in any necessary metadata in the GoogleSheet where the different object types (for example primary_cell, tissue, human_donor, etc.) are populating separate tabs of the spreadsheet. For example, if you’re submitting human_donor, tissue, and primary_cell, three tabs will need to be prepared. With a press of a button, the GoogleSheet will launch an embedded script that interacts with the portal and submits/modifies metadata. *If you are unfamiliar with the schema, please take a look at the Schema overview documentation.
All built-in functions can be found in the toolbar under “IGVF”.
The first two columns (‘#response’ and ‘#response_time’) provide information regarding submission responses, they are not properties of an object.
Table 1. Common response values
#Response | Description |
---|---|
200 or 201 | Action was successful |
404 or 422 | Action was unsuccessful (ERROR) |
409 | Action was unsuccessful due to a clash (unique value conflict) between the metadata on the portal and metadata you attempted to submit. (ERROR) |
401 or 403 | Action was unsuccessful due to a lack of permissions/authentication (ERROR) |
*Note: response can also provide other values, additional information and error messages |
Each column contains a header that corresponds to a property name in schema. If you hover your cursor to the property name, a tooltip will appear with information (title, description, type and dependency) on that property.
Here is an example of how the tooltip will look like for "samples" property:
Header property names that are underlined are searchable: Toolbar -> IGVF -> Search will show you all existing objects of that object type on the portal. *Note: A property value has to be selected for search.
Table 2. Object Properties Formatting Legend
Color | Description | Examples |
---|---|---|
Red | submittable, required properties | taxa or biosample_term |
Black | submittable, not required but recommended if it applies to your data context | date_obtained |
Blue | non-submittable, an identifying property unique to the object generated by the server | accession or uuid |
Gray | non-submittable, a property calculated by the system. *Note: Any values you list here for POST/PATCH will produce an error code. | status or submitted_by |
Italics + bold | Array property. Must be wrapped in square brackets [] | [“IGVFSM0000AAAA”, “IGVFSM0001AAAB”] |
Begins with # | Fields specific to the Google Sheets tool for debugging, logging, or uploading. Not actual schema properties. | #response, #response_time |
Dropdown arrow | Indicates field has enums (enums will appear in the drop down) |
Table 3. Property Value Types
Type | Requirements | Examples |
---|---|---|
Arrays | Need to have a [“ ”] wrapper; Array of objects: need to be in valid JSON format for POST/PATCH to succeed | [“A”, “B”, “C”] |
Enums | A set of options (i.e. statuses)) will be available via the drop down of the cell (▼) | [Image 6] |
Objects | Need to be in valid JSON format for POST/PATCH. *Note: Linked objects must already exist with identifiers in the database. If you are unsure of what identifier to use, please contact the wrangling team. | Object identifier:‘alias’,‘accession’,‘uuid’ |
*Note: Further details of property values can be found here.
Please review the results for every record using the ‘#response’ column. See Table 1 for response values.
If submission is unsuccessful, an error message in the ‘#response’ column will be present. Identify the row(s) and cell(s) that are producing the error(s) and fix appropriately before trying to resubmit. Please do not include already successful rows when trying to resubmit.
Table 4. Common Errors
Category | Potential solutions |
---|---|
Missing values | Look at object schema descriptions for all required properties |
Formatting | Look for the SyntaxError: Unexpected token … is not valid JSON, again see schema descriptions for required property syntax. Example: array type property requires [“A”, “B”, “C”] formatting |
Wrong value | Value is not one of the enum options (defined by the schema) |
If you plan to reuse the same spreadsheet for another submission, there a feature that allows you to skip over the rows that were successfully GET/POST/PATCH before.
If the #response column is not descriptive, you can opt to use external site validation: Toolbar -> IGVF -> Validate
This will compare your sheet metadata against the described profile schema by using an external JSON schema validator. Please use this function for debugging only when the error message is unclear.
WARNING: if you are working with sensitive/restricted data, DO NOT use this feature. Instead, convert each row to JSON format and copy-paste to an internal JSON validator.
Every now and then the spreadsheet will have script updates. The version of the sheet is usually printed on the toolbar header. It is best practice to check for script updates by going to IGVF Toolbar > Check for script update. If the spreadsheet version does not match the newer version on github, there will be a pop-up window with further instructions.
Submission of files have slightly different steps than other object types.
The submission is separated into 2 parts:
Both parts will be covered step by step below.
Column name | #response | #response_time | #upload_abspath | #upload_status | #upload_cmd |
---|---|---|---|---|---|
definition | status of file metadata submission (Part1). | datetime when response is received from the portal. | absolute path of the file in your local machine. Google bucket or AWS file paths are currently not accepted. Please use igvf_utils instead. | status of uploading local file (Part2). | an alternate way to upload the file by copy and pasting to the command line (using S3 CLI). This field will be automatically filled in after dropping your root file in the File upload sidebar. |
Automatically filled? | Yes. This field will be automatically filled in after posting metadata submission. It will give you hints if the posting fails. | Yes. This field will be automatically filled in after posting metadata submission. | No. Please fill in and make sure it has at least 1 subdirectory files before the actual file. For example, if the file full path is /Users/Downloads/path2/path1/file_A.fastq.gz , the #upload_abspath can be path1/file_A.fastq.gz or /path2/path1/file_A.fastq.gz . Shorter paths will initialize uploads faster than longer paths. | Yes. This field will be automatically filled in after dropping your root file in the File upload sidebar. | Yes. This field will be automatically filled in after dropping your root file in the File upload sidebar. |
5. POST the object records: After the rows have been filled in. Toolbar -> IGVF -> POST new metadata to portal. Please wait for a couple of seconds for the script to run. You will be notified with a pop-up window when the action is complete. An assigned identifier will be generated for each new record (accession). #response and #response_time will be filled in.
For a profile with attachment property (e.g. document profile), you can define attachment column as a JSON string {"path":"/GOOGLE/DRIVE/PATH/TO/FILE/me.pdf"}.
It is recommended to make a local directory for document files only on your computer, and then drag and drop the folder itself to your Google Drive. Then all files in it will be transferred to Google Drive while keeping the directory structure.