diff --git a/API_UG.yml b/API_UG.yml index 83d08700a..91b8c60d0 100644 --- a/API_UG.yml +++ b/API_UG.yml @@ -16,6 +16,7 @@ pages: - BAM Slicing: 'API/Users_Guide/BAM_Slicing.md' - Submission: 'API/Users_Guide/Submission.md' - Python Examples: 'API/Users_Guide/Python_Examples.md' + - GraphQL Examples: 'API/Users_Guide/GraphQL_Examples.md' - System Information: 'API/Users_Guide/System_Information.md' - Additional Examples: 'API/Users_Guide/Additional_Examples.md' - "Appendix A: Available Fields": 'API/Users_Guide/Appendix_A_Available_Fields.md' diff --git a/Data_Submission_Portal_UG.yml b/Data_Submission_Portal_UG.yml index b00ffc3d2..0f9f5f4c5 100644 --- a/Data_Submission_Portal_UG.yml +++ b/Data_Submission_Portal_UG.yml @@ -9,19 +9,13 @@ copyright: "© 2015-2016" theme_dir: theme pages: - Data Submission Portal: - - Getting Started: 'Data_Submission_Portal/Users_Guide/Getting_Started.md' - - Submission Workflow: 'Data_Submission_Portal/Users_Guide/Submission_Workflow.md' - - Authentication: 'Data_Submission_Portal/Users_Guide/Authentication.md' - - Homepage: 'Data_Submission_Portal/Users_Guide/Homepage.md' - - Dashboard: 'Data_Submission_Portal/Users_Guide/Dashboard.md' - - Upload Data: 'Data_Submission_Portal/Users_Guide/Data_Upload_UG.md' - - Submit Data: 'Data_Submission_Portal/Users_Guide/Submit_Data.md' - - Release Data: 'Data_Submission_Portal/Users_Guide/Release_Data.md' - - Transactions: 'Data_Submission_Portal/Users_Guide/Transactions.md' - - Browse Data: 'Data_Submission_Portal/Users_Guide/Browse_Data.md' - - Pre-Release Data Review: 'Data_Submission_Portal/Users_Guide/Pre_Release_QC.md' - - Best Practices: 'Data_Submission_Portal/Users_Guide/Best_Practices.md' + - Before Submitting Data to the GDC Portal: 'Data_Submission_Portal/Users_Guide/Checklist.md' + - Data Submission Overview: 'Data_Submission_Portal/Users_Guide/Data_Submission_Overview.md' + - Data Submission Portal: 'Data_Submission_Portal/Users_Guide/Data_Submission_Process.md' + - Data Upload Walkthrough: 'Data_Submission_Portal/Users_Guide/Data_Submission_Walkthrough.md' + - Pre-Release Data Portal: 'Data_Submission_Portal/Users_Guide/Pre_Release_QC.md' - Release Notes: 'Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md' + extra: project_root_dir: '/' project_org: 'GDC' diff --git a/Data_Transfer_Tool_UG.yml b/Data_Transfer_Tool_UG.yml index d8e7a47f4..a474a63af 100644 --- a/Data_Transfer_Tool_UG.yml +++ b/Data_Transfer_Tool_UG.yml @@ -10,12 +10,10 @@ theme_dir: theme pages: - Data Transfer Tool: - Getting Started: 'Data_Transfer_Tool/Users_Guide/Getting_Started.md' - - Accessing Built-in Help: 'Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help.md' - Preparing for Data Download and Upload: 'Data_Transfer_Tool/Users_Guide/Preparing_for_Data_Download_and_Upload.md' - - Data Download and Upload - Command Line: 'Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md' - - Data Download - UI: 'Data_Transfer_Tool/Users_Guide/Data_Download_Upload_UI.md' - - Key Terms: 'Data_Transfer_Tool/Users_Guide/Appendix_A_-_Key_Terms.md' + - Data Transfer Tool Command Line Documentation: 'Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md' - Release Notes - Command Line: 'Data_Transfer_Tool/Release_Notes/DTT_Release_Notes.md' + - Data Transfer Tool UI Documentation: 'Data_Transfer_Tool/Users_Guide/Data_Download_DTT_UI.md' - Release Notes - UI: 'Data_Transfer_Tool/Release_Notes/DTT_UI_Release_Notes.md' extra: diff --git a/docs/API/Release_Notes/API_Release_Notes.md b/docs/API/Release_Notes/API_Release_Notes.md index 232ccf13c..e6584b638 100644 --- a/docs/API/Release_Notes/API_Release_Notes.md +++ b/docs/API/Release_Notes/API_Release_Notes.md @@ -3,6 +3,10 @@ | Version | Date | |---|---| +| [v1.20.0](API_Release_Notes.md#v1200) | April 17, 2019 | +| [v1.19.0](API_Release_Notes.md#v1190) | February 20, 2019 | +| [v1.18.0](API_Release_Notes.md#v1180) | December 18, 2018 | +| [v1.17.0](API_Release_Notes.md#v1170) | November 7, 2018 | | [v1.16.0](API_Release_Notes.md#v1160) | September 27, 2018 | | [v1.15.0](API_Release_Notes.md#v1150) | August 23, 2018 | | [v1.14.1](API_Release_Notes.md#v1141) | May 21, 2018 | @@ -21,6 +25,112 @@ | [v1.1.0](API_Release_Notes.md#v110) | May 25, 2016 | | [v1.0.1](API_Release_Notes.md#v101) | May 16, 2016 | + +## v1.20.0 + +* __GDC Product__: Application Programming Interface (API) +* __Release Date__: April 17, 2019 + +### New Features and Changes + +* Disallowed creation of multiple file versions in the same data release +* Improved API concurrency performance and addressed random failures/4XX/5XX responses +* Improved API/Portal performances for querying large sets of data from the Elasticsearch indices +* Updated BCR Clinical XML parser code to support future indexing of additional clinical data + - Updated the mapping for: + - `days_to_death` + - `days_to_birth` + - `vital_status` + - `prior_malignancy` and `synchronous_malignancy` + - Added a mapping for: + - `pack_years_smoked` + - `prior_treatment` + - `age_at_index` + - `days_to_diagnosis` + - `icd_10_code` + - `year_of_diagnosis` + - Remove calculation for: + - `cigarettes_per_day` + - `year_of_birth` + - `year_of_death` + - `bmi` + - Updated XML Parser to pull the most Up-to-Date Survival Information + +### Bugs Fixed Since Last Release + +* None + +### Known Issues and Workarounds + +* None + + +## v1.19.0 + +* __GDC Product__: Application Programming Interface (API) +* __Release Date__: February 20, 2019 + +### New Features and Changes + +* Added API features to support controlled access DAVE +* Updated API query endpoints to handle filtering of queries based on tokens +* Created login notification Endpoint +* Added hashing and logging for similar ES queries + +### Bugs Fixed Since Last Release + +* Fixed bug where quick search ES query grows with each request +* Fixed bug where new file versions could be created when exactly the same existing metadata is uploaded +* Fixed bug where submitting to specific projects produced error that data already existed + + + +## v1.18.0 + +* __GDC Product__: Application Programming Interface (API) +* __Release Date__: December 18, 2018 + +### New Features and Changes + +* Update to auth for GDC Pre-Release Data Portal + +### Bugs Fixed Since Last Release + +* None + +### Known Issues and Workarounds + +* Fields are not counted as missing if parent field is also missing. This may occur with queries of nested fields in the Data Portal Advanced Search or an API query using a filter. This behavior could impact results reported using search parameters of "IS MISSING" or "NOT MISSING". +* Certain very large API requests will time out. It is recommended to break up very large requests into a series of smaller requests. + + + +## v1.17.0 + +* __GDC Product__: Application Programming Interface (API) +* __Release Date__: November 7, 2018 + +### New Features and Changes + +* Created new index cnv_centric +* Created new index cnv_occurrence_centric +* Created new REST API endpoints for CNV +* Created mapping from aliquot to case for occurrence on cnv_centric +* Created new graphql endpoints for CNV +* Updated index case_centric to add cnv +* Updated index gene_centric to add cnv + +### Bugs Fixed Since Last Release + +* Fixed bug to prevent users from deleting files in state submitted or released + +### Known Issues and Workarounds + +* Fields are not counted as missing if parent field is also missing. This may occur with queries of nested fields in the Data Portal Advanced Search or an API query using a filter. This behavior could impact results reported using search parameters of "IS MISSING" or "NOT MISSING". +* Certain very large API requests will time out. It is recommended to break up very large requests into a series of smaller requests. + + + ## v1.16.0 * __GDC Product__: Application Programming Interface (API) diff --git a/docs/API/Users_Guide/Additional_Examples.md b/docs/API/Users_Guide/Additional_Examples.md index 86057cbf0..8b852f61b 100644 --- a/docs/API/Users_Guide/Additional_Examples.md +++ b/docs/API/Users_Guide/Additional_Examples.md @@ -668,7 +668,7 @@ curl 'https://api.gdc.cancer.gov/cases?filters=%7b%0d%0a+++%22op%22+%3a+%22%3d%2 #### Example: Filter using a range -This is an example of filtering for age at diagnosis. The request is for cases where the age at diagnosis is between 40 and 70 years. *Note:* `age_at_diagnosis` is expressed in days. +This is an example of filtering for age at diagnosis. The request is for cases where the age at diagnosis is between 40 and 70 years. >**Note:** `age_at_diagnosis` is expressed in days. ```Filter { diff --git a/docs/API/Users_Guide/Appendix_C_Format_of_Submission_Requests_and_Responses.md b/docs/API/Users_Guide/Appendix_C_Format_of_Submission_Requests_and_Responses.md index e831cc09b..9de5b8060 100644 --- a/docs/API/Users_Guide/Appendix_C_Format_of_Submission_Requests_and_Responses.md +++ b/docs/API/Users_Guide/Appendix_C_Format_of_Submission_Requests_and_Responses.md @@ -123,4 +123,4 @@ API responses will contain a status for each entity specified in the request: **`error`**: The desired transaction was not sucessful, and the transaction was aborted because of this entity. This entity did not pass validation or an internal error occured when attempting to complete the transaction. The error state will be accompanied by a list of errors recorded about the entity (see label-error-messages). -**Note:** GDC API requests are transactional. An error with processing a node specified in the transaction will abort the transaction and will result in no changes being applied for any node involved in the transaction. +>**Note:** GDC API requests are transactional. An error with processing a node specified in the transaction will abort the transaction and will result in no changes being applied for any node involved in the transaction. diff --git a/docs/API/Users_Guide/BAM_Slicing.md b/docs/API/Users_Guide/BAM_Slicing.md index 4462549c3..8149916f9 100644 --- a/docs/API/Users_Guide/BAM_Slicing.md +++ b/docs/API/Users_Guide/BAM_Slicing.md @@ -21,11 +21,11 @@ Please note the following: The following query parameters and JSON fields are supported: | Description | Query Parameter | JSON Field | Query format | -|---|---|---| +|---|---|---|---| | entire chromosome, or a position or region on the chromosome, specified using chromosomal coordinates | region | regions | region=(:(-)?)? | | region specified using a [HGNC](http://www.genenames.org/) / [GENCODE v22](http://www.gencodegenes.org/) gene name | gencode | gencode | gencode= | -**NOTE:** The successfully sliced BAM will contain all reads that overlap (entirely or partially) with the specified region or gene. It is possible to specify an open-ended region, e.g. `chr2:10000`, which would return all reads that (completely or partially) overlap with the region of chromosome 2 from position 10,000 to the end of the chromosome. +>**NOTE:** The successfully sliced BAM will contain all reads that overlap (entirely or partially) with the specified region or gene. It is possible to specify an open-ended region, e.g. `chr2:10000`, which would return all reads that (completely or partially) overlap with the region of chromosome 2 from position 10,000 to the end of the chromosome. ### JSON Schema diff --git a/docs/API/Users_Guide/Data_Analysis.md b/docs/API/Users_Guide/Data_Analysis.md index d987f538c..f008d82da 100644 --- a/docs/API/Users_Guide/Data_Analysis.md +++ b/docs/API/Users_Guide/Data_Analysis.md @@ -6,22 +6,31 @@ The GDC DAVE tools use the same API as the rest of the Data Portal and takes adv The following data analysis endpoints are available from the GDC API: -| __Endpoint__ | __Description__ | -|---|---| -| __/genes__ | Allows users to access summary information about each gene using its Ensembl ID. | -| __/ssms__ | Allows users to access information about each somatic mutation. For example, a `ssm` would represent the transition of C to T at position 52000 of chromosome 1. | -| __/ssm_occurrences__ | A `ssm` entity as applied to a single instance (case). An example of a `ssm occurrence` would be that the transition of C to T at position 52000 of chromosome 1 occurred in patient TCGA-XX-XXXX. | -|__/analysis/top_cases_counts_by_genes__| Returns the number of cases with a mutation in each gene listed in the gene_ids parameter for each project. Note that this endpoint cannot be used with the `format` or `fields` parameters.| -|__/analysis/top_mutated_genes_by_project__| Returns a list of genes that have the most mutations within a given project. | -|__/analysis/top_mutated_cases_by_gene__| Generates information about the cases that are most affected by mutations in a given number of genes | -|__/analysis/mutated_cases_count_by_project__| Returns counts for the number of cases that have associated `ssm` data in each project. The number of affected cases can be found under "case_with_ssm": {"doc_count": $case_count}.| -|__/analysis/survival__| Survival plots can be generated in the Data Portal for different subsets of data, based upon many query factors such as variants, disease type and projects. This endpoint can be used to programmatically retrieve the raw data to generate these plots and apply different filters to the data. (see Survival Example)| +|__Node__| __Endpoint__ | __Description__ | +|---|---|---| +|__Genes__| __/genes__ | Allows users to access summary information about each gene using its Ensembl ID. | +|__SSMS__| __/ssms__ | Allows users to access information about each somatic mutation. For example, a `ssm` would represent the transition of C to T at position 52000 of chromosome 1. | +||__/ssms/``__|Get information about a specific ssm using a ``, often supplemented with the `expand` option to show fields of interest. | +|| __/ssm_occurrences__ | A `ssm` entity as applied to a single instance (case). An example of a `ssm occurrence` would be that the transition of C to T at position 52000 of chromosome 1 occurred in patient TCGA-XX-XXXX. | +||__/ssm_occurrences/``__|Get information about a specific ssm occurrence using a ``, often supplemented with the `expand` option to show fields of interest. | +|__CNVS__|__/cnvs__|Allows users to access data about copy number variations (cnvs). This data will be specifc to cnvs and not a specific case. | +||__/cnvs/``__|Get information about a specific copy number variation using a ``, often supplemented with the `expand` option to show fields of interest. | +||__/cnvs/ids__|This endpoint will retrieve nodes that contain the queried cnv_id. This is accomplished by adding the query parameter: /cnvs/ids?query=``.| +||__/cnv_occurrences__|A `cnv` entity as applied to a single case.| +||__/cnv_occurrences/``__|Get information about a specific copy number variation occurrence using a ``, often supplemented with the `expand` option to show fields of interest. | +||__/cnv_occurrences/ids__|This endpoint will retrieve nodes that contain the queried cnv_occurrence_id. This is accomplished by adding the query parameter: /cnv_occurrences/ids?query=``| +|__Analysis__|__/analysis/top_cases_counts_by_genes__| Returns the number of cases with a mutation in each gene listed in the gene_ids parameter for each project. Note that this endpoint cannot be used with the `format` or `fields` parameters.| +||__/analysis/top_mutated_genes_by_project__| Returns a list of genes that have the most mutations within a given project. | +||__/analysis/top_mutated_cases_by_gene__| Generates information about the cases that are most affected by mutations in a given number of genes | +||__/analysis/mutated_cases_count_by_project__| Returns counts for the number of cases that have associated `ssm` data in each project. The number of affected cases can be found under "case_with_ssm": {"doc_count": $case_count}.| +||__/analysis/survival__| Survival plots can be generated in the Data Portal for different subsets of data, based upon many query factors such as variants, disease type and projects. This endpoint can be used to programmatically retrieve the raw data to generate these plots and apply different filters to the data. (see Survival Example)| + The methods for retrieving information from these endpoints are very similar to those used for the `cases` and `files` endpoints. These methods are explored in depth in the [API Search and Retrieval](https://docs.gdc.cancer.gov/API/Users_Guide/Search_and_Retrieval/) documentation. The `_mapping` parameter can also be used with each of these endpoints to generate a list of potential fields. For example: `https://api.gdc.cancer.gov/ssms/_mapping` -Note: While it is not an endpoint, the `observation` entity is featured in the visualization section of the API. The `observation` entity provides information from the MAF file, such as read depth and normal genotype, that supports the validity of the associated `ssm`. An example is demonstrated below: +While it is not an endpoint, the `observation` entity is featured in the visualization section of the API. The `observation` entity provides information from the MAF file, such as read depth and normal genotype, that supports the validity of the associated `ssm`. An example is demonstrated below: ```Shell curl "https://api.gdc.cancer.gov/ssms/57bb3f2e-ec05-52c2-ab02-7065b7d24849?expand=occurrence.case.observation.read_depth&pretty=true" @@ -143,9 +152,9 @@ gene_start gene_end symbol id ## Simple Somatic Mutation Endpoint Examples -__Example 1__: Similar to the `/genes` endpoint, a user would like to retrieve information about the mutation based on its COSMIC ID. This would be accomplished by creating a JSON filter such as: +__Example 1__: Similar to the `/genes` endpoint, a user would like to retrieve information about the mutation based on its COSMIC ID. This would be accomplished by creating a JSON filter, which will then be encoded to URL for the `curl` command. -```Query +```Filter { "op":"in", "content":{ @@ -207,11 +216,137 @@ curl 'https://api.gdc.cancer.gov/ssms?pretty=true&filters=%7B%0A%22op%22%3A%22in } ``` +__Example 2:__ Based on the previous example's `ssm_id` (`8b3c1a7a-e4e0-5200-9d46-5767c2982145`), a user would like to look at the consequences and the VEP impact due to this ssm. + +```Shell +curl 'https://api.gdc.cancer.gov/ssms/8b3c1a7a-e4e0-5200-9d46-5767c2982145?pretty=true&expand=consequence.transcript&fields=consequence.transcript.annotation.vep_impact' +``` + +```JSON +{ + "data": { + "consequence": [ + { + "transcript": { + "aa_start": 127, + "consequence_type": "synonymous_variant", + "aa_end": 127, + "transcript_id": "ENST00000466621", + "is_canonical": false, + "aa_change": "G127G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "" + } + }, + { + "transcript": { + "aa_start": 95, + "consequence_type": "synonymous_variant", + "aa_end": 95, + "transcript_id": "ENST00000613879", + "is_canonical": false, + "aa_change": "G95G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "" + } + }, + { + "transcript": { + "aa_start": 218, + "consequence_type": "synonymous_variant", + "aa_end": 218, + "transcript_id": "ENST00000473635", + "is_canonical": false, + "aa_change": "G218G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "" + } + }, + { + "transcript": { + "aa_start": null, + "consequence_type": "non_coding_transcript_exon_variant", + "aa_end": null, + "transcript_id": "ENST00000474560", + "is_canonical": false, + "aa_change": null, + "annotation": { + "vep_impact": "MODIFIER" + }, + "ref_seq_accession": "" + } + }, + { + "transcript": { + "aa_start": 1226, + "consequence_type": "synonymous_variant", + "aa_end": 1226, + "transcript_id": "ENST00000383710", + "is_canonical": true, + "aa_change": "G1226G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "NM_003716.3" + } + }, + { + "transcript": { + "aa_start": 1187, + "consequence_type": "synonymous_variant", + "aa_end": 1187, + "transcript_id": "ENST00000283269", + "is_canonical": false, + "aa_change": "G1187G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "NM_183394.2" + } + }, + { + "transcript": { + "aa_start": 1147, + "consequence_type": "synonymous_variant", + "aa_end": 1147, + "transcript_id": "ENST00000357948", + "is_canonical": false, + "aa_change": "G1147G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "NM_183393.2" + } + }, + { + "transcript": { + "aa_start": 1217, + "consequence_type": "synonymous_variant", + "aa_end": 1217, + "transcript_id": "ENST00000612439", + "is_canonical": false, + "aa_change": "G1217G", + "annotation": { + "vep_impact": "LOW" + }, + "ref_seq_accession": "" + } + } + ] + } +``` + ## Simple Somatic Mutation Occurrence Endpoint Examples __Example 1:__ A user wants to determine the chromosome in case `TCGA-DU-6407` that contains the greatest number of `ssms`. As this relates to mutations that are observed in a case, the `ssm_occurrences` endpoint is used. -``` +```Filter { "op":"in", "content":{ @@ -223,7 +358,7 @@ __Example 1:__ A user wants to determine the chromosome in case `TCGA-DU-6407` t ```Shell curl "https://api.gdc.cancer.gov/ssm_occurrences?format=tsv&fields=ssm.chromosome&size=5000&filters=%7B%0D%0A%22op%22%3A%22in%22%2C%0D%0A%22content%22%3A%7B%0D%0A%22field%22%3A%22case.submitter_id%22%2C%0D%0A%22value%22%3A%5B%0D%0A%22TCGA-DU-6407%22%0D%0A%5D%0D%0A%7D%0D%0A%7D" ``` -```Response +```tsv ssm.chromosome id chr3 552c09d1-69b1-5c04-b543-524a6feae3eb chr10 391011ff-c1fd-5e2a-a128-652bc660f64c @@ -256,6 +391,313 @@ chr10 727c9d57-7b74-556f-aa5b-e1ca1f76d119 chr15 b4a86ffd-e60c-5c9c-aaa1-9e9f02d86116 chr5 3a023e72-da92-54f7-aa18-502c1076b2b0 ``` +__Example 2:__ A user has retrieved a `ssm_occurrence`, and would like to determine if that case also has tissue slides and transcriptome profiling data. + +```Shell +curl 'https://api.gdc.cancer.gov/ssm_occurrences/6fd8527d-5c40-5604-8fa9-0ce798eec231?pretty=true&expand=case,case.summary.experimental_strategies' +``` + +```Json +{ + "data": { + "case": { + "disease_type": "Nevi and Melanomas", + "updated_datetime": "2018-09-06T18:42:50.098635-05:00", + "created_datetime": null, + "summary": { + "experimental_strategies": [ + { + "file_count": 3, + "experimental_strategy": "miRNA-Seq" + }, + { + "file_count": 1, + "experimental_strategy": "Tissue Slide" + }, + { + "file_count": 18, + "experimental_strategy": "WXS" + }, + { + "file_count": 1, + "experimental_strategy": "Diagnostic Slide" + }, + { + "file_count": 4, + "experimental_strategy": "RNA-Seq" + }, + { + "file_count": 4, + "experimental_strategy": "Genotyping Array" + }, + { + "file_count": 1, + "experimental_strategy": "Methylation Array" + } + ] + }, + "state": "released", + "case_id": "590b5e18-d837-4c0e-becf-80520db57c0f", + "primary_site": "Skin", + "submitter_id": "TCGA-Z2-A8RT", + "available_variation_data": [ + "cnv", + "ssm" + ] + }, + "ssm_occurrence_id": "6fd8527d-5c40-5604-8fa9-0ce798eec231" + } +``` + +## Copy Number Variation Endpoint Examples + +__Example 1:__ A user is interested in finding the first 30 cnvs found on chromosome 4 that have a cnv loss. + +```Filter +{ + "op": "and", + "content": [ + { + "op": "in", + "content": { + "field": "chromosome", + "value": [ + "4" + ] + } + }, + { + "op": "in", + "content": { + "field": "cnv_change", + "value": [ + "Loss" + ] + } + } + ] +} +``` + +```Shell +curl 'https://api.gdc.cancer.gov/cnvs?filters=%7B%0D%0A+++%22op%22%3A+%22and%22%2C%0D%0A++++%22content%22%3A+%5B%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22chromosome%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%224%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%2C%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22cnv_change%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%22Loss%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%0D%0A++++%5D%0D%0A%7D&size=30&sort=start_position&format=tsv' +``` + +```tsv +ncbi_build cnv_id gene_level_cn cnv_change end_position start_position id chromosome +GRCh38 d18e0dc8-7d56-5d9e-84fd-4f2cf3353c66 True Loss 88211 53285 d18e0dc8-7d56-5d9e-84fd-4f2cf3353c66 4 +GRCh38 357a6606-8a64-5827-b776-e71f44b7e05f True Loss 163989 124480 357a6606-8a64-5827-b776-e71f44b7e05f 4 +GRCh38 eda45f5f-6a57-5fae-b8ad-5d67a14423f1 True Loss 305321 270675 eda45f5f-6a57-5fae-b8ad-5d67a14423f1 4 +GRCh38 64d82c29-0f20-5a8f-8599-7afb550ab403 True Loss 384864 337814 64d82c29-0f20-5a8f-8599-7afb550ab403 4 +GRCh38 f9d24781-34cb-51ff-99c2-84c83a8348ac True Loss 499156 425815 f9d24781-34cb-51ff-99c2-84c83a8348ac 4 +GRCh38 56209b45-3b2c-5862-85bb-362722bae857 True Loss 540196 499210 56209b45-3b2c-5862-85bb-362722bae857 4 +GRCh38 04b976d8-90ad-501d-b672-e14816582339 True Loss 670782 625584 04b976d8-90ad-501d-b672-e14816582339 4 +GRCh38 574939d6-bf4f-57e9-9c86-629b3d8de664 True Loss 674338 672436 574939d6-bf4f-57e9-9c86-629b3d8de664 4 +GRCh38 b2ebf724-0a08-542e-ad1e-392a30208140 True Loss 682033 673580 b2ebf724-0a08-542e-ad1e-392a30208140 4 +GRCh38 4e37e683-6f9f-5e80-8e3b-78d0cdf3c28e True Loss 689441 681829 4e37e683-6f9f-5e80-8e3b-78d0cdf3c28e 4 +GRCh38 06837ab7-8242-518f-a24c-dce8a0140b01 True Loss 770640 705748 06837ab7-8242-518f-a24c-dce8a0140b01 4 +GRCh38 9f877f14-55ea-5e19-afa0-d294d1700b4b True Loss 826198 784957 9f877f14-55ea-5e19-afa0-d294d1700b4b 4 +GRCh38 bde18311-8a8a-52ef-bcc0-3b6660509df0 True Loss 932373 849276 bde18311-8a8a-52ef-bcc0-3b6660509df0 4 +GRCh38 31c65477-0e54-5be3-b1f6-3f249850ef79 True Loss 958656 932387 31c65477-0e54-5be3-b1f6-3f249850ef79 4 +GRCh38 c26f1b4d-d4c3-5685-8789-fb0051f8a188 True Loss 986895 958887 c26f1b4d-d4c3-5685-8789-fb0051f8a188 4 +GRCh38 0aa931e9-7ec1-57e7-9cb9-ec66a8da5689 True Loss 993440 979073 0aa931e9-7ec1-57e7-9cb9-ec66a8da5689 4 +GRCh38 162a9e1d-e1ee-5478-9291-6ba8082d5776 True Loss 1004506 986997 162a9e1d-e1ee-5478-9291-6ba8082d5776 4 +GRCh38 6a4d4aef-2289-54f5-b78b-797db8c3a9f2 True Loss 1026897 1009936 6a4d4aef-2289-54f5-b78b-797db8c3a9f2 4 +GRCh38 3c26920b-fb93-5595-81a0-770df0c88246 True Loss 1113562 1056250 3c26920b-fb93-5595-81a0-770df0c88246 4 +GRCh38 7036724d-1a73-5b2b-ae02-c2dc5b3333d7 True Loss 1208962 1166932 7036724d-1a73-5b2b-ae02-c2dc5b3333d7 4 +GRCh38 30b408be-db7b-579b-bbde-4a265c6291ce True Loss 1249953 1211448 30b408be-db7b-579b-bbde-4a265c6291ce 4 +GRCh38 a7c6f097-bba8-5859-838d-8b3b4610c9e6 True Loss 1340147 1289851 a7c6f097-bba8-5859-838d-8b3b4610c9e6 4 +GRCh38 8fd4f4e8-ddf3-574b-ac19-3112a2778b22 True Loss 1388049 1347266 8fd4f4e8-ddf3-574b-ac19-3112a2778b22 4 +GRCh38 2315f6cc-9d91-58b8-9f3e-f0d36cd6846c True Loss 1395989 1391552 2315f6cc-9d91-58b8-9f3e-f0d36cd6846c 4 +GRCh38 1480d682-fe0e-5ba1-bf4e-ac84945f194a True Loss 1406331 1402932 1480d682-fe0e-5ba1-bf4e-ac84945f194a 4 +GRCh38 280e825e-1c51-506b-a4b5-3dc85fd79cbe True Loss 1684302 1617915 280e825e-1c51-506b-a4b5-3dc85fd79cbe 4 +GRCh38 607e36e3-6b1d-5564-9670-759668053ceb True Loss 1712555 1692800 607e36e3-6b1d-5564-9670-759668053ceb 4 +GRCh38 93b6ccc4-d88d-5040-936f-a23c9006a965 True Loss 1721358 1715952 93b6ccc4-d88d-5040-936f-a23c9006a965 4 +GRCh38 f6f660d2-5a68-5e49-92b1-a816be39e0fe True Loss 1745176 1721490 f6f660d2-5a68-5e49-92b1-a816be39e0fe 4 +GRCh38 a0c069d1-dcb0-5833-8fff-211cd6e3719a True Loss 1808872 1793307 a0c069d1-dcb0-5833-8fff-211cd6e3719a 4 +``` + +__Example 2:__ A user wants to determine the location and identity of the gene affected by the cnv `5052be09-2bbe-5175-a0ae-fc568ea75339`, and determine whether the gene is found within the Cancer Gene Census. + +```Shell +curl 'https://api.gdc.cancer.gov/cnvs/5052be09-2bbe-5175-a0ae-fc568ea75339?pretty=true&expand=consequence.gene' +``` + +```Json +{ + "data": { + "ncbi_build": "GRCh38", + "cnv_id": "5052be09-2bbe-5175-a0ae-fc568ea75339", + "gene_level_cn": true, + "cnv_change": "Gain", + "end_position": 110346681, + "start_position": 110338506, + "consequence": [ + { + "gene": { + "symbol": "RBM15", + "is_cancer_gene_census": "True", + "biotype": "protein_coding", + "gene_id": "ENSG00000162775" + } + } + ], + "chromosome": "1" + } +``` + +## Copy Number Variation Occurrence Enpoint Examples + +__Example 1:__ A user is interested in finding cases that have both cnv and ssm data for females diagnosed with Squamous Cell Neoplasms and have a cnv gain change on chromosome 9. It is important to note that for a case like this, where multiple arguments are need for one filtered field, it is easier for the API to have multiple filters for the same field, `case.available_variation_data` in this example, than having one filter with multiple arguments. + +```Filter +{ + "op": "and", + "content": [ + { + "op": "in", + "content": { + "field": "cnv.cnv_change", + "value": [ + "Gain" + ] + } + }, + { + "op": "in", + "content": { + "field": "case.demographic.gender", + "value": [ + "female" + ] + } + }, + { + "op": "in", + "content": { + "field": "case.available_variation_data", + "value": [ + "cnv" + ] + } + }, + { + "op": "in", + "content": { + "field": "case.available_variation_data", + "value": [ + "ssm" + ] + } + }, + { + "op": "in", + "content": { + "field": "cnv.chromosome", + "value": [ + "9" + ] + } + }, + { + "op": "in", + "content": { + "field": "case.disease_type", + "value": [ + "Squamous Cell Neoplasms" + ] + } + } + ] +} + +``` + +```Shell +curl 'https://api.gdc.cancer.gov/cnv_occurrences?filters=%7B%0D%0A++++%22op%22%3A+%22and%22%2C%0D%0A++++%22content%22%3A+%5B%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22cnv.cnv_change%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%22Gain%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%2C%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22case.demographic.gender%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%22female%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%2C%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22case.available_variation_data%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%22cnv%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%2C%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22case.available_variation_data%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%22ssm%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%2C%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22cnv.chromosome%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%229%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%2C%0D%0A++++++++%7B%0D%0A++++++++++++%22op%22%3A+%22in%22%2C%0D%0A++++++++++++%22content%22%3A+%7B%0D%0A++++++++++++++++%22field%22%3A+%22case.disease_type%22%2C%0D%0A++++++++++++++++%22value%22%3A+%5B%0D%0A++++++++++++++++++++%22Squamous+Cell+Neoplasms%22%0D%0A++++++++++++++++%5D%0D%0A++++++++++++%7D%0D%0A++++++++%7D%0D%0A++++%5D%0D%0A%7D&fields=case.available_variation_data,case.case_id&format=tsv' +``` + +```tsv +case.case_id case.available_variation_data.1 case.available_variation_data.0 id +638035f6-2909-4a44-980f-468ac5d74e18 ssm cnv e76d2aaf-f951-5a51-a949-a241dba61f73 +ad98977b-e159-410a-b8c2-f4e8a07f9784 ssm cnv ff3506b8-ee80-570f-ad2d-4ab4a7363b82 +c83c52f4-3815-4f49-8218-cf80aaa62e2f ssm cnv e73696c5-386f-5cae-aa10-f8628f32ee0e +dac27c24-cdbf-4527-9214-178fde3d098a ssm cnv 77885824-fae1-5116-9851-694255249cc8 +0e91d7b5-ce35-4671-ab9f-cfd5369b557c ssm cnv 526529ae-8e59-597e-aea1-cc0b06a82e76 +ea34663c-f40e-4a3e-9ac0-65d5e9eef12b ssm cnv e4a0c034-44d4-5dea-912a-ce331d9a9512 +05026179-b1da-411e-a286-89727b1ae380 ssm cnv 30bdc04c-54a5-53ca-bdd0-b808f23da266 +f1a1bbf9-4751-4fb4-8a2b-19f8d4ba57bd ssm cnv 02e3fbb3-da8f-5983-8d10-189e641ddf11 +a6ec75d4-1c90-4527-bfae-aa91d2dae082 ssm cnv 94b0e8be-1130-5b88-9103-6756bdabf67b +107f6b9a-2883-4499-a40a-ec25bc834a06 ssm cnv ad831f27-e6f5-5b78-8a15-0b652621ea4c +``` + +__Example 2:__ A user is interested in the first cnv occurrence (`e76d2aaf-f951-5a51-a949-a241dba61f73`) from the previous example, and would like to know more about the case exposures and demographics. + +```Shell +curl 'https://api.gdc.cancer.gov/cnv_occurrences/e76d2aaf-f951-5a51-a949-a241dba61f73?pretty=true&expand=cnv,case,case.exposures,case.demographic' +``` + +```Json +{ + "data": { + "cnv": { + "ncbi_build": "GRCh38", + "cnv_id": "0d475712-c11e-51fb-b6e6-407d12978057", + "gene_level_cn": true, + "cnv_change": "Gain", + "end_position": 133348131, + "variant_status": "Tumor only", + "start_position": 133338323, + "chromosome": "9" + }, + "case": { + "disease_type": "Squamous Cell Neoplasms", + "updated_datetime": "2018-09-06T11:07:45.510627-05:00", + "created_datetime": null, + "demographic": { + "updated_datetime": "2018-09-06T11:07:45.510627-05:00", + "created_datetime": null, + "gender": "female", + "year_of_birth": 1954, + "submitter_id": "TCGA-EA-A3HR_demographic", + "state": "released", + "race": "white", + "demographic_id": "dd8576a8-bd62-55e7-b0df-7233ceded2fb", + "ethnicity": "not hispanic or latino", + "year_of_death": null + }, + "submitter_id": "TCGA-EA-A3HR", + "state": "released", + "case_id": "638035f6-2909-4a44-980f-468ac5d74e18", + "primary_site": "Cervix uteri", + "available_variation_data": [ + "cnv", + "ssm" + ], + "exposures": [ + { + "cigarettes_per_day": null, + "weight": 86, + "updated_datetime": "2018-09-06T11:07:45.510627-05:00", + "created_datetime": null, + "alcohol_intensity": null, + "bmi": 40, + "years_smoked": null, + "submitter_id": "TCGA-EA-A3HR_exposure", + "alcohol_history": null, + "state": "released", + "tobacco_smoking_status": null, + "tobacco_smoking_onset_year": null, + "tobacco_smoking_quit_year": null, + "exposure_id": "0e7265ab-bf65-50c7-bf33-96a7ac452d7c", + "height": 146, + "pack_years_smoked": null + } + ] + }, + "cnv_occurrence_id": "e76d2aaf-f951-5a51-a949-a241dba61f73" + } +``` ## Analysis Endpoints diff --git a/docs/API/Users_Guide/Downloading_Files.md b/docs/API/Users_Guide/Downloading_Files.md index 975902ed2..d67489d06 100644 --- a/docs/API/Users_Guide/Downloading_Files.md +++ b/docs/API/Users_Guide/Downloading_Files.md @@ -2,9 +2,9 @@ The GDC API implements file download functionality using `data` and `manifest` endpoints. The `data` endpoint allows users to download files stored in the GDC by specifying file UUID(s). The `manifest` endpoint generates a download manifest file that can be used with the GDC Data Transfer Tool to transfer large volumes of data. -**Note:** Downloading controlled access data requires the use of an authentication token. See [Getting Started: Authentication](Getting_Started.md#authentication) for details. +>**Note:** Downloading controlled access data requires the use of an authentication token. See [Getting Started: Authentication](Getting_Started.md#authentication) for details. -**Note:** Requests to download data from the GDC Legacy Archive may be directed to `legacy/data` or `data`. See [Getting Started: Legacy Archive](Getting_Started.md#gdc-legacy-archive) for details. +>**Note:** Requests to download data from the GDC Legacy Archive may be directed to `legacy/data` or `data`. See [Getting Started: Legacy Archive](Getting_Started.md#gdc-legacy-archive) for details. ## Data endpoint @@ -60,7 +60,7 @@ curl --remote-name --remote-header-name 'https://api.gdc.cancer.gov/data/e322802 curl: Saved to filename 'gdc_download_064d1aa8cc8cbab33e93979bebbf7d6af2d6a802.tar.gz' ``` -**Note:** This method supports downloading a limited number of files at one time. To download a large number of files, please use [POST](#downloading-multiple-files-using-post). +>**Note:** This method supports downloading a limited number of files at one time. To download a large number of files, please use [POST](#downloading-multiple-files-using-post). #### Downloading an Uncompressed Group of Files @@ -177,7 +177,8 @@ curl: Saved to filename 'ACOLD_p_TCGA_Batch17_SNP_N_GenomeWideSNP_6_A03_466078.t ## Manifest endpoint -The `manifest` endpoint generates a download manifest file that can be used with the GDC Data Transfer Tool. The Data Transfer Tool is recommended for transferring large volumes of data. The GDC API can also generate a download manifest from a list of results that match a [Search and Retrieval](Search_and_Retrieval.md) query. To do this, append `&return_type=manifest` to the end of the query. +The `manifest` endpoint generates a download manifest file that can be used with the [GDC Data Transfer Tool](../../Data_Transfer_Tool/Users_Guide/Getting_Started.md). The Data Transfer Tool is recommended for transferring large volumes of data. The GDC API can also generate a download manifest from a list of results that match a [Search and Retrieval](Search_and_Retrieval.md) query. To do this, append `&return_type=manifest` to the end of the query. + ### Using the manifest endpoint diff --git a/docs/API/Users_Guide/Getting_Started.md b/docs/API/Users_Guide/Getting_Started.md index f1a578cb9..d810ce88b 100644 --- a/docs/API/Users_Guide/Getting_Started.md +++ b/docs/API/Users_Guide/Getting_Started.md @@ -26,8 +26,7 @@ Examples of tools that can help build GDC API calls: | ------------- |-------------| | [JSONLint](http://jsonlint.com/)| Validate JSON | | [JSON Formatter](http://jsonformatter.org/) | Format, validate, and convert JSON to other formats | -| [Percent-(URL)-encoding tool](http://text-rescue.com/string-escape/percent-url-encoding-tool.html)| Tool for percent-encoding strings | -| [JSON escape tool](http://text-rescue.com/string-escape/json-escape-tool.html)| Tool for escaping strings using JSON string rules | +| [Percent-(URL)-encoding tool](https://codebeautify.org/url-encode-string)| Tool for percent-encoding strings | ## API Endpoints @@ -54,9 +53,11 @@ For example, the address of the latest version of the `status` endpoint is `http ### GDC Legacy Archive -To interact with data in the GDC Legacy Archive, add `legacy` to the endpoint URL: +To interact with data in the GDC Legacy Archive, add `legacy` to the endpoint URL before the ``: - https://api.gdc.cancer.gov//legacy/ + https://api.gdc.cancer.gov/legacy/ + +> __NOTE:__ The version can also be applied to a Legacy Archive search by placing the `` before "/legacy/" ## Entity UUIDs @@ -112,7 +113,7 @@ print json.dumps(response.json(), indent=2) Authentication is required for downloading controlled-access data, and for all data submission functionality. The GDC API uses tokens for authentication. -Users can obtain authentication tokens from the [GDC Data Portal](https://portal.gdc.cancer.gov) and the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/submission). See the [GDC Data Portal User's Guide](../../Data_Portal/Users_Guide/Authentication.md#gdc-authentication-tokens) and the [GDC Data Submission Portal User's Guide](../../Data_Submission_Portal/Users_Guide/Authentication.md#gdc-authentication-tokens) for instructions. +Users can obtain authentication tokens from the [GDC Data Portal](https://portal.gdc.cancer.gov) and the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/submission). See the [GDC Data Portal User's Guide](../../Data_Portal/Users_Guide/Repository.md#gdc-authentication-tokens) and the [GDC Data Submission Portal User's Guide](../../Data_Submission_Portal/Users_Guide/Data_Submission_Process.md#authentication) for instructions. ### Using Authentication Tokens @@ -134,4 +135,4 @@ curl: Saved to filename 'ACOLD_p_TCGA_Batch17_SNP_N_GenomeWideSNP_6_A03_466078.t For more information about authentication tokens, including token expiration and rotation, see [Data Security](../../Data/Data_Security/Data_Security.md#authentication-tokens). -**NOTE:** The authentication token should be kept in a secure location, as it allows access to all data accessible by the associated user account. +>**NOTE:** The authentication token should be kept in a secure location, as it allows access to all data accessible by the associated user account. diff --git a/docs/API/Users_Guide/GraphQL_Examples.md b/docs/API/Users_Guide/GraphQL_Examples.md new file mode 100644 index 000000000..fe9d7888d --- /dev/null +++ b/docs/API/Users_Guide/GraphQL_Examples.md @@ -0,0 +1,174 @@ +# Introduction to GDC GraphQL +[GraphQL](https://graphql.org/) is a query language for APIs. The [GDC REST API](https://docs.gdc.cancer.gov/API/Users_Guide/Getting_Started/) has structured and specifically defined query parameters as well as endpoints that have set requests and responses. The GDC GraphQL provides advanced GDC users greater flexibility to specify the data they would like to be returned. This allows queries to be cleaner and easier to understand, especially when combining multiple queries into one request. + +To produce queries in a visual interface, the GDC recommends using [GraphiQL](https://github.com/graphql/graphiql). See below for the correct endpoint URLs. + +## Using GDC GraphQL vs GDC REST API + +If the query requires only a subset of the data to be returned, GDC GraphQL may speed up requests as GraphQL queries return only the specified data. This may require less work on the GDC server-side to fulfill those requests. Conversely, if an entire data-set is required for each request, the GDC REST API may be a better fit. No matter which method is used, the data returned by the GDC REST API and the GraphQL query will be identical as they query the same source. + +## GDC GraphQL Overview +GraphQL is not a storage model or a database query language. The graph refers to graph structures defined in the schema, where nodes define objects and edges define relationships between objects. The API traverses and returns application data based on the schema definitions, independent of how the data is stored. + +## GDC GraphQL Endpoints + +The GDC GraphQL has only two endpoints: +* __GDC Search and Retrieval Endpoint:__ https://api.gdc.cancer.gov/v0/graphql +* __GDC Submission Endpoint:__ https://api.gdc.cancer.gov/v0/submission/graphql + +This page covers the search and retrieval endpoint, see the [GDC Submission API](Submission.md) for additional details on the submission endpoint. + +## GDC GraphQL Schema +All GDC GraphQL queries are validated and executed against the [GDC GraphQL schema]( https://github.com/NCI-GDC/portal-ui/blob/92f0dfa17838746093c3c011141d08391016da91/data/schema.graphql). Because the GraphQL parameters are discoverable, the GDC GraphQL schema can be queried for details about itself. + +The `__schema` keyword can be queried to list all types defined in the schema and retrieve details about each: + +```GraphQL +{ + __schema { + types { + name + kind + fields { + name + } + } + } +} +``` +The `__type` keyword can also be queried to retrieve details about any type such as "Explore" or "Case": +```GraphQL + +{ + __type(name: "Explore") { + name + kind + description + fields { + name + } + } +} +``` + +```GraphQL +{ + __type(name: "Case") { + name + kind + description + fields { + name + } + } +} +``` + +## Basic GraphQL queries in GDC +The two types of allowed operations in GDC GraphQL API are queries and mutations. Comparing GraphQL to REST, queries operate like `GET` requests, while mutations operate like `POST`/`PATCH`/`DELETE`. + +__Note:__ This guide does not cover GDC GraphQL mutation operations. + +GraphQL queries return only the data that is specified. Queries are built by specifying fields within fields (also called nested *subfields*) until only scalars are returned. Scalars are primitive values such as: `Int`, `Float`, `String`, `Boolean`, or `ID`. + +## Anatomy of a typical GDC GraphQL Query + + [![GraqhQL-Query](images/graphql-query.png)](images/graphql-query.png "Click to see the full image.") + +- __Operation type:__ Describes what type of operation that is being performed, such as query, mutation, or subscription +- __Operation name:__ Similar to a function name, gives queries meaningful names +- __Field:__ Denotes the specific fields on objects that will be included with the response data +- __Arguments:__ A set of key-value pairs associated with a specific field. The parameters can be literal values or variables. __NOTE:__ Arguments can appear on any field, even fields nested deep in an operation. +- __Variable definitions:__ As GraphQL is strong typed, it validates the variable being passed dynamically. __NOTE:__ Variables are passed separately from the query document as JSON such as: + +```json + { "filters_1": {"op":"in","content":{"field":"projects.program.name","value":["TARGET"]}}} +``` + +## GDC GraphQL Examples +### Nodes And Edges Example +A very powerful feature of GDC GraphQL API is that the graph structures defined in the [GDC GraphQL schema]( https://github.com/NCI-GDC/portal-ui/blob/92f0dfa17838746093c3c011141d08391016da91/data/schema.graphql ) can be queried and traversed. In these queries, nodes define objects and edges define relationships between objects. + +```GraphQL + +query PROJECTS_EDGES($filters_1: FiltersArgument) { + projects { + hits(filters: $filters_1) { + total + edges { + node { + primary_site + disease_type + project_id + dbgap_accession_number + } + } + } + } +} + + variable: + { "filters_1": {"op": "in", "content": {"field": "projects.primary_site", "value": ["Kidney"]}}} +``` + +### Query Case File Counts + +```GraphQL +query CaseFileCounts($filters: FiltersArgument) { + viewer { + repository { + cases { + hits(first: 1, filters: $filters) { + edges { + node { + case_id + files { + hits(first: 0) { + total + } + } + summary { + experimental_strategies { + experimental_strategy + file_count + } + data_categories { + data_category + file_count + } + } + } + } + } + } + } + } +} + +variable: +{"filters":{"op":"in","content":{"field":"cases.case_id","value":["dcd5860c-7e3a-44f3-a732-fe92fe3fe300"]}}} +``` + +### Query Simple Static Mutations Based on Gene IDs + +```GraphQL + +query PROJECTS_EDGES($filters_2: FiltersArgument) { + explore { + ssms { + hits(filters: $filters_2) { + total + edges { + node { + ssm_id + gene_aa_change + } + } + } + } + } +} + +variable: +{"filters_2": {"op":"in","content":{"field":"consequence.transcript.gene.gene_id","value":["ENSG00000155657"]}}} +``` diff --git a/docs/API/Users_Guide/Search_and_Retrieval.md b/docs/API/Users_Guide/Search_and_Retrieval.md index f156ae92e..a34a5fe6b 100644 --- a/docs/API/Users_Guide/Search_and_Retrieval.md +++ b/docs/API/Users_Guide/Search_and_Retrieval.md @@ -4,7 +4,7 @@ The GDC API provides endpoints that search and retrieve information stored in the GDC according to the [GDC Data Model](../../Data/Data_Model/GDC_Data_Model.md). The general format of requests to search & retrieval endpoints is described below. -**Note:** Queries described in this section work for datasets that have been released to the GDC Data Portal. Unreleased data that is in the process of being submitted to GDC cannot be queried using these methods. See [Submission](Submission.md) to learn how to query unreleased data using GraphQL. +>**Note:** Queries described in this section work for datasets that have been released to the GDC Data Portal. Unreleased data that is in the process of being submitted to GDC cannot be queried using these methods. See [Submission](Submission.md) to learn how to query unreleased data using GraphQL. ### Components of a Request @@ -19,7 +19,7 @@ A typical search and retrieval API request specifies the following parameters: Requests can be executed using HTTP GET or HTTP POST. GET requests are limited by maximum URL length, so the POST method is recommended for large queries. -**Note:** Requests for information stored in the GDC Legacy Archive must be directed to `legacy/` endpoints. See [Getting Started](Getting_Started.md#gdc-legacy-archive) for details. +>**Note:** Requests for information stored in the GDC Legacy Archive must be directed to `legacy/` endpoints. See [Getting Started](Getting_Started.md#gdc-legacy-archive) for details. ### POST Example @@ -87,7 +87,7 @@ The following search and retrieval endpoints are available in the GDC API: The choice of endpoint determines what is listed in the search results. The `files` endpoint will generate a list of files, whereas the `cases` endpoint will generate a list of cases. Each of the above endpoints, other than `_mapping`, can query and return any of the related fields in the [GDC Data Model](../../Data/Data_Model/GDC_Data_Model.md). So the `cases` endpoint can be queried for file fields (e.g. to look for cases that have certain types of experimental data), and the `files` endpoint can be queried for clinical metadata associated with a case (e.g. to look for files from cases diagnosed with a specific cancer type). -### Project Endpoint +### `Project` Endpoint The `projects` endpoint provides access to project records, the highest level of data organization in the GDC. #### Example @@ -213,7 +213,7 @@ curl 'https://api.gdc.cancer.gov/projects/TARGET-NBL?expand=summary,summary.expe } ``` -### Files Endpoint +### `Files` Endpoint The GDC Files Endpoint `https://api.gdc.cancer.gov/files` enables search and retrieval of information relating to files stored in the GDC, including file properties such as `file_name`, `md5sum`, `data_format`, and others. @@ -289,7 +289,7 @@ curl 'https://api.gdc.cancer.gov/files?from=0&size=2&sort=file_size:asc&pretty=t #### Retrieval of file metadata using individual UUIDs: -The `\files` endpoint supports a simple query format that retrieves the metadata of a single file using its UUID. Note that the `\files` endpoint is inactive when querying for earlier file versions. In that case, the `\history` or `/files/versions` endpoints should be used instead. +The `/files` endpoint supports a simple query format that retrieves the metadata of a single file using its UUID. Note that the `/files` endpoint is inactive when querying for earlier file versions. In that case, the `/history` or `/files/versions` endpoints should be used instead. ```Shell curl 'https://api.gdc.cancer.gov/files/874e71e0-83dd-4d3e-8014-10141b49f12c?pretty=true' @@ -321,7 +321,7 @@ curl 'https://api.gdc.cancer.gov/files/874e71e0-83dd-4d3e-8014-10141b49f12c?pret } ``` -__Note:__ The `file_size` field associated with each file is reported in bytes. +>__Note:__ The `file_size` field associated with each file is reported in bytes. #### Example of retrieving file version information: @@ -448,11 +448,11 @@ curl --request POST --header "Content-Type: text/tsv" https://api.gdc.cancer.go }] ``` -### Cases Endpoint +### `Cases` Endpoint The GDC Cases Endpoint `https://api.gdc.cancer.gov/cases` enables search and retrieval of information related to a specific case. -__Note:__ The `cases` endpoint is designed to retrieve the metadata associated with one or more cases, including all nested biospecimen entities. Filters can be applied to retrieve information for entire cases, but not for lower-level biospecimen entities. For example, a sample within a case cannot be used to query for aliquots that are associated only with that sample. All aliquots associated with the case would be retrieved. +The `cases` endpoint is designed to retrieve the metadata associated with one or more cases, including all nested biospecimen entities. Filters can be applied to retrieve information for entire cases, but not for lower-level biospecimen entities. For example, a sample within a case cannot be used to query for aliquots that are associated only with that sample. All aliquots associated with the case would be retrieved. #### Example @@ -698,7 +698,7 @@ curl 'https://api.gdc.cancer.gov/cases/1f601832-eee3-48fb-acf5-80c4a454f26e?pret } ``` -### Annotations Endpoint +### `Annotations` Endpoint The GDC Annotation Endpoint `https://api.gdc.cancer.gov/annotations` enables search and retrieval of annotations stored in the GDC. @@ -801,7 +801,7 @@ curl 'https://api.gdc.cancer.gov/annotations?filters=%7B%22op%22%3A%22in%22%2C%2 "warnings": {} } ``` -### History Endpoint +### `History` Endpoint The GDC History Endpoint `https://api.gdc.cancer.gov/history` enables search and retrieval of version and release information about a file. This endpoint will return the entire provenance of all versions of a file. A file may be versioned if a file is updated by the GDC (e.g. using a new alignment algorithm or fixing a file that contained an error). `Version` refers to the instance of a particular file. `Release` refers to which data release a file was part of. A file may be a part of many different data releases with no change in version number or content. @@ -818,7 +818,7 @@ curl 'https://api.gdc.cancer.gov/history/1dd28069-5777-4ff9-bd2b-d1ba68e88b06' ``` -### \_mapping Endpoint +### `_mapping` Endpoint Each search and retrieval endpoint is equipped with a ```_mapping``` endpoint that provides information about available fields. For example, `files/_mapping` endpoint provides information about fields and field groups available at the `files` endpoint: `https://api.gdc.cancer.gov/files/_mapping`. @@ -967,16 +967,19 @@ This example requests `male` cases using HTTP GET. The JSON object to be passed to the GDC API looks like: - {"op": "=", - "content": { - "field": "cases.demographic.gender", - "value": ["male"] - } - } + { + "op": "=", + "content": { + "field": "cases.demographic.gender", + "value": [ + "male" + ] + } + } -URL-encoding the above JSON object using [Percent-(URL)-encoding tool](https://www.beautifyconverter.com/json-escape-unescape.php) results in the following string: +URL-encoding the above JSON object using [Percent-(URL)-encoding tool](https://www.freeformatter.com/url-encoder.html) results in the following string: - %7b%22op%22%3a+%22%3d%22%2c%0d%0a++++++%22content%22%3a+%7b%0d%0a++++++++++%22field%22%3a+%22cases.clinical.gender%22%2c%0d%0a++++++++++%22value%22%3a+%5b%22male%22%5d%0d%0a++++++%7d%0d%0a%7d + %7B%0D%0A++++%22op%22%3A+%22%3D%22%2C%0D%0A++++%22content%22%3A+%7B%0D%0A++++++++%22field%22%3A+%22cases.demographic.gender%22%2C%0D%0A++++++++%22value%22%3A+%5B%0D%0A++++++++++++%22male%22%0D%0A++++++++%5D%0D%0A++++%7D%0D%0A%7D The above string can now be passed to the GDC API using the `filters` parameter: diff --git a/docs/API/Users_Guide/Submission.md b/docs/API/Users_Guide/Submission.md index d47acf23c..3de8a15c9 100644 --- a/docs/API/Users_Guide/Submission.md +++ b/docs/API/Users_Guide/Submission.md @@ -48,7 +48,7 @@ Metadata files must be uploaded in raw, unencoded form. Binary mode should be us #### BCR XML -While JSON and TSV are the recommended formats for submitting metadata, the GDC API can also extract metadata elements from BCR XML files. Users wishing to submit metadata as BCR XML must contact GDC User Services and ensure that appropriate element mapping is in place before initiating XML submission. +While JSON and TSV are the recommended formats for submitting metadata, the GDC API can also extract metadata elements from BCR XML files. Users wishing to submit metadata as BCR XML must contact GDC User Services and ensure that appropriate element mapping is in place before initiating XML submission. Current mapping can be found in [GitHub](https://github.com/NCI-GDC/gdcdatamodel/tree/develop/gdcdatamodel/xml_mappings). To submit BCR XML, make `PUT` requests with the `Content-Type: application/xml` header to the following URLs, replacing Program.name and Project.code as desribed in [Submission Endpoint](#submission_endpoint) (above): @@ -63,7 +63,7 @@ The following is a sample shell command for submitting an XML file: curl --request PUT --header "X-Auth-Token: $token" --header 'Content-Type: application/xml' --data-binary @biospecimen.xml 'https://api.gdc.cancer.gov/v0/submission/GDC/INTERNAL/xml/biospecimen/bcr/_dry_run' -**NOTE:** A typical BCR XML file contains more information than what is extracted and indexed by the GDC. XML files submitted to the above endpoints are not retained or distributed to GDC data users, so the same files should also be submitted as data files (i.e. as clinical or biospecimen supplements). +>**NOTE:** A typical BCR XML file contains more information than what is extracted and indexed by the GDC. XML files submitted to the above endpoints are not retained or distributed to GDC data users, so the same files should also be submitted as data files (i.e. as clinical or biospecimen supplements). ### Data File Formats @@ -82,7 +82,7 @@ Submitters can assign UUIDs to all submittable entities other than those that co In addition to `id`, many entities also include a `submitter_id` field. This field can contain any string (e.g. a "barcode") that the submitter wishes to use to identify the entity. Typically this string identifies a corresponding entry in submitter's records. The GDC's only requirement with respect to `submitter_id` is that it be a string that is unique for all entities within a project. The GDC Submission API requires a `submitter_id` for most entities. -**Note:** For `case` entities, `submitter_id` must correspond to a `submitted_subject_id` of a study participant registered with the project in dbGaP. +>**Note:** For `case` entities, `submitter_id` must correspond to a `submitted_subject_id` of a study participant registered with the project in dbGaP. ### GDC Data Dictionary Endpoints @@ -321,7 +321,7 @@ The following transaction fields can be queried using [GraphQL](#querying-submit |`state`|String|Indicates the state of the transaction: `PENDING`, `SUCCEEDED`, `FAILED` (due to user error), or `ERRORED` (due to system error)| |`committed_by`|ID|The ID of the transaction that committed this transaction| -**Note:** To check whether a dry run transaction was committed successfully, check the `state` of the transaction that executed the commit. The `state` of the dry run transaction itself does not represent the status of a subsequent commit. +>**Note:** To check whether a dry run transaction was committed successfully, check the `state` of the transaction that executed the commit. The `state` of the dry run transaction itself does not represent the status of a subsequent commit. ## Creating and Updating Entities @@ -333,7 +333,7 @@ The GDC Submission API supports HTTP POST and HTTP PUT methods for creating enti The GDC suggests using POST for creating new entities, and using PUT only for updating entities. This helps to avoid inadvertent entity updates that can occur when using PUT for creating entities. -**Note:** Once a relationship has been created between two entities, it cannot be removed by updating an entity. To remove a relationship, the child entity must be [deleted](#deleting-entities). +>**Note:** Once a relationship has been created between two entities, it cannot be removed by updating an entity. To remove a relationship, the child entity must be [deleted](#deleting-entities). ### Example: Creating and Updating Case Entities (JSON) @@ -342,7 +342,7 @@ In this example, a case entity is created using POST. Then an attempt is made to The JSON in the request was generated using the `case` JSON template that can be obtained from the [GDC Data Dictionary Viewer](../../Data_Dictionary/index.md) and from `https://api.gdc.cancer.gov/v0/submission/template/case?format=json`. -**Note:** For `case` entities, `submitter_id` must correspond to a `submitted_subject_id` of a study participant registered with the project in dbGaP. +>**Note:** For `case` entities, `submitter_id` must correspond to a `submitted_subject_id` of a study participant registered with the project in dbGaP. ```Request1 @@ -2505,7 +2505,7 @@ curl --header "X-Auth-Token: $token" --header 'Content-Type: json' --request PUT ### Downloading Files -Files in file state = validated can be downloaded by the submitter using the API or the Data Transfer Tool. This is done in a similar manner as files available in the Data Portal, but will require submission access to the particular project in dbGaP as opposed to downloader access. File UUIDs can be found in the original upload manifest file, the submission portal, or by API calls. See [Downloading Files](Downloading_Files.md) for details. +Files in `file_state = validated` can be downloaded by the submitter using the API or the Data Transfer Tool. This is done in a similar manner as files available in the Data Portal, but will require submission access to the particular project in dbGaP as opposed to downloader access. File UUIDs can be found in the original upload manifest file, the submission portal, or by API calls. See [Downloading Files](Downloading_Files.md) for details. ### Deleting Files @@ -2519,7 +2519,7 @@ Uploaded files can be deleted by deleting the entity that corresponds to the fil Unlike the methods outlined in [Search and Retrieval](Search_and_Retrieval.md), which provide access to public releases (or snapshots) of GDC data, the `/graphql` endpoint of GDC Submission API makes it possible for submitters to access "live" data, which provides a real-time view of the state of entities in a project. -**NOTE:** Access to GDC Submission API GraphQL service is limited to authorized and authenticated submitters. Submitters may only access data in their own project using GraphQL. +>**NOTE:** Access to GDC Submission API GraphQL service is limited to authorized and authenticated submitters. Submitters may only access data in their own project using GraphQL. ### GraphQL IDE @@ -2536,7 +2536,7 @@ GDC data submitters can access the GDC Submission API GraphQL endpoint at: where __[API_version/]__ is the optional API version component (see [Getting Started](Getting_Started.md)). -**NOTE:** An authentication token is required for all requests to the `graphql` endpoint. Queries are restricted to those projects for which the submitter has obtained authorization. +>**NOTE:** An authentication token is required for all requests to the `graphql` endpoint. Queries are restricted to those projects for which the submitter has obtained authorization. ### Constructing a Query diff --git a/docs/API/Users_Guide/images/graphql-query.png b/docs/API/Users_Guide/images/graphql-query.png new file mode 100644 index 000000000..e09f3f9a5 Binary files /dev/null and b/docs/API/Users_Guide/images/graphql-query.png differ diff --git a/docs/Data/Bioinformatics_Pipelines/CNV_Pipeline.md b/docs/Data/Bioinformatics_Pipelines/CNV_Pipeline.md index bf0f9218a..b2fb7eb8c 100644 --- a/docs/Data/Bioinformatics_Pipelines/CNV_Pipeline.md +++ b/docs/Data/Bioinformatics_Pipelines/CNV_Pipeline.md @@ -2,29 +2,79 @@ ## Introduction -The copy number variation (CNV) pipeline uses Affymetrix SNP 6.0 array data to identify genomic regions that are repeated and infer the copy number of these repeats. This pipeline is built onto the existing TCGA level 2 data generated by [Birdsuite](https://www.broadinstitute.org/scientific-community/science/programs/medical-and-population-genetics/birdsuite/birdsuite) and uses the [DNAcopy](http://www.bioconductor.org/packages/release/bioc/html/DNAcopy.html) R-package to perform a circular binary segmentation (CBS) analysis [[1]](http://biostatistics.oxfordjournals.org/content/5/4/557.short). CBS translates noisy intensity measurements into chromosomal regions of equal copy number. The final output files are segmented into genomic regions with the estimated copy number for each region. The GDC further transforms these copy number values into segment mean values, which are equal to log2(copy-number/ 2). Diploid regions will have a segment mean of zero, amplified regions will have positive values, and deletions will have negative values. The GRCh38 probe-set was produced by mapping probe sequences to the GRCh38 reference genome and can be downloaded at the [GDC Reference File Website](https://gdc.cancer.gov/about-data/data-harmonization-and-generation/gdc-reference-files). +The copy number variation (CNV) pipeline uses Affymetrix SNP 6.0 array data to identify genomic regions that are repeated and infer the copy number of these repeats. This pipeline is built onto the existing TCGA level 2 data generated by [Birdsuite](https://www.broadinstitute.org/scientific-community/science/programs/medical-and-population-genetics/birdsuite/birdsuite) and uses the [DNAcopy](http://www.bioconductor.org/packages/release/bioc/html/DNAcopy.html) R-package to perform a circular binary segmentation (CBS) analysis [[1]](http://biostatistics.oxfordjournals.org/content/5/4/557.short). CBS translates noisy intensity measurements into chromosomal regions of equal copy number. The final output files are segmented into genomic regions with the estimated copy number for each region. The GDC further transforms these copy number values into segment mean values, which are equal to log2(copy-number/ 2). Diploid regions will have a segment mean of zero, amplified regions will have positive values, and deletions will have negative values. ## Data Processing Steps -A metadata preprocessing step is used to convert the GRCh37 (hg19) probe set coordinates to the newer GRCh38 (hg38) genome build coordinates. A minimum quality control step to verify that reference bases are consistent across two genome builds is used to filter out low quality liftover probe sets. +The GRCh38 probe-set was produced by mapping probe sequences to the GRCh38 reference genome and can be downloaded at the [GDC Reference File Website](https://gdc.cancer.gov/about-data/data-harmonization-and-generation/gdc-reference-files). + +### Copy Number Segmentation The [Copy Number Liftover Workflow](/Data_Dictionary/viewer/#?view=table-definition-view&id=copy_number_liftover_workflow) uses the TCGA level 2 tangent.copynumber files described above. These files were generated by first normalizing array intensity values, estimating raw copy number, and performing tangent normalization, which subtracts variation that is found in a set of normal samples. Original array intensity values (TCGA level 1) are available in the [GDC Legacy Archive](https://portal.gdc.cancer.gov/legacy-archive/) under the "Data Format: CEL" and "Platform: Affymetrix SNP 6.0" filters. The Copy Number Liftover Workflow performs CBS analysis using the DNACopy R-package to process tangent normalized data into [Copy Number Segment](/Data_Dictionary/viewer/#?view=table-definition-view&id=copy_number_segment) files, which associate contiguous chromosome regions with log2 ratio segment means in a tab-delimited format. The number of probes with intensity values associated with each chromosome region is also reported (probes with no intensity values are not included in this count). During copy number segmentation probe sets from Pseudo-Autosomal Regions (PARs) were removed from males and Y chromosome segments were removed from females. -Masked copy number segments are generated with the same method except that a filtering step is performed that removes Y chromosome and probe sets that were previously indicated to have frequent germline copy-number variation. +Masked copy number segments are generated using the same method except that a filtering step is performed that removes the Y chromosome and probe sets that were previously indicated to be associated with frequent germline copy-number variation. | I/O | Entity | Format | |---|---|---| | Input | [Submitted Tangent Copy Number](/Data_Dictionary/viewer/#?view=table-definition-view&id=submitted_tangent_copy_number) | TXT | | Output | [Copy Number Segment](/Data_Dictionary/viewer/#?view=table-definition-view&id=copy_number_segment) or Masked Copy Number Segment | TXT | + +### Copy Number Estimation + +Numeric focal-level Copy Number Variation (CNV) values were generated with "Masked Copy Number Segment" files from tumor aliquots using GISTIC2 [[2]](https://genomebiology.biomedcentral.com/articles/10.1186/gb-2011-12-4-r41), [[3]](https://www.nature.com/articles/nature08822) on a project level. Only protein-coding genes were kept, and their numeric CNV values were further thresholded by a noise cutoff of 0.3: + +* Genes with focal CNV values smaller than -0.3 are categorized as a "loss" (-1) +* Genes with focal CNV values larger than 0.3 are categorized as a "gain" (+1) +* Genes with focal CNV values between and including -0.3 and 0.3 are categorized as "neutral" (0). + +Values are reported in a project-level TSV file. Each row represents a gene, which is reported as an Ensembl ID and associated cytoband. The columns represent aliquots, which are associated with CNV value categorizations (0/1/-1) for each gene. + +| I/O | Entity | Format | +|---|---|---| +| Input | [Masked Copy Number Segment](/Data_Dictionary/viewer/#?view=table-definition-view&id=copy_number_segment) | TXT | +| Output | [Copy Number Estimate](/Data_Dictionary/viewer/#?view=table-definition-view&id=copy_number_estimate) | TXT | + + +### GISTIC2 Command Line Parameters + +```Shell +gistic2 \ +-b \ +-seg \ +-mk \ +-refgene \ +-ta 0.1 \ +-armpeel 1 \ +-brlen 0.7 \ +-cap 1.5 \ +-conf 0.99 \ +-td 0.1 \ +-genegistic 1 \ +-gcm extreme \ +-js 4 \ +-maxseg 2000 \ +-qvt 0.25 \ +-rx 0 \ +-savegene 1 \ +(-broad 1) +``` + + ## File Access and Availability | Type | Description | Format | |---|---|---| | Copy Number Segment| A table that associates contiguous chromosomal segments with genomic coordinates, mean array intensity, and the number of probes that bind to each segment. | TXT | | Masked Copy Number Segment | A table with the same information as the Copy Number Segment except that segments with probes known to contain germline mutations are removed. | TXT | +| Copy Number Estimate | A project-level file that displays gains/losses on a gene level. Generated from the Masked Copy Number Segment files | TXT | + [1] Olshen, Adam B., E. S. Venkatraman, Robert Lucito, and Michael Wigler. "Circular binary segmentation for the analysis of array-based DNA copy number data." Biostatistics 5, no. 4 (2004): 557-572. + +[2] Mermel, Craig H., Steven E. Schumacher, Barbara Hill, Matthew L. Meyerson, Rameen Beroukhim, and Gad Getz. "GISTIC2. 0 facilitates sensitive and confident localization of the targets of focal somatic copy-number alteration in human cancers." Genome biology 12, no. 4 (2011): R41. + +[3] Beroukhim, Rameen, Craig H. Mermel, Dale Porter, Guo Wei, Soumya Raychaudhuri, Jerry Donovan, Jordi Barretina et al. "The landscape of somatic copy-number alteration across human cancers." Nature 463, no. 7283 (2010): 899. diff --git a/docs/Data/Bioinformatics_Pipelines/DNA_Seq_Variant_Calling_Pipeline.md b/docs/Data/Bioinformatics_Pipelines/DNA_Seq_Variant_Calling_Pipeline.md index 0c7e95651..cc292bade 100644 --- a/docs/Data/Bioinformatics_Pipelines/DNA_Seq_Variant_Calling_Pipeline.md +++ b/docs/Data/Bioinformatics_Pipelines/DNA_Seq_Variant_Calling_Pipeline.md @@ -46,6 +46,8 @@ All alignments are performed using the human reference genome GRCh38.d1.vd1. Dec ### DNA-Seq Alignment Command Line Parameters +__Note that version numbers may vary in files downloaded from the GDC Portal due to ongoing pipeline development and improvement.__ + #### Step 1: Converting BAMs to FASTQs with Biobambam - biobambam2 2.0.54 ```Shell bamtofastq \ @@ -352,10 +354,108 @@ In addition to annotation, [False Positive Filter](https://github.com/ucscCancer | Input | [Simple Somatic Mutation](/Data_Dictionary/viewer/#?view=table-definition-view&id=simple_somatic_mutation) | VCF | | Output | [Annotated Somatic Mutation](/Data_Dictionary/viewer/#?view=table-definition-view&id=annotated_somatic_mutation) | VCF | -### Somatic Aggregation Workflow +### Tumor-Only Variant Calling Workflow + +Tumor only variant calling is performed on a tumor sample with no paired normal at the request of the research group. This method takes advantage of the normal cell contamination that is present in most tumor samples. These calls are made using the version of MuTect2 included in GATK4. Tumor-only variant call files can be found in the GDC Portal by filtering for "Workflow Type: GATK4 MuTect2". + +### Tumor-Only Variant Call Command-Line Parameters +``` +GATK4 v4.0.4.0 + +## 1. Generate OXOG metrics: + +java -d64 -XX:+UseSerialGC -Xmx3G -jar /gatk/gatk.jar \ +CollectSequencingArtifactMetrics \ +-I Tumor_Sample_Alignment.bam \ +-O \ +--FILE_EXTENSION .txt \ +-R GRCh38.d1.vd1.fa ## Only chr1-22 + XYM + +## 2. Generate pileup summaries on tumor sample: + +java -d64 -XX:+UseSerialGC -Xmx3G -jar /gatk/gatk.jar \ +GetPileupSummaries +-I Tumor_Sample_Alignment.bam \ +-O .targeted_sequencing.table \ +-V af-only-gnomad-common-biallelic.grch38.main.vcf.gz \ # Germline reference from gnomad +-L intervals.bed \ ## Only chr1-22 + XYM +-R GRCh38.d1.vd1.fa + +## 3. Calculate contamination on tumor sample + +java -d64 -XX:+UseSerialGC -Xmx3G -jar /gatk/gatk.jar \ +CalculateContamination \ +-I .targeted_sequencing.table \ # From step 2 +-O .targeted_sequencing.contamination.table + +## 4. Find tumor sample name from BAM + +java -d64 -XX:+UseSerialGC -Xmx3G -jar /gatk/gatk.jar \ +GetSampleName \ +-I Tumor_Sample_Alignment.bam \ +-O .targeted_sequencing.sample_name + +## 5. Run MuTect2 using only tumor sample on chromosome level (25 commands with different intervals) + +java -Djava.io.tmpdir=/tmp/job_tmp_3 -d64 -jar -Xmx3G -XX:+UseSerialGC \ +/bin/gatk-4.0.4.0/gatk-package-4.0.4.0-local.jar \ +Mutect2 \ +-R GRCh38.d1.vd1.fa \ +-L chr4:1-190214555 \ # Specify chromosome +-I Tumor_Sample_Alignment.bam \ +-O 3.mt2.vcf \ +-tumor \ # From step 4 +--af-of-alleles-not-in-resource 2.5e-06 \ +--germline-resource af-only-gnomad.hg38.vcf.gz \ # Germline reference from gnomad +-pon gatk4_mutect2_4136_pon.vcf.gz # New panel of normal created by 4136 TCGA curated normal samples, using GATK4 + +## After this step, all chromosome level VCFs are merged into one. + +## 6. Sort VCF with Picard + +java -d64 -XX:+UseSerialGC -Xmx16G -jar /usr/local/bin/picard.jar \ +SortVcf \ +SEQUENCE_DICTIONARY=GRCh38.d1.vd1.dict \ +OUTPUT=.targeted_sequencing.mutect2.tumor_only.sorted.vcf.gz \ +I=merged_multi_gatk4_mutect2_tumor_only_calling.vcf \ # From step 5 +CREATE_INDEX=true + +## 7. Filter variant calls from MuTect +java -d64 -XX:+UseSerialGC -Xmx3G -jar /gatk/gatk.jar \ +FilterMutectCalls \ +-O .targeted_sequencing.mutect2.tumor_only.contFiltered.vcf.gz \ +-V .targeted_sequencing.mutect2.tumor_only.sorted.vcf.gz \ # From step 6 +--contamination-table .targeted_sequencing.contamination.table \ # From step 3 +-L intervals.bed + +## 8. Filter variants by orientation bias +java -d64 -XX:+UseSerialGC -Xmx3G -jar /gatk/gatk.jar \ +FilterByOrientationBias \ +-O .targeted_sequencing.tumor_only.gatk4_mutect2.raw_somatic_mutation.vcf.gz \ # final output +-P .pre_adapter_detail_metrics.txt \ # From step 1 +-V .targeted_sequencing.mutect2.tumor_only.contFiltered.vcf.gz \ # From step 7 +-L intervals.bed \ +-R GRCh38.d1.vd1.fa \ +-AM G/T \ +-AM C/T +``` + +### Tumor-Only Variant Annotation Workflow -The Somatic Aggregation Workflow generates one MAF file from multiple VCF files; see the [GDC MAF Format](/Data/File_Formats/MAF_Format/) guide for details on file structure. In this step, one MAF file is generated per variant calling pipeline for each project, and contains all available cases within this project. +After single-tumor variant calling is performed with MuTect2, a series of filters are applied to minimize the release of germline variants in downloadable VCFs. In all cases, the GDC applies a set of custom filters based on allele frequency, mapping quality, somatic/germline probability, and copy number. In some cases an additional variant classification step is applied before the GDC filters. +The [PureCN](https://bioconductor.org/packages/devel/bioc/html/PureCN.html) R-package [[7]](https://doi.org/10.1186/s13029-016-0060-z) [[8]](https://doi.org/10.1101/552711) is used to classify the variants by somatic/germline status and clonality based on tumor purity, ploidy, contamination, copy number, and loss of heterozygosity. The following steps are performed with this package: + +* __Interval Capture__ : Generates an interval file using a FASTA and BED file coordinates. +* __GC-Normalization__ : Calculates GC-normalized tumor/normal coverage data. +* __Normal DB Creation__ : Generates a normal database using the normalized coverage file and panel-of-normals VCF +* __Somatic Variant Calling__ : Classifies each of the previously called variants + +Note that PureCN will not be performed if there is insufficient data to produce a target capture kit specific normal database. In rare occasions, PureCN may not find a numeric solution. If PureCN is not performed or does not find a solution, this is indicated in the VCF header. VCF files that were annotated with these pipelines can be found in the GDC Portal by filtering for "Workflow Type: GATK4 MuTect2 Annotation". + +### Somatic Aggregation Workflow + +The Somatic Aggregation Workflow generates one MAF file from multiple VCF files; see the [GDC MAF Format](/Data/File_Formats/MAF_Format/) guide for details on file structure. In this step, one MAF file is generated per variant calling pipeline for each project and contains all available cases within this project. | I/O | Entity | Format | |---|---|---| @@ -399,3 +499,7 @@ Files from the GDC DNA-Seq analysis pipeline are available in the [GDC Data Port [5]. Larson, David E., Christopher C. Harris, Ken Chen, Daniel C. Koboldt, Travis E. Abbott, David J. Dooling, Timothy J. Ley, Elaine R. Mardis, Richard K. Wilson, and Li Ding. "SomaticSniper: identification of somatic point mutations in whole genome sequencing data." Bioinformatics 28, no. 3 (2012): 311-317. [6] McLaren, William, Bethan Pritchard, Daniel Rios, Yuan Chen, Paul Flicek, and Fiona Cunningham. "Deriving the consequences of genomic variants with the Ensembl API and SNP Effect Predictor." Bioinformatics 26, no. 16 (2010): 2069-2070. + +[7] Riester, Markus, Angad P. Singh, A. Rose Brannon, Kun Yu, Catarina D. Campbell, Derek Y. Chiang, and Michael P. Morrissey. "PureCN: copy number calling and SNV classification using targeted short read sequencing." Source code for biology and medicine 11, no. 1 (2016): 13. + +[8] Oh, Sehyun, Ludwig Geistlinger, Marcel Ramos, Martin Morgan, Levi Waldron, and Markus Riester. "Reliable analysis of clinical tumor-only whole exome sequencing data" bioRxiv 552711 (2019); diff --git a/docs/Data/Bioinformatics_Pipelines/Expression_mRNA_Pipeline.md b/docs/Data/Bioinformatics_Pipelines/Expression_mRNA_Pipeline.md index 0519ef59d..4fe135a3f 100644 --- a/docs/Data/Bioinformatics_Pipelines/Expression_mRNA_Pipeline.md +++ b/docs/Data/Bioinformatics_Pipelines/Expression_mRNA_Pipeline.md @@ -6,9 +6,11 @@ The GDC mRNA quantification analysis pipeline measures gene level expression in ## Data Processing Steps ### RNA-Seq Alignment Workflow -The mRNA Analysis pipeline begins with the [Alignment Workflow](/Data_Dictionary/viewer/#?view=table-definition-view&id=alignment_workflow), which is performed using a two-pass method with [STAR](http://labshare.cshl.edu/shares/gingeraslab/www-data/dobin/STAR/STAR.posix/doc/STARmanual.pdf). STAR aligns each [read group](/Data_Dictionary/viewer/#?view=table-definition-view&id=read_group) separately and then merges the resulting alignments into one. Following the methods used by the International Cancer Genome Consortium [ICGC](https://icgc.org/) ([github](https://github.com/akahles/icgc_rnaseq_align)), the two-pass method includes a splice junction detection step, which is used to generate the final alignment. This workflow outputs a BAM file, which contains both aligned and unaligned reads. Quality assessment is performed pre-alignment with [FASTQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) and post-alignment with [RNA-SeQC](https://www.broadinstitute.org/cancer/cga/rna-seqc) and [Picard Tools](http://broadinstitute.github.io/picard/). +The mRNA Analysis pipeline begins with the [Alignment Workflow](/Data_Dictionary/viewer/#?view=table-definition-view&id=alignment_workflow), which is performed using a two-pass method with [STAR](http://labshare.cshl.edu/shares/gingeraslab/www-data/dobin/STAR/STAR.posix/doc/STARmanual.pdf). STAR aligns each [read group](/Data_Dictionary/viewer/#?view=table-definition-view&id=read_group) separately and then merges the resulting alignments into one. Following the methods used by the International Cancer Genome Consortium [ICGC](https://icgc.org/) ([github](https://github.com/akahles/icgc_rnaseq_align)), the two-pass method includes a splice junction detection step, which is used to generate the final alignment. This workflow outputs a genomic BAM file, which contains both aligned and unaligned reads. Quality assessment is performed pre-alignment with [FASTQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) and post-alignment with [Picard Tools](http://broadinstitute.github.io/picard/). -[![RNA Alignment Pipeline](images/rna-alignment-pipeline-resized.png)](images/gene-expression-quantification-pipeline.png "Click to see the full image.") +Files that were processed after Data Release 14 have associated transcriptomic and chimeric alignments in addition to the genomic alignment detailed above. This only applies to aliquots with at least one set of paired-end reads. The chimeric BAM file contains reads that were mapped to different chromosomes or strands (fusion alignments). The genomic alignment files contain chimeric and unaligned reads to facilitate the retrieval of all original reads. The transcriptomic alignment reports aligned reads with transcript coordinates rather than genomic coordinates. The transcriptomic alignment is also sorted differently to facilitate downstream analyses. BAM index file pairing is not supported by this method of sorting, which does not allow for BAM slicing on these alignments. The splice-junction file for these alignments are also available. + +[![RNA Alignment Pipeline](images/gene-expression-quantification-pipeline-v2.png)](images/gene-expression-quantification-pipeline-v2.png "Click to see the full image.") | I/O | Entity | Format | |---|---|---| @@ -17,13 +19,13 @@ The mRNA Analysis pipeline begins with the [Alignment Workflow](/Data_Dictionary ### RNA-Seq Alignment Command Line Parameters -####STAR-2.4.2a +__Note that version numbers may vary in files downloaded from the GDC Portal due to ongoing pipeline development and improvement.__ -####ICGC STAR alignment pipeline +```Original +# STAR-2.4.2a -__For users with access to the ICGC pipeline:__ +### For users with access to the ICGC pipeline: -```Shell python star_align.py \ --genomeDir \ --FastqFileIn \ @@ -46,12 +48,11 @@ python star_align.py \ --sjdbOverhang 100 \ --outSAMstrandField intronMotif \ --outSAMunmapped Within -``` -__For users without access to the ICGC pipeline:__ +### For users without access to the ICGC pipeline: + +### Step 1: Building the STAR index.* -#### Step 1: Building the STAR index.* -```Shell STAR --runMode genomeGenerate --genomeDir @@ -59,11 +60,9 @@ STAR --sjdbOverhang 100 --sjdbGTFfile --runThreadN 8 -``` -\*These indices are available for download at the [GDC Website](https://gdc.cancer.gov/about-data/data-harmonization-and-generation/gdc-reference-files) and do not need to be built again. -#### Step 2: Alignment 1st Pass. -```Shell +### Step 2: Alignment 1st Pass. + STAR --genomeDir --readFilesIn ,,... ,,... @@ -83,9 +82,9 @@ STAR --outSAMstrandField intronMotif --outSAMtype None --outSAMmode None -``` -#### Step 3: Intermediate Index Generation. -```Shell + +### Step 3: Intermediate Index Generation. + STAR --runMode genomeGenerate --genomeDir @@ -93,9 +92,9 @@ STAR --sjdbOverhang 100 --runThreadN --sjdbFileChrStartEnd -``` -#### Step 4: Alignment 2nd Pass. -```Shell + +### Step 4: Alignment 2nd Pass. + STAR --genomeDir --readFilesIn ,,... ,,... @@ -120,37 +119,86 @@ STAR --outSAMheaderHD @HD VN:1.4 --outSAMattrRGline ``` +```DR15Plus +# STAR-2.6.0c + +STAR \ +--readFilesIn \ +--outSAMattrRGline \ +--alignIntronMax 1000000 \ +--alignIntronMin 20 \ +--alignMatesGapMax 1000000 \ +--alignSJDBoverhangMin 1 \ +--alignSJoverhangMin 8 \ +--alignSoftClipAtReferenceEnds Yes \ +--chimJunctionOverhangMin 15 \ +--chimMainSegmentMultNmax 1 \ +--chimOutType Junctions SeparateSAMold WithinBAM SoftClip \ +--chimSegmentMin 15 \ +--genomeDir \ +--genomeLoad NoSharedMemory \ +--limitSjdbInsertNsj 1200000 \ +--outFileNamePrefix \ +--outFilterIntronMotifs None \ +--outFilterMatchNminOverLread 0.33 \ +--outFilterMismatchNmax 999 \ +--outFilterMismatchNoverLmax 0.1 \ +--outFilterMultimapNmax 20 \ +--outFilterScoreMinOverLread 0.33 \ +--outFilterType BySJout \ +--outSAMattributes NH HI AS nM NM ch \ +--outSAMstrandField intronMotif \ +--outSAMtype BAM Unsorted \ +--outSAMunmapped Within \ +--quantMode TranscriptomeSAM GeneCounts \ +--readFilesCommand \ +--runThreadN \ +--twopassMode Basic +``` + +\*These indices are available for download at the [GDC Website](https://gdc.cancer.gov/about-data/data-harmonization-and-generation/gdc-reference-files) and do not need to be built again. + ### mRNA Expression Workflow -Following alignment, BAM files are processed through the [RNA Expression Workflow](/Data_Dictionary/viewer/#?view=table-definition-view&id=rna_expression_workflow). +Following alignment, BAM files are processed through the [RNA Expression Workflow](/Data_Dictionary/viewer/#?view=table-definition-view&id=rna_expression_workflow) to determine RNA expression levels. -First the BAM files are filtered for aligned reads using the [samtools](http://samtools.sourceforge.net) view function. The reads mapped to each gene are enumerated using HT-Seq count. Expression values are provided in a tab-delimited format. [GENCODE v22](http://www.gencodegenes.org/releases/22.html) was used for gene annotation. +The reads mapped to each gene are enumerated using HT-Seq-Count. Expression values are provided in a tab-delimited format. [GENCODE v22](http://www.gencodegenes.org/releases/22.html) was used for gene annotation. -[![Gene Expression Pipeline](images/gene-expression-quantification-pipeline.png)](images/gene-expression-quantification-pipeline.png "Click to see the full image.") +Files that were processed after Data Release 14 have an additional set of read counts that were produced by STAR during the alignment step. | I/O | Entity | Format | |---|---|---| | Input | [Aligned Reads](/Data_Dictionary/viewer/#?view=table-definition-view&id=aligned_reads) | BAM | -| Output | [Gene Expression (HTSeq count/ FPKM/ FPKM-UQ)](/Data_Dictionary/viewer/#?view=table-definition-view&id=gene_expression) | TXT | +| Output | [Gene Expression](/Data_Dictionary/viewer/#?view=table-definition-view&id=gene_expression) | TXT | ### mRNA Quantification Command Line Parameters -Samtools v1.1; HTSeq-0.6.1p1 +HTSeq-0.6.1p1 -```Shell -samtools view -F 4 | +```Original htseq-count \ -m intersection-nonempty \ -i gene_id \ -r pos \ -s no \ - gencode.v22.annotation.gtf - +``` +```DR15Plus +htseq-count \ +-f bam \ +-r name \ +-s no \ +-a 10 \ +-t exon \ +-i gene_id \ +-m intersection-nonempty \ + \ + > ``` -## mRNA Expression Normalization +## mRNA Expression HT-Seq Normalization -RNA-Seq expression level read counts are normalized using two related methods: FPKM and FPKM-UQ. Normalized values should be used only within the context of the entire gene set. Users are encouraged to normalize raw read count values if a subset of genes is investigated. +RNA-Seq expression level read counts produced by HT-Seq are normalized using two similar methods: FPKM and FPKM-UQ. Normalized values should be used only within the context of the entire gene set. Users are encouraged to normalize raw read count values if a subset of genes is investigated. ### FPKM @@ -162,7 +210,7 @@ The upper quartile FPKM (FPKM-UQ) is a modified FPKM calculation in which the to ### Calculations -[![FPKM Calculations](images/Calc_FPKM_andUQ.png)](images/Calc_FPKM_andUQ.png "Click to see the full image.") +[![FPKM Calculations](images/Calc_FPKM_andUQ.png)](images/fpkm.gif "Click to see the full image.") - __RCg:__ Number of reads mapped to the gene - __RCpc:__ Number of reads mapped to all protein-coding genes @@ -191,6 +239,7 @@ To facilitate the use of harmonized data in user-created pipelines, RNA-Seq gene | Type | Description | Format | |---|---|---| | RNA-Seq Alignment | RNA-Seq reads that have been aligned to the GRCh38 build. Reads that were not aligned are included to facilitate the availability of raw read sets | BAM | -| Raw Read Counts | The number of reads aligned to each gene, calculated by HT-Seq | TXT | +| HT-Seq Read Counts | The number of reads aligned to each gene, calculated by HT-Seq | TXT | +| STAR Read Counts | The number of reads aligned to each gene, calculated by STAR | TSV | | FPKM | A normalized expression value that takes into account each gene length and the number of reads mapped to all protein-coding genes | TXT | | FPKM-UQ | A modified version of the FPKM formula in which the 75th percentile read count is used as the denominator in place of the total number of protein-coding reads | TXT | diff --git a/docs/Data/Bioinformatics_Pipelines/fpkm.gif b/docs/Data/Bioinformatics_Pipelines/fpkm.gif new file mode 100644 index 000000000..664d69051 Binary files /dev/null and b/docs/Data/Bioinformatics_Pipelines/fpkm.gif differ diff --git a/docs/Data/Bioinformatics_Pipelines/images/fpkm.gif b/docs/Data/Bioinformatics_Pipelines/images/fpkm.gif new file mode 100644 index 000000000..664d69051 Binary files /dev/null and b/docs/Data/Bioinformatics_Pipelines/images/fpkm.gif differ diff --git a/docs/Data/Bioinformatics_Pipelines/images/gene-expression-quantification-pipeline-v2.png b/docs/Data/Bioinformatics_Pipelines/images/gene-expression-quantification-pipeline-v2.png new file mode 100644 index 000000000..f628bf30b Binary files /dev/null and b/docs/Data/Bioinformatics_Pipelines/images/gene-expression-quantification-pipeline-v2.png differ diff --git a/docs/Data/Data_Security/Data_Security.md b/docs/Data/Data_Security/Data_Security.md index 62cc8b9d1..1ffa095ed 100644 --- a/docs/Data/Data_Security/Data_Security.md +++ b/docs/Data/Data_Security/Data_Security.md @@ -34,7 +34,7 @@ The GDC Data Transfer Tool and the GDC API use tokens for authentication. GDC au #### Obtaining A Token -Users can obtain authentication tokens from the [GDC Data Portal](https://portal.gdc.cancer.gov) and the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/submission). See the [GDC Data Portal User's Guide](../../Data_Portal/Users_Guide/Authentication.md#gdc-authentication-tokens) and the [GDC Data Submission Portal User's Guide](../../Data_Submission_Portal/Users_Guide/Authentication.md#gdc-authentication-tokens) for instructions. +Users can obtain authentication tokens from the [GDC Data Portal](https://portal.gdc.cancer.gov) and the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/submission). See the [GDC Data Portal User's Guide](../../Data_Portal/Users_Guide/Repository.md#gdc-authentication-tokens) and the [GDC Data Submission Portal User's Guide](../../Data_Submission_Portal/Users_Guide/Data_Submission_Process.md#authentication) for instructions. #### Token Expiration diff --git a/docs/Data/File_Formats/MAF_Format.md b/docs/Data/File_Formats/MAF_Format.md index 966d7c2de..f81e47745 100644 --- a/docs/Data/File_Formats/MAF_Format.md +++ b/docs/Data/File_Formats/MAF_Format.md @@ -1,16 +1,26 @@ -# GDC MAF Format v.1.0.0 +# GDC MAF Format ## Introduction -Mutation Annotation Format (MAF) is a tab-delimited text file with aggregated mutation information from [VCF Files](VCF_Format.md) and are generated on a project-level. MAF files are produced through the [Somatic Aggregation Workflow](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=somatic_aggregation_workflow&_top=1) The GDC produces MAF files at two permission levels: __protected__ and __somatic__ (or open-access). One MAF files is produced per variant calling pipeline per GDC project. MAFs are produced by aggregating the GDC annotated VCF files generated from one pipeline for one project. +Mutation Annotation Format (MAF) is a tab-delimited text file with aggregated mutation information from annotated somatic mutation (example: [VCF Files](VCF_Format.md)) and are generated on a project or aliquot level. The GDC produces MAF files at two permission levels: controlled and open access. Annotated somatic mutations often have variants reported on multiple transcripts, whereas the MAF files generated from the aggregated somatic mutations only report the most critically affected variants. [Masked Somatic Mutation](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=masked_somatic_mutation) files are further processed to remove lower quality and potential germline variants. Masked somatic mutation MAFs are publicly available and can be freely distributed within the boundaries of the [GDC Data Access Policies](https://gdc.cancer.gov/access-data/data-access-policies). -Annotated VCF files often have variants reported on multiple transcripts whereas the MAF files generated from the VCFs (\*protected.maf) only report the most critically affected one. Somatic MAFs (\*somatic.maf), which are also known as [Masked Somatic Mutation](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=masked_somatic_mutation) files, are further processed to remove lower quality and potential germline variants. For tumor samples that contain variants from multiple combinations of tumor-normal aliquot pairs, only one pair is selected in the Somatic MAF based on their sample type. Somatic MAFs are publicly available and can be freely distributed within the boundaries of the [GDC Data Access Policies](https://gdc.cancer.gov/access-data/data-access-policies). +### MAF File Types -The GDC MAF file format is based on the [TCGA Mutation Annotation Format](https://wiki.nci.nih.gov/display/TCGA/Mutation+Annotation+Format+(MAF)+Specification) specifications, with additional columns included. +|MAF File Data Type|Access|Project-level Description (Data Release ≤17.0)|Aliquot-level Description (Data Release >17.0)| +|---|---|---|---| +|Annotated_somatic_mutation|Controlled |Annotated VCF/MAF produced from one caller at the aliquot level.| +|Aggregated_somatic_mutation|Controlled |Aggregation of VCFs into one MAF file (*.aliquot_ensemble_raw.maf.gz)|Aggregation of aliquot-level MAFs| +|Masked_somatic_mutation|Open\* |Filtered version of aggregated_somatic_mutation MAF (*.aliquot_ensemble_masked.maf.gz)|Filtered aggregation of aliquot-level MAFs| -__Note:__ The criteria for allowing mutations into open-access are purposefully implemented to overcompensate and filter out germline variants. If omission of true-positive somatic mutations is a concern, the GDC recommends using protected MAFs. +\* Users can request that their masked_somatic_mutation MAF files be `Controlled` access as well. -## Somatic MAF File Generation +### Project-Level MAF Files v.1.0.0 (Data Release ≤17.0) + +Project-level MAF files are produced by aggregating the GDC annotated somatic mutation VCF files generated from each pipeline for one project. The MAF files are produced through the [Somatic Aggregation Workflow](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=somatic_aggregation_workflow&_top=1). For tumor samples that contain variants from multiple combinations of tumor-normal aliquot pairs, only one pair is selected in the Somatic MAF based on their sample type. + +> __Note:__ The criteria for allowing mutations into open-access are purposefully implemented to overcompensate and filter out germline variants. If omission of true-positive somatic mutations is a concern, the GDC recommends using protected MAFs. + +#### Somatic MAF File Generation The process for modifying a protected MAF into a somatic MAF is as follows: @@ -45,178 +55,33 @@ The process for modifying a protected MAF into a somatic MAF is as follows: --- -## Protected MAF File Structure - -The table below describes the columns in a protected MAF and their definitions. Note that the somatic (open-access) MAF structure is the same except for having the last six columns removed. - -| Column | Description | -|---|---| -| 1 - Hugo_Symbol | [HUGO](http://www.genenames.org/) symbol for the gene (HUGO symbols are always in all caps). "Unknown" is used for regions that do not correspond to a gene | -| 2 - Entrez_Gene_Id | [Entrez gene](https://www.ncbi.nlm.nih.gov/gene) ID (an integer). "0" is used for regions that do not correspond to a gene region or Ensembl ID | -| 3 - Center| One or more genome sequencing center reporting the variant | -| 4 - NCBI_Build| The reference genome used for the alignment (GRCh38) | -| 5 - Chromosome | The affected chromosome (chr1) | -| 6 - Start_Position | Lowest numeric position of the reported variant on the genomic reference sequence. Mutation start coordinate | -| 7 - End_Position | Highest numeric genomic position of the reported variant on the genomic reference sequence. Mutation end coordinate | -| 8 - Strand | Genomic strand of the reported allele. Currently, all variants will report the positive strand: '+' | -| 9 - Variant_Classification | Translational effect of variant allele | -| 10 - Variant_Type | Type of mutation. TNP (tri-nucleotide polymorphism) is analogous to DNP (di-nucleotide polymorphism) but for three consecutive nucleotides. ONP (oligo-nucleotide polymorphism) is analogous to TNP but for consecutive runs of four or more (SNP, DNP, TNP, ONP, INS, DEL, or Consolidated)| -| 11 - Reference_Allele | The plus strand reference allele at this position. Includes the deleted sequence for a deletion or "-" for an insertion | -| 12 - Tumor_Seq_Allele1 | Primary data genotype for tumor sequencing (discovery) allele 1. A "-" symbol for a deletion represents a variant. A "-" symbol for an insertion represents wild-type allele. Novel inserted sequence for insertion does not include flanking reference bases | -| 13 - Tumor_Seq_Allele2 | Tumor sequencing (discovery) allele 2 | -| 14 - dbSNP_RS| The rs-IDs from the [dbSNP](https://www.ncbi.nlm.nih.gov/projects/SNP/) database, "novel" if not found in any database used, or null if there is no dbSNP record, but it is found in other databases| -| 15 - dbSNP_Val_Status | The dbSNP validation status is reported as a semicolon-separated list of statuses. The union of all rs-IDs is taken when there are multiple | -| 16 - Tumor_Sample_Barcode| Aliquot barcode for the tumor sample | -| 17 - Matched_Norm_Sample_Barcode| Aliquot barcode for the matched normal sample | -| 18 - Match_Norm_Seq_Allele1 | Primary data genotype. Matched normal sequencing allele 1. A "-" symbol for a deletion represents a variant. A "-" symbol for an insertion represents wild-type allele. Novel inserted sequence for insertion does not include flanking reference bases (cleared in somatic MAF) | -| 19 - Match_Norm_Seq_Allele2| Matched normal sequencing allele 2 | -| 20 - Tumor_Validation_Allele1| Secondary data from orthogonal technology. Tumor genotyping (validation) for allele 1. A "-" symbol for a deletion represents a variant. A "-" symbol for an insertion represents wild-type allele. Novel inserted sequence for insertion does not include flanking reference bases | -| 21 - Tumor_Validation_Allele2 | Secondary data from orthogonal technology. Tumor genotyping (validation) for allele 2 | -| 22 - Match_Norm_Validation_Allele1 | Secondary data from orthogonal technology. Matched normal genotyping (validation) for allele 1. A "-" symbol for a deletion represents a variant. A "-" symbol for an insertion represents wild-type allele. Novel inserted sequence for insertion does not include flanking reference bases (cleared in somatic MAF) | -| 23 - Match_Norm_Validation_Allele2 | Secondary data from orthogonal technology. Matched normal genotyping (validation) for allele 2 (cleared in somatic MAF) | -| 24 - Verification_Status| Second pass results from independent attempt using same methods as primary data source. Generally reserved for 3730 Sanger Sequencing | -| 25 - Validation_Status | Second pass results from orthogonal technology | -| 26 - Mutation_Status | An assessment of the mutation as somatic, germline, LOH, post transcriptional modification, unknown, or none. The values allowed in this field are constrained by the value in the Validation_Status field | -| 27 - Sequencing_Phase | TCGA sequencing phase (if applicable). Phase should change under any circumstance that the targets under consideration change | -| 28 - Sequence_Source | Molecular assay type used to produce the analytes used for sequencing. Allowed values are a subset of the SRA 1.5 library_strategy field values. This subset matches those used at CGHub | -| 29 - Validation_Method | The assay platforms used for the validation call | -| 30 - Score | Not in use | -| 31 - BAM_File | Not in use | -| 32 - Sequencer | Instrument used to produce primary sequence data | -| 33 - Tumor_Sample_UUID | GDC aliquot UUID for tumor sample | -| 34 - Matched_Norm_Sample_UUID | GDC aliquot UUID for matched normal sample | -| 35 - HGVSc | The coding sequence of the variant in HGVS recommended format | -| 36 - HGVSp | The protein sequence of the variant in HGVS recommended format. "p.=" signifies no change in the protein | -| 37 - HGVSp_Short | Same as the HGVSp column, but using 1-letter amino-acid codes | -| 38 - Transcript_ID| [Ensembl](http://useast.ensembl.org/index.html) ID of the transcript affected by the variant | -| 39 - Exon_Number | The exon number (out of total number) | -| 40 - t_depth | Read depth across this locus in tumor BAM | -| 41 - t_ref_count | Read depth supporting the reference allele in tumor BAM | -| 42 - t_alt_count | Read depth supporting the variant allele in tumor BAM | -| 43 - n_depth | Read depth across this locus in normal BAM | -| 44 - n_ref_count | Read depth supporting the reference allele in normal BAM (cleared in somatic MAF) | -| 45 - n_alt_count | Read depth supporting the variant allele in normal BAM (cleared in somatic MAF) | -| 46 - all_effects | A semicolon delimited list of all possible variant effects, sorted by priority ([Symbol,Consequence,HGVSp_Short,Transcript_ID,RefSeq,HGVSc,Impact,Canonical,Sift,PolyPhen,Strand]) | -|47 - Allele| The variant allele used to calculate the consequence | -|48 - Gene|Stable Ensembl ID of affected gene | -|49 - Feature|Stable Ensembl ID of feature (transcript, regulatory, motif) | -|50 - Feature_type| Type of feature. Currently one of Transcript, RegulatoryFeature, MotifFeature (or blank) | -|51 - One_Consequence | The single consequence of the canonical transcript in [sequence ontology](http://www.sequenceontology.org/) terms | -|52 - Consequence | Consequence type of this variant; [sequence ontology](http://www.sequenceontology.org/) terms | -|53 - cDNA_position | Relative position of base pair in the cDNA sequence as a fraction. A "-" symbol is displayed as the numerator if the variant does not appear in cDNA | -|54 - CDS_position | Relative position of base pair in coding sequence. A "-" symbol is displayed as the numerator if the variant does not appear in coding sequence | -|55 - Protein_position | Relative position of affected amino acid in protein. A "-" symbol is displayed as the numerator if the variant does not appear in coding sequence | -|56 - Amino_acids | Only given if the variation affects the protein-coding sequence | -|57 - Codons | The alternative codons with the variant base in upper case | -|58 - Existing_variation | Known identifier of existing variation | -|59 - ALLELE_NUM | Allele number from input; 0 is reference, 1 is first alternate etc. | -|60 - DISTANCE | Shortest distance from the variant to transcript | -|61 - TRANSCRIPT_STRAND | The DNA strand (1 or -1) on which the transcript/feature lies | -|62 - SYMBOL | The gene symbol | -|63 - SYMBOL_SOURCE | The source of the gene symbol | -|64 - HGNC_ID | Gene identifier from the HUGO Gene Nomenclature Committee if applicable | -|65 - BIOTYPE | Biotype of transcript | -|66 - CANONICAL | A flag (YES) indicating that the VEP-based canonical transcript, the longest translation, was used for this gene. If not, the value is null | -|67 - CCDS | The [CCDS](https://www.ncbi.nlm.nih.gov/projects/CCDS/CcdsBrowse.cgi) identifier for this transcript, where applicable | -|68 - ENSP | The Ensembl protein identifier of the affected transcript | -|69 - SWISSPROT | [UniProtKB/Swiss-Prot](http://www.uniprot.org/) accession | -|70 - TREMBL | UniProtKB/TrEMBL identifier of protein product | -|71 - UNIPARC | UniParc identifier of protein product | -|72 - RefSeq | RefSeq identifier for this transcript | -|73 - SIFT | The [SIFT](http://sift.jcvi.org/) prediction and/or score, with both given as prediction (score) | -|74 - PolyPhen | The [PolyPhen](http://genetics.bwh.harvard.edu/pph2/) prediction and/or score | -|75 - EXON | The exon number (out of total number) | -|76 - INTRON | The intron number (out of total number) | -|77 - DOMAINS | The source and identifier of any overlapping protein domains | -|78 - GMAF | Non-reference allele and frequency of existing variant in [1000 Genomes](http://www.internationalgenome.org/) | -|79 - AFR_MAF | Non-reference allele and frequency of existing variant in 1000 Genomes combined African population | -|80 - AMR_MAF | Non-reference allele and frequency of existing variant in 1000 Genomes combined American population | -|81 - ASN_MAF | Non-reference allele and frequency of existing variant in 1000 Genomes combined Asian population | -|82 - EAS_MAF | Non-reference allele and frequency of existing variant in 1000 Genomes combined East Asian population | -|83 - EUR_MAF | Non-reference allele and frequency of existing variant in 1000 Genomes combined European population | -|84 - SAS_MAF | Non-reference allele and frequency of existing variant in 1000 Genomes combined South Asian population | -|85 - AA_MAF | Non-reference allele and frequency of existing variant in [NHLBI-ESP](http://evs.gs.washington.edu/EVS/) African American population | -|86 - EA_MAF | Non-reference allele and frequency of existing variant in NHLBI-ESP European American population| -|87 - CLIN_SIG | Clinical significance of variant from dbSNP | -|88 - SOMATIC |Somatic status of each ID reported under Existing_variation (0, 1, or null) | -|89 - PUBMED | Pubmed ID(s) of publications that cite existing variant | -|90 - MOTIF_NAME |The source and identifier of a transcription factor binding profile aligned at this position | -|91 - MOTIF_POS | The relative position of the variation in the aligned TFBP | -|92 - HIGH_INF_POS | A flag indicating if the variant falls in a high information position of a transcription factor binding profile (TFBP) (Y, N, or null) | -| 93 - MOTIF_SCORE_CHANGE | The difference in motif score of the reference and variant sequences for the TFBP | -| 94 - IMPACT | The impact modifier for the consequence type | -| 95 - PICK | Indicates if this block of consequence data was picked by VEP's [pick feature](http://useast.ensembl.org/info/docs/tools/vep/script/vep_options.html#opt_pick) (1 or null) | -| 96 - VARIANT_CLASS | Sequence Ontology variant class | -| 97 - TSL | [Transcript support level](http://useast.ensembl.org/Help/Glossary?id=492), which is based on independent RNA analyses | -| 98 - HGVS_OFFSET | Indicates by how many bases the HGVS notations for this variant have been shifted | -| 99 - PHENO|Indicates if existing variant is associated with a phenotype, disease or trait (0, 1, or null) | -| 100 - MINIMISED | Alleles in this variant have been converted to minimal representation before consequence calculation (1 or null) | -| 101 - ExAC_AF | Global Allele Frequency from [ExAC](http://exac.broadinstitute.org/) | -| 102 - ExAC_AF_Adj | Adjusted Global Allele Frequency from ExAC | -| 103 - ExAC_AF_AFR | African/African American Allele Frequency from ExAC | -| 104 - ExAC_AF_AMR | American Allele Frequency from ExAC | -| 105 - ExAC_AF_EAS | East Asian Allele Frequency from ExAC | -| 106 - ExAC_AF_FIN | Finnish Allele Frequency from ExAC | -| 107 - ExAC_AF_NFE | Non-Finnish European Allele Frequency from ExAC | -| 108 - ExAC_AF_OTH | Other Allele Frequency from ExAC | -| 109 - ExAC_AF_SAS | South Asian Allele Frequency from ExAC | -| 110 - GENE_PHENO | Indicates if gene that the variant maps to is associated with a phenotype, disease or trait (0, 1, or null) | -| 111 - FILTER | Copied from input VCF. This includes filters implemented directly by the variant caller and other external software used in the DNA-Seq pipeline. See below for additional details. | -| 112 - CONTEXT | The reference allele per VCF specs, and its five flanking base pairs | -| 113 - src_vcf_id | GDC UUID for the input VCF file | -| 114 - tumor_bam_uuid | GDC UUID for the tumor bam file | -| 115 - normal_bam_uuid | GDC UUID for the normal bam file | -| 116 - case_id | GDC UUID for the case | -| 117 - GDC_FILTER | GDC filters applied universally across all MAFs | -| 118 - COSMIC | Overlapping COSMIC variants | -| 119 - MC3_Overlap| Indicates whether this region overlaps with an MC3 variant for the same sample pair | -| 120 - GDC_Validation_Status | GDC implementation of validation checks. See notes section (#5) below for details | -| 121 - GDC_Valid_Somatic | True or False (not in somatic MAF) | -| 122 - vcf_region | Colon separated string containing the CHROM, POS, ID, REF, and ALT columns from the VCF file (e.g., chrZ:20:rs1234:A:T) (not in somatic MAF) | -| 123 - vcf_info | INFO column from VCF (not in somatic MAF) | -| 124 - vcf_format | FORMAT column from VCF (not in somatic MAF) | -| 125 - vcf_tumor_gt | Tumor sample genotype column from VCF (not in somatic MAF) | -| 126 - vcf_normal_gt | Normal sample genotype column from VCF (not in somatic MAF) | - -### Notes About GDC MAF Implementation - -1. Column #4 __NCBI_Build__ is GRCh38 by default -2. Column #32 __Sequencer__ includes the sequencers used. If different sequencers were used to generate normal and tumor data, the normal sequencer is listed first. -3. Column #61 VEP name "STRAND" is changed to __TRANSCRIPT_STRAND__ to avoid confusion with Column#8 "Strand" -4. Column #94 __IMPACT__ categories are defined by the VEP software and do not necessarily reflect the relative biological influence of each mutation. -4. Column #122-125 __vcf_info, vcf_format, vcf_tumor_gt, and vcf_normal_gt__ are the corresponding columns from the VCF files. Including them facilitates parsing specific variant information. -5. Column #120 __GDC_Validation_Status__: GDC also collects TCGA validation sequences. It compares these with variants derived from Next-Generation Sequencing data from the same sample and populates the comparison result in "GDC_Validation_Status". - * "Valid", if the alternative allele(s) in the tumor validation sequence is(are) the same as GDC variant call - * "Invalid", if none of the alternative allele(s) in the tumor validation sequence is the same as GDC variant call - * "Inconclusive" if two alternative allele exists, and one matches while the other does not - * "Unknown" if no validation sequence exists -6. Column #121 __GDC_Valid_Somatic__ is TRUE if GDC_Validation_Status is "Valid" and the variant is "Somatic" in validation calls. It is FALSE if these criteria are not met - -### FILTER Value Definitions (column 111) - -* __oxog :__ Signifies that this variant was determined to be an OxoG artifact. This was calculated with [D-ToxoG](http://archive.broadinstitute.org/cancer/cga/dtoxog) -* __bPcr :__ Signifies that this variant was determined to be an artifact of bias on the PCR template strand. This was calculated with the [DKFZ Bias Filter](https://github.com/eilslabs/DKFZBiasFilter). -* __bSeq :__ Signifies that this variant was determined to be an artifact of bias on the forward/reverse strand. This was also calculated with the [DKFZ Bias Filter](https://github.com/eilslabs/DKFZBiasFilter). - -## Impact Categories - -### VEP - -* __HIGH (H)__: The variant is assumed to have high (disruptive) impact in the protein, probably causing protein truncation, loss of function, or triggering nonsense mediated decay -* __MODERATE (M)__: A non-disruptive variant that might change protein effectiveness -* __LOW (L)__: Assumed to be mostly harmless or unlikely to change protein behavior -* __MODIFIER (MO)__: Usually non-coding variants or variants affecting non-coding genes, where predictions are difficult or there is no evidence of impact - -### PolyPhen - -* __probably damaging (PR)__: It is with high confidence supposed to affect protein function or structure -* __possibly damaging (PO)__: It is supposed to affect protein function or structure -* __benign (BE)__: Most likely lacking any phenotypic effect -* __unknown (UN)__: When in some rare cases, the lack of data does not allow PolyPhen to make a prediction - -### SIFT - -* __tolerated__: Not likely to have a phenotypic effect -* __tolerated_low_confidence__: More likely to have a phenotypic effect than 'tolerated' -* __deleterious__: Likely to have a phenotypic effect -* __deleterious_low_confidence__: Less likely to have a phenotypic effect than 'deleterious' +### Aliquot-Level MAF Files (Data Release >17.0) + +Aliquot-level MAF files, annotated somatic mutations, are produced for each aliquot tumor-normal pair per variant caller. These files are then run through the Aliquot Ensemble Somatic Variant Merging and Masking workflow. There are a few filters that are applied at this step. The variants must be somatic, the variant size must be ≤ 50 bp, and it must pass the filters for the caller, except for MuSE which passes on filters for Tier 1-4 and the panel of normals. From this workflow two files are produced, aggregated somatic mutation and masked somatic mutation. The aggregated somatic mutation file is the aggregation of all variants from the multiple variant callers for each aliquot with these applied filters. The masked somatic mutation file is the aggregation of all variants from the multiple variant callers for each aliquot, which are then passed through a second filtering process. + +#### Aliquot-Level Masked Somatic Mutation File Generation + +The process for modifying the aliquot-level MAF files into a masked somatic mutation aliquot-level MAF is as follows: + +* The annotated somatic mutations aliquot-level MAF files, produced from the different callers, are merged into one raw merged aliquot-level MAF file. Then selection for the variants are made based on the following low quality variant filtering and germline masking: + 1. The variant must be supported by at least two of the callers. + 2. Remaining variants with __FILTER != panel_of_normals__ are __removed__. Note that the `FILTER != panel_of_normals` value is only relevant for the variants generated from the MuTect2 pipeline. + 3. The __non-TCGA exac allele frequency__ variants (0.001; common\_in\_exac) are __kept__. + 4. If any of the variants __based on step 2 and step 3 are removed__, but are known __cancer hotspots__ (Chang et al., 2018), they will instead be __kept__. + 5. Of those variants, if any have a __read depth of 7 or less__ (ndp flag), they will be __removed__. + 6. Variants that __do not overlap with a gencode exon__ will be __removed__ (GDC_FILTER = 'NonExonic'). + 7. Variants that are __multiallelic__ will be __removed__ (GDC_FILTER ='multiallelic'). + 8. Variants that are __"off target"__ will be __removed__. + 9. Of the remaining variants, these are then combined into the masked somatic mutation aliquot-level MAF. + +--- + +![Aliquot-Level MAF](images/MAF_diagram_17May2019.png) + +--- + +## MAF File Structure + +The MAF columns are defined in the following github repository: + +[MAF Repository](https://github.com/NCI-GDC/maf-lib/tree/master/src/maflib/resources) diff --git a/docs/Data/File_Formats/images/MAF_diagram_17May2019.png b/docs/Data/File_Formats/images/MAF_diagram_17May2019.png new file mode 100644 index 000000000..7b9af32e1 Binary files /dev/null and b/docs/Data/File_Formats/images/MAF_diagram_17May2019.png differ diff --git a/docs/Data/Release_Notes/Data_Release_Notes.md b/docs/Data/Release_Notes/Data_Release_Notes.md index 4b7eee745..5363819b0 100644 --- a/docs/Data/Release_Notes/Data_Release_Notes.md +++ b/docs/Data/Release_Notes/Data_Release_Notes.md @@ -2,6 +2,9 @@ | Version | Date | |---|---| +| [v16.0](Data_Release_Notes.md#data-release-160) | March 26, 2019 | +| [v15.0](Data_Release_Notes.md#data-release-150) | February 20, 2019 | +| [v14.0](Data_Release_Notes.md#data-release-140) | December 18, 2018 | | [v13.0](Data_Release_Notes.md#data-release-130) | September 27, 2018 | | [v12.0](Data_Release_Notes.md#data-release-120) | June 13, 2018 | | [v11.0](Data_Release_Notes.md#data-release-110) | May 21, 2018 | @@ -18,6 +21,203 @@ | [v1.0](Data_Release_Notes.md#initial-data-release-10) | June 6, 2016 | +## Data Release 16.0 + +* __GDC Product__: Data +* __Release Date__: March 26, 2019 + +### New updates + +1. The CPTAC-3 project (phs001287) is released with WXS and WGS data. RNA-Seq will be released at a later date. Additional project details can be found at on the [CPTAC Data Source page](https://gdc.cancer.gov/about-gdc/contributed-genomic-data-cancer-research/clinical-proteomic-tumor-analysis-consortium-cptac). +2. TARGET-ALL-P3 (phs000218) WGS BAM files are released. +3. VAREPOP-APOLLO (phs001374) VCF files are released. + +A complete list of files for DR16.0 are listed for the GDC Data Portal and the GDC Legacy Archive are found below: + +* [gdc_manifest_20190326_data_release_16.0_active.txt.gz](gdc_manifest_20190326_data_release_16.0_active.txt.gz) +* [gdc_manifest_20190326_data_release_16.0_legacy.txt.gz](gdc_manifest_20190326_data_release_16.0_legacy.txt.gz). + +### Bugs Fixed Since Last Release + +* None + +### Known Issues and Workarounds + +* TARGET ALL-P3 RNA-Seq results from DR14 are missing ~18% of reads. Downsampling appears to be completely random and count files have a very high correlation (>99.99%) with complete data. New versions of these files will be created that include the entire set of reads. +* The read alignment end coordinates in the x.isoform.quantification.txt files produced by the miRNA pipeline are exclusive (i.e. offset by 1) for all TCGA miRNA legacy (GRCh37/hg19) and current harmonized (GRCh38/hg38) miRNA data. This error has no impact on miRNA alignment or quantification - only the coordinates reported in the quantification file. +* TARGET CGI BAMs in the Legacy Archive for the following aliquots should not be used because they were not repaired and concatenated into their original composite BAM files by CGHub. + * TARGET-20-PASJGZ-04A-02D + * TARGET-30-PAPTLY-01A-01D + * TARGET-20-PAEIKD-09A-01D + * TARGET-20-PASMYS-14A-02D + * TARGET-20-PAMYAS-14A-02D + * TARGET-10-PAPZST-09A-01D +* Some miRNA files with QC failed reads were not swapped in DR11.0. 361 aliquots remain to be swapped in a later release +* 74 Diagnostic TCGA slides are attached to a portion rather than a sample like the rest of the diagnostic slides. The reflects how these original samples were handled. +* 11 bam files for TARGET-NBL RNA-Seq are not available in the GDC Data portal +* Two tissue slide images are unavailable for download from GDC Data Portal +* The raw and annotated VarScan VCF files for aliquot `TCGA-VR-A8ET-01A-11D-A403-09` are not available. These VCFs files will be replaced in a later release. + +* There are 5051 TARGET files for which `experimental_strategy`, `data_format`, `platform`, and `data_subtype` are blank +* There are two cases with identical submitter_id `TARGET-10-PARUYU` +* TARGET-MDLS cases do not have disease_type or primary_site populated +* Some TARGET cases are missing `days_to_last_follow_up` +* Some TARGET cases are missing `age_at_diagnosis` +* Some TARGET files are not connected to all related aliquots +* Samples of TARGET sample_type `Recurrent Blood Derived Cancer - Bone Marrow` are mislabeled as `Recurrent Blood Derived Cancer - Peripheral Blood`. A workaround is to look at the sample barcode, which is -04 for `Recurrent Blood Derived Cancer - Bone Marrow`. (e.g. `TARGET-20-PAMYAS-04A-03R`) +* Mutation frequency may be underestimated when using MAF files for genes that overlap other genes. This is because MAF files only record one gene per variant. +* Most intronic mutations are removed for MAF generation. However, validated variants may rescue these in some cases. Therefore intronic mutations in MAF files are not representative of those called by mutation callers. +* The latest TARGET data is not yet available at the GDC. For the complete and latest data, please see the [TARGET Data Matrix](https://ocg.cancer.gov/programs/target/data-matrix). Data that is not present or is not the most up to date includes: + * All microarray data and metadata + * All sequencing analyzed data and metadata + * 1180 of 12063 sequencing runs of raw data +* Demographic information for some TARGET patients is incorrect. The correct information can be found in the associated clinical supplement file. Impacted patients are TARGET-50-PAJNUS. +* Some TCGA annotations are unavailable in the Legacy Archive or Data Portal. These annotations can be found [here](tcga-annotations-unavailable-20170315.json). +* Public MAF files for different variant calling pipelines but the same project may contain different numbers of samples. Samples are omitted from the public MAF files if they have no PASS variants, which can lead to this apparent discrepancy. +* BAM files produced by the GDC RNA-Seq Alignment workflow will currently fail validation using the Picard ValidateSamFiles tool. This is caused by STAR2 not recording mate mapping information for unmapped reads, which are retained in our BAM files. Importantly, all affected BAM files are known to behave normally in downstream workflows including expression quantification. +* No data from TARGET-MDLS is available. +* Slide barcodes (`submitter_id` values for Slide entities in the Legacy Archive) are not available +* SDF Files are not linked to Project or Case in the Legacy Archive +* Two biotab files are not linked to Project or Case in the Legacy Archive +* SDRF files are not linked to Project or Case in the Legacy Archive +* Portion "weight" property is incorrectly described in the Data Dictionary as the weight of the patient in kg, should be described as the weight of the portion in mg +* Tumor grade property is not populated +* Progression_or_recurrence property is not populated + + + + +## Data Release 15.0 + +* __GDC Product__: Data +* __Release Date__: February 20, 2019 + +### New updates + +1. TARGET-ALL-P3 is now available and includes RNA-Seq and WXS data. +2. New RNA-Seq workflow is now being utilized for new projects. More details can be found in the [RNA-Seq pipeline documentation](../../Data/Bioinformatics_Pipelines/Expression_mRNA_Pipeline/#rna-seq-alignment-workflow). +3. New tumor only variant calling pipeline is now being utilized for new projects. More details can be found in the [Tumor only pipeline documentation](../../Data/Bioinformatics_Pipelines/DNA_Seq_Variant_Calling_Pipeline/#tumor-only-variant-calling-workflow). + + +A complete list of files for DR15.0 are listed for the GDC Data Portal and the GDC Legacy Archive are found below: + +* [gdc_manifest_20190220_data_release_15.0_active.txt.gz](gdc_manifest_20190220_data_release_15.0_active.txt.gz) +* [gdc_manifest_20190220_data_release_15.0_legacy.txt.gz](gdc_manifest_20190220_data_release_15.0_legacy.txt.gz). + +### Bugs Fixed Since Last Release + +* None + +### Known Issues and Workarounds + +* The read alignment end coordinates in the x.isoform.quantification.txt files produced by the miRNA pipeline are exclusive (i.e. offset by 1) for all TCGA miRNA legacy (GRCh37/hg19) and current harmonized (GRCh38/hg38) miRNA data. This error has no impact on miRNA alignment or quantification - only the coordinates reported in the quantification file. +* TARGET CGI BAMs in the Legacy Archive for the following aliquots should not be used because they were not repaired and concatenated into their original composite BAM files by CGHub. + * TARGET-20-PASJGZ-04A-02D + * TARGET-30-PAPTLY-01A-01D + * TARGET-20-PAEIKD-09A-01D + * TARGET-20-PASMYS-14A-02D + * TARGET-20-PAMYAS-14A-02D + * TARGET-10-PAPZST-09A-01D +* Some miRNA files with QC failed reads were not swapped in DR11.0. 361 aliquots remain to be swapped in a later release +* 74 Diagnostic TCGA slides are attached to a portion rather than a sample like the rest of the diagnostic slides. The reflects how these original samples were handled. +* 11 bam files for TARGET-NBL RNA-Seq are not available in the GDC Data portal +* Two tissue slide images are unavailable for download from GDC Data Portal +* The raw and annotated VarScan VCF files for aliquot `TCGA-VR-A8ET-01A-11D-A403-09` are not available. These VCFs files will be replaced in a later release. + +* There are 5051 TARGET files for which `experimental_strategy`, `data_format`, `platform`, and `data_subtype` are blank +* There are two cases with identical submitter_id `TARGET-10-PARUYU` +* TARGET-MDLS cases do not have disease_type or primary_site populated +* Some TARGET cases are missing `days_to_last_follow_up` +* Some TARGET cases are missing `age_at_diagnosis` +* Some TARGET files are not connected to all related aliquots +* Samples of TARGET sample_type `Recurrent Blood Derived Cancer - Bone Marrow` are mislabeled as `Recurrent Blood Derived Cancer - Peripheral Blood`. A workaround is to look at the sample barcode, which is -04 for `Recurrent Blood Derived Cancer - Bone Marrow`. (e.g. `TARGET-20-PAMYAS-04A-03R`) +* Mutation frequency may be underestimated when using MAF files for genes that overlap other genes. This is because MAF files only record one gene per variant. +* Most intronic mutations are removed for MAF generation. However, validated variants may rescue these in some cases. Therefore intronic mutations in MAF files are not representative of those called by mutation callers. +* The latest TARGET data is not yet available at the GDC. For the complete and latest data, please see the [TARGET Data Matrix](https://ocg.cancer.gov/programs/target/data-matrix). Data that is not present or is not the most up to date includes: + * All microarray data and metadata + * All sequencing analyzed data and metadata + * 1180 of 12063 sequencing runs of raw data +* Demographic information for some TARGET patients is incorrect. The correct information can be found in the associated clinical supplement file. Impacted patients are TARGET-50-PAJNUS. +* Some TCGA annotations are unavailable in the Legacy Archive or Data Portal. These annotations can be found [here](tcga-annotations-unavailable-20170315.json). +* Public MAF files for different variant calling pipelines but the same project may contain different numbers of samples. Samples are omitted from the public MAF files if they have no PASS variants, which can lead to this apparent discrepancy. +* BAM files produced by the GDC RNA-Seq Alignment workflow will currently fail validation using the Picard ValidateSamFiles tool. This is caused by STAR2 not recording mate mapping information for unmapped reads, which are retained in our BAM files. Importantly, all affected BAM files are known to behave normally in downstream workflows including expression quantification. +* No data from TARGET-MDLS is available. +* Slide barcodes (`submitter_id` values for Slide entities in the Legacy Archive) are not available +* SDF Files are not linked to Project or Case in the Legacy Archive +* Two biotab files are not linked to Project or Case in the Legacy Archive +* SDRF files are not linked to Project or Case in the Legacy Archive +* Portion "weight" property is incorrectly described in the Data Dictionary as the weight of the patient in kg, should be described as the weight of the portion in mg +* Tumor grade property is not populated +* Progression_or_recurrence property is not populated + + +## Data Release 14.0 + +* __GDC Product__: Data +* __Release Date__: December 18, 2018 + +### New updates + +1. Copy Number Variation (CNV) data derived from GISTIC2 results are now available for download for TCGA projects +2. New miRNA data available for 181 aliquots for TARGET and TCGA +3. Released two SNP6 files (6cd4ef5e-324a-4ace-8779-7a33bd559c83, dfa89ee9-6ee5-460b-bd58-b5ca0e9cb7ac) +4. New versions of TCGA biospecimen supplements are available +5. Updated primary site for `TCGA-AG-3881` to `Unknown` +6. 8 New Harmonized WGS BAM files for TARGET-WT, TARGET-NBL, TARGET-AML added to the portal + +A complete list of files for DR14.0 are listed for the GDC Data Portal and the GDC Legacy Archive are found below: + +* [gdc_manifest_20181218_data_release_14.0_active.txt.gz](gdc_manifest_20181218_data_release_14.0_active.txt.gz) +* [gdc_manifest_20181218_data_release_14.0_legacy.txt.gz](gdc_manifest_20181218_data_release_14.0_legacy.txt.gz). + + +### Bugs Fixed Since Last Release + +* FM-AD clinial and biospecimen supplements are now correctly labeled as TSV rather than XLSX + +### Known Issues and Workarounds + +* TARGET CGI BAMs in the Legacy Archive for the following aliquots should not be used because they were not repaired and concatenated into their original composite BAM files by CGHub. + * TARGET-20-PASJGZ-04A-02D + * TARGET-30-PAPTLY-01A-01D + * TARGET-20-PAEIKD-09A-01D + * TARGET-20-PASMYS-14A-02D + * TARGET-20-PAMYAS-14A-02D + * TARGET-10-PAPZST-09A-01D +* Some miRNA files with QC failed reads were not swapped in DR11.0. 361 aliquots remain to be swapped in a later release +* 74 Diagnostic TCGA slides are attached to a portion rather than a sample like the rest of the diagnostic slides. The reflects how these original samples were handled. +* 11 bam files for TARGET-NBL RNA-Seq are not available in the GDC Data portal +* Two tissue slide images are unavailable for download from GDC Data Portal +* The raw and annotated VarScan VCF files for aliquot `TCGA-VR-A8ET-01A-11D-A403-09` are not available. These VCFs files will be replaced in a later release. + +* There are 5051 TARGET files for which `experimental_strategy`, `data_format`, `platform`, and `data_subtype` are blank +* There are two cases with identical submitter_id `TARGET-10-PARUYU` +* TARGET-MDLS cases do not have disease_type or primary_site populated +* Some TARGET cases are missing `days_to_last_follow_up` +* Some TARGET cases are missing `age_at_diagnosis` +* Some TARGET files are not connected to all related aliquots +* Samples of TARGET sample_type `Recurrent Blood Derived Cancer - Bone Marrow` are mislabeled as `Recurrent Blood Derived Cancer - Peripheral Blood`. A workaround is to look at the sample barcode, which is -04 for `Recurrent Blood Derived Cancer - Bone Marrow`. (e.g. `TARGET-20-PAMYAS-04A-03R`) +* Mutation frequency may be underestimated when using MAF files for genes that overlap other genes. This is because MAF files only record one gene per variant. +* Most intronic mutations are removed for MAF generation. However, validated variants may rescue these in some cases. Therefore intronic mutations in MAF files are not representative of those called by mutation callers. +* The latest TARGET data is not yet available at the GDC. For the complete and latest data, please see the [TARGET Data Matrix](https://ocg.cancer.gov/programs/target/data-matrix). Data that is not present or is not the most up to date includes: + * All microarray data and metadata + * All sequencing analyzed data and metadata + * 1180 of 12063 sequencing runs of raw data +* Demographic information for some TARGET patients is incorrect. The correct information can be found in the associated clinical supplement file. Impacted patients are TARGET-50-PAJNUS. +* Some TCGA annotations are unavailable in the Legacy Archive or Data Portal. These annotations can be found [here](tcga-annotations-unavailable-20170315.json). +* Public MAF files for different variant calling pipelines but the same project may contain different numbers of samples. Samples are omitted from the public MAF files if they have no PASS variants, which can lead to this apparent discrepancy. +* BAM files produced by the GDC RNA-Seq Alignment workflow will currently fail validation using the Picard ValidateSamFiles tool. This is caused by STAR2 not recording mate mapping information for unmapped reads, which are retained in our BAM files. Importantly, all affected BAM files are known to behave normally in downstream workflows including expression quantification. +* No data from TARGET-MDLS is available. +* Slide barcodes (`submitter_id` values for Slide entities in the Legacy Archive) are not available +* SDF Files are not linked to Project or Case in the Legacy Archive +* Two biotab files are not linked to Project or Case in the Legacy Archive +* SDRF files are not linked to Project or Case in the Legacy Archive +* Portion "weight" property is incorrectly described in the Data Dictionary as the weight of the patient in kg, should be described as the weight of the portion in mg +* Tumor grade property is not populated +* Progression_or_recurrence property is not populated + + + ## Data Release 13.0 * __GDC Product__: Data @@ -47,7 +247,7 @@ A complete list of files for DR13.0 are listed for the GDC Data Portal and the G * 506 Copy Number Segment and 36 Slide Image files are designated as controlled-access on the GDC Data Portal. These files are actually open-access and will be downloadable without a token using [this manifest](gdc_manifest_20181003_data_release_13.0_cnv_slides.txt). * 2 Copy Number Segment files from TCGA-TGCT do not appear on the GDC Portal. They can be downloaded using the Data Transfer Tool using the following UUIDs. * 6cd4ef5e-324a-4ace-8779-7a33bd559c83 - RAMPS_p_TCGA_Batch_430_NSP_GenomeWideSNP_6_E07_1538238.nocnv_grch38.seg.v2.txt - * dfa89ee9-6ee5-460b-bd58-b5ca0e9cb7ac - RAMPS_p_TCGA_Batch_430_NSP_GenomeWideSNP_6_E07_1538238.grch38.seg.v2.txt + * dfa89ee9-6ee5-460b-bd58-b5ca0e9cb7ac - RAMPS_p_TCGA_Batch_430_NSP_GenomeWideSNP_6_E07_1538238.grch38.seg.v2.txt * TARGET CGI BAMs in the Legacy Archive for the following aliquots should not be used because they were not repaired and concatenated into their original composite BAM files by CGHub. * TARGET-20-PASJGZ-04A-02D * TARGET-30-PAPTLY-01A-01D diff --git a/docs/Data/Release_Notes/gdc_manifest_20181218_data_release_14.0_active.txt.gz b/docs/Data/Release_Notes/gdc_manifest_20181218_data_release_14.0_active.txt.gz new file mode 100644 index 000000000..93617898d Binary files /dev/null and b/docs/Data/Release_Notes/gdc_manifest_20181218_data_release_14.0_active.txt.gz differ diff --git a/docs/Data/Release_Notes/gdc_manifest_20181218_data_release_14.0_legacy.txt.gz b/docs/Data/Release_Notes/gdc_manifest_20181218_data_release_14.0_legacy.txt.gz new file mode 100644 index 000000000..f6968958b Binary files /dev/null and b/docs/Data/Release_Notes/gdc_manifest_20181218_data_release_14.0_legacy.txt.gz differ diff --git a/docs/Data/Release_Notes/gdc_manifest_20190220_data_release_15.0_active.txt.gz b/docs/Data/Release_Notes/gdc_manifest_20190220_data_release_15.0_active.txt.gz new file mode 100644 index 000000000..80d7a0699 Binary files /dev/null and b/docs/Data/Release_Notes/gdc_manifest_20190220_data_release_15.0_active.txt.gz differ diff --git a/docs/Data/Release_Notes/gdc_manifest_20190220_data_release_15.0_legacy.txt.gz b/docs/Data/Release_Notes/gdc_manifest_20190220_data_release_15.0_legacy.txt.gz new file mode 100644 index 000000000..34d61a005 Binary files /dev/null and b/docs/Data/Release_Notes/gdc_manifest_20190220_data_release_15.0_legacy.txt.gz differ diff --git a/docs/Data/Release_Notes/gdc_manifest_20190326_data_release_16.0_active.txt.gz b/docs/Data/Release_Notes/gdc_manifest_20190326_data_release_16.0_active.txt.gz new file mode 100644 index 000000000..fd2d8e61e Binary files /dev/null and b/docs/Data/Release_Notes/gdc_manifest_20190326_data_release_16.0_active.txt.gz differ diff --git a/docs/Data/Release_Notes/gdc_manifest_20190326_data_release_16.0_legacy.txt.gz b/docs/Data/Release_Notes/gdc_manifest_20190326_data_release_16.0_legacy.txt.gz new file mode 100644 index 000000000..ba037dcf5 Binary files /dev/null and b/docs/Data/Release_Notes/gdc_manifest_20190326_data_release_16.0_legacy.txt.gz differ diff --git a/docs/Data_Dictionary/Release_Notes/Data_Dictionary_Release_Notes.md b/docs/Data_Dictionary/Release_Notes/Data_Dictionary_Release_Notes.md index b3064a348..0566cbd7a 100644 --- a/docs/Data_Dictionary/Release_Notes/Data_Dictionary_Release_Notes.md +++ b/docs/Data_Dictionary/Release_Notes/Data_Dictionary_Release_Notes.md @@ -3,14 +3,217 @@ | Version | Date | |---|---| +| [v.1.16](Data_Dictionary_Release_Notes.md#v116) | April 17, 2019 | +| [v.1.15](Data_Dictionary_Release_Notes.md#v115) | December 18, 2018 | | [v.1.14](Data_Dictionary_Release_Notes.md#v114) | September 27, 2018 | | [v1.13](Data_Dictionary_Release_Notes.md#v113) | May 21, 2018 | | [v1.12.1](Data_Dictionary_Release_Notes.md#v1121) | April 26, 2018 | | [v1.12](Data_Dictionary_Release_Notes.md#v112) | April 23, 2018 | | [v1.11](Data_Dictionary_Release_Notes.md#v111) | January 20, 2018 | -| [v10.0](Data_Dictionary_Release_Notes.md#release-with-api-v1100) | August 22, 2017 | -| [v7.1](Data_Dictionary_Release_Notes.md#release-with-api-v171) | March 16, 2017 | -| [v3.1](Data_Dictionary_Release_Notes.md#release-with-api-v131) | September 7, 2016 | +| [v1.10.0](Data_Dictionary_Release_Notes.md#release-with-api-v1100) | August 22, 2017 | +| [v1.7.1](Data_Dictionary_Release_Notes.md#release-with-api-v171) | March 16, 2017 | +| [v1.3.1](Data_Dictionary_Release_Notes.md#release-with-api-v131) | September 7, 2016 | + +## v.1.16 + +* __GDC Product__: GDC Data Dictionary +* __Release Date__: April 17, 2019 + + +### New Features and Changes + +* Updates to the Data Dictionary Search Tool +* Added new bioinformatics workflow for methylation arrays (Sesame) +* Changed `somatic_mutation_calling_workflow` link from `one_to_many` to `many_to_many` +* Modified `read_group` entity + - Added `SeqCap EZ Human Exome v2.0` as new permissible value for `target_capture_kit` field + - Added `Custom SureSelect Human All Exon v1.1 Plus 3 Boosters` as new permissible value `target_capture_kit` field + - Added `Custom SureSelect CGCI-HTMCP-CC Panel - 19.7 Mb` as new permissible value `target_capture_kit` field +* Modified `case` entity + - Updated the description for the `primary_site` field + - Added new permissible value to `lost_to_followup` field +* Modified `molecular_test` entity + - Removed properties with genomic coordinates + - Add new permissible values to `test_result` + - Added `second_exon` as new property +* Modified `aligned_reads_index` entity + - Made these files not submittable +* Modified `somatic_mutation_index` entity + - Made these files not submittable +* Modified `sample` entity + - Added new permissible values for `sample_type` + - `Blood Derived Cancer - Bone Marrow` + - `Blood Derived Cancer - Peripheral Blood` + - Added new permissible values to `sample_type_id` +* Modified `diagnosis` entity + - Added 6 new staging and grading properties for TCGA + - `igcccg_stage` + - `masaoka_stage` + - `gleason_grade_group` + - `primary_gleason_grade` + - `secondary_gleason_grade` + - `weiss_assessment_score` + - Made `vital_status` an optional field + - Removed deprecated properties + - `days_to_death` + - `days_to_birth` + - `cause_of_death` + - `hiv_positive` + - `days_to_hiv_diagnosis` + - `ldh_normal_range_upper` + - `new_event_type` + - `hpv_status` + - `hpv_positive_type` + - `colon_polyps_history` + - `progression_free_survival` + - `progression_free_survival_event` + - `overall_survival` + - `days_to_treatment` + - `ldh_level_at_diagnosis` + - Added `vital_status` property to deprecated list +* Modified `somatic_aggregation_workflow` entity + - Added `Aliquot Ensemble Somatic Variant Merging and Masking` as new permissible value to `workflow_type` +* Modified `slide` entity + - Updated the description for the `magnification` field +* Modified `aliquot` entity + - Updated the the description for several fields + - `selected_normal_low_pass_wgs` + - `selected_normal_targeted_sequencing` + - `selected_normal_wgs` + - `selected_normal_wxs` +* Modified `follow-up` entity + - Added new field `days_to_progression_free` +* Modified `demographic` entity + - Made `vital_status` a required field +* Modified `exposure` entity + - Added new properties + - `environmental_tobacco_smoke_exposure` + - `respirable_crystalline_silica_exposure` + - `coal_dust_exposure` + - `type_of_smoke_exposure` + - `type_of_tobacco_used` + - `smoking_frequency` + - `time_between_waking_and_first_smoke` + - Removed `cigarettes_per_day` property from deprecated list +* Modified `annotation` entity + - Modified permissible values to `status` + - Approved + - Rescinded + +### Bugs Fixed Since Last Release + +* None + + +## v.1.15 + +* __GDC Product__: GDC Data Dictionary +* __Release Date__: December 18, 2018 + + +### New Features and Changes + +* Removed `Raw Sequencing Data` and `Sequencing Data` as permissible values from `submitted_aligned_reads`, `submitted_unaligned_reads`, and `aligned_reads` +* Deleted `aligned_reads_metrics` entity +* Created new `raw_methylation_array` entity +* Add regex validation to property `md5sum` for following entities: + - `slide_image` + - `analysis_metadata` + - `clinical_supplement` + - `experiment_metadata` + - `pathology_report` + - `run_metadata` + - `biospecimen_supplement` + - `submitted_aligned_reads` + - `submitted_genomic_profile` + - `submitted_methylation_beta_value` + - `submitted_tangent_copy_number` + - `submitted_unaligned_reads` +* Modified `molecular_test` entity + - Migrated data from `blood_test` to `laboratory_test` and `biospecimen_type` for all entities + - Added new property `intron` + - Deleted `blood_test` entity + - Added new permissible values for `gene_symbol` + - Added new permissible values for `antigen` + - Added new permissible values for `molecular_analysis_method` + - Added new permissible values for `variant_type` + - Added new permissible values for `test_result` + - Added new permissible values for `molecular_consequence` + - Added regex validation to property `transcript` + - Added regex validation to property `locus` + - Changed data type of `exon` property to be `string` with regex validation +* Modified `diagnosis` entity + - Added new fields + - `tumor_focality` + - `tumor_regression_grade` + - `lymph_nodes_tested` + - Added new permissible value for `primary_diagnosis` field + - Added min and max values to time-based properties + - Added new permissible value for `morphology` field +* Modified `follow_up` entity + - Added new permissible values for `ecog_performance_status` + - Added new permissible values for `comorbidity` + - Added new permissible values for `disease_response` + - Added new permissible values for `risk_factor` + - Added min and max values to time-based properties + - Added new property: + - `hepatitis_sustained_virological_response` + - Updated CDE, CDE version, description and URL for `comorbidity` + - Added a CDE for `days_to_comorbidity` + - Removed `reflux_treatment` property + - Add a new property: + - `risk_factor_treatment` +* Modified `aligned_reads` entity + - Added new contamination properties + - `contamination` + - `contamination_error` +* Modified `read_group` entity + - Added new permissible values for `target_capture_kit` + - Updated description for property `instrument_model` + - Added new permissible values for `target_capture_kit` + - Added new permissible values for `library_strategy` + - Added regex validation to property `adapter_sequence` + - Added regex validation to property `multiplex_barcode` + - Allow users to enter null for property `read_length` + - Allow users to enter null for property `is_paired_end` +* Modified `family_history` entity + - Added new permissible values for `relationship_primary_diagnosis` + - Added min and max values to properties +* Modified `case` entity + - Add min and max values to properties + - Delete permissible value from `primary_site` + - `Unknown Primary Site` +* Modified `analyte` entity + - Corrected the description for fields `analyte_volume` to include microliters as unit +* Modified `exposure` entity + - Added new properties + - `asbestos_exposure` + - `radon_exposure` +* Modified `sample` entity + - Added new permissible values to `method_of_sample_procurement` + - Added regex validation to `pathology_report_uuid` + - Change type from string to number for properties: + - `intermediate_dimension` + - `longest_dimension` + - `shortest_dimension` + - `time_between_clamping_and_freezing` + - `time_between_excision_and_freezing` + - Add min and max to properties on the sample node + - Populated sample nodes that have no value for `tissue_type` to "Not Reported" +* Modified `treatment` entity + - Added a new property + - `prior_treatment_effect` + - Add min and max values to properties +* Modified `aliquot` entity + - Corrected the description for fields `analyte_volume` to include microliters as unit +* Modified `demographic` entity + - Added min and max to properties + + +### Bugs Fixed Since Last Release + +* Fixed value of `pathology_report_uuid` on sample entity `7b29b034-86e4-4266-8657-036e96e04430` to satisfy regex requirements +* Migrated a few unsupported values for sample.pathology_report_uuid, read_group.adapter_sequence, read_group.multiplex_barcode ## v.1.14 @@ -32,10 +235,10 @@ - Added new permissible values for `gene_symbol` fields - `Not Applicable` - Deleted field `blood_test` - - Add new permissible values for `antigen` field - - Add new permissible values to `molecular_analysis_method` - - Add new permissible values for `variant_type` field - - Add new permissible values to `test_result` + - Added new permissible values for `antigen` field + - Added new permissible values to `molecular_analysis_method` + - Added new permissible values for `variant_type` field + - Added new permissible values to `test_result` * Modified `case` entity - Modified permissible values on `index_date` - Added new value `Initial Genomic Sequencing` @@ -215,7 +418,7 @@ ### Bugs Fixed Since Last Release -* N/A +* None ## v.1.13 diff --git a/docs/Data_Dictionary/gdcmvs.md b/docs/Data_Dictionary/gdcmvs.md new file mode 100644 index 000000000..0b51c2ef5 --- /dev/null +++ b/docs/Data_Dictionary/gdcmvs.md @@ -0,0 +1,70 @@ + + + +

GDC Metadata Validation Services

+ + + + +
+ +
+
+
GDC Dictionary Version
+
+ + + + diff --git a/docs/Data_Dictionary/images/CDE_Data_Element_Details.png b/docs/Data_Dictionary/images/CDE_Data_Element_Details.png new file mode 100644 index 000000000..c562a45ad Binary files /dev/null and b/docs/Data_Dictionary/images/CDE_Data_Element_Details.png differ diff --git a/docs/Data_Dictionary/images/CDE_Details.png b/docs/Data_Dictionary/images/CDE_Details.png new file mode 100644 index 000000000..7cdf1a11a Binary files /dev/null and b/docs/Data_Dictionary/images/CDE_Details.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Links.png b/docs/Data_Dictionary/images/GDC_DD_Links.png new file mode 100644 index 000000000..042a79b80 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Links.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Properties_Boolean.png b/docs/Data_Dictionary/images/GDC_DD_Properties_Boolean.png new file mode 100644 index 000000000..96d821475 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Properties_Boolean.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Properties_Enumeration.png b/docs/Data_Dictionary/images/GDC_DD_Properties_Enumeration.png new file mode 100644 index 000000000..f222712cb Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Properties_Enumeration.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Properties_Integer.png b/docs/Data_Dictionary/images/GDC_DD_Properties_Integer.png new file mode 100644 index 000000000..dd8305998 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Properties_Integer.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Properties_Number.png b/docs/Data_Dictionary/images/GDC_DD_Properties_Number.png new file mode 100644 index 000000000..2b7980ffd Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Properties_Number.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Properties_String.png b/docs/Data_Dictionary/images/GDC_DD_Properties_String.png new file mode 100644 index 000000000..614ee99b5 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Properties_String.png differ diff --git a/docs/Data_Dictionary/images/GDC_DD_Title_and_Summary.png b/docs/Data_Dictionary/images/GDC_DD_Title_and_Summary.png new file mode 100644 index 000000000..3f001b0b7 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_DD_Title_and_Summary.png differ diff --git a/docs/Data_Dictionary/images/GDC_search.png b/docs/Data_Dictionary/images/GDC_search.png new file mode 100644 index 000000000..178f80808 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_exact_match_sample_type.png b/docs/Data_Dictionary/images/GDC_search_exact_match_sample_type.png new file mode 100644 index 000000000..e5b14b97c Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_exact_match_sample_type.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_age.png b/docs/Data_Dictionary/images/GDC_search_general_age.png new file mode 100644 index 000000000..8ae1d56f8 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_age.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_living.png b/docs/Data_Dictionary/images/GDC_search_general_living.png new file mode 100644 index 000000000..f542e6d84 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_living.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_sample_type.png b/docs/Data_Dictionary/images/GDC_search_general_sample_type.png new file mode 100644 index 000000000..63e0cac7f Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_sample_type.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_dictionary.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_dictionary.png new file mode 100644 index 000000000..318641170 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_dictionary.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_matched.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_matched.png new file mode 100644 index 000000000..c9147cc12 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_matched.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_see_all_values.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_see_all_values.png new file mode 100644 index 000000000..5db48b170 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_see_all_values.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_values.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_values.png new file mode 100644 index 000000000..d75bacf03 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_values.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_values_cadsr_values.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_values_cadsr_values.png new file mode 100644 index 000000000..b2a914234 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_values_cadsr_values.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_values_compare_list.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_values_compare_list.png new file mode 100644 index 000000000..8a53d4215 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_values_compare_list.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_general_squamous_values_terms.png b/docs/Data_Dictionary/images/GDC_search_general_squamous_values_terms.png new file mode 100644 index 000000000..51644af3c Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_general_squamous_values_terms.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_property_description_age.png b/docs/Data_Dictionary/images/GDC_search_property_description_age.png new file mode 100644 index 000000000..1b86df3ac Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_property_description_age.png differ diff --git a/docs/Data_Dictionary/images/GDC_search_synonym_living.png b/docs/Data_Dictionary/images/GDC_search_synonym_living.png new file mode 100644 index 000000000..bf7ea75c8 Binary files /dev/null and b/docs/Data_Dictionary/images/GDC_search_synonym_living.png differ diff --git a/docs/Data_Dictionary/index.md b/docs/Data_Dictionary/index.md index 38a60383d..60af70054 100644 --- a/docs/Data_Dictionary/index.md +++ b/docs/Data_Dictionary/index.md @@ -2,17 +2,150 @@ ## Introduction -The GDC Data Dictionary defines components of the [GDC Data Model](../Data/Data_Model/GDC_Data_Model.md) and relationships between them. +The GDC Data Dictionary is a resource that describes the clinical, biospecimen, administrative, and genomic metadata that can be used in parallel with the genomic data generated by the GDC. The dictionary defines the structure of a database, the [data model](../Data/Data_Model/GDC_Data_Model.md), and the rules the data need to follow. In addition, the dictionary includes information about the relationships between entities within the data model. + +### Data Dictionary Components: + +The GDC Data Dictionary consists of the following components: + +* Comprehensive list of nodes, which represent entities in the data model and help to group metadata into categories. +* Comprehensive list of properties in the database and their schemas, which describe specific data elements that can be submitted to the GDC. +* Comprehensive list of unique keys and links between properties. +* Constraints and requirements defined on nodes and properties, including acceptable values and data types. + +### Standards and Conventions + +All properties and values in the GDC Data Dictionary include references to external standards defined and maintained by the [NCI Thesaurus](https://ncit.nci.nih.gov/ncitbrowser/) (NCIt) and the [Cancer Data Standards Registry and Repository](https://wiki.nci.nih.gov/display/caDSR/caDSR+Wiki) (caDSR). Both of these standards are operated by groups at [NCI's Center for Bioinformatics and Information Technology](https://cbiit.cancer.gov/) (CBIIT). + +Each property is assigned a [Common Data Element](https://cdebrowser.nci.nih.gov/cdebrowserClient/cdeBrowser.html#/search) (CDE) created by the caDSR. The CDE provides detailed information about the property including links to the NCIt through assigned concept codes. NCIt concepts are also assigned at the permissible value level for enumerated properties. The images below are an example of a caDSR CDE and its related property-level NCIt concepts. + +[![CDE Data Elements Details](images/CDE_Data_Element_Details.png)](images/CDE_Data_Element_Details.png "Click to see the full image.") +[![CDE Details](images/CDE_Details.png)](images/CDE_Details.png "Click to see the full image.") + +In addition to the caDSR and NCIt references, many of the properties are defined by additional standards including, but not limited to the following: [International Classification of Diseases](https://www.who.int/health-topics/international-classification-of-diseases) ([ICD-O-3](http://codes.iarc.fr/) and [ICD-10](https://www.cdc.gov/nchs/icd/icd10cm.htm)), [American Joint Committee on Cancer](https://cancerstaging.org/Pages/default.aspx) staging classifications, [Children's Oncology Group](https://www.childrensoncologygroup.org/) (COG) categorizations, and the [International Federation of Gynecology and Obstetrics](https://www.figo.org/) (FIGO) classifications. When these additional standards are used to describe a property, this is referenced in the description and the list of allowable values will reflect the criteria defined by the standard. + +Using external standards benefits both data contributors and data consumers at the GDC. For example, the curated lists of synonyms provided by NCIt allows for easy mapping of other study-specific clinical data standards to the GDC data dictionary. The available synonyms can be leveraged using the [GDC Data Dictionary Search](gdcmvs/). ## Data Dictionary Viewer The [GDC Data Dictionary Viewer](viewer.md) is a user-friendly interface for accessing the dictionary. It includes the following functionality: -* _Dictionary contents:_ Display of entities defined in the dictionary, including their descriptions, properties, and links. -* _Links to semantic resources:_ Links to semantic data resources that define [Common Data Elements (CDEs)](http://cde.nih.gov) used in the dictionary -* _Submission templates:_ Generation JSON and TSV templates for use in GDC data submission. +* __Dictionary contents:__ Display of entities defined in the dictionary, including their descriptions, values or types, and links. +* __Links to semantic resources:__ Links to semantic data resources that define [Common Data Elements (CDEs)](http://cde.nih.gov) used in the dictionary +* __Submission templates:__ JSON and TSV template generation for use in GDC data submission. + +### Components of the Data Dictionary Viewer + +The sections below provide an example of the information available for each specific node in the GDC Data Dictionary. + +#### Summary + +[![Title and Summary](images/GDC_DD_Title_and_Summary.png)](images/GDC_DD_Title_and_Summary.png "Click to see the full image.") + +* __Type:__ The name of the node. +* __Category:__ The type of metadata; some examples are Clinical, Biospecimen, Analysis and Submittable Data Files. +* __Description:__ This section contains a written explanation for the type of data that would be found in this node. +* __Unique Keys:__ The properties or list of properties that can be used to identify this node, and only this node, within the commons. + +This section also contains a "Download Template" link with a drop-down menu containing the two template file types: TSV and JSON. These files will contain all properties that are found in the node, but not all [properties are required](#properties) to upload the node. + +#### Links + +[![Links](images/GDC_DD_Links.png)](images/GDC_DD_Links.png "Click to see the full image.") + +* __Links to Entity:__ Other nodes that can be connected to the focal node. +* __Link Name:__ A simplified stand in for the node link structure (requirement, target type, multiplicity, label). Its declaration categorizes the relationship between nodes. +* __Relationship:__ The written description for the association between the focal node and the other connected node. +* __Required:__ Displays whether the link to the node is required for the existence of the focal node. To link the focal node to a parent node, use the __.submitter_id__ with the value of that field set to the appropriate `submitter_id` in the parent node. For more information on creating links between nodes, please see the [Data Submission Walkthrough](Data_Submission_Portal/Users_Guide/Data_Submission_Walkthrough). + +#### Properties + +[![Properties Enumeration](images/GDC_DD_Properties_Enumeration.png)](images/GDC_DD_Properties_Enumeration.png "Click to see the full image.") +[![Properties Integer](images/GDC_DD_Properties_Integer.png)](images/GDC_DD_Properties_Integer.png "Click to see the full image.") +[![Properties Number](images/GDC_DD_Properties_Number.png)](images/GDC_DD_Properties_Number.png "Click to see the full image.") +[![Properties String](images/GDC_DD_Properties_String.png)](images/GDC_DD_Properties_String.png "Click to see the full image.") +[![Properties Boolean](images/GDC_DD_Properties_Boolean.png)](images/GDC_DD_Properties_Boolean.png "Click to see the full image.") + +* __Property:__ The name of the property. + +* __Description:__ The written explanation for the expected type and characterization of data found in this property. + +* __Acceptable Types or Values:__ The values that can be entered into the field based on the type category. + * Enumeration: A list of predetermined strings. The user must select the exact string from the list to be a valid entry. Case does matter. Many of these properties with enumerations have numerous values. To see all of the values, click the "More Values" link at the bottom of the property row under the __Acceptable Types or Values__ column. + * Integer: A field that only accepts whole numbers. + * Number: A field that can accept any number including numbers with decimal places. + * String: A field in which alphanumeric characters and `_`, `.`, `-`, up to a length of 32,767, can be entered. Do not use other characters as it will create submission errors. Some string fields contain regex restrictions to coerce data to a specific pattern. + * Boolean: A field that only accepts `true` or `false` as acceptable values. If these values are not entered as lowercase, the dictionary will not recognize the value and an error will occur. + +* __Required:__ This informs the user whether this field is necessary for the submission of the node. If information for a required field is unknown or not reported, there is often a value to reflect that missing information. + +* __CDE:__ The caDSR CDE Public ID, with the direct link to its respective Data Element Details page. + +## Search Tool + +The Search Tool enables easier query of the GDC Data Dictionary for data submitters and recommends GDC properties and values based on synonyms. Created by the NCI CBIIT EVS Team, it leverages NCI vocabulary systems caDSR and NCIt. Below are some of the features included in the Search Tool: + +* Users can complete partial or exact match searches. +* Searches can include terms that are synonymous to the GDC allowable values. +* Users can compare their list of values to the GDC allowable values. +* Dictionary paths are described so users can find the specific node where a property is located. + +### Components of the Search Tool + +The sections below provide an example of the information available for each portion of the Search Tool. + +#### Search Tool Modifiers + +The Search Tool is equipped with the following modifiers to customize searches in the GDC Data Dictionary: + +[![GDC search](images/GDC_search.png)](images/GDC_search.png "Click to see the full image.") + +* __Exact match:__ This will return matches for only the exact value entered into the search field. + + [![GDC search general sample type](images/GDC_search_general_sample_type.png)](images/GDC_search_general_sample_type.png "Click to see the full image.") + [![GDC search exact match sample type](images/GDC_search_exact_match_sample_type.png)](images/GDC_search_exact_match_sample_type.png "Click to see the full image.") + +* __Property description:__ This will return matches for the value found not only in the property, but also searches within the description of the property. + + [![GDC search general age](images/GDC_search_general_age.png)](images/GDC_search_general_age.png "Click to see the full image.") + [![GDC search property description age](images/GDC_search_property_description_age.png)](images/GDC_search_property_description_age.png "Click to see the full image.") + +* __Synonyms:__ This will return matches that not only match the value entered, but other values that NCIt consider to be synonymous with the entered value. + + [![GDC search general living](images/GDC_search_general_living.png)](images/GDC_search_general_living.png "Click to see the full image.") + [![GDC search synonym living](images/GDC_search_synonym_living.png)](images/GDC_search_synonym_living.png "Click to see the full image.") + +#### Result Fields + +The results from searches can be sorted into three different result fields: + +* __Values:__ This result section will return three columns that displays matches to values that are found in the GDC Data Dictionary: + [![GDC search general squamous values](images/GDC_search_general_squamous_values.png)](images/GDC_search_general_squamous_values.png "Click to see the full image.") + * __Category / Node / Property:__ This section displays the GDC Data Dictionary hierarchy that precedes the search term. This section can also contain information such as: + * __See All Values:__ This window will display all GDC values for this property. + [![GDC search general squamous see all values](images/GDC_search_general_squamous_see_all_values.png)](images/GDC_search_general_squamous_see_all_values.png "Click to see the full image.") + * __Compare with User List:__ This window allows the user to input a list of values to check against the acceptable values for that property. + [![GDC search general squamous see all values](images/GDC_search_general_squamous_values_compare_list.png)](images/GDC_search_general_squamous_values_compare_list.png "Click to see the full image.") + * __See All Terms:__ This window will display the NCIt code assigned to the specific term and the synonymous NCIt terms associated. + [![GDC search general squamous values terms](images/GDC_search_general_squamous_values_terms.png)](images/GDC_search_general_squamous_values_terms.png "Click to see the full image.") + * __caDSR: CDE , Values , Compare with GDC:__ This group of links can send the user to the CDE property page (CDE), opens a window that displays the caDSR values for that property (Values), or opens a window that compares the caDSR values with GDC values (Compare wth GDC). + [![GDC search general squamous values cadsr values](images/GDC_search_general_squamous_values_cadsr_values.png)](images/GDC_search_general_squamous_values_cadsr_values.png "Click to see the full image.") + * __Matched GDC Values:__ This column will display all GDC values that match the term with ICD-O-3 and NCIt values if they are available. + [![GDC search general squamous matched](images/GDC_search_general_squamous_matched.png)](images/GDC_search_general_squamous_matched.png "Click to see the full image.") + * __CDE Permissible Values:__ This column displays GDC dictionary properties that have corresponding caDSR clinical data elements (CDE). +* __Properties:__ This result section will return five columns that displays matches to properites of the GDC Data Dictionary: + [![GDC search general age](images/GDC_search_general_age.png)](images/GDC_search_general_age.png "Click to see the full image.") + * __Category / Node:__ This column displays the Category and Node hierarchy for the search value. + * __Property:__ This column displays the name of the Property for the search value. + * __Description:__ This column displays the description for the returned property. + * __GDC Property Values:__ This column displays the value type for the returned property. For more information see the Acceptable Types or Values section under [Properties](#properties). + * __caDSR CDE Reference:__ This column displays the CDE link for the returned property. +* __Dictionary:__ This result section will return two columns that display matches to values within the structure of the GDC Data Dictionary: + [![GDC search general squamous dictionary](images/GDC_search_general_squamous_dictionary.png)](images/GDC_search_general_squamous_dictionary.png "Click to see the full image.") + * __Name:__ This column displays the name of the Category, Node, or Property with a returned value total for each level. + * __Description:__ This column displays the GDC Data Dictionary description for each level. -## Entity JSON Schemas +## Data Dictionary API In technical terms, the dictionary is a set of YAML files that define JSON schemas for each entity in the dictionary. The files are available [on GitHub](https://github.com/NCI-GDC/gdcdictionary/tree/develop/gdcdictionary/schemas). diff --git a/docs/Data_Portal/Release_Notes/Data_Portal_Release_Notes.md b/docs/Data_Portal/Release_Notes/Data_Portal_Release_Notes.md index 6b21a1cdd..daa45c5a5 100644 --- a/docs/Data_Portal/Release_Notes/Data_Portal_Release_Notes.md +++ b/docs/Data_Portal/Release_Notes/Data_Portal_Release_Notes.md @@ -2,6 +2,10 @@ | Version | Date | |---|---| +| [v1.20.0](Data_Portal_Release_Notes.md#release-1200) | April 17, 2019 | +| [v1.19.0](Data_Portal_Release_Notes.md#release-1190) | February 20, 2019 | +| [v1.18.0](Data_Portal_Release_Notes.md#release-1180) | December 18, 2018 | +| [v1.17.0](Data_Portal_Release_Notes.md#release-1170) | November 7, 2018 | | [v1.16.0](Data_Portal_Release_Notes.md#release-1160) | September 27, 2018 | | [v1.15.0](Data_Portal_Release_Notes.md#release-1150) | August 23, 2018 | | [v1.14.0](Data_Portal_Release_Notes.md#release-1140) | June 13, 2018 | @@ -20,6 +24,142 @@ | [v1.0.1](Data_Portal_Release_Notes.md#release-101) | May 18, 2016 | --- +## Release 1.20.0 + +* __GDC Product__: GDC Data Portal +* __Release Date__: April 17, 2019 + +### New Features and Changes + +* Upgraded the Portal to use the latest React Javascript library (version 16.8) + +### Bugs Fixed Since Last Release + +* None + +### Known Issues and Workarounds + +* Pre-release Data Portal login is not supported on Internet Explorer or the last version of Edge (42). Edge 41 does login successfully. +* Custom Facet Filters + * Some definitions are missing from the property list when adding custom facet file or case filters. +* Visualizations + * SIFT and PolyPhen annotations are missing from the export JSON of the mutation table. They are present in the export TSV. + * Data Portal graphs cannot be exported as PNG images in Internet Explorer. Graphs can be exported in PNG or SVG format from Chrome or Firefox browsers . Internet Explorer does not display chart legend and title when re-opening previously downloaded SVG files, the recommendation is to open downloaded SVG files with another program. +* Repository and Cart + * The annotation count in File table of Repository and Cart does not link to the Annotations page anymore. The user can navigate to the annotations through the annotation count in Repository - Case table. +* Legacy Archive + * Downloading a token in the GDC Legacy Archive does not refresh it. If a user downloads a token in the GDC Data Portal and then attempts to download a token in the GDC Legacy Archive, an old token may be provided. Reloading the Legacy Archive view will allow the user to download the updated token. + * Exporting the Cart table in JSON will export the GDC Archive file table instead of exporting the files in the Cart only. +* Web Browsers + * Browsers limit the number of concurrent downloads, it is generally recommended to add files to the cart and download large number of files through the GDC Data Transfer Tool, more details can be found on [GDC Website](https://gdc.cancer.gov/about-gdc/gdc-faqs). + * The GDC Portals are not compatible with Internet Explorer running in compatibility mode. Workaround is to disable compatibility mode. + +## Release 1.19.0 + +* __GDC Product__: GDC Data Portal +* __Release Date__: February 20, 2019 + +### New Features and Changes + +* Added support for viewing of controlled-access mutations in the Data Portal +* Added a new data access notification to remind logged-in users with access to controlled data that they need to follow their data use agreement. The message is fixed at the top of the Portal. +* Added the ability to search for previous versions of files. If the user enters the UUID of a previous version that cannot be found, the Portal returns the UUID of the latest version available. +* Renamed the Data Category for "Raw Sequencing Data" to "Sequencing Reads" throughout the portal where this appears, to be consistent with the Data Dictionary. +* Added a link in the Portal footer to the GDC support page. + +### Bugs Fixed Since Last Release + +* Fixed bug where Survival Plot button never stops loading if plotting mutated vs. non-mutated cases for a single Gene. +* Fixed inconsistent button styling when downloading controlled Downstream Analyses Files from File Entity page. +* Removed unnecessary Survival column from Arrange Columns button on Case Entity, Gene Entity pages. +* Removed unnecessary whitespace from pie charts on Repository page. +* Added missing File Size unit to Clinical Supplement File, Biospecimen Supplement File tables on Case Entity page. +* Fixed bug where clicking on Case Counts in Projects Graph tab was going to the Repository Files tab instead of the Cases tab. +* Fixed bug where the counts shown beside customer filters on the Repository Cases tab were not updating when filtering on other facets. +* Fixed bug where clicking the # of Affected Cases denominator on the Gene page's Most Frequent Somatic Mutations table displayed an incorrect number of Cases. + +### Known Issues and Workarounds + +* Pre-release Data Portal login is not supported on Internet Explorer or the last version of Edge (42). Edge 41 does login successfully. +* Custom Facet Filters + * Some definitions are missing from the property list when adding custom facet file or case filters. +* Visualizations + * SIFT and PolyPhen annotations are missing from the export JSON of the mutation table. They are present in the export TSV. + * Data Portal graphs cannot be exported as PNG images in Internet Explorer. Graphs can be exported in PNG or SVG format from Chrome or Firefox browsers . Internet Explorer does not display chart legend and title when re-opening previously downloaded SVG files, the recommendation is to open downloaded SVG files with another program. +* Repository and Cart + * The annotation count in File table of Repository and Cart does not link to the Annotations page anymore. The user can navigate to the annotations through the annotation count in Repository - Case table. +* Legacy Archive + * Downloading a token in the GDC Legacy Archive does not refresh it. If a user downloads a token in the GDC Data Portal and then attempts to download a token in the GDC Legacy Archive, an old token may be provided. Reloading the Legacy Archive view will allow the user to download the updated token. + * Exporting the Cart table in JSON will export the GDC Archive file table instead of exporting the files in the Cart only. +* Web Browsers + * Browsers limit the number of concurrent downloads, it is generally recommended to add files to the cart and download large number of files through the GDC Data Transfer Tool, more details can be found on [GDC Website](https://gdc.cancer.gov/about-gdc/gdc-faqs). + * The GDC Portals are not compatible with Internet Explorer running in compatibility mode. Workaround is to disable compatibility mode. + +## Release 1.18.0 + +* __GDC Product__: GDC Data Portal +* __Release Date__: December 18, 2018 + +### New Features and Changes + +* A new data access message has been added when downloading controlled data. Users must agree to abide by data access control policies when downloading controlled data. +* In the Mutation free-text search in Exploration, mutation display now includes the UUID, genomic location, and matched search term for easier mutation searching. +* The ability to sort on ranked columns has been made available. + +### Bugs Fixed Since Last Release + +* In some cases, text was being cut off on the Project page visualization tab. Text is no longer cut off. +* HGNC link on Gene page broke as the source format url changed; The format was updated and the link is now functional +* In the biospecimen details on the Case page, the cart icon would disappear once clicked. It now is always visible. + +### Known Issues and Workarounds + +* Pre-release Data Portal login is not supported on Internet Explorer or the last version of Edge (42). Edge 41 does login successfully. +* Custom Facet Filters + * Some definitions are missing from the property list when adding custom facet file or case filters. +* Visualizations + * SIFT and PolyPhen annotations are missing from the export JSON of the mutation table. They are present in the export TSV. + * Data Portal graphs cannot be exported as PNG images in Internet Explorer. Graphs can be exported in PNG or SVG format from Chrome or Firefox browsers . Internet Explorer does not display chart legend and title when re-opening previously downloaded SVG files, the recommendation is to open downloaded SVG files with another program. +* Repository and Cart + * The annotation count in File table of Repository and Cart does not link to the Annotations page anymore. The user can navigate to the annotations through the annotation count in Repository - Case table. +* Legacy Archive + * Downloading a token in the GDC Legacy Archive does not refresh it. If a user downloads a token in the GDC Data Portal and then attempts to download a token in the GDC Legacy Archive, an old token may be provided. Reloading the Legacy Archive view will allow the user to download the updated token. + * Exporting the Cart table in JSON will export the GDC Archive file table instead of exporting the files in the Cart only. +* Web Browsers + * Browsers limit the number of concurrent downloads, it is generally recommended to add files to the cart and download large number of files through the GDC Data Transfer Tool, more details can be found on [GDC Website](https://gdc.cancer.gov/about-gdc/gdc-faqs). + * The GDC Portals are not compatible with Internet Explorer running in compatibility mode. Workaround is to disable compatibility mode. + +## Release 1.17.0 + +* __GDC Product__: GDC Data Portal +* __Release Date__: November 7, 2018 + +### New Features and Changes + +* Copy Number Variation (CNV) data derived from GISTIC results are now available in the portal: + * View number of CNV events on a gene in a cohort in the Explore Gene table tab + * Explore CNVs associated with a gene on the Gene Entity Page + * Explore CNVs concurrently with mutations on the Oncogrid with new visualization + +### Bugs Fixed Since Last Release + +* None + +### Known Issues and Workarounds + +* Custom Facet Filters + * Some definitions are missing from the property list when adding custom facet file or case filters. +* Visualizations + * SIFT and PolyPhen annotations are missing from the export JSON of the mutation table. They are present in the export TSV. + * Data Portal graphs cannot be exported as PNG images in Internet Explorer. Graphs can be exported in PNG or SVG format from Chrome or Firefox browsers . Internet Explorer does not display chart legend and title when re-opening previously downloaded SVG files, the recommendation is to open downloaded SVG files with another program. +* Repository and Cart + * The annotation count in File table of Repository and Cart does not link to the Annotations page anymore. The user can navigate to the annotations through the annotation count in Repository - Case table. +* Legacy Archive + * Downloading a token in the GDC Legacy Archive does not refresh it. If a user downloads a token in the GDC Data Portal and then attempts to download a token in the GDC Legacy Archive, an old token may be provided. Reloading the Legacy Archive view will allow the user to download the updated token. + * Exporting the Cart table in JSON will export the GDC Archive file table instead of exporting the files in the Cart only. +* Web Browsers + * Browsers limit the number of concurrent downloads, it is generally recommended to add files to the cart and download large number of files through the GDC Data Transfer Tool, more details can be found on [GDC Website](https://gdc.cancer.gov/about-gdc/gdc-faqs). + * The GDC Portals are not compatible with Internet Explorer running in compatibility mode. Workaround is to disable compatibility mode. ## Release 1.16.0 diff --git a/docs/Data_Portal/Users_Guide/Advanced_Search.md b/docs/Data_Portal/Users_Guide/Advanced_Search.md index 7a9c676f2..5f3b23844 100644 --- a/docs/Data_Portal/Users_Guide/Advanced_Search.md +++ b/docs/Data_Portal/Users_Guide/Advanced_Search.md @@ -7,7 +7,7 @@ Only available in the Repository view, the Advanced Search page offers complex q ## Overview: GQL -Advanced search allows, via Genomic Query Language (GQL), to use structured queries to search for files and cases. +Advanced search allows for structured queries to search for files and cases. This is done via Genomic Query Language (GQL), a query language created by the [GDC](https://gdc.cancer.gov/) and [OICR](https://oicr.on.ca/). [![Advanced Search View](images/gdc-data-portal-advanced-search.png)](images/gdc-data-portal-advanced-search.png "Click to see the full image.") @@ -17,7 +17,7 @@ A simple query in GQL (also known as a 'clause') consists of a __field__, follow Note that it is not possible to compare two fields (e.g. disease_type = project.name). -__Note__: GQL is not a database query language. For example, GQL does not have a "SELECT" statement. +> __Note:__ GQL is not a database query language. For example, GQL does not have a "SELECT" statement. ### Switching between Advanced Search and Facet Filters @@ -27,7 +27,7 @@ A query created in Advanced Search is not translated back to facet filters. Clic ## Using the Advanced Search -When opening the advanced search page (via the Repository view), the search field will be automatically populated with facets filters already applied (if any). +When opening the Advanced Search Page (via the Repository View), the search field will be automatically populated with facets filters already applied (if any). This default query can be removed by pressing "Reset". @@ -37,7 +37,7 @@ Once the query has been entered and is identified as a "Valid Query", click on " As a query is being written, the GDC Data Portal will analyze the context and offer a list of auto-complete suggestions. Auto-complete suggests both fields and values as described below. -#### Field Auto-complete +### Field Auto-complete The list of auto-complete suggestions includes __all__ available fields matching the user text input. The user has to scroll down to see more fields in the dropdown: @@ -51,17 +51,17 @@ The value auto-complete is not aware of the general context of the query, the sy [![Value Auto-complete](images/gdc-data-portal-advanced-search-value.png)](images/gdc-data-portal-advanced-search-value.png "Click to see the full image.") -__Note__: Quotes are automatically added to the value if it contains spaces. +> __Note:__ Quotes are automatically added to the value if it contains spaces. ## Setting Precedence of Operators You can use parentheses in complex GQL statements to enforce the precedence of operators. -For example, if you want to find all the open files in TCGA program as well as the files in TARGET program, you can use parentheses to enforce the precedence of the boolean operators in your query, i.e.: +For example, if you want to find all the open files in TCGA program as well as the files in TARGET program, you can use parentheses to enforce the precedence of the Boolean operators in your query, i.e.: (files.access = open and cases.project.program.name = TCGA) or cases.project.program.name = TARGET -__Note__: Without parentheses, the statement will be evaluated left-to-right. +> __Note:__ Without parentheses, the statement will be evaluated left-to-right. ## Keywords @@ -69,42 +69,42 @@ A GQL keyword is a word that joins two or more clauses together to form a comple **List of Keywords:** -* AND -* OR +* __AND__ +* __OR__ -__Note__: parentheses can be used to control the order in which clauses are executed. +> __Note:__ Parentheses can be used to control the order in which clauses are executed. -### AND Keyword +### "__AND__" Keyword Used to combine multiple clauses, allowing you to refine your search. Examples: -* Find all open files in breast cancer +* Find all open files in breast cancer: - cases.project.primary_site = Breast and files.access = open + cases.primary_site = Breast and files.access = open -* Find all open files in breast cancer and data type is copy number variation +* Find all open files in breast cancer and data type is gene expression quantification: - cases.project.primary_site = Breast and files.access = open and files.data_type = "Copy number variation" + cases.primary_site = Breast and files.access = open and files.data_type = "Gene Expression Quantification" -### OR Keyword +### "__OR__" Keyword Used to combine multiple clauses, allowing you to expand your search. -__Note__: __IN__ keyword can be an alternative to OR and result in simplified queries. +> __Note:__ The __IN__ keyword can be an alternative to __OR__ and result in simplified queries. Examples: -* Find all files that are raw sequencing data or raw microarray data: +* Find all files that are raw sequencing data or aligned reads: - files.data_type = "Raw microarray data" or files.data_type = "Raw sequencing data" + files.data_type = "Aligned Reads" or files.data_type = "Raw sequencing data" -* Find all files where donors are male or vital status is alive: +* Find all files where cases are male or vital status is alive: - cases.demographic.gender = male or cases.diagnoses.vital_status = alive + cases.demographic.gender = male or cases.diagnoses.vital_status = alive ## Operators @@ -127,136 +127,154 @@ An operator in GQL is one or more symbols or words comparing the value of a fiel | NOT MISSING | Field NOT MISSING | -### "=" operator - EQUAL +### "__=__" Operator - __EQUAL__ -The "=" operator is used to search for files where the value of the specified field exactly matches the specified value. +The "__=__" operator is used to search for files where the value of the specified field exactly matches the specified value. Examples: -* Find all files that are gene expression: +* Find all files that are gene expression quantification: - files.data_type = "Gene expression" + files.data_type = "Gene Expression Quantification" * Find all cases whose gender is female: - cases.demographic.gender = female + cases.demographic.gender = female -### "!=" operator - NOT EQUAL +### "__!=__" Operator - __NOT EQUAL__ -The "!=" operator is used to search for files where the value of the specified field does not match the specified value. +The "__!=__" operator is used to search for files where the value of the specified field does not match the specified value. -The "!=" operator will not match a field that has no value (i.e. a field that is empty). For example, 'gender != male' will only match cases who have a gender and the gender is not male. To find cases other than male or with no gender populated, you would need to type gender != male or gender is missing. +The "__!=__" operator will not match a field that has no value (i.e. a field that is empty). For example: + + cases.demographic.gender != male + +This search will only match cases who have a gender and the gender is not male. To find cases other than male or with no gender populated, you would need to search: + + cases.demographic.gender != male or cases.demographic.gender is missing. Example: -* Find all files with an experimental different from genotyping array: +* Find all files with an experimental strategy that is not genotyping array: - files.experimental_strategy != "Genotyping array" + files.experimental_strategy != "Genotyping array" -### ">" operator - GREATER THAN +### "__>__" Operator - __GREATER THAN__ -The ">" operator is used to search for files where the value of the specified field is greater than the specified value. +The "__>__" operator is used to search for files where the value of the specified field is greater than the specified value. Example: * Find all cases whose number of days to death is greater than 60: - cases.diagnoses.days_to_death > 60 + cases.diagnoses.days_to_death > 60 -### ">=" operator - GREATER THAN OR EQUALS +### "__>=__" Operator - __GREATER THAN OR EQUALS__ -The ">=" operator is used to search for files where the value of the specified field is greater than or equal to the specified value. +The "__>=__" operator is used to search for files where the value of the specified field is greater than or equal to the specified value. Example: * Find all cases whose number of days to death is equal or greater than 60: - cases.diagnoses.days_to_death >= 60 + cases.diagnoses.days_to_death >= 60 -### "<" operator - LESS THAN +### "__<__" Operator - __LESS THAN__ -The "<" operator is used to search for files where the value of the specified field is less than the specified value. +The "__<__" operator is used to search for files where the value of the specified field is less than the specified value. Example: * Find all cases whose age at diagnosis is less than 400 days: - cases.diagnoses.age_at_diagnosis < 400 + cases.diagnoses.age_at_diagnosis < 400 -### "<=" operator - LESS THAN OR EQUALS +### "__<=__" Operator - __LESS THAN OR EQUALS__ -The "<=" operator is used to search for files where the value of the specified field is less than or equal to the specified value. +The "__<=__" operator is used to search for files where the value of the specified field is less than or equal to the specified value. Example: * Find all cases with a number of days to death less than or equal to 20: - cases.diagnoses.days_to_death <= 20 + cases.diagnoses.days_to_death <= 20 -### "IN" Operator +### "__IN__" Operator -The "IN" operator is used to search for files where the value of the specified field is one of multiple specified values. The values are specified as a comma-delimited list, surrounded by brackets [ ]. +The "__IN__" operator is used to search for files where the value of the specified field is one of multiple specified values. The values are specified as a comma-delimited list, surrounded by brackets [ ]. -Using "IN" is equivalent to using multiple 'EQUALS (=)' statements, but is shorter and more convenient. That is, typing 'project IN [ProjectA, ProjectB, ProjectC]' is the same as typing 'project = "ProjectA" OR project = "ProjectB" OR project = "ProjectC"'. +Using "__IN__" is equivalent to using multiple "__=__" (__EQUALS__) statements, but is shorter and more convenient. That is, these two following statement will retrieve the same output: + + cases.project.name IN [ProjectA, ProjectB, ProjectC] + cases.project.name = "ProjectA" OR cases.project.name = "ProjectB" OR cases.project.name = "ProjectC" Examples: -* Find all files in breast, breast and lung and cancer: +* Find all files in breast, brain, and lung cancer: + + cases.primary_site IN [Breast, Brain, Lung] + +* Find all files that are annotated somactic mutations or raw simple somatic mutations: + + files.data_type IN ["Annotated Somatic Mutation", "Raw Simple Somatic Mutation"] + - cases.project.primary_site IN [Brain, Breast,Lung] +### "__EXCLUDE__" Operator -* Find all files tagged with exon or junction or hg19: +The "__EXCLUDE__" operator is used to search for files where the value of the specified field is not one of multiple specified values. - files.data_type IN ["Aligned reads", "Unaligned reads"] +Using "__EXCLUDE__" is equivalent to using multiple "__!=__" (__NOT_EQUALS__) statements, but is shorter and more convenient. That is, these two following statement will retrieve the same output: + cases.project.name EXCLUDE [ProjectA, ProjectB, ProjectC] + cases.project.name != "ProjectA" OR cases.project.name != "ProjectB" OR cases.project.name != "ProjectC" -### "EXCLUDE" Operator +The "__EXCLUDE__" operator will not match a field that has no value (i.e. a field that is empty). For example: -The "EXCLUDE" operator is used to search for files where the value of the specified field is not one of multiple specified values. + files.experimental_strategy EXCLUDE ["WGS","WXS"] -Using "EXCLUDE" is equivalent to using multiple 'NOT_EQUALS (!=)' statements, but is shorter and more convenient. That is, typing 'project EXCLUDE [ProjectA, ProjectB, ProjectC]' is the same as typing 'project != "ProjectA" OR project != "ProjectB" OR project != "ProjectC"' +This search will only match files that have an experimental strategy **and** the experimental strategy is not "WGS" or "WXS". To find files with an experimental strategy different than "WGS" or "WXS" **or is not assigned**, you would need to type: -The "EXCLUDE" operator will not match a field that has no value (i.e. a field that is empty). For example, 'experimental strategy EXCLUDE ["WGS","WXS"]' will only match files that have an experimental strategy **and** the experimental strategy is not "WGS" or "WXS". To find files with an experimental strategy different from than "WGS" or "WXS" **or is not assigned**, you would need to type: files.experimental_strategy in ["WXS","WGS"] or files.experimental_strategy is missing. + files.experimental_strategy in ["WXS","WGS"] or files.experimental_strategy is missing Examples: * Find all files where experimental strategy is not WXS, WGS, Genotyping array: - files.experimental_strategy EXCLUDE [WXS, WGS, "Genotyping array"] + files.experimental_strategy EXCLUDE [WXS, WGS, "Genotyping array"] -### "IS MISSING" Operator +### "__IS MISSING__" Operator -The "IS" operator can only be used with "MISSING". That is, it is used to search for files where the specified field has no value. +The "__IS__" operator can only be used with "__MISSING__". That is, it is used to search for files where the specified field has no value. Examples: * Find all cases where gender is missing: - cases.demographic.gender is MISSING + cases.demographic.gender is MISSING -### "NOT MISSING" Operator +### "__NOT MISSING__" Operator -The "NOT" operator can only be used with "MISSING". That is, it is used to search for files where the specified field has a value. +The "__NOT__" operator can only be used with "__MISSING__". That is, it is used to search for files where the specified field has a value. Examples: * Find all cases where race is not missing: - cases.demographic.race NOT MISSING + cases.demographic.race NOT MISSING ## Special Cases -### Date format +### Date Format The date format should be the following: **YYYY-MM-DD** (without quotes). Example: - files.updated_datetime > 2015-12-31 + files.updated_datetime > 2015-12-31 ### Using Quotes @@ -265,9 +283,9 @@ A value must be quoted if it contains a space. Otherwise the advanced search wil Quotes are not necessary if the value consists of one single word. -* Example: Find all cases with primary site is brain and data type is copy number variation: +* Example: Find all cases with primary site is brain and data type is copy number segment: - cases.project.primary_site = Brain and files.data_type = "Copy number variation" + cases.primary_site = Brain and files.data_type = "Copy Number Segment" ### Age at Diagnosis - Unit in Days @@ -277,7 +295,7 @@ The __conversion factor__ is 1 year = 365.25 days * Example: Find all cases whose age at diagnosis > 40 years old (40 * 365.25) - cases.diagnoses.age_at_diagnosis > 14610 + cases.diagnoses.age_at_diagnosis > 14610 @@ -285,119 +303,4 @@ The __conversion factor__ is 1 year = 365.25 days The full list of fields available on the GDC Data Portal can be found through the GDC API using the following endpoint: -[https://api.gdc.cancer.gov/gql/_mapping](https://api.gdc.cancer.gov/gql/_mapping) - -Alternatively, a static list of fields is available below (not exhaustive). - -### Files - -+ files.access -+ files.acl -+ files.archive.archive_id -+ files.archive.revision -+ files.archive.submitter_id -+ files.center.center_id -+ files.center.center_type -+ files.center.code -+ files.center.name -+ files.center.namespace -+ files.center.short_name -+ files.data_format -+ files.data_subtype -+ files.data_type -+ files.experimental_strategy -+ files.file_id -+ files.file_name -+ files.file_size -+ files.md5sum -+ files.origin -+ files.platform -+ files.related_files.file_id -+ files.related_files.file_name -+ files.related_files.md5sum -+ files.related_files.type -+ files.state -+ files.state_comment -+ files.submitter_id -+ files.tags - -### Cases - -+ cases.case_id -+ cases.submitter_id -+ cases.diagnoses.age_at_diagnosis -+ cases.diagnoses.days_to_death -+ cases.demographic.ethnicity -+ cases.demographic.gender -+ cases.demographic.race -+ cases.diagnoses.vital_status -+ cases.project.disease_type -+ cases.project.name -+ cases.project.program.name -+ cases.project.program.program_id -+ cases.project.project_id -+ cases.project.state -+ cases.samples.sample_id -+ cases.samples.submitter_id -+ cases.samples.sample_type -+ cases.samples.sample_type_id -+ cases.samples.shortest_dimension -+ cases.samples.time_between_clamping_and_freezing -+ cases.samples.time_between_excision_and_freezing -+ cases.samples.tumor_code -+ cases.samples.tumor_code_id -+ cases.samples.current_weight -+ cases.samples.days_to_collection -+ cases.samples.days_to_sample_procurement -+ cases.samples.freezing_method -+ cases.samples.initial_weight -+ cases.samples.intermediate_dimension -+ cases.samples.is_ffpe -+ cases.samples.longest_dimension -+ cases.samples.oct_embedded -+ cases.samples.pathology_report_uuid -+ cases.samples.portions.analytes.a260_a280_ratio -+ cases.samples.portions.analytes.aliquots.aliquot_id -+ cases.samples.portions.analytes.aliquots.amount -+ cases.samples.portions.analytes.aliquots.center.center_id -+ cases.samples.portions.analytes.aliquots.center.center_type -+ cases.samples.portions.analytes.aliquots.center.code -+ cases.samples.portions.analytes.aliquots.center.name -+ cases.samples.portions.analytes.aliquots.center.namespace -+ cases.samples.portions.analytes.aliquots.center.short_name -+ cases.samples.portions.analytes.aliquots.concentration -+ cases.samples.portions.analytes.aliquots.source_center -+ cases.samples.portions.analytes.aliquots.submitter_id -+ cases.samples.portions.analytes.amount -+ cases.samples.portions.analytes.analyte_id -+ cases.samples.portions.analytes.analyte_type -+ cases.samples.portions.analytes.concentration -+ cases.samples.portions.analytes.spectrophotometer_method -+ cases.samples.portions.analytes.submitter_id -+ cases.samples.portions.analytes.well_number -+ cases.samples.portions.center.center_id -+ cases.samples.portions.center.center_type -+ cases.samples.portions.center.code -+ cases.samples.portions.center.name -+ cases.samples.portions.center.namespace -+ cases.samples.portions.center.short_name -+ cases.samples.portions.is_ffpe -+ cases.samples.portions.portion_id -+ cases.samples.portions.portion_number -+ cases.samples.portions.slides.number_proliferating_cells -+ cases.samples.portions.slides.percent_eosinophil_infiltration -+ cases.samples.portions.slides.percent_granulocyte_infiltration -+ cases.samples.portions.slides.percent_inflam_infiltration -+ cases.samples.portions.slides.percent_lymphocyte_infiltration -+ cases.samples.portions.slides.percent_monocyte_infiltration -+ cases.samples.portions.slides.percent_necrosis -+ cases.samples.portions.slides.percent_neutrophil_infiltration -+ cases.samples.portions.slides.percent_normal_cells -+ cases.samples.portions.slides.percent_stromal_cells -+ cases.samples.portions.slides.percent_tumor_cells -+ cases.samples.portions.slides.percent_tumor_nuclei -+ cases.samples.portions.slides.section_location -+ cases.samples.portions.slides.slide_id -+ cases.samples.portions.slides.submitter_id -+ cases.samples.portions.submitter_id -+ cases.samples.portions.weight +[https://api.gdc.cancer.gov/gql/_mapping](https://api.gdc.cancer.gov/gql/_mapping) \ No newline at end of file diff --git a/docs/Data_Portal/Users_Guide/Cart.md b/docs/Data_Portal/Users_Guide/Cart.md index f24070cb7..c7b1c840d 100644 --- a/docs/Data_Portal/Users_Guide/Cart.md +++ b/docs/Data_Portal/Users_Guide/Cart.md @@ -1,62 +1,62 @@ # Cart and File Download -## Overview - -While browsing the GDC Data Portal, files can either be downloaded individually from [file detail pages](Repository.md#file-summary-page) or collected in the file cart to be downloaded as a bundle. Clicking on the shopping cart icon that is next to any item in the GDC will add the item to your cart. +While browsing the GDC Data Portal, files can either be downloaded individually from [File Summary Pages](Repository.md#file-summary-page) or collected in the file cart to be downloaded as a bundle. Clicking on the shopping cart icon that is next to any item in the GDC will add the item to your cart. ## GDC Cart [![Cart](images/cart-overview_v2.png)](images/cart-overview_v2.png "Click to see the full image.") -### Cart Summary +## Cart Summary -The cart page shows a summary of all files currently in the cart: +The Cart Summary Page shows a summary of all files currently in the cart: -* Number of files -* Number of cases associated with the files -* Total file size +* Number of files. +* Number of cases associated with the files. +* Total file size. The Cart page also displays two tables: -* __File count by project__: Breaks down the files and cases by each project -* __File count by authorization level__: Breaks down the files in the cart by authorization level. A user must be logged into the GDC in order to download 'Controlled-Access files' +* __File count by project__: Breaks down the files and cases by each project. +* __File count by authorization level__: Breaks down the files in the cart by authorization level. A user must be logged into the GDC in order to download 'Controlled-Access files'. -The cart also directs users how to download files in the cart. For large data files, it is recommended that the GDC Data Transfer Tool be used. +The cart also directs users how to download files in the cart. For large data files, it is recommended that the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool) be used. -### Cart Items +## Cart Items [![Cart](images/gdc-cart-items_v2.png)](images/gdc-cart-items_v2.png "Click to see the full image.") The Cart Items table shows the list of all the files that were added to the Cart. The table gives the folowing information for each file in the cart: * __Access__: Displays whether the file is open or controlled access. Users must login to the GDC Portal and have the appropriate credentials to access these files. -* __File Name__: Name of the file. Clicking the link will bring the user to the file summary page. -* __Cases__: How many cases does the file contain. Clicking the link will bring the user to the case summary page. -* __Project__: The Project that the file belongs to. Clicking the link will bring the user to the Project summary page. -* __Category__: Type of data -* __Format__: The file format -* __Size__: The size of the file -* __Annotations__: Whether there are any annotations +* __File Name__: Name of the file. Clicking the link will bring the user to the [File Summary Page](#file-summary-page). +* __Cases__: How many cases does the file contain. Clicking the link will bring the user to the [Case Summary Page](Exploration.md#case-summary-page). +* __Project__: The Project that the file belongs to. Clicking the link will bring the user to the [Project Summary Page](Projects.md#project-summary-page). +* __Category__: Type of data. +* __Format__: The file format. +* __Size__: The size of the file. +* __Annotations__: Whether there are any annotations. -## Download Options +# Download Options [![Cart](images/gdc-download-options_v2.png)](images/gdc-download-options_v2.png "Click to see the full image.") -There are a few buttons on the Cart page that allow users to download files. The following download options are available: +The following buttons on the Cart page allows users to download files that are related to the ones in the cart. The following download options are available: -* __Biospecimen__: Downloads bioscpecimen data related to files in the cart in either TSV or JSON format. -* __Clinical__: Downloads clinical data related to files in the cart in either TSV or JSON format. -* __Sample Sheet__: Downloads a tab-separated file which contains the associated case/sample IDs and sample type for each file in the cart. -* __Metadata__: GDC harmonized clinical, biospecimen, and file metadata associated with the files in the cart. -* __Download Manifest__: Download a manifest file for use with the GDC Data Transfer Tool to download files. A manifest file contains a list of the UUIDs that correspond to the files in the cart. -* __Download Cart__: Download the files in the Cart directly through the browser. Users have to be cautious of the amount of data in the cart since this option will not optimize bandwidth and will not provide resume capabilities. -* __SRA XML, MAGE-TAB__: This option is available in the GDC Legacy Archive only. It is used to download metadata files associated with the files in the cart. +* __Biospecimen:__ Downloads biospecimen data related to files in the cart in either TSV or JSON format. +* __Clinical:__ Downloads clinical data related to files in the cart in either TSV or JSON format. +* __Sample Sheet:__ Downloads a tab-separated file which contains the associated case/sample IDs and the sample type (Tumor/Normal) for each file in the cart. +* __Metadata:__ GDC harmonized clinical, biospecimen, and file metadata associated with the files in the cart. +* __Download:__ + * __Manifest:__ Download a manifest file for use with the GDC Data Transfer Tool to download files. A manifest file contains a list of the UUIDs that correspond to the files in the cart. + * __Cart:__ Download the files in the Cart directly through the browser. Users have to be cautious of the amount of data in the cart since this option will not optimize bandwidth and will not provide resume capabilities. +* __Remove from Cart:__ Remove all files or unauthorized files from the cart. +* __SRA XML, MAGE-TAB:__ This option is available in the GDC Legacy Archive only. It is used to download metadata files associated with the files in the cart. -The cart allows users to download up to 5 GB of data directly through the web browser. This is not recommended for downloading large volumes of data, in particular due to the absence of a retry/resume mechanism. For downloads over 5 GB we recommend using the GDC Data Transfer Tool. +The cart allows users to download up to 5 GB of data directly through the web browser. This is not recommended for downloading large volumes of data, in particular due to the absence of a retry/resume mechanism. For downloads over 5 GB we recommend using the `Download Manifest` button and download a manifest file that can be imported into [GDC Data Transfer Tool](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Getting_Started/). -__Note__: when downloading multiple files from the cart, they are automatically bundled into one single Gzipped (.tar.gz) file. +>__Note__: when downloading multiple files from the cart, they are automatically bundled into one single Gzipped (.tar.gz) file. -### GDC Data Transfer Tool +## [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool) The `Download Manifest` button will download a manifest file that can be imported into the GDC Data Transfer Tool. Below is an example of the contents of a manifest file used for download: @@ -73,14 +73,69 @@ c57673ac-998a-4a50-a12b-4cac5dc3b72e mdanderson.org_KIRP.MDA_RPPA_Core.mage-tab. The Manifest contains a list of the file UUIDs in the cart and can be used together with the GDC Data Transfer Tool to download all files. -Information on the GDC Data Transfer Tool is available in the [GDC Data Transfer Tool User's Guide](/node/8196/). +Information on the GDC Data Transfer Tool is available in the [GDC Data Transfer Tool User's Guide](../../Data_Transfer_Tool/Users_Guide/Getting_Started.md). + +# Controlled Files + +If a user tries to download a cart containing controlled files and without being authenticated, a pop-up will be displayed to offer the user either to download only open access files or to login into the GDC Data Portal through eRA Commons. See [Authentication](#Authentication) for details. + +Once a user is logged in, controlled files that they have access to can be downloaded. To download files from the portal, users must agree to the GDC and individual project Data Use Agreements by selecting the agreement checkbox on the Access Alert message. + +[![Cart Page](images/gdc-data-portal-download-cart_v2.png)](images/gdc-data-portal-download-cart_v2.png "Click to see the full image.") + +# Authentication + +The GDC Data Portal provides granular metadata for all datasets available in the GDC. Any user can see a listing of all available data files, including controlled-access files. The GDC Data Portal also allows users to download open-access files without logging in. However, downloading of controlled-access files is restricted to authorized users and requires authentication. + +## Logging into the GDC + +To login to the GDC, users must click on the `Login` button on the top right of the GDC Website. + +![Login](images/gdc-login.png) + +After clicking Login, users authenticate themselves using their eRA Commons login and password. If authentication is successful, the eRA Commons username will be displayed in the upper right corner of the screen, in place of the "Login" button. + +Upon successful authentication, GDC Data Portal users can: + +- See which controlled-access files they can access. +- Download controlled-access files directly from the GDC Data Portal. +- Download an authentication token for use with the GDC Data Transfer Tool or the GDC API. +- See controlled-access mutation data they can access. + +Controlled-access files are identified using a "lock" icon: + +[![GDC Data Portal Main Page](images/gdc-data-portal-controlled-files.png)](images/gdc-data-portal-controlled-files.png "Click to see the full image.") + +The rest of this section describes controlled data access features of the GDC Data Portal available to authorized users. For more information about open and controlled-access data, and about obtaining access to controlled data, see [Data Access Processes and Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). + +## User Profile + +After logging into the GDC Portal, users can view which projects they have access to by clicking the `User Profile` section in the dropdown menu in the top corner of the screen. + +[![User Profile Drop Down](images/gdc-user-profile-dropdown.png)](images/gdc-user-profile-dropdown.png "Click to see the full image.") + +Clicking this button shows the list of projects. + +[![User Profile](images/gdc-user-profile.png)](images/gdc-user-profile.png "Click to see the full image.") + +## GDC Authentication Tokens + +The GDC Data Portal provides authentication tokens for use with the GDC Data Transfer Tool or the GDC API. To download a token: + +1. Log into the GDC using your eRA Commons credentials. +2. Click the username in the top right corner of the screen. +3. Select the "Download token" option. + +![Token Download Button](images/gdc-data-portal-token-download.png) + +A new token is generated each time the `Download Token` button is clicked. -### Individual Files Download +For more information about authentication tokens, see [Data Security](../../Data/Data_Security/Data_Security.md#authentication-tokens). -Similar to the files page, each row contains a download button to download a particular file individually. +>__Note:__ The authentication token should be kept in a secure location, as it allows access to all data accessible by the associated user account. -## Controlled Files +## Logging Out -If a user tries to download a cart containing controlled files and without being authenticated, a pop-up will be displayed to offer the user either to download only open access files or to login into the GDC Data Portal through eRA Commons. See [Authentication](Authentication.md) for details. +To log out of the GDC, click the username in the top right corner of the screen, and select the Logout option. -[![Cart Page](images/gdc-data-portal-download-cart.png)](images/gdc-data-portal-download-cart.png "Click to see the full image.") +![Logout link](images/gdc-data-portal-token-download.png) diff --git a/docs/Data_Portal/Users_Guide/Custom_Set_Analysis.md b/docs/Data_Portal/Users_Guide/Custom_Set_Analysis.md index 6cfdc8d18..40231a40a 100644 --- a/docs/Data_Portal/Users_Guide/Custom_Set_Analysis.md +++ b/docs/Data_Portal/Users_Guide/Custom_Set_Analysis.md @@ -1,6 +1,6 @@ -# Custom Set Analysis +# Analysis -In addition to the [Exploration page](Exploration.md), the GDC Data Portal also has features used to save and compare sets of cases, genes, and mutations. These sets can either be generated with existing filters (e.g. males with lung cancer) or through custom selection (e.g. a user-generated list of case IDs). +In addition to the [Exploration Page](Exploration.md), the GDC Data Portal also has features used to save and compare sets of cases, genes, and mutations. These sets can either be generated with existing filters (e.g. males with lung cancer) or through custom selection (e.g. a user-generated list of case IDs). Note that saving a set only saves the type of entity included in the set. For example, a saved case set will not include filters that were applied to genes or mutations. Please be aware that your custom sets are deleted during each new GDC data release. You can export them and re-upload them in the "Manage Sets" link at the top right of the Portal. @@ -8,17 +8,53 @@ Note that saving a set only saves the type of entity included in the set. For ex Cohort sets are completely customizable and can be generated for cases, genes, or mutations using the following methods: -__Upload ID Set:__ This feature is available in the "Manage Sets" link at the top right of the Portal. Choose "Upload Set" and then select whether the set comprises cases, genes, or mutations. A set of IDs (IDs* or UUIDs) can then be uploaded in a text file or copied and pasted into the list of identifiers field along with a name identifying the set. Once the list of identifiers is uploaded, they are validated and grouped according to whether the identifier matched an existing GDC ID or did not match ("Unmatched"). +__Apply Filters in Exploration:__ Sets can be assembled using the existing filters in the Exploration page. They can be saved by choosing the "Save/Edit Case Set" button under the pie charts for case sets. This will prompt a decision to save as new case set. The same can be done for both gene and mutation filters, and can be applied and saved in the Genes and Mutations tab, respectively. + +[![Exploration Set](images/GDC-ExplorationSet-Cohort_v2.png)](images/GDC-ExplorationSet-Cohort_v2.png "Click to see the full image.") + +__Upload ID Set:__ This feature is available in the "Manage Sets" link at the top right of the Portal. Choose "Upload Set" and then select whether the set comprises cases, genes, or mutations. A set of IDs or UUIDs can then be uploaded in a text file or copied and pasted into the list of identifiers field along with a name identifying the set. Once the list of identifiers is uploaded, the IDs are validated and grouped according to whether or not the identifier matched an existing GDC ID. [![Upload Set](images/GDC-UploadSet-Cohort_v2.png)](images/GDC-UploadSet-Cohort_v2.png "Click to see the full image.") -\* This is referred to as a `submitter_id` in the GDC API, which is a non-UUID identifier such as a TCGA barcode. +### Upload Case Set -__Apply Filters in Exploration:__ Sets can be assembled using the existing filters in the Exploration page. They can be saved by choosing the "Save/Edit Case Set" button under the pie charts for case sets. This will prompt a decision to save as new case set. +In the `Cases` filters panel, instead of supplying cases one-by-one, users can supply a list of cases. Clicking on the `Upload Case Set` button will launch a dialog as shown below, where users can supply a list of cases or upload a comma-separated text file of cases. -Similarly, gene and mutation filters can be applied and saved in the Exploration page in the Genes and Mutations tab, respectively. +[![Upload Case Set](images/gdc-exploration-case-set.png)](images/gdc-exploration-case-set.png "Click to see the full image.") -[![Exploration Set](images/GDC-ExplorationSet-Cohort_v2.png)](images/GDC-ExplorationSet-Cohort_v2.png "Click to see the full image.") +After supplying a list of cases, a table below will appear which indicates whether the case was found. + +[![Upload Case Set Validation](images/gdc-exploration-case-set-validation.png)](images/gdc-exploration-case-set-validation.png "Click to see the full image.") + +Clicking on `Submit` will filter the results in the Exploration Page by those cases. + +[![Upload Case Set Results](images/case-set-filter_v3.png)](images/case-set-filter_v2.png "Click to see the full image.") + +### Upload Gene Set + +In the `Genes` filters panel, instead of supplying genes one-by-one, users can supply a list of genes. Clicking on the `Upload Gene Set` button will launch a dialog as shown below, where users can supply a list of genes or upload a comma-separated text file of genes. + +[![Upload Gene Set](images/Exploration-Upload-Gene-Set.png)](images/Exploration-Upload-Gene-Set.png "Click to see the full image.") + +After supplying a list of genes, a table below will appear which indicates whether the gene was found. + +[![Upload Gene Set Validation](images/Exploration-Upload-Gene-Set-Validation.png)](images/Exploration-Upload-Gene-Set-Validation.png "Click to see the full image.") + +Clicking on `Submit` will filter the results in the Exploration Page by those genes. + +### Upload Mutation Set + +In the `Mutations` filters panel, instead of supplying mutation id's one-by-one, users can supply a list of mutations. Clicking on the `Upload Mutation Set` button will launch a dialog as shown below, where users can supply a list of mutations or upload a comma-separated text file of mutations. + +[![Upload Case Set](images/gdc-exploration-mutation-set.png)](images/gdc-exploration-mutation-set.png "Click to see the full image.") + +After supplying a list of mutations, a table below will appear which indicates whether the mutation was found. + +[![Upload Case Set Validation](images/gdc-exploration-mutation-set-validation.png)](images/gdc-exploration-mutation-set-validation.png "Click to see the full image.") + +Clicking on `Submit` will filter the results in the Exploration Page by those mutations. + +[![Upload Case Set Results](images/mutation-set-filter.png)](images/mutation-set-filter.png "Click to see the full image.") ## Analysis Page Clicking on the `Analysis` button in the top toolbar will launch the Analysis Page which displays the various options available for comparing saved sets. @@ -27,8 +63,8 @@ Clicking on the `Analysis` button in the top toolbar will launch the Analysis Pa There are two tabs on this page: -* __Launch Analysis__: Where users can select either to do `Set Operations` or `Cohort Comparison` -* __Results__: Where users can view the results of current or previous set analyses +* __Launch Analysis__: Where users can select either to do `Set Operations` or `Cohort Comparison`. +* __Results__: Where users can view the results of current or previous set analyses. ## Analysis Page: Set Operations @@ -38,20 +74,19 @@ Up to three sets of the same set type can be compared and exported based on comp * __Venn Diagram:__ Visually displays the overlapping items included within the three sets. Subsets based on overlap can be selected by clicking one or many sections of the Venn diagram. As sections of the Venn Diagram become highlighted in blue, their corresponding row in the overlap table becomes highlighted. -* __Summary Table:__ Displays the alias, item type, and name for each set included in this analysis - -* __Overlap Table:__ Displays the number of overlapping items with set operations rather than a visual diagram. Subsets can be selected by checking boxes in the "Select" column, which will highlight the corresponding section of the Venn Diagram. As rows are selected, the "Union of selected sets" row is populated. Each row has an option to save the subset as a new set, export the set as a TSV, or view files in the repository. The links that correspond to the number of items in each row will open the cohort in the Exploration page. +* __Summary Table:__ Displays the alias, item type, and name for each set included in this analysis. +* __Overlap Table:__ Displays the number of overlapping items with set operations rather than a visual diagram. Subsets can be selected by checking boxes in the "Select" column, which will highlight the corresponding section of the Venn Diagram. As rows are selected, the "Union of selected sets" row is populated. Each row has an option to save the subset as a new set, export the set as a TSV, or view files in the repository. The links that correspond to the number of items in each row will open the cohort in the Exploration Page. ## Analysis Tab: Cohort Comparison The "Cohort Comparison" analysis displays a series of graphs and tables that demonstrate the similarities and differences between two case sets. The following features are displayed for each two sets: -* A key detailing the number of cases in each cohort and the color that represents each (blue/gold) +* A key detailing the number of cases in each cohort and the color that represents each (blue/gold). -* A Venn diagram, which shows the overlap between the two cohorts. The Venn diagram can be opened in a 'Set Operations' tab by choosing "Open venn diagram in new tab" +* A Venn diagram, which shows the overlap between the two cohorts. The Venn diagram can be opened in a 'Set Operations' tab by choosing "Open Venn diagram in new tab". -* A selectable [survival plot](Projects/#survival-analysis) that compares both sets with information about the percentage of represented cases +* A selectable [survival plot](Exploration.md#survival-analysis) that compares both sets with information about the percentage of represented cases. [![Top Cohort](images/GDC-Cohort-Comparison-Top.png)](images/GDC-Cohort-Comparison-Top.png "Click to see the full image.") diff --git a/docs/Data_Portal/Users_Guide/Exploration.md b/docs/Data_Portal/Users_Guide/Exploration.md index 4d571c458..09aa1a5ce 100644 --- a/docs/Data_Portal/Users_Guide/Exploration.md +++ b/docs/Data_Portal/Users_Guide/Exploration.md @@ -1,6 +1,6 @@ # Exploration -The Exploration page allows users to explore data in the GDC using advanced filters/facets, which includes those on a gene and mutation level. Users choose filters on specific `Cases`, `Genes`, and/or `Mutations` on the left of this page and then can visualize these results on the right. The Gene/Mutation data for these visualizations comes from the Open-Access MAF files on the GDC Portal. +The Exploration Page allows users to explore data in the GDC using advanced filters/facets, which includes those on a gene and mutation level. Users choose filters on specific `Cases`, `Genes`, and/or `Mutations` on the left of this page and then can visualize these results on the right. The Gene/Mutation data for these visualizations comes from the Open-Access MAF files on the GDC Data Portal. [![Exploration Page](images/GDC-Exploration-Page_v5.png)](images/GDC-Exploration-Page_v4.png "Click to see the full image.") @@ -15,34 +15,19 @@ The first tab of filters is for cases in the GDC. These criteria limit the results only to specific cases within the GDC. The default filters available are: -* __Case__: Specify individual cases using submitter ID (barcode), UUID, or list of Cases ('Case Set') -* __Case Submitter ID__: Search for cases using a part (prefix) of the submitter ID (barcode). -* __Primary Site__: Anatomical site of the cancer under investigation or review. -* __Program__: A cancer research program, typically consisting of multiple focused projects. -* __Project__: A cancer research project, typically part of a larger cancer research program. -* __Disease Type__: Type of cancer studied. -* __Gender__: Gender of the patient. -* __Age at Diagnosis__: Patient age at the time of diagnosis. -* __Vital Status__: Indicator of whether the patient was living or deceased at the date of last contact. -* __Days to Death__: Number of days from date of diagnosis to death of the patient. -* __Race__: Race of the patient. -* __Ethnicity__: Ethnicity of the patient. +* __Case:__ Specify individual cases using submitter ID (barcode), UUID, or list of Cases ('Case Set'). +* __Primary Site:__ Anatomical site of the cancer under investigation or review. +* __Program:__ A cancer research program, typically consisting of multiple focused projects. +* __Project:__ A cancer research project, typically part of a larger cancer research program. +* __Disease Type:__ Type of cancer studied. +* __Gender:__ Gender of the patient. +* __Age at Diagnosis:__ Patient age at the time of diagnosis. +* __Vital Status:__ Indicator of whether the patient was living or deceased at the date of last contact. +* __Days to Death:__ Number of days from date of diagnosis to death of the patient. +* __Race:__ Race of the patient. +* __Ethnicity:__ Ethnicity of the patient. -In addition to the defaults, users can add additional case filters by clicking on the link titled 'Add a Case Filter' - -#### Upload Case Set - -In the `Cases` filters panel, instead of supplying cases one-by-one, users can supply a list of cases. Clicking on the `Upload Case Set` button will launch a dialog as shown below, where users can supply a list of cases or upload a comma-separated text file of cases. - -[![Upload Case Set](images/gdc-exploration-case-set.png)](images/gdc-exploration-case-set.png "Click to see the full image.") - -After supplying a list of cases, a table below will appear which indicates whether the case was found. - -[![Upload Case Set Validation](images/gdc-exploration-case-set-validation.png)](images/gdc-exploration-case-set-validation.png "Click to see the full image.") - -Clicking on `Submit` will filter the results in the Exploration Page by those cases. - -[![Upload Case Set Results](images/case-set-filter_v3.png)](images/case-set-filter_v2.png "Click to see the full image.") +In addition to the defaults, users can add additional case filters by clicking on the link titled ["Add a Case Filter"](Repository.md#adding-custom-facets). ### Gene Filters @@ -52,25 +37,13 @@ The second tab of filters is for genes affected by mutations in the GDC. The second tab of filters are for specific genes. Users can filter by: -* __Gene__ - Entering in a specific Gene Symbol, ID, or list of Genes ('Gene Set') -* __Biotype__ - Classification of the type of gene according to Ensembl. The biotypes can be grouped into protein coding, pseudogene, long noncoding and short noncoding. Examples of biotypes in each group are as follows: - * __Protein coding__: IGC gene, IGD gene, IG gene, IGJ gene, IGLV gene, IGM gene, IGV gene, IGZ gene, nonsense mediated decay, nontranslating CDS, non stop decay, polymorphic pseudogene, TRC gene, TRD gene, TRJ gene. - * __Pseudogene__: disrupted domain, IGC pseudogene, IGJ pseudogene, IG pseudogene, IGV pseudogene, processed pseudogene, transcribed processed pseudogene, transcribed unitary pseudogene, transcribed unprocessed pseudogene, translated processed pseudogene, TRJ pseudogene, unprocessed pseudogene - * __Long noncoding__: 3prime overlapping ncrna, ambiguous orf, antisense, antisense RNA, lincRNA, ncrna host, processed transcript, sense intronic, sense overlapping - * __Short noncoding__: miRNA, miRNA_pseudogene, miscRNA, miscRNA pseudogene, Mt rRNA, Mt tRNA, rRNA, scRNA, snlRNA, snoRNA, snRNA, tRNA, tRNA_pseudogene -* __Is Cancer Gene Census__ - Whether or not a gene is part of [The Cancer Gene Census](http://cancer.sanger.ac.uk/census/) - -#### Upload Gene Set - -In the `Genes` filters panel, instead of supplying genes one-by-one, users can supply a list of genes. Clicking on the `Upload Gene Set` button will launch a dialog as shown below, where users can supply a list of genes or upload a comma-separated text file of genes. - -[![Upload Gene Set](images/Exploration-Upload-Gene-Set.png)](images/Exploration-Upload-Gene-Set.png "Click to see the full image.") - -After supplying a list of genes, a table below will appear which indicates whether the gene was found. - -[![Upload Gene Set Validation](images/Exploration-Upload-Gene-Set-Validation.png)](images/Exploration-Upload-Gene-Set-Validation.png "Click to see the full image.") - -Clicking on `Submit` will filter the results in the Exploration Page by those genes. +* __Gene:__ Specify a Gene Symbol, ID, or list of Genes ('Gene Set'). +* __Biotype:__ Classification of the type of gene according to Ensembl. The biotypes can be grouped into protein coding, pseudogene, long noncoding and short noncoding. Examples of biotypes in each group are as follows: + * __Protein coding:__ IGC gene, IGD gene, IG gene, IGJ gene, IGLV gene, IGM gene, IGV gene, IGZ gene, nonsense mediated decay, nontranslating CDS, non stop decay, polymorphic pseudogene, TRC gene, TRD gene, TRJ gene, TRV gene. + * __Pseudogene:__ disrupted domain, IGC pseudogene, IGJ pseudogene, IG pseudogene, IGV pseudogene, processed pseudogene, transcribed processed pseudogene, transcribed unitary pseudogene, transcribed unprocessed pseudogene, translated processed pseudogene, translated unprocessed pseudogene, TRJ pseudogene, TRV pseudogene, unprocessed pseudogene. + * __Long noncoding:__ 3 prime overlapping ncrna, ambiguous orf, antisense, antisense RNA, lincRNA, macro lincRNA, ncrna host, processed transcript, sense intronic, sense overlapping. + * __Short noncoding:__ miRNA, miRNA pseudogene, miscRNA, miscRNA pseudogene, Mt rRNA, Mt tRNA, rRNA, scRNA, snlRNA, snoRNA, snRNA, tRNA, tRNA pseudogene, vaultRNA. +* __Is Cancer Gene Census:__ Whether or not a gene is part of [The Cancer Gene Census](http://cancer.sanger.ac.uk/census/). ### Mutation Filters @@ -80,169 +53,329 @@ The final tab of filters is for specific mutations. Users can filter by: -* __Mutation__ - Unique ID for that mutation. Users can use the following: +* __Mutation:__ Unique ID for that mutation. Users can use the following: * UUID - c7c0aeaa-29ed-5a30-a9b6-395ba4133c63 * DNA Change - chr12:g.121804752delC * COSMIC ID - COSM202522 - * List of any mutation UUIDs or DNA Change id's ('Mutation Set') -* __Consequence Type__ - Consequence type of this variation; [sequence ontology](http://www.sequenceontology.org/) terms -* __Impact__ - A subjective classification of the severity of the variant consequence. This information comes from the [Ensembl VEP](http://www.ensembl.org/info/genome/variation/predicted_data.html). -* __Type__ - A general classification of the mutation -* __Variant Caller__ - The variant caller used to identify the mutation -* __COSMIC ID__ - The identifier of the gene or mutation maintained in COSMIC, the Catalogue Of Somatic Mutations In Cancer -* __dbSNP rs ID__ - The reference SNP identifier maintained in dbSNP + * List of any mutation UUIDs or DNA Change id's ('Mutation Set'). +* __Consequence Type:__ Consequence type of this variation; [sequence ontology](http://www.sequenceontology.org/) terms. +* __Impact:__ A subjective classification of the severity of the variant consequence. These scores are determined using the three following tools: + * __[Ensembl VEP](http://useast.ensembl.org/info/genome/variation/prediction/index.html):__ + * __HIGH (H):__ The variant is assumed to have high (disruptive) impact in the protein, probably causing protein truncation, loss of function or triggering nonsense mediated decay. + * __MODERATE (M):__ A non-disruptive variant that might change protein effectiveness. + * __LOW (L):__ Assumed to be mostly harmless or unlikely to change protein behavior. + * __MODIFIER (MO):__ Usually non-coding variants or variants affecting non-coding genes, where predictions are difficult or there is no evidence of impact. + * __[PolyPhen](http://genetics.bwh.harvard.edu/pph/):__ + * __probably damaging (PR):__ It is with high confidence supposed to affect protein function or structure. + * __possibly damaging (PO):__ It is supposed to affect protein function or structure. + * __benign (BE):__ Most likely lacking any phenotypic effect. + * __unknown (UN):__ When in some rare cases, the lack of data does not allow PolyPhen to make a prediction. + * __[SIFT](http://sift.jcvi.org/):__ + * __tolerated:__ Not likely to have a phenotypic effect. + * __tolerated_low_confidence:__ More likely to have a phenotypic effect than 'tolerated'. + * __deleterious:__ Likely to have a phenotypic effect. + * __deleterious_low_confidence:__ Less likely to have a phenotypic effect than 'deleterious'. +* __Type:__ A general classification of the mutation. +* __Variant Caller:__ The variant caller used to identify the mutation. +* __COSMIC ID:__ This option will filter out only mutations with a COSMIC ID. +* __dbSNP rs ID:__ This option will filter out only mutations with a SNP identifer maintained in dbSNP. + +## Results -#### Upload Mutation Set +As users add filters to the data on the Exploration Page, the Results section will automatically be updated. Results are divided into different tabs: `Cases`, `Genes`, `Mutations`, and `OncoGrid`. -In the `Mutations` filters panel, instead of supplying mutation id's one-by-one, users can supply a list of mutations. Clicking on the `Upload Mutation Set` button will launch a dialog as shown below, where users can supply a list of mutations or upload a comma-separated text file of mutations. +To illustrate these tabs, Case, Gene, and Mutation filters have been chosen (Genes in the Cancer Gene Census, that have a missense variant for the TCGA-BRCA project) and a description of what each tab displays follows. -[![Upload Case Set](images/gdc-exploration-mutation-set.png)](images/gdc-exploration-case-set.png "Click to see the full image.") +### Cases -After supplying a list of mutations, a table below will appear which indicates whether the mutation was found. +The `Cases` tab gives an overview of all the cases/patients who correspond to the filters chosen (Cohort). -[![Upload Case Set Validation](images/gdc-exploration-mutation-set-validation.png)](images/gdc-exploration-case-set-validation.png "Click to see the full image.") +[![Exploration Case Example](images/Exploration-Case-Example_v3.png)](images/Exploration-Case-Example_v2.png "Click to see the full image.") -Clicking on `Submit` will filter the results in the Exploration Page by those mutations. +The top of this section contains a few pie graphs with categorical information regarding the Primary Site, Project, Disease Type, Gender, and Vital Status. -[![Upload Case Set Results](images/mutation-set-filter.png)](images/case-set-filter.png "Click to see the full image.") +Below these pie charts is a tabular view of cases, which can be exported, sorted and saved using the buttons on the right and includes the following information: -## Results +* __Case ID (Submitter ID):__ The Case ID / submitter ID of that case/patient (i.e. TCGA Barcode). +* __Project:__ The study name for the project for which the case belongs. +* __Primary Site:__ The primary site of the cancer/project. +* __Gender:__ The gender of the case. +* __Files:__ The total number of files available for that case. +* __Available Files per Data Category:__ Seven columns displaying the number of files available in each of the seven data categories. These link to the files for the specific case. +* __# Mutations:__ The number of SSMs (simple somatic mutations) detected in that case. +* __# Genes:__ The number of genes affected by mutations in that case. +* __Slides:__ The total number of slides available for that case. For more information about [slide images](Repository.md#image-viewer-features). -As users add filters to the data on the Exploration Page, the Results section will automatically be updated. Results are divided into different tabs: `Cases`, `Genes`, `Mutations`, and `OncoGrid`. +>__Note__: By default, the UUID is not displayed on summary page tables. You can display the UUID by clicking on the icon with 3 parallel lines and checking the UUID option. -To illustrate these tabs, Case, Gene, and Mutation filters have been chosen ( Genes in the Cancer Gene Census, that have HIGH VEP Impact for the TCGA-BRCA project) and a description of what each tab displays follows. +### Case Summary Page +The Case Summary Page displays case details including the project and disease information, data files that are available for that case, and the experimental strategies employed. A button in the top-right corner of the page allows the user to add all files associated with the case to the file [cart](Cart.md). -#### Cases +[![Case Page](images/gdc-case-entity-page.png)](images/gdc-case-entity-page.png "Click to see the full image.") -The `Cases` tab gives an overview of all the cases/patients who correspond to the filters chosen (Cohort). +#### Clinical and Biospecimen Information -[![Exploration Case Example](images/Exploration-Case-Example_v3.png)](images/Exploration-Case-Example_v2.png "Click to see the full image.") +The page also provides clinical and biospecimen information about that case. Links to export clinical and biospecimen information in JSON format are provided. -The top of this section contains a few pie graphs with categorical information regarding the Primary Site, Project, Disease Type, Gender, and Vital Status. +[![Case Page, Clinical and Biospecimen](images/gdc-case-clinical-biospecimen_v3.png)](images/gdc-case-clinical-biospecimen_v3.png "Click to see the full image.") -Below these pie charts is a tabular view of cases (which can be exported, sorted and saved using the buttons on the right), that includes the following information: +For clinical records that support multiple records of the same type (Diagnoses, Family Histories, or Exposures), a UUID of the record is provided at the top of the corresponding tab. -* __Case ID (Submitter ID):__ The Case ID / submitter ID of that case/patient (i.e. TCGA Barcode) -* __Project:__ The study name for the project for which the case belongs -* __Primary Site:__ The primary site of the cancer/project -* __Gender:__ The gender of the case -* __Files:__ The total number of files available for that case -* __Available Files per Data Category:__ Five columns displaying the number of files available in each of the five data categories. These link to the files for the specific case. -* __# Mutations:__ The number of SSMs (simple somatic mutations) detected in that case -* __# Genes:__ The number of genes affected by mutations in that case -* __Slides:__ The total number of slides available for that case. +#### Biospecimen Search -*Note: By default, the Case UUID is not displayed. You can display the UUID of the case, but clicking on the icon with 3 parallel lines, and choose to display the Case UUID* +A search filter just below the biospecimen section can be used to find and filter biospecimen data. The wildcard search will highlight entities in the tree that match the characters typed. This will search both the case submitter ID, as well as the additional metadata for each entity. For example, searching 'Primary Tumor' will highlight samples that match that type. -#### Genes +[![Biospecimen Search](images/gdc_case_biospecimen_search_v3.png)](images/gdc_case_biospecimen_search_v3.png "Click to see the full image.") + +#### Most Frequent Somatic Mutations for a Case + +The Case Entity Page also lists the mutations found in that particular case. + +[![Case Page](images/gdc-case-entity-mfm.png)](images/gdc-case-entity-mfm.png "Click to see the full image.") + +For more information, please go to the [Most Frequent Somatic Mutation](#most-frequent-somatic-mutations) section. + +### Genes The `Genes` tab will give an overview of all the genes that match the criteria of the filters (Cohort). -[![Exploration Gene Example](images/Exploration-Gene-Example.png)](images/Exploration-Gene-Example.png "Click to see the full image.") +[![Exploration Gene Example](images/Exploration-Gene-Example2.png)](images/Exploration-Gene-Example2.png "Click to see the full image.") -The top of this section contains a survival plot of all the cases within the specified Exploration page search, in addition to a bar graph of the most frequently mutated genes. Hovering over each bar in the plot will display information about the percentage of cases affected. Users may choose to download the underlying data in JSON or TSV format or an image of the graph in SVG or PNG format by clicking the `download` icon at the top of each graph. +The top of this tab contains a bar graph of the most frequently mutated genes. Hovering over each bar in the plot will display information about the percentage of cases affected. In addition, this section contains a survival curve. The survival curve is calculated using the Kaplan-Meier estimator based on all cases with survival data within the specified Exploration Page search. For more information on how these values are determined, please go to the [Survival Analysis](#survival-analysis) section. Users may choose to download the underlying data in JSON or TSV format or an image of the graph in SVG or PNG format by clicking the `download` icon at the top of each graph. Below these graphs is a tabular view of the genes affected, which includes the following information: -* __Symbol:__ The gene symbol, which links to the Gene Summary Page -* __Name:__ Full name of the gene -* __Cytoband:__ The location of the mutation on the chromosome in terms of Giemsa-stained samples. -* __Type:__ The type of gene -* __# Affected Cases in Cohort:__ The number of cases affected in the Cohort -* __# Affected Cases Across all Projects:__ The number of cases within all the projects in the GDC that contain a mutation on this gene. Clicking the red arrow will display the cases broken down by project -* __# Mutations:__ The number of SSMs (simple somatic mutations) detected in that gene -* __Annotations:__ Includes a COSMIC symbol if the gene belongs to [The Cancer Gene Census](http://cancer.sanger.ac.uk/census/) -* __Survival Analysis:__ An icon that, when clicked, will plot the survival rate between cases in the project with mutated and non-mutated forms of the gene +* __Symbol:__ The gene symbol, which links to the Gene Summary Page. +* __Name:__ Full name of the gene. +* __# SSM Affected Cases in Cohort:__ The number of cases affected by SSMs (simple somatic mutations) in the Cohort. +* __# SSM Affected Cases Across the GDC:__ The number of cases within all the projects in the GDC that contain a mutation on this gene. Clicking the red arrow will display the cases broken down by project. +* __# CNV Gain:__ The number of CNV (copy number variation) events detected in that gene which resulted in an increase (gain) in the gene's copy number. +* __# CNV Loss:__ The number of CNV events detected in that gene which resulted in a decrease (loss) in the gene's copy number. +* __# Mutations:__ The number of SSMs (simple somatic mutations) detected in that gene. +* __Annotations:__ Includes a COSMIC symbol if the gene belongs to [The Cancer Gene Census](http://cancer.sanger.ac.uk/census/). +* __Survival:__ An icon that, when clicked, will plot the survival rate between cases in the project with mutated and non-mutated forms of the gene. -#### Survival Analysis +### Gene Summary Page -Survival analysis is used to analyze the occurrence of event data over time. In the GDC, survival analysis is performed on the mortality of the cases. Survival analysis requires: +Gene Summary Pages describe each gene with mutation data and provides results related to the analyses that are performed on these genes. -* Data on the time to a particular event (days to death or last follow up) - * Fields: __diagnoses.days_to_death__ and __diagnoses.days_to_last_follow_up__ -* Information on whether the event has occurred (alive/deceased) - * Fields: __diagnoses.vital_status__ -* Data split into different categories or groups (i.e. gender, etc.) - * Fields: __demographic.gender__ +The summary section of the Gene Page contains the following information: -The survival analysis in the GDC uses a Kaplan-Meier estimator: +[![Gene Summary](images/GDC-Gene-Summary.png)](images/GDC-Gene-Summary.png "Click to see the full image.") -[![Kaplan-Meier Estimator](images/gdc-kaplan-meier-estimator.png)](images/gdc-kaplan-meier-estimator "Click to see the full image.") +* __Symbol:__ The gene symbol. +* __Name:__ Full name of the gene. +* __Synonyms:__ Synonyms of the gene name or symbol, if available. +* __Type:__ A broad classification of the gene. +* __Location:__ The chromosome on which the gene is located and its coordinates. +* __Strand:__ If the gene is located on the forward (+) or reverse (-) strand. +* __Description:__ A description of gene function and downstream consequences of gene alteration. +- __Annotation:__ A notation/link that states whether the gene is part of [The Cancer Gene Census](http://cancer.sanger.ac.uk/census/). -Where: +#### External References - * S(ti) is the estimated survival probability for any particular one of the t time periods - * ni is the number of subjects at risk at the beginning of time period ti - * and di is the number of subjects who die during time period ti +A list with links that lead to external databases with additional information about each gene is displayed here. These external databases include: -The table below is an example data set to calculate survival for a set of seven cases: +* [Entrez](https://www.ncbi.nlm.nih.gov/gquery/) +* [Uniprot](http://www.uniprot.org/) +* [Hugo Gene Nomenclature Committee](http://www.genenames.org/) +* [Online Mendelian Inheritance in Man](https://www.omim.org/) +* [Ensembl](http://may2015.archive.ensembl.org/index.html) -[![Sample Survival Analysis Table](images/gdc-sample-survival-table.png)](images/gdc-sample-survival-table.png "Click to see the full image.") +#### Cancer Distribution -The calculated cumulated survival probability can be plotted against the interval to obtain a survival plot like the one shown below. +A table and two bar graphs show how many cases are affected by mutations and copy number variation within the gene as a ratio and percentage. Each row/bar represents the number of cases for each project. The final column in the table lists the number of unique mutations observed on the gene for each project. -[![Sample Survival Analysis Plot](images/gdc-survival-plot.png)](images/gdc-survival-plot.png "Click to see the full image.") +[![Cancer Distribution](images/GDC-Gene-CancerDist.png)](images/GDC-Gene-CancerDist.png "Click to see the full image.") + +#### Protein Viewer + +Mutations and their frequency across cases are mapped to a graphical visualization of protein-coding regions with a lollipop plot. Pfam domains are highlighted along the x-axis to assign functionality to specific protein-coding regions. The bottom track represents a view of the full gene length. Different transcripts can be selected by using the drop-down menu above the plot. + +[![Protein Plot](images/GDC-Gene-ProteinGraph.png)](images/GDC-Gene-ProteinGraph.png "Click to see the full image.") + +The panel to the right of the plot allows the plot to be filtered by mutation consequences or impact. The plot will dynamically change as filters are applied. Mutation consequence and impact is denoted in the plot by color. + +>__Note__: The impact filter on this panel will not display the annotations for alternate transcripts. + +The plot can be viewed at different zoom levels by clicking and dragging across the x-axis, clicking and dragging across the bottom track, or double clicking the pfam domain IDs. The `Reset` button can be used to bring the zoom level back to its original position. The plot can also be exported as a PNG image, SVG image or as JSON formatted text by choosing the `Download` button above the plot. + +#### Most Frequent Somatic Mutations + +The 20 most frequent mutations in the gene are displayed as a bar graph that indicates the number of cases that share each mutation. + +[![Gene MFM](images/GDC-Gene-MFM.png)](images/GDC-Gene-MFM.png "Click to see the full image.") + +A table is displayed below that lists information about each mutation including: -#### Mutations +* __DNA Change:__ The chromosome and starting coordinates of the mutation are displayed along with the nucleotide differences between the reference and tumor allele. +* __Type:__ A general classification of the mutation. +* __Consequences:__ The effects the mutation has on the gene coding for a protein (i.e. synonymous, missense, non-coding transcript). +* __# Affected Cases in Gene:__ The number of affected cases, expressed as number across all mutations within the selected Gene. +* __# Affected Cases Across GDC:__ The number of affected cases, expressed as number across all projects. Choosing the arrow next to the percentage will expand the selection with a breakdown of each affected project. +* __Impact:__ A [subjective classification](#mutation-filters) of the severity of the variant consequence. This is determined by three different tools: + * __[Ensembl VEP](http://useast.ensembl.org/info/genome/variation/prediction/index.html)__ + * __[PolyPhen](http://genetics.bwh.harvard.edu/pph/)__ + * __[SIFT](http://sift.jcvi.org/)__ -The `Mutations` tab will give an overview of all the mutations who match the criteria of the filters (Cohort). + +Clicking the `Open in Exploration` button will navigate the user to the Exploration Page, showing the same results in the table (mutations filtered by the gene). + +### Mutations + +The `Mutations` tab will give an overview of all the mutations that match the criteria of the filters (Cohort). + +Open-access mutation data is displayed by defualt. To access controlled access mutations, users must apply to the correct data access authority, be granted access, and login to the portal. If a user is logged in and has been granted access to controlled-access mutations, they will be integrated with open-access mutations throughout the portal visualizations and counts. [![Exploration Mutation Example](images/Exploration-Mutation-Example.png)](images/Exploration-Mutation-Example.png "Click to see the full image.") -At the top of this tab is a survival plot of all the cases within the specified exploration page filters. +At the top of this tab contains a survival curve. The survival curve is calculated using the Kaplan-Meier estimator based on all cases with survival data within the specified Exploration Page search. For more information on how these values are determined, please go to the [Survival Analysis](#survival-analysis) section. Users may choose to download the underlying data in JSON or TSV format or an image of the graph in SVG or PNG format by clicking the `download` icon at the top of the graph. A table is displayed below that lists information about each mutation: -* __DNA Change:__ The chromosome and starting coordinates of the mutation are displayed along with the nucleotide differences between the reference and tumor allele -* __Type:__ A general classification of the mutation -* __Consequences:__ The effects the mutation has on the gene coding for a protein (i.e. synonymous, missense, non-coding transcript). A link to the Gene Summary Page for the gene affected by the mutation is included -* __# Affected Cases in Cohort:__ The number of affected cases in the Cohort as a fraction and as a percentage -* __# Affected Cases in Across all Projects:__ The number of affected cases, expressed as number across all projects. This information comes from the [Ensembl VEP](http://www.ensembl.org/info/genome/variation/predicted_data.html). Choosing the arrow next to the percentage will display a breakdown of each affected project -* __Impact (VEP):__ A subjective classification of the severity of the variant consequence. The categories are: - * __HIGH (H)__: The variant is assumed to have high (disruptive) impact in the protein, probably causing protein truncation, loss of function, or triggering nonsense mediated decay - * __MODERATE (M)__: A non-disruptive variant that might change protein effectiveness - * __LOW (L)__: Assumed to be mostly harmless or unlikely to change protein behavior - * __MODIFIER (MO)__: Usually non-coding variants or variants affecting non-coding genes, where predictions are difficult or there is no evidence of impact -* __Survival Analysis:__ An icon that when clicked, will plot the survival rate between the gene's mutated and non-mutated cases +* __DNA Change:__ The chromosome and starting coordinates of the mutation are displayed along with the nucleotide differences between the reference and tumor allele. +* __Type:__ A general classification of the mutation. +* __Consequences:__ The effects the mutation has on the gene coding for a protein (i.e. synonymous, missense, non-coding transcript). A link to the [Gene Summary Page](Exploration.md#gene-summary-page) for the gene affected by the mutation is included. +* __# Affected Cases in Cohort:__ The number of affected cases in the Cohort as a fraction and as a percentage. +* __# Affected Cases in Across all Projects:__ The number of affected cases, expressed as number across all projects. Clicking the arrow next to the percentage will display a breakdown of each affected project. +* __Impact:__ A [subjective classification](#mutation-filters) of the severity of the variant consequence. This is determined by three different tools: + * __[Ensembl VEP](http://useast.ensembl.org/info/genome/variation/prediction/index.html)__ + * __[PolyPhen](http://genetics.bwh.harvard.edu/pph/)__ + * __[SIFT](http://sift.jcvi.org/)__ +* __Survival:__ An icon that when clicked, will plot the survival rate between the gene's mutated and non-mutated cases. + +### Mutation Summary Page + + The Mutation Summary Page contains information about one somatic mutation and how it affects the associated gene. Each mutation is identified by its chromosomal position and nucleotide-level change. + + [![Mutation Summary](images/GDC-Mutation-Summary.png)](images/GDC-Mutation-Summary.png "Click to see the full image.") + + - __UUID:__ A unique identifier (UUID) for this mutation. + - __DNA Change:__ Denotes the chromosome number, position, and nucleotide change of the mutation. + - __Type:__ A broad categorization of the mutation. + - __Reference Genome Assembly:__ The reference genome in which the chromosomal position refers to. + - __Allele in the Reference Assembly:__ The nucleotide(s) that compose the site in the reference assembly. + - __Functional Impact:__ A subjective classification of the severity of the variant consequence. + +#### External References + + A separate panel contains links to databases that contain information about the specific mutation. These include [dbSNP](https://www.ncbi.nlm.nih.gov/projects/SNP/) and [COSMIC](http://cancer.sanger.ac.uk/cosmic). + +#### Consequences + +The consequences of the mutation are displayed in a table. The set of consequence terms, defined by the [Sequence Ontology](http://www.sequenceontology.org). -*Note: By default, the Mutation UUID is not displayed. You can display the UUID of the case, but clicking on the icon with 3 parallel lines, and choose to display the Mutation UUID* + [![Mutation Consequences](images/GDC-Mutation-Consequences.png)](images/GDC-Mutation-Consequences.png "Click to see the full image.") -#### OncoGrid +The fields that describe each consequence are listed below: -The Exploration page includes an OncoGrid plot of the cases with the most mutations, for the top 50 mutated genes affected by high impact mutations. Genes displayed on the left of the grid (Y-axis) correspond to individual cases on the bottom of the grid (X-axis). + * __Gene:__ The symbol for the affected gene. + * __AA Change:__ Details on the amino acid change, including compounds and position, if applicable. + * __Consequence:__ The biological consequence of each mutation. + * __Coding DNA Change:__ The specific nucleotide change and position of the mutation within the gene. +* __Impact:__ A [subjective classification](#mutation-filters) of the severity of the variant consequence. This is determined by three different tools: + * __[Ensembl VEP](http://useast.ensembl.org/info/genome/variation/prediction/index.html)__ + * __[PolyPhen](http://genetics.bwh.harvard.edu/pph/)__ + * __[SIFT](http://sift.jcvi.org/)__ + * __Strand:__ If the gene is located on the forward (+) or reverse (-) strand. + * __Transcript(s):__ The transcript(s) affected by the mutation. Each contains a link to the [Ensembl](https://www.ensembl.org) entry for the transcript. -[![Exploration Oncogrid Example](images/Exploration-Oncogrid-Example.png)](images/Exploration-Oncogrid-Example.png "Click to see the full image.") +#### Cancer Distribution -The grid is color-coded with a legend at the top left which describes what type of mutation consequence is observed for each gene/case combination. Clinical information and the available data for each case are available at the bottom of the grid. +A table and bar graph shows how many cases are affected by the particular mutation. Each row/bar represents the number of cases for each project. + + [![Mutation Distribution](images/GDC-Mutation-CancerDist.png)](images/GDC-Mutation-CancerDist.png "Click to see the full image.") + +The table contains the following fields: + + * __Project ID__: The ID for a specific project. + * __Disease Type__: The disease associated with the project. + * __Site__: The anatomical site affected by the disease. + * __# SMM Affected Cases__: The number of affected cases and total number of cases displayed as a fraction and percentage. + +#### Protein Viewer + +The protein viewer displays a plot representing the position of mutations along the polypeptide chain. The y-axis represents the number of cases that exhibit each mutation, whereas the x-axis represents the polypeptide chain sequence. [Pfam domains](http://pfam.xfam.org/) that were identified along the polypeptide chain are identified with colored rectangles labeled with pfam IDs. See the [Gene Summary Page](#gene-summary-page) for additional details about the [protein viewer](#protein-viewer). + + [![Mutation Protein Graph](images/GDC-Mutation-ProteinGraph.png)](images/GDC-Mutation-ProteinGraph.png "Click to see the full image.") + +## OncoGrid + +The Exploration Page includes an OncoGrid plot of the cases with the most mutations, for the top 50 mutated genes affected by high impact mutations. Genes displayed on the left of the grid (Y-axis) correspond to individual cases on the bottom of the grid (X-axis). Additionally, the plot also indicates in each cell any CNV events detected for these top mutated cases and genes. + +[![Exploration Oncogrid Example](images/Exploration-Oncogrid-Example_v2.png)](images/Exploration-Oncogrid-Example_v2.png "Click to see the full image.") + +The grid is color-coded with a legend at the top which describes what type of mutation consequence and CNV event is observed for each gene/case combination. Clinical information and the available data for each case are available at the bottom of the grid. The right side of the grid displays additional information about the genes: * __Gene Sets:__ Describes whether a gene is part of [The Cancer Gene Census](http://cancer.sanger.ac.uk/census/). (The Cancer Gene Census is an ongoing effort to catalogue those genes for which mutations have been causally implicated in cancer) -* __GDC:__ Identifies all cases in the GDC affected with a mutation in this gene +* __# Cases Affected:__ Identifies all cases in the GDC affected with a mutation in this gene -#### OncoGrid Options +### OncoGrid Options -To facilitate readability and comparisons, drag-and-drop can be used to reorder the gene rows. Double clicking a row in the "# Cases Affected" bar at the right side of the graphic launches the respective Gene Summary Page page. Hovering over a cell will display information about the mutation such as its ID, affected case, and biological consequence. Clicking on the cell will bring the user to the respective Mutation Summary page. +To facilitate readability and comparisons, drag-and-drop can be used to reorder the gene rows. Double clicking a row in the "# Cases Affected" bar at the right side of the graphic launches the respective Gene Summary Page. Hovering over a cell will display information about the mutation such as its ID, affected case, and biological consequence. Clicking on the cell will bring the user to the respective Mutation Summary Page. A tool bar at the top right of the graphic allows the user to export the data as a JSON object, PNG image, or SVG image. Seven buttons are available in this toolbar: -* __Download:__ Users can choose to export the contents either to a static image file (PNG or SVG format) or the underlying data in JSON format -* __Reload Grid:__ Sets all OncoGrid rows, columns, and zoom levels back to their initial positions -* __Cluster Data:__ Clusters the rows and columns to place mutated genes with the same cases and cases with the same mutated genes together -* __Toggle Heatmap:__ The view can be toggled between cells representing mutation consequences or number of mutations in each gene -* __Toggle Gridlines:__ Turn the gridlines on and off -* __Toggle Crosshairs:__ Turns crosshairs on, so that users can zoom into specific sections of the OncoGrid -* __Fullscreen:__ Turns Fullscreen mode on/off +* __Customize Colors:__ Users can customize the colors that represent mutation consequence types and CNV gains/losses. +* __Download:__ Users can choose to export the contents either to a static image file (PNG or SVG format) or the underlying data in JSON format. +* __Reload Grid:__ Sets all OncoGrid rows, columns, and zoom levels back to their initial positions. +* __Cluster Data:__ Clusters the rows and columns to place mutated genes with the same cases and cases with the same mutated genes together. +* __Toggle Heatmap:__ The view can be toggled between cells representing mutation consequences or number of mutations in each gene. +* __Toggle Gridlines:__ Turn the gridlines on and off. +* __Toggle Crosshairs:__ Turns crosshairs on, so that users can zoom into specific sections of the OncoGrid. +* __Fullscreen:__ Turns Fullscreen mode on/off. + +### OncoGrid Color Picker -### File Navigation +To customize the colors for mutation consequence types and CNV gains/losses, a user can click the color picker icon in the OncoGrid toolbar. + +* __Customize Colors:__ Opens a control where the user can pick their own colors or apply a suggested theme and save their changes. +* __Reset to Default:__ Resets all colors to the defaults initially used by OncoGrid. + +[![Exploration Oncogrid Color Picker](images/Exploration-Oncogrid-Color-Picker.png)](images/Exploration-Oncogrid-Color-Picker.png "Click to see the full image.") + +## File Navigation After utilizing the Exploration Page to narrow down a specific cohort, users can find the specific files that relate to this group by clicking on the `View Files in Repository` button as shown in the image below. -[![Exploration File Navigation](images/Exploration-View-Files_v3.png)](images/Exploration-View-Files_v2.png "Click to see the full image.") +[![Exploration File Navigation](images/Exploration-View-Files_v3.png)](images/Exploration-View-Files_v3.png "Click to see the full image.") Clicking this button will navigate the users to the Repository Page, filtered by the cases within the cohort. -[![Input Set Explanation](images/gdc-input-set_v2.png)](images/gdc-input-set.png "Click to see the full image.") +[![Input Set Explanation](images/gdc-input-set_v2.png)](images/gdc-input-set_v2.png "Click to see the full image.") + +The filters chosen on the Exploration Page are displayed as an `input set` on the Repository Page. Additional filters may be added on top of this `input set`, but the original set cannot be modified and instead a new `input set` must be created from original data. + +--- + +## Survival Analysis + +The survival analysis, which is seen in both the `Gene` and `Mutation` tabs, is used to analyze the occurrence of event data over time. In the GDC, survival analysis is performed on the mortality of the cases. Thus, the values are retrieved from [GDC Data Dictionary](../../../Data_Dictionary) properties and a survival analysis requires the following fields: + +* Data on the time to a particular event (days to death or last follow up). + * Fields: __diagnoses.days_to_death__ or __diagnoses.days_to_last_follow_up__ +* Information on whether the event has occurred (alive/deceased). + * Fields: __diagnoses.vital_status__ +* Data split into different categories or groups (i.e. gender, etc.). + * Fields: __demographic.gender__ + +The survival analysis in the GDC uses a Kaplan-Meier estimator: -The filters chosen on the Exploration page are displayed as an `input set` on the Repository page. Additional filters may be added on top of this `input set`, but the original set cannot be modified and instead must be created from scratch again. +[![Kaplan-Meier Estimator](images/gdc-kaplan-meier-estimator2.png)](images/gdc-kaplan-meier-estimator2.png "Click to see the full image.") + +Where: + + * S(t) is the estimated survival probability for any particular one of the t time periods. + * ni is the number of subjects at risk at the beginning of time period ti. + * and di is the number of subjects who die during time period ti. + +The table below is an example data set to calculate survival for a set of seven cases: + +[![Sample Survival Analysis Table](images/gdc-sample-survival-table.png)](images/gdc-sample-survival-table.png "Click to see the full image.") + +The calculated cumulated survival probability can be plotted against the interval to obtain a survival plot like the one shown below. + +[![Sample Survival Analysis Plot](images/gdc-survival-plot.png)](images/gdc-survival-plot.png "Click to see the full image.") diff --git a/docs/Data_Portal/Users_Guide/Genes_and_Mutations.md b/docs/Data_Portal/Users_Guide/Genes_and_Mutations.md index d4cd7d5ff..23e39f275 100644 --- a/docs/Data_Portal/Users_Guide/Genes_and_Mutations.md +++ b/docs/Data_Portal/Users_Guide/Genes_and_Mutations.md @@ -27,9 +27,9 @@ A list with links that lead to external databases with additional information ab ### Cancer Distribution -A table and bar graph show how many cases are affected by mutations within the gene as a ratio and percentage. Each row/bar represents the number of cases for each project. The final column in the table lists the number of unique mutations observed on the gene for each project. +A table and two bar graphs (one for mutations, one for CNV events) show how many cases are affected by mutations and CNV events within the gene as a ratio and percentage. Each row/bar represents the number of cases for each project. The final column in the table lists the number of unique mutations observed on the gene for each project. -[![Cancer Distribution](images/GDC-Gene-CancerDist.png)](images/GDC-Gene-CancerDist.png "Click to see the full image.") +[![Cancer Distribution](images/GDC-Gene-CancerDist_v2.png)](images/GDC-Gene-CancerDist_v2.png "Click to see the full image.") ### Protein Viewer diff --git a/docs/Data_Portal/Users_Guide/Getting_Started.md b/docs/Data_Portal/Users_Guide/Getting_Started.md index f427d97a4..a841a2ea7 100644 --- a/docs/Data_Portal/Users_Guide/Getting_Started.md +++ b/docs/Data_Portal/Users_Guide/Getting_Started.md @@ -1,16 +1,15 @@ # Getting Started - ## The GDC Data Portal: An Overview The Genomic Data Commons (GDC) Data Portal provides users with web-based access to data from cancer genomics studies. Key GDC Data Portal features include: -* Open, granular access to information about all datasets available in the GDC -* Advanced search and visualization-assisted filtering of data files -* Data visualization tools to support the analysis and exploration of data (including on a gene and mutation level from Open-Access MAF files) -* Cart for collecting data files of interest -* Authentication using eRA Commons credentials for access to controlled data files -* Secure data download directly from the cart or using the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool) +* Open, granular access to information about all datasets available in the GDC. +* Advanced search and visualization-assisted filtering of data files. +* Data visualization tools to support the analysis and exploration of data (including on a gene and mutation level from Open-Access MAF files). +* Cart for collecting data files of interest. +* Authentication using eRA Commons credentials and auathorization using dbGaP for access to controlled data files. +* Secure data download directly from the cart or using the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool). For more information about available datasets, see the [GDC Website](https://gdc.cancer.gov/about-data). @@ -18,7 +17,7 @@ For more information about available datasets, see the [GDC Website](https://gdc ## Accessing the GDC Data Portal -The GDC Data Portal is accessible using a web browser such as Chrome, Internet Explorer, and Firefox at the following URL: +The GDC Data Portal is accessible using a web browser such as Chrome, Firefox, and Microsoft Edge at the following URL: [https://portal.gdc.cancer.gov](https://portal.gdc.cancer.gov) @@ -27,10 +26,7 @@ The front page displays a summary of all available datasets: [![GDC Home Page](images/GDC-Home-Page.png)](images/GDC-Home-Page.png "Click to see the full image.") - -## Navigation - -### Views +## Views The GDC Data Portal provides five navigation options (*Views*) for browsing available harmonized datasets: @@ -44,23 +40,21 @@ The GDC Data Portal provides five navigation options (*Views*) for browsing avai * __Repository__: The Repository link directs users to the [Repository Page](Repository.md). Here users can see the data files available for download at the GDC and apply file/case filters to narrow down their search. -* __Image Viewer__: The [Image viewer](Image_viewer.md) allows users to visualize tissue slide images. - * __Human Outline__: The home page displays a human anatomical outline that can be used to refine their search. Choosing an associated organ will direct the user to a listing of all projects associated with that primary site. For example, clicking on the human brain will show only cases and projects associated with brain cancer (TCGA-GBM and TCGA-LGG). The number of cases associated with each primary site is also displayed here and separated by project. Each view provides a distinct representation of the same underlying set of GDC data and metadata. The GDC also provides access to certain unharmonized data files generated by GDC-hosted projects. These files and their associated metadata are not represented in the views above; instead they can be found in the [GDC Legacy Archive](Legacy_Archive.md). The Projects, Exploration, Analysis and Repository pages can be accessed from the GDC Data Portal front page and from the toolbar (see below). The annotations view is accessible from Repository view. A link to the GDC Legacy Archive is available on the GDC Data Portal front page and in the GDC Apps menu (see below). -### Toolbar +## Toolbar The toolbar available at the top of all pages in the GDC Data Portal provides convenient navigation links and access to authentication and quick search. -The left portion of this toolbar provides access to the Home Page, __Projects Page__, __Exploration Page__, __Analysis Page__, and a link to __Repository Page__: +The left portion of this toolbar provides access to the __Home Page__, __Projects Page__, __Exploration Page__, __Analysis Page__, and a link to __Repository Page__: [![GDC Data Portal Toolbar (Left)](images/gdc-data-portal-top-menu-bar-left.png)](images/gdc-data-portal-top-menu-bar-left.png "Click to see the full image.") -The right portion of this toolbar provides access to [quick search](#quick-search), [manage sets](#manage-sets), [authentication functions](Authentication.md), the [cart](Cart.md), and the GDC Apps menu: +The right portion of this toolbar provides access to [quick search](#quick-search), [manage sets](#manage-sets), [authentication functions](Repository.md#authentication), the [cart](Cart.md), and the GDC Apps menu: [![GDC Data Portal Toolbar (Left)](images/gdc-data-portal-top-menu-bar-right.png)](images/gdc-data-portal-top-menu-bar-right.png "Click to see the full image.") @@ -68,40 +62,41 @@ The GDC Apps menu provides links to all resources provided by the GDC, including [![GDC Apps](images/gdc-data-portal-gdc-apps.png)](images/gdc-data-portal-gdc-apps.png "Click to see the full image.") -### Tables +## Tables Tabular listings are the primary method of representing available data in the GDC Data Portal. Tables are available in all views and in the file cart. Users can customize each table by specifying columns, size, and sorting. -#### Table Sort -The *sort table* button is available in the top right corner of each table. To sort by a column, place a checkmark next to it and select the preferred sort direction. If multiple columns columns are selected for sorting, data is sorted column-by-column in the order that columns appear in the sort menu: the topmost selected column becomes the primary sorting parameter; the selected column below it is used for secondary sort, etc. +### Table Sort + +The sort button is available in the top right corner of each table. To sort by a column, place a checkmark next to it and select the preferred sort direction. If multiple columns are selected for sorting, data is sorted column-by-column in the order that the columns appear in the sort menu: the topmost selected column becomes the primary sorting parameter; the selected column below it is used for secondary sort, etc. [![Sorting a table](images/gdc-data-portal-table-sort.png)](images/gdc-data-portal-table-sort.png "Click to see the full image.") -#### Table Arrangement +### Table Arrangement -The *arrange columns* button allows users to adjust the order of columns in the table and select which columns are displayed. +The arrange button allows users to adjust the order of columns in the table and select which columns are displayed. ![Selecting table columns](images/gdc-data-portal-table-column-selection.png) -#### Table Size +### Table Size Table size can be adjusted using the menu in the bottom left corner of the table. The menu sets the maximum number of rows to display. If the number of entries to be displayed exceeds the maximum number of rows, then the table will be paginated, and navigation buttons will be provided in the bottom right corner of the table to navigate between pages. ![Specifying table size](images/gdc-data-portal-table-size-and-pagination.png) -#### Table Export +### Table Export In the Repository, Projects, and Annotations views, tables can be exported in either a JSON or TSV format. The `JSON` button will export the entire table's contents into a JSON file. The `TSV` button will export the current view of the table into a TSV file. [![Table Columns Filtering](images/gdc-data-portal-table-export.png)](images/gdc-data-portal-table-export.png "Click to see the full image.") -### Filtering and Searching +## Filtering and Searching The GDC Data Portal offers three different means of searching and filtering the available data: facet filters, quick search, and advanced search. -#### Facet Filters +### Facet Filters Facets on the left of each view (Projects, Exploration, and Repository) represent properties of the data that can be used for filtering. Some of the available facets are project name, disease type, patient gender and age at diagnosis, and various data formats and categories. Each facet displays the name of the data property, the available values, and numbers of matching entities for each value (files, cases, mutations, genes, annotations, or projects, depending on the context). @@ -113,9 +108,9 @@ Multiple selections within a facet are treated as an "OR" query: e.g. "Aligned R The information displayed in each facet reflects this: in the example above, marking the "Aligned Reads" checkbox does not change the numbers or the available values in the _Data Type_ facet where the checkbox is found, but it does change the values available in the _Experimental Strategy_ facet. The _Experimental Strategy_ facet now displays only values from files of _Data Type_ "Aligned Reads". -Custom facet filters can be added in [Repository View](Repository.md) to expand the GDC Data Portal's filtering capabilities. +Custom facet filters can be added in the [Repository View](Repository.md) to expand the GDC Data Portal's filtering capabilities. -#### Quick Search +### Quick Search The quick search feature allows users to find cases, files, mutations, or genes using a search query (i.e. UUID, filename, gene name, DNA Change, project name, id, disease type or primary site). Quick search is available by clicking on the magnifier in the right section of the toolbar (which appears on every page) or by using the search bar on the Home Page. @@ -131,16 +126,16 @@ __Toolbar Quick Search:__ [![Quick Search, Searching for an Entity](images/gdc-quick-search2.png)](images/gdc-quick-search2.png "Click to see the full image.") -#### Advanced Search +### Advanced Search Advanced Search is available in Repository View. It allows users to construct complex queries with a custom query language and auto-complete suggestions. See [Advanced Search](Advanced_Search.md) for details. -#### Manage Sets +## Manage Sets The `Manage Sets` button at the top of the GDC Portal stores sets of cases, genes, or mutations of interest. On this page, users can review the sets that have been saved as well as upload new sets and delete existing sets. [![Manage Sets](images/gdc-manage-sets.png)](images/gdc-manage-sets.png "Click to see the full image.") -##### Upload Sets +### Upload Sets Clicking the `Upload Set` button shows options for creating Case, Gene, or Mutation sets. @@ -154,7 +149,7 @@ Clicking the `Submit` button will add the set of items to the list of sets on th [![New Sets Gene](images/gdc-new-set.png)](images/gdc-manage-sets.png "Click to see the full image.") -##### Export Sets +### Export Sets Users can export selected sets on this page by first clicking the checkboxes next to each set, then clicking the `Export selected` button at the top of the table. @@ -162,15 +157,15 @@ Users can export selected sets on this page by first clicking the checkboxes nex A text file containing the UUID of each case, gene or mutation is downloaded after clicking this button. -##### Review Sets +### Review Sets There are a few buttons in the list of sets that allows a user to get further information about each one. * __# Items__: Clicking the link under the # Items column navigates the user to the Exploration page using the set as a filter. -* __Download/View__: To the right of the # Items column are buttons that will download the list as a tsv or open the cases in the Repository page. +* __Download/View__: To the right of the # Items column are buttons that will download the list as a TSV or open the cases in the Repository Page. -##### Creating Sets from GDC Portal Filters -Many pages on the GDC Portal have an option called `Save Sets` that allows users to save a group of cases, mutations, or genes for further analysis. After using the filtering options on the `Exploration` page as an example, users can click the `Save Case/Gene/Mutation Set` button to save this set. +### Creating Sets from GDC Portal Filters +Many pages on the GDC Portal have an option called `Save Sets` that allows users to save a group of cases, mutations, or genes for further analysis. After using the filtering options on the `Exploration` Page as an example, users can click the `Save Case/Gene/Mutation Set` button to save this set. -[![Save Sets](images/gdc-exploration-save-sets.png)](images/gdc-quick-search2.png "Click to see the full image.") +[![Save Sets](images/gdc-exploration-save-sets.png)](images/gdc-quick-search2.png "Click to see the full image.") \ No newline at end of file diff --git a/docs/Data_Portal/Users_Guide/Legacy_Archive.md b/docs/Data_Portal/Users_Guide/Legacy_Archive.md index ba84c08ae..616a1eac8 100644 --- a/docs/Data_Portal/Users_Guide/Legacy_Archive.md +++ b/docs/Data_Portal/Users_Guide/Legacy_Archive.md @@ -20,7 +20,7 @@ The GDC Legacy Archive contains a limited set of features of the GDC Data Portal ### File Page -The file page of the GDC Legacy Archive is similar to the [file page of the GDC Data Portal](Repository.md#file-summary-page). It does not include the Workflow, Reference Genome, and Read Groups sections as these are only applicable to harmonized data available in the GDC Data Portal. The Legacy Archive includes additional archive information as described below. +The file page of the GDC Legacy Archive is similar to the [File Summary Page of the GDC Data Portal](Repository.md#file-summary-page). It does not include the Workflow, Reference Genome, and Read Groups sections as these are only applicable to harmonized data available in the GDC Data Portal. The Legacy Archive includes additional archive information as described below. [![Files Entity Page](images/gdc-data-portal-files-entity-page-Archive-MagTab.png)](images/gdc-data-portal-files-entity-page-Archive-MagTab.png "Click to see the full image.") @@ -28,9 +28,9 @@ The file page of the GDC Legacy Archive is similar to the [file page of the GDC If a file was originally produced as part of an archive containing other files, the archive information (Archive ID and number of files in the archive) is displayed in the file properties and, if selected, the user will see a list of files containing all other files in that archive. -#### Metadata files +#### Metadata Files -If a file has any associated MAGE-TAB or SRA XML metadata files, these files will be listed at the bottom of the page. These files will can be downloaded directly from here. Alternatively, metadata files can be downloaded from the file cart. +If a file has any associated MAGE-TAB or SRA XML metadata files, these files will be listed at the bottom of the page. These files will can be downloaded directly from this page. Alternatively, metadata files can be downloaded from the file cart. ### File Cart diff --git a/docs/Data_Portal/Users_Guide/Projects.md b/docs/Data_Portal/Users_Guide/Projects.md index 9e8a9d28d..c1eb7ee72 100644 --- a/docs/Data_Portal/Users_Guide/Projects.md +++ b/docs/Data_Portal/Users_Guide/Projects.md @@ -1,34 +1,34 @@ # Projects -## Summary -At a high level, data in the Genomic Data Commons is organized by project. Typically, a project is a specific effort to look at particular type(s) of cancer undertaken as part of a larger cancer research program. The GDC Data Portal allows users to access aggregate project-level information via the Projects Page and Project Summary pages. +At a high level, data in the Genomic Data Commons is organized by project. Typically, a project is a specific effort to look at particular type(s) of cancer undertaken as part of a larger cancer research program. The GDC Data Portal allows users to access aggregate project-level information via the Projects Page and Project Summary Pages. ## Projects Page -The Projects Page provides an overview of all harmonized data available in the Genomic Data Commons, organized by project. It also provides filtering, navigation, and advanced visualization features that allow users to identify and browse projects of interest. Users can access Projects Page from the GDC Data Portal Home page, from the Data Portal toolbar, or directly at [https://portal.gdc.cancer.gov/projects](https://portal.gdc.cancer.gov/projects). +The Projects Page provides an overview of all harmonized data available in the Genomic Data Commons, organized by project. It also provides filtering, navigation, and advanced visualization features that allow users to identify and browse projects of interest. Users can access the [Projects Page](https://portal.gdc.cancer.gov/projects) from the GDC Data Portal Home page or from the Data Portal toolbar. On the left, a panel of facets allow users to apply filters to find projects of interest. When facet filters are applied, the table and visualizations on the right are updated to display only the matching projects. When no filters are applied, all projects are displayed. -The right side of this page displays a few visualizations of the data (Top Mutated Genes in Selected Projects and Case Distribution per Project). Below these graphs is a table that contains a list of projects and select details about each project, such as the number of cases and data files. The Graph tab provides a visual representation of this information. +The right side of the Projects Page displays a few visualizations of the data (Top Mutated Genes in Selected Projects and Case Distribution per Project). Below these graphs is a table that contains a list of projects and select details about each project, such as the number of cases and data files. The Graph tab provides a visual representation of this information. [![Projects Page, Main Window (Table View)](images/gdc-data-portal-project-page.png)](images/gdc-data-portal-project-page.png "Click to see the full image.") ### Visualizations -[![Projects Visualizations)](images/gdc-projects-visualizations.png)](images/gdc-projects-visualizations.png "Click to see the full image.") +[![Projects Visualizations)](images/gdc_project_visualizations2.png)](images/gdc_project_visualizations2.png "Click to see the full image.") #### Top Mutated Cancer Genes in Selected Projects -This dynamically generated bar graph shows the 20 genes with the most mutations across all projects. The genes are filtered by those that are part of the Cancer Gene Census and that have the following types of mutations: `missense_variant, frameshift_variant, start_lost, stop_lost, initiator_codon_variant, and stop_gained`. The bars represent the frequency of each mutation and is broken down into different colored segments by project and disease type. The graphic is updated as filters are applied for projects, programs, disease types, and data categories available in the project. Note, that due the these filters the number of cases displayed here will be less that the total number of cases per project. +This dynamically generated bar graph shows the 20 genes with the most mutations across all projects. The genes are filtered by those that are part of the Cancer Gene Census and that have the following types of mutations: `missense_variant`, `frameshift_variant`, `start_lost`, `stop_lost`, `initiator_codon_variant`, and `stop_gained`. The bars represent the frequency of mutations per gene and is broken down into different colored segments by project. The graphic is updated as filters are applied for projects, programs, disease types, and data categories available in the project. -Hovering the cursor over each bar will display information about the number of cases affected by the disease type and clicking on each bar will launch the Gene Summary Page page for the gene associated with the mutation. +> __Note:__ Due to these filters, the number of cases displayed here will be less that the total number of cases per project. + +Hovering the cursor over each bar will display information about the number of cases affected by the disease type and clicking on each bar will launch the [Gene Summary Page](Exploration.md#gene-summary-page) for the gene associated with the mutation. Users can toggle the Y-Axis of this bar graph between a percentage or raw number of cases affected. #### Case Distribution per Project -A pie chart displays the relative number of cases for each primary site (inner circle), which is further divided by project (outer circle). Hovering the cursor over each portion of the graph will display the primary site or project with the number of associated cases. Filtering projects at the left panel will update the pie chart. - +A pie chart displays the relative number of cases for each project. Hovering the cursor over each portion of the graph will display the project with the number of associated cases. Filtering projects at the left panel will update the pie chart. ### Projects Table @@ -36,11 +36,11 @@ The `Table` tab lists projects by Project ID and provides additional information [![Projects Table)](images/gdc-projects-table-view.png)](images/gdc-data-portal-project-page.png "Click to see the full image.") -The table provides links to Project Summary pages in the Project ID column. Columns with file and case counts include links to open the corresponding files or cases in [Repository Page](Repository.md). +The table provides links to [Project Summary Pages](Projects.md#project-summary-page) in the Project ID column. Columns with file and case counts include links to open the corresponding files or cases in [Repository Page](Repository.md). ### Projects Graph -The `Graph` tab contains an interactive view of information in the Table tab. The numerical values in Case Count, File Count, and File Size columns are represented by bars of varying length according to size. These columns are sorted independently in descending order. Mousing over an element of the graph connects it to associated elements in other columns, including Project ID and Primary Site +The `Graph` tab contains an interactive view of information in the Table tab. The numerical values in Case Count, File Count, and File Size columns are represented by bars of varying length according to size. These columns are sorted independently in descending order. Mousing over an element of the graph connects it to associated elements in other columns, including Project ID and major Primary Sites. [![Graph Mouseover](images/gdc-table-graph-mouse-over.png)](images/gdc-table-graph-mouse-over.png "Click to see the full image.") @@ -52,18 +52,18 @@ Like the projects table, the graph will reflect any applied facet filters. Facets represent properties of the data that can be used for filtering. The facets panel on the left allows users to filter the projects presented in the Table and Graph tabs as well as visualizations. -[![Panel with Applied Filters](images/gdc-data-portal-project-page-facets.png)](images/gdc-data-portal-project-page-facets.png "Click to see the full image.") +[![Panel with Applied Filters](images/gdc-data-portal-project-page-facets2.png)](images/gdc-data-portal-project-page-facets2.png "Click to see the full image.") Users can filter by the following facets: -* __Project__: Individual project ID -* __Primary Site__: Anatomical site of the cancer under investigation or review -* __Program__: Research program that the project is part of -* __Disease Type__: Type of cancer studied -* __Data Category__: Type of data available in the project -* __Experimental Strategy__: Experimental strategies used for molecular characterization of the cancer +* __Project__: Individual project ID. +* __Primary Site__: Anatomical site of the cancer under investigation or review. +* __Program__: Research program that the project is part of. +* __Disease Type__: Type of cancer studied. +* __Data Category__: Type of data available in the project. +* __Experimental Strategy__: Experimental strategies used for molecular characterization of the cancer. -Filters can be applied by selecting values of interest in the available facets, for example "WXS" and "RNA-Seq" in the "Experimental Strategy" facet and "Brain" in the "Primary Site" facet. When facet filters are applied, the Table and Graph tabs are updated to display matching projects, and the banner above the tabs summarizes the applied filters. The banner allows the user to click on filter elements to remove the associated filters, and includes a link to view the matching cases and files. +Filters can be applied by selecting values of interest in the available facets, for example "WXS" and "RNA-Seq" in the "Experimental Strategy" facet and "Brain" in the "Primary Site" facet. When facet filters are applied, the Table and Graph tabs are updated to display matching projects, and the banner above the tabs summarizes the applied filters. The banner allows the user to click on filter elements to remove the associated filters and includes a link to view the matching cases and files. [![Panel with Applied Filters](images/panel-with-applied-filters.png)](images/panel-with-applied-filters.png "Click to see the full image.") @@ -71,13 +71,13 @@ For information on how to use facet filters, see [Getting Started](Getting_Start ## Project Summary Page -Each project has a summary page that provides an overview of all available cases, files, and annotations available. Clicking on the numbers in the summary table will display the corresponding data. +Each project has a Summary Page that provides an overview of all available cases, files, and annotations available. Clicking on the numbers in the summary table will display the corresponding data. [![Project Summary Page](images/gdc-project-entity-page_v3.png)](images/gdc-project-entity-page_v2.png "Click to see the full image.") -Three download buttons in the top right corner of the screen allow the user to download the entire project dataset, along with the associated project metadata: +Four buttons in the top right corner of the screen allow the user to explore or download the entire project dataset, along with the associated project metadata: -* __Explore Project Data__: Opens Exploration page with summary project information. -* __Download Biospecimen__: Downloads biospecimen metadata associated with all cases in the project in either TSV or JSON format. -* __Download Clinical__: Downloads clinical metadata about all cases in the project in either TSV or JSON format. -* __Download Manifest__: Downloads a manifest for all data files available in the project. The manifest can be used with the GDC Data Transfer Tool to download the files. +* __Explore Project Data__: Opens Exploration Page with summary project information. +* __Biospecimen__: Downloads biospecimen metadata associated with all cases in the project in either TSV or JSON format. +* __Clinical__: Downloads clinical metadata about all cases in the project in either TSV or JSON format. +* __Manifest__: Downloads a manifest for all data files available in the project. The manifest can be used with the GDC Data Transfer Tool to download the files. \ No newline at end of file diff --git a/docs/Data_Portal/Users_Guide/Repository.md b/docs/Data_Portal/Users_Guide/Repository.md index efc4d3e30..cf839c536 100644 --- a/docs/Data_Portal/Users_Guide/Repository.md +++ b/docs/Data_Portal/Users_Guide/Repository.md @@ -1,20 +1,18 @@ # Repository -## Summary - -The Repository Page is the primary method of accessing data in the GDC Data Portal. It provides an overview of all cases and files available in the GDC and offers users a variety of filters for identifying and browsing cases and files of interest. Users can access the Repository Page from the GDC Data Portal front page, from the Data Portal toolbar, or directly at [https://portal.gdc.cancer.gov/repository](https://portal.gdc.cancer.gov/repository). +The Repository Page is the primary method of accessing data in the GDC Data Portal. It provides an overview of all cases and files available in the GDC and offers users a variety of filters for identifying and browsing cases and files of interest. Users can access the [Repository Page](https://portal.gdc.cancer.gov/repository) from the GDC Data Portal Home Page or from the Data Portal toolbar. ## Filters / Facets On the left, a panel of data facets allows users to filter cases and files using a variety of criteria. If facet filters are applied, the tabs on the right will display information about matching cases and files. If no filters are applied, the tabs on the right will display information about all available data. On the right, two tabs contain information about available data: -* *`Files` tab* provides a list of files, select information about each file, and links to individual file detail pages. -* *`Cases` tab* provides a list of cases, select information about each case, and links to individual case summary pages +* `Files` tab provides a list of files, select information about each file, and links to [individual file detail pages](#file-summary-page). +* `Cases` tab provides a list of cases, select information about each case, and links to [individual case summary pages](Exploration.md#case-summary-page). The banner above the tabs on the right displays any active facet filters and provides access to advanced search. -The top of the Repository Page contains a few summary pie charts for Primary Sites, Projects, Disease Type, Gender, and Vital Status. These reflect all available data or, if facet filters are applied, only the data that matches the filters. Clicking on a specific slice in a pie chart, or on a number in a table, applies corresponding facet filters. +The top of the Repository Page, in the "Files" tab, contains a few summary pie charts for Primary Sites, Projects, Data Category, Data Type, and Data Format. These reflect all available data or, if facet filters are applied, only the data that matches the filters. Clicking on a specific slice in a pie chart, or on a number in a table, applies corresponding facet filters. The scope of these pie chart will change depending on whether you have the "Files" tab or the "Cases" tab selected. [![Data View](images/gdc-data-portal-repository-view_v2.png)](images/gdc-data-portal-repository-view_v2.png "Click to see the full image.") @@ -22,9 +20,7 @@ The top of the Repository Page contains a few summary pie charts for Primary Sit Facets represent properties of the data that can be used for filtering. The facets panel on the left allows users to filter the cases and files presented in the tabs on the right. -The facets panel is divided into two tabs, with the Files tab containing facets pertaining to data files and experimental strategies, while the Cases tab containing facets pertaining to the cases and biospecimen information. Users can apply filters in both tabs simultaneously. The applied filters will be displayed in the banner above the tabs on the right, with the option to open the filter in [Advanced Search](Advanced_Search.md) to further refine the query. - -The [Getting Started](Getting_Started.md#facet-filters) section provides instructions on using facet filters. In the following example, a filter from the Cases tab ("primary site") and filters from the Files tab ("data category", "experimental strategy") are both applied: +The facets panel is divided into two tabs, with the `Files` tab containing facets pertaining to data files and experimental strategies, while the `Cases` tab containing facets pertaining to the cases and biospecimen information. Users can apply filters in both tabs simultaneously. The applied filters will be displayed in the banner above the tabs on the right, with the option to open the filter in [Advanced Search](Advanced_Search.md) to further refine the query. [![Facet Filters Applied in Data View](images/data-view-with-facet-filters-applied_v2.png)](images/data-view-with-facet-filters-applied_v2.png "Click to see the full image.") @@ -44,9 +40,9 @@ The default set of facets is listed below. *Cases* facets tab: * __Case__: Specify individual cases using submitter ID (barcode) or UUID. -* __Case Submitter ID Prefix__: Search for cases using a part (prefix) of the submitter ID (barcode). +* __Case ID__: Search for cases using a part (prefix) of the submitter ID (barcode). * __Primary Site__: Anatomical site of the cancer under investigation or review. -* __Cancer Program__: A cancer research program, typically consisting of multiple focused projects. +* __Program__: A cancer research program, typically consisting of multiple focused projects. * __Project__: A cancer research project, typically part of a larger cancer research program. * __Disease Type__: Type of cancer studied. * __Gender__: Gender of the patient. @@ -58,119 +54,126 @@ The default set of facets is listed below. ### Adding Custom Facets -The Repository Page provides access to additional data facets beyond those listed above. Facets corresponding to additional properties listed in the [GDC Data Dictionary](../../Data_Dictionary/index.md) can be added using the "add a filter" links available at the top of the Cases and Files facet tabs: +The Repository Page provides access to additional data facets beyond the automatically listed group filters. Facets corresponding to additional properties listed in the [GDC Data Dictionary](../../Data_Dictionary/index.md) can be added using the "Add a Filter" link available at the top of the `Cases` and `Files` facet tabs: [![Add a Facet](images/gdc-data-portal-data-add-facet.png)](images/gdc-data-portal-data-add-facet.png "Click to see the full image.") -The links open a search window that allows the user to find an additional facet by name or description. Not all facets have values available for filtering; checking the "Only show fields with values" checkbox will limit the search results to only those that do. Selecting a facet from the list of search results below the search box will add it to the facets panel. +The link opens a search window that allows the user to find an additional facet by name or description. Not all facets have values available for filtering; checking the "Only show fields with values" checkbox will limit the search results to only those that do. When selecting a facet from the list of search results below the search box will add it to the facets panel. [![Search for a Facet](images/gdc-data-portal-data-facet-search.png)](images/gdc-data-portal-data-facet-search.png "Click to see the full image.") -Newly added facets will show up at the top of the facets panel and can be removed individually by clicking on the red cross to the right of the facet name. The default set of facets can be restored by clicking "Reset". +Newly added facets will show up at the top of the facets panel and can be removed individually by clicking on the "__x__" to the right of the facet name. The default set of facets can be restored by clicking "Reset". [![Customize Facet](images/gdc-data-portal-data-facet-tumor_stage.png)](images/gdc-data-portal-data-facet-tumor_stage.png "Click to see the full image.") -## Results -### Files List +## Annotations View -The Files tab on the right provides a list of available files and select information about each file. If facet filters are applied, the list includes only matching files. Otherwise, the list includes all data files available in the GDC Data Portal. +The Annotations View provides an overview of the available annotations and allows users to browse and filter the annotations based on a number of annotation properties (facets), such as the type of entity the annotation is attached to or the annotation category. This page can be found by clicking on the [Browse Annotations](https://portal.gdc.cancer.gov/annotations) link, located at the top right of the repository page. -[![Files Tab](images/gdc-data-portal-data-files.png)](images/gdc-data-portal-data-files.png "Click to see the full image.") +[![Annotations View](images/Browse_Annotations.png)](images/Browse_Annotations.png "Click to see the full image.") -The *File Name* column includes links to [file detail pages](#file-detail-page) where the user can learn more about each file. +The view presents a list of annotations in tabular format on the right, and a facet panel on the left that allows users to filter the annotations displayed in the table. If facet filters are applied, the tabs on the right will display only the matching annotations. If no filters are applied, the tabs on the right will display information about all available annotations. -Users can add individual file(s) to the file cart using the cart button next to each file. Alternatively, all files that match the current facet filters can be added to the cart using the menu in the top left corner of the table: +[![Annotations View](images/gdc-data-portal-annotations.png)](images/gdc-data-portal-annotations.png "Click to see the full image.") -[![Files Tab](images/gdc-data-portal-data-files-add-cart.png)](images/gdc-data-portal-data-files-add-cart.png "Click to see the full image.") +Clicking on an annotation ID in the annotations list will take the user to the Annotation Summary Page. The Annotation Summary Page provides more details about a specific annotation. -### Cases List +[![Annotation Entity Page](images/annotations-entity-page.png)](images/annotations-entity-page.png "Click to see the full image.") -The Cases tab on the right provides a list of available cases and select information about each case. If facet filters are applied, the list includes only matching cases. Otherwise, the list includes all cases available in the GDC Data Portal. +## Results -[![Cases Tab](images/gdc-data-portal-data-cases_v3.png)](images/gdc-data-portal-data-cases_v3.png "Click to see the full image.") +### Navigation + +After utilizing the Repository Page to narrow down a specific set of cases, users can choose to continue to explore the mutations and genes affected by these cases by clicking the `View Cases in Exploration` button as shown in the image below. + +[![Exploration File Navigation](images/gdc-view-in-exploration_v3.png)](images/gdc-view-in-exploration_v3.png "Click to see the full image.") -The list includes links to [case summary pages](#case-summary-page) in the *Case UUID* column, the Submitter ID (i.e. TCGA Barcode), and counts of the available file types for each case. Clicking on a count will apply facet filters to display the corresponding files. +Clicking this button will navigate the users to the [Exploration Page](Exploration.md), filtered by the cases within the cohort. -The list also includes a shopping cart button, allowing the user to add all files associated with a case to the file cart for downloading at a later time: +### Files List -[![Cases Tab, Add to Cart](images/gdc-data-portal-data-case-add-cart.png)](images/gdc-data-portal-data-case-add-cart.png "Click to see the full image.") +The `Files` tab on the right provides a list of available files and select information about each file. If facet filters are applied, the list includes only matching files. Otherwise, the list includes all data files available in the GDC Data Portal. +[![Files Tab](images/gdc-data-portal-data-files.png)](images/gdc-data-portal-data-files.png "Click to see the full image.") -## Navigation +The "*File Name*" column includes links to [File Summary Pages](#file-summary-page) where the user can learn more about each file. -After utilizing the Repository Page to narrow down a specific set of cases, users can continue to explore the mutations and genes affected by these cases by clicking the `View Files in Repository` button as shown in the image below. +Users can add individual file(s) to the [cart](Cart.md) using the cart button next to each file. Alternatively, all files that match the current facet filters can be added to the cart using the menu in the top left corner of the table: -[![Exploration File Navigation](images/gdc-view-in-exploration_v3.png)](images/gdc-view-in-exploration_v3.png "Click to see the full image.") +[![Files Tab](images/gdc-data-portal-data-files-add-cart.png)](images/gdc-data-portal-data-files-add-cart.png "Click to see the full image.") -Clicking this button will navigate the users to the Exploration Page, filtered by the cases within the cohort. +## File Summary Page -## Case Summary Page +The File Summary page provides information about a data file, including file properties like size, MD5 checksum, and data format; information on the type of data included; links to the associated cases and biospecimen; and information about how the data file was generated or processed. + +The page also includes buttons to download the file, add it to the file [cart](Cart.md), or (for BAM files) utilize the BAM slicing function. + +[![Files Detail Page](images/gdc-data-portal-files-entity-page.png)](images/gdc-data-portal-files-entity-page.png "Click to see the full image.") + +In the lower section of the screen, the following tables provide more details about the file and its characteristics: -The Case Summary page displays case details including the project and disease information, data files that are available for that case, and the experimental strategies employed. A button in the top-right corner of the page allows the user to add all files associated with the case to the file cart. +* __Associated Cases / Biospecimen__: List of cases or biospecimen the file is directly attached to. +* __Analysis and Reference Genome__: Information on the workflow and reference genome used for file generation. +* __Read Groups__: Information on the read groups associated with the file. +* __Metadata Files__: Experiment metadata, run metadata and analysis metadata associated with the file. +* __Downstream Analysis Files__: List of downstream analysis files generated by the file. +* __File Versions__: List of all versions of the file. -[![Case Page](images/gdc-case-entity-page.png)](images/gdc-case-entity-page.png "Click to see the full image.") -### Clinical and Biospecimen Information +[![Files Entity Page](images/gdc-data-portal-files-entity-page-part2_v2.png)](images/gdc-data-portal-files-entity-page-part2_v2.png "Click to see the full image.") -The page also provides clinical and biospecimen information about that case. Links to export clinical and biospecimen information in JSON format are provided. +>**Note**: *The Legacy Archive* will not display the "Workflow, Reference Genome and Read Groups" sections (these sections are applicable to the GDC harmonization pipeline only). However, it may provide information on archives and metadata files like MAGE-TABs and SRA XMLs. For more information, please refer to the section [Legacy Archive](Legacy_Archive.md). -[![Case Page, Clinical and Biospecimen](images/gdc-case-clinical-biospecimen_v3.png)](images/gdc-case-clinical-biospecimen_v3.png "Click to see the full image.") +### BAM Slicing -For clinical records that support multiple records of the same type (Diagnoses, Family Histories, or Exposures), a UUID of the record is provided on the left hand side of the corresponding tab, allowing the user to select the entry of interest. +BAM file Summary Pages have a "BAM Slicing" button. This function allows the user to specify a region of a BAM file for download. Clicking on it will open the BAM Slicing window: -### Biospecimen Search +[![BAM Slicing Window](images/gdc-data-portal-bam-slicing.png)](images/gdc-data-portal-bam-slicing.png "Click to see the full image.") -A search filter just below the biospecimen section can be used to find and filter biospecimen data. The wildcard search will highlight entities in the tree that match the characters typed. This will search both the case submitter ID, as well as the additional metadata for each entity. For example, searching 'Primary Tumor' will highlight samples that match that type. +During preparation of the slice, the icon on the BAM Slicing button will be spinning, and the file will be offered for download to the user as soon as it is ready. -[![Biospecimen Search](images/gdc-case-biospecimen-search_v2.png)](images/gdc-case-biospecimen-search_v2.png "Click to see the full image.") +### Cases List -### Most Frequent Somatic Mutations +The `Cases` tab on the right provides a list of available cases and select information about each case. If facet filters are applied, the list includes only matching cases. Otherwise, the list includes all cases available in the GDC Data Portal. -The case entity page also lists the mutations found in that particular case. +[![Cases Tab](images/gdc-data-portal-data-cases_v3.png)](images/gdc-data-portal-data-cases_v3.png "Click to see the full image.") -[![Case Page](images/gdc-case-entity-mfm.png)](images/gdc-case-entity-mfm.png "Click to see the full image.") +From the left side, the list starts with a shopping cart icon, allowing the user to add all files associated with a case to the [file cart](Cart.md) for downloading at a later time. The following columns in the list includes links to [Case Summary Pages](Exploration.md#case-summary-page) in the *Case UUID* column, the Submitter ID (i.e. TCGA Barcode), and counts of the available file types for each case. Clicking on a count will apply facet filters to display the corresponding files. On the last column, there are image slide icons and a number that indicate whether there are slide images available and how many. -The table lists the following information for each mutation +## Image Viewer -* __DNA Change:__ The chromosome and starting coordinates of the mutation are displayed along with the nucleotide differences between the reference and tumor allele -* __Type:__ A general classification of the mutation -* __Consequences:__ The effects the mutation has on the gene coding for a protein (i.e. synonymous, missense, non-coding transcript) -* __# Affected Cases in Project:__ The number of affected cases, expressed as number across all mutations within the Project -* __# Affected Cases Across GDC:__ The number of affected cases, expressed as number across all projects. Choosing the arrow next to the percentage will expand the selection with a breakdown of each affected project -* __Impact (VEP):__ A subjective classification of the severity of the variant consequence. This information comes from the [Ensembl VEP](http://www.ensembl.org/info/genome/variation/predicted_data.html). The categories are: - - __HIGH (H)__: The variant is assumed to have high (disruptive) impact in the protein, probably causing protein truncation, loss of function or triggering nonsense mediated decay - - __MODERATE (M)__: A non-disruptive variant that might change protein effectiveness - - __LOW (L)__: Assumed to be mostly harmless or unlikely to change protein behavior - - __MODIFIER (MO)__: Usually non-coding variants or variants affecting non-coding genes, where predictions are difficult or there is no evidence of impact +The Image Viewer allows users to visualize tissue and diagnostic slide images. -Clicking on the `Open in Exploration` button at the top right of this section will navigate the user to the Exploration page, filtered on this case. +[![Image Viewer](images/Image_viewer_browser.png)](images/Image_viewer_browser.png "Click to see the full image.") -## File Summary Page +### How to Access the Image Viewer -The File Summary page provides information a data file, including file properties like size, md5 checksum, and data format; information on the type of data included; links to the associated case and biospecimen; and information about how the data file was generated or processed. +* __Repository Page__: From the main search on the Repository Page by clicking on the "View images" button. It will display the tissue slide images of all the cases resulting from the query. -The page also includes buttons to download the file, add it to the file cart, or (for BAM files) utilize the BAM slicing function. +[![Image Viewer](images/Image_Viewer_from_Repository.png)](images/Image_Viewer_from_Repository.png "Click to see the full image.") -[![Files Detail Page](images/gdc-data-portal-files-entity-page.png)](images/gdc-data-portal-files-entity-page.png "Click to see the full image.") +* __Case Table in Repository Page__: Click on the image viewer icon in the Case table. It will display in the image viewer all the tissue slide images attached to the Case. -In the lower section of the screen, the following tables provide more details about the file and its characteristics: +[![Cases Tab](images/gdc-data-portal-data-cases_v3.png)](images/gdc-data-portal-data-cases_v3.png "Click to see the full image.") -* __Associated Cases / Biospecimen__: List of Cases or biospecimen the file is directly attached to. -* __Analysis and Reference Genome__: Information on the workflow and reference genome used for file generation. -* __Read Groups__: Information on the read groups associated with the file. -* __Metadata Files__: Experiment metadata, run metadata and analysis metadata associated with the file. -* __Downstream Analysis Files__: List of downstream analysis files generated by the file. -* __File Versions__: List of all versions of the file. +* __Case Summary Page:__ Selecting a Case ID in the Repository Cases table will direct the user to the [Case Summary Page](Exploration.md#case-summary-page). For cases with images, the Image Viewer icon will appear in the Case Summary section or in the Biospecimen - Slides details section. Clicking on the Image Viewer icon will display the Image Viewer for the slide images attached to the case. + [![Image Viewer](images/Image_viewer_case_summary.png)](images/Image_viewer_case_summary.png "Click to see the full image.") + [![Image Viewer](images/Image_viewer_case_slide_section.png)](images/Image_viewer_case_slide_section.png "Click to see the full image.") -[![Files Entity Page](images/gdc-data-portal-files-entity-page-part2_v2.png)](images/gdc-data-portal-files-entity-page-part2_v2.png "Click to see the full image.") +* __The Image File Page__: You can visualize the slide image directly in the File Summary Page by selecting an image file in the Repository's files table. -**Note**: *The Legacy Archive* will not display "Workflow, Reference Genome and Read Groups" sections (these sections are applicable to the GDC harmonization pipeline only). However it may provide information on Archives and metadata files like MAGE-TABs and SRA XMLs. For more information, please refer to the section [Legacy Archive](Legacy_Archive.md). +[![Image Viewer](images/Repository_select_image.png)](images/Repository_select_image.png "Click to see the full image.") -### BAM Slicing +[![Image Viewer](images/Image_viewer_File_entity.png)](images/Image_viewer_File_entity.png "Click to see the full image.") -BAM file detail pages have a "BAM Slicing" button. This function allows the user to specify a region of a BAM file for download. Clicking on it will open the BAM slicing window: +### Image Viewer Features +In the image viewer, a user can: -[![BAM Slicing Window](images/gdc-data-portal-bam-slicing.png)](images/gdc-data-portal-bam-slicing.png "Click to see the full image.") +* Zoom in and zoom out by clicking on + and - icons. +* Reset to default display by clicking on the Home icon. +* Display the image in full screen mode by clicking on the Expand icon. +* View the slide detail by clicking on "Details" button. +* Selecting the area of interest with the thumbnail at the top-right corner. -During preparation of the slice, the icon on the BAM Slicing button will be spinning, and the file will be offered for download to the user as soon as ready. +[![Image Viewer](images/Image_viewer_features.png)](images/Image_viewer_features.png "Click to see the full image.") \ No newline at end of file diff --git a/docs/Data_Portal/Users_Guide/images/Browse_Annotations.png b/docs/Data_Portal/Users_Guide/images/Browse_Annotations.png new file mode 100644 index 000000000..46c62f331 Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/Browse_Annotations.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-Case-Example_v3.png b/docs/Data_Portal/Users_Guide/images/Exploration-Case-Example_v3.png index e28cf845c..d94b465b3 100644 Binary files a/docs/Data_Portal/Users_Guide/images/Exploration-Case-Example_v3.png and b/docs/Data_Portal/Users_Guide/images/Exploration-Case-Example_v3.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-Gene-Example2.png b/docs/Data_Portal/Users_Guide/images/Exploration-Gene-Example2.png new file mode 100644 index 000000000..1b8894f75 Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/Exploration-Gene-Example2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-Gene-Example_v2.png b/docs/Data_Portal/Users_Guide/images/Exploration-Gene-Example_v2.png new file mode 100644 index 000000000..b0171dead Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/Exploration-Gene-Example_v2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-Mutation-Example.png b/docs/Data_Portal/Users_Guide/images/Exploration-Mutation-Example.png index 51d3da719..ed53656b4 100644 Binary files a/docs/Data_Portal/Users_Guide/images/Exploration-Mutation-Example.png and b/docs/Data_Portal/Users_Guide/images/Exploration-Mutation-Example.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-Oncogrid-Color-Picker.png b/docs/Data_Portal/Users_Guide/images/Exploration-Oncogrid-Color-Picker.png new file mode 100644 index 000000000..052c85c57 Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/Exploration-Oncogrid-Color-Picker.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-Oncogrid-Example_v2.png b/docs/Data_Portal/Users_Guide/images/Exploration-Oncogrid-Example_v2.png new file mode 100644 index 000000000..0689672e4 Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/Exploration-Oncogrid-Example_v2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Exploration-View-Files_v3.png b/docs/Data_Portal/Users_Guide/images/Exploration-View-Files_v3.png index c9dfb63c3..ac841e590 100644 Binary files a/docs/Data_Portal/Users_Guide/images/Exploration-View-Files_v3.png and b/docs/Data_Portal/Users_Guide/images/Exploration-View-Files_v3.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-ExplorationSet-Cohort_v2.png b/docs/Data_Portal/Users_Guide/images/GDC-ExplorationSet-Cohort_v2.png index a86e40e53..1b7dc32c5 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-ExplorationSet-Cohort_v2.png and b/docs/Data_Portal/Users_Guide/images/GDC-ExplorationSet-Cohort_v2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist.png b/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist.png index 92a42d89a..a27de3581 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist.png and b/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist_v2.png b/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist_v2.png new file mode 100644 index 000000000..0bf68368e Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/GDC-Gene-CancerDist_v2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Gene-MFM.png b/docs/Data_Portal/Users_Guide/images/GDC-Gene-MFM.png index 51b224381..849785711 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Gene-MFM.png and b/docs/Data_Portal/Users_Guide/images/GDC-Gene-MFM.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Gene-ProteinGraph.png b/docs/Data_Portal/Users_Guide/images/GDC-Gene-ProteinGraph.png index f58906822..c8801011c 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Gene-ProteinGraph.png and b/docs/Data_Portal/Users_Guide/images/GDC-Gene-ProteinGraph.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Gene-Summary.png b/docs/Data_Portal/Users_Guide/images/GDC-Gene-Summary.png index 2b330ea8a..9da5f9994 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Gene-Summary.png and b/docs/Data_Portal/Users_Guide/images/GDC-Gene-Summary.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-CancerDist.png b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-CancerDist.png index b737f2291..8d4b97a9a 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-CancerDist.png and b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-CancerDist.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Consequences.png b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Consequences.png index 3fab97e96..6fad980d3 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Consequences.png and b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Consequences.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-ProteinGraph.png b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-ProteinGraph.png index a49fd4f89..be6df6554 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-ProteinGraph.png and b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-ProteinGraph.png differ diff --git a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Summary.png b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Summary.png index 617a54f6e..f55f5ca89 100644 Binary files a/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Summary.png and b/docs/Data_Portal/Users_Guide/images/GDC-Mutation-Summary.png differ diff --git a/docs/Data_Portal/Users_Guide/images/Repository_select_image.png b/docs/Data_Portal/Users_Guide/images/Repository_select_image.png new file mode 100644 index 000000000..d390db17b Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/Repository_select_image.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-case-entity-mfm.png b/docs/Data_Portal/Users_Guide/images/gdc-case-entity-mfm.png index 2a6569a71..3b5363eea 100644 Binary files a/docs/Data_Portal/Users_Guide/images/gdc-case-entity-mfm.png and b/docs/Data_Portal/Users_Guide/images/gdc-case-entity-mfm.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-data-portal-download-cart_v2.png b/docs/Data_Portal/Users_Guide/images/gdc-data-portal-download-cart_v2.png new file mode 100644 index 000000000..81f2f0f1b Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/gdc-data-portal-download-cart_v2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page-facets2.png b/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page-facets2.png new file mode 100644 index 000000000..a2f961f0b Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page-facets2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page.png b/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page.png index 89b3b8ad4..d0d2bbab9 100644 Binary files a/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page.png and b/docs/Data_Portal/Users_Guide/images/gdc-data-portal-project-page.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-input-set_v2.png b/docs/Data_Portal/Users_Guide/images/gdc-input-set_v2.png index 8eed614b4..b9e950ede 100644 Binary files a/docs/Data_Portal/Users_Guide/images/gdc-input-set_v2.png and b/docs/Data_Portal/Users_Guide/images/gdc-input-set_v2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-kaplan-meier-estimator.svg b/docs/Data_Portal/Users_Guide/images/gdc-kaplan-meier-estimator.svg new file mode 100644 index 000000000..8bf37b3a7 --- /dev/null +++ b/docs/Data_Portal/Users_Guide/images/gdc-kaplan-meier-estimator.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Data_Portal/Users_Guide/images/gdc-kaplan-meier-estimator2.png b/docs/Data_Portal/Users_Guide/images/gdc-kaplan-meier-estimator2.png new file mode 100644 index 000000000..1f756fe09 Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/gdc-kaplan-meier-estimator2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc-table-graph-mouse-over.png b/docs/Data_Portal/Users_Guide/images/gdc-table-graph-mouse-over.png index 06d02ffed..dd40e17ef 100644 Binary files a/docs/Data_Portal/Users_Guide/images/gdc-table-graph-mouse-over.png and b/docs/Data_Portal/Users_Guide/images/gdc-table-graph-mouse-over.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc_case_biospecimen_search_v3.png b/docs/Data_Portal/Users_Guide/images/gdc_case_biospecimen_search_v3.png new file mode 100644 index 000000000..82b5414bb Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/gdc_case_biospecimen_search_v3.png differ diff --git a/docs/Data_Portal/Users_Guide/images/gdc_project_visualizations2.png b/docs/Data_Portal/Users_Guide/images/gdc_project_visualizations2.png new file mode 100644 index 000000000..e018a9aaa Binary files /dev/null and b/docs/Data_Portal/Users_Guide/images/gdc_project_visualizations2.png differ diff --git a/docs/Data_Portal/Users_Guide/images/mutation-set-filter.png b/docs/Data_Portal/Users_Guide/images/mutation-set-filter.png index 2fc7c861c..6e8d1c95a 100644 Binary files a/docs/Data_Portal/Users_Guide/images/mutation-set-filter.png and b/docs/Data_Portal/Users_Guide/images/mutation-set-filter.png differ diff --git a/docs/Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md b/docs/Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md index 1dbdb6073..f397e1470 100644 --- a/docs/Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md +++ b/docs/Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md @@ -2,6 +2,8 @@ | Version | Date | |---|---| +| [v2.2.0](Data_Submission_Portal_Release_Notes.md#release-220) | February 20, 2019 | +| [v2.1.0](Data_Submission_Portal_Release_Notes.md#release-210) | November 7, 2018 | | [v2.0.0](Data_Submission_Portal_Release_Notes.md#release-200) | August 23, 2018 | | [v1.9.0](Data_Submission_Portal_Release_Notes.md#release-190) | May 21, 2018 | | [v1.8.0](Data_Submission_Portal_Release_Notes.md#release-180) | February 15, 2018 | @@ -15,6 +17,44 @@ | [v0.3.21](Data_Submission_Portal_Release_Notes.md#release-0321) | January 27, 2016 | | [v0.2.18.3](Data_Submission_Portal_Release_Notes.md#release-02183) | November 30, 2015 | +## Release 2.2.0 + +* __GDC Product__: GDC Data Submission Portal +* __Release Date__: February 20, 2019 + +### New Features and Changes + +* Renamed the "Request Submission" button to "Request Harmonization" to make the purpose of this action more clear. + +### Bugs Fixed Since Last Release + +* Fixed the right scroll bar in the records list on the Browse page so that it works in Firefox. +* Fixed a dead link to the Submission Portal User Guide on the Dashboard. + +### Known Issues and Workarounds + +* When creating entities in the Submission Portal, occasionally an extra transaction will appear with status error. This does not seem to impact that actual transaction, which is recorded as occurring successfully. + + +## Release 2.1.0 + +* __GDC Product__: GDC Data Submission Portal +* __Release Date__: November 7, 2018 + +### New Features and Changes + +* Updated the project columns to include a Release column in addition to the Batch Submit column. + +### Bugs Fixed Since Last Release + +* Fixed quick search so that projects with a dash in the name will no longer break the search. +* PO reports will now return the latest data for each project that has completed running. + +### Known Issues and Workarounds + +* When creating entities in the Submission Portal, occasionally an extra transaction will appear with status error. This does not seem to impact that actual transaction, which is recorded as occurring successfully. + + ## Release 2.0.0 * __GDC Product__: GDC Data Submission Portal diff --git a/docs/Data_Submission_Portal/Users_Guide/Best_Practices.md b/docs/Data_Submission_Portal/Users_Guide/Best_Practices.md index 7111f6bdc..23e7eee0f 100644 --- a/docs/Data_Submission_Portal/Users_Guide/Best_Practices.md +++ b/docs/Data_Submission_Portal/Users_Guide/Best_Practices.md @@ -1,6 +1,6 @@ # Submission Best Practices -Because of the data types and relationships included in the GDC, data submission can become a complex procedure. The purpose of this section is to present guidelines that will aid in the incorporation and harmonization of submitters' data. Please contact the GDC Help Desk at __support@nci-gdc.datacommons.io__ if you have any questions or concerns regarding a submission project. +Because of the data types and relationships included in the GDC, data submission can become a complex procedure. The purpose of this section is to present guidelines that will aid in the incorporation and harmonization of submitters' data. Please contact the GDC Help Desk at ____ if you have any questions or concerns regarding a submission project. ## Date Obfuscation @@ -8,66 +8,54 @@ The GDC is committed to providing accurate and useful information as well as pro ### General Guidelines -Actual calendar dates are not reported in GDC clinical fields but the lengths of time between events are preserved. Time points are reported based on the number of days since the patient's initial diagnosis. Events that occurred after the initial diagnosis are reported as positive and events that occurred before are reported as negative. Dates are not automatically obfuscated by the GDC validation system and submitters are required to make these changes in their clinical data. +Actual calendar dates are not reported in GDC clinical fields but the lengths of time between events are preserved. Time points are reported based on the number of days since the patient's initial diagnosis. Events that occurred after the initial diagnosis are reported as positive and events that occurred before are reported as negative. Dates are not automatically obfuscated by the GDC validation system and submitters are required to make these changes in their clinical data. This affects these fields: `days_to_birth`, `days_to_death`, `days_to_last_follow_up`, `days_to_last_known_disease_status`, `days_to_recurrence`, `days_to_treatment` -| Affected Fields | -| --- | -| `days_to_birth` | -| `days_to_death` | -| `days_to_last_follow_up` | -| `days_to_last_known_disease_status` | -| `days_to_recurrence` | -| `days_to_treatment` | +>__Note:__ The day-based fields take leap years into account. -### Patients Older than 90 Years +### Patients Older than 90 Years and Clinical Events Because of the low population number within the demographic of patients over 90 years old, it becomes more likely that patients can potentially be identified by a combination of their advanced age and publicly available clinical data. Because of this, patients over 90 years old are reported as exactly 90 years or 32,872 days old. -__Note:__ The day-based fields take leap years into account. - -### Clinical Events After a Patient Turns 90 Years Old - -Clinical events that occur over 32,872 days after an event also have the potential to reveal the age and identity of an individual over the age of 90. Following this, all timelines are capped at 32,872 days. When timelines are capped, the priority should be to shorten the post-diagnosis values to preserve the accuracy of the age of the patient (except for patients who were diagnosed at over 90 years old). Values such as `days_to_death` and `days_to_recurrence` should be compressed before `days_to_birth` is compressed. +Following this, clinical events that occur over 32,872 days are also capped at 32,872 days. When timelines are capped, the priority should be to shorten the post-diagnosis values to preserve the accuracy of the age of the patient (except for patients who were diagnosed at over 90 years old). Values such as `days_to_death` and `days_to_recurrence` should be compressed before `days_to_birth` is compressed. ### Examples Timelines __Example 1:__ An 88 year old patient is diagnosed with cancer and dies 13 years later. The `days_to_birth` value is less than 32,872 days, so it can be accurately reported. However, between the initial diagnosis and death, the patient turned 90 years old. Since 32,872 is the maximum, `days_to_death` would be calculated as 32872 - 32142 = 730. -__Dates__ +>__Dates__ -* _Date of Birth:_ 01-01-1900 -* _Date of Initial Diagnosis:_ 01-01-1988 -* _Date of Death:_ 01-01-2001 +>* _Date of Birth:_ 01-01-1900 +>* _Date of Initial Diagnosis:_ 01-01-1988 +>* _Date of Death:_ 01-01-2001 -__Actual-Values__ +>__Actual-Values__ -* _days_to_birth:_ -32142 -* _days_to_death:_ 4748 +>* _days_to_birth:_ -32142 +>* _days_to_death:_ 4748 -__Obfuscated-Values__ +>__Obfuscated-Values__ -* _days_to_birth:_ -32142 -* _days_to_death:_ 730 +>* _days_to_birth:_ -32142 +>* _days_to_death:_ 730 __Example 2:__ A 98 year old patient is diagnosed with cancer and dies three years later. Because `days_to_X` values are counted from initial diagnosis, days will be at their maximum value of 32,872 upon initial diagnosis. This will compress the later dates and reduce `days_to_birth` to -32,872 and `days_to_death` to zero. -__Dates__ - -* _Date of Birth:_ 01-01-1900 -* _Date of Initial Diagnosis:_ 01-01-1998 -* _Date of Death:_ 01-01-2001 +>__Dates__ -__Actual-Values__ +>* _Date of Birth:_ 01-01-1900 +>* _Date of Initial Diagnosis:_ 01-01-1998 +>* _Date of Death:_ 01-01-2001 -* _days_to_birth:_ -35794 -* _days_to_death:_ 1095 +>__Actual-Values__ -__Obfuscated-Values__ +>* _days_to_birth:_ -35794 +>* _days_to_death:_ 1095 -* _days_to_birth:_ -32872 -* _days_to_death:_ 0 +>__Obfuscated-Values__ +>* _days_to_birth:_ -32872 +>* _days_to_death:_ 0 ## Submitting Complex Data Model Relationships @@ -97,23 +85,25 @@ submitted_aligned_reads Alignment.bam Raw Sequencing Data BAM Aligned Reads W } ``` -## Read groups +### Read groups -### Submitting Read Group Names +#### Submitting Read Group Names The `read_group` entity requires a `read_group_name` field for submission. If the `read_group` entity is associated with a BAM file, the submitter should use the `@RG` ID present in the BAM header as the `read_group_name`. This is important for the harmonization process and will reduce the possibility of errors. -### Minimal Read Group Information +#### Multiple FASTQs from One Read Group -In addition to the required properties on `read_group` we also recommend submitting `flow_cell_barcode`, `lane_number` and `multiplex_barcode`. This information can be used by our bioinformatics team and data downloaders to construct a `Platform Unit` (`PU`), which is a universally unique identifier that can be used to model various sequencing technical artifacts. More information can be found in the SAM specification (https://github.com/samtools/hts-specs/blob/master/SAMv1.pdf). +To align reads according to their direction and pair, the GDC requires that unaligned forward and reverse reads are submitted as "submitted_unaligned_reads." When more than one FASTQ exists for a read group direction, the GDC requires that the FASTQ files are concatenated for each direction. In other words, each paired-end read group should be associated with exactly two FASTQ files (submitted_unaligned_reads). -For projects with library strategies of targeted sequencing or WXS we also require information on the target capture protocol included on `target_capture_kit` +#### Minimal and Recommended Read Group Information -If this information is not provided it may cause a delay in the processing of submitted data. +In addition to the required properties on `read_group` we also recommend submitting `flow_cell_barcode`, `lane_number` and `multiplex_barcode`. This information can be used by our bioinformatics team and data downloaders to construct a `Platform Unit` (`PU`), which is a universally unique identifier that can be used to model various sequencing technical artifacts. More information can be found in the [SAM specification PDF](https://github.com/samtools/hts-specs/blob/master/SAMv1.pdf). + +For projects with library strategies of targeted sequencing or WXS we also require information on the target capture protocol included on `target_capture_kit`. -### Recommended Read Group Information +If this information is not provided it may cause a delay in the processing of submitted data. -Additional read group information will benefit data users. Such information can be used by bioinformatics pipelines and will aid understanding and mitigation of batch effects. If available you should also provide as many of the remaining read group properties as possible. +Additional read group information will benefit data users. Such information can be used by bioinformatics pipelines and will aid understanding and mitigation of batch effects. If available, you should also provide as many of the remaining read group properties as possible. ## Submission File Quality Control @@ -129,19 +119,19 @@ Target region information is important for DNA-Seq variant calling and filtering 3. How do submitters provide this information? There are 3 steps - * Step 1. The submitter should contact GDC User Service about any new Target Capture Kits that do not already exist in the GDC Dictionary. The GDC Bioinformatics and User Services teams will work together with the submitter to create a meaningful name for the kit, and import this name and Target Region Bed File into the GDC. + * Step 1. The submitter should contact GDC User Service about any new Target Capture Kits that do not already exist in the GDC Dictionary. The GDC Bioinformatics and User Services teams will work together with the submitter to create a meaningful name for the kit and import this name and Target Region Bed File into the GDC. * Step 2. The submitter can then select one and only one GDC Target Capture Kit for each read group during molecular data submission. - * Step 3. The submitter should also selection the appropriate `library_strategy` and `library_selection` on the read_group entity. + * Step 3. The submitter should also select the appropriate `library_strategy` and `library_selection` on the read_group entity. 4. What is a Target Region Bed File? -A Target Region Bed File is tab-delimited file describing the kit target region in bed format (https://genome.ucsc.edu/FAQ/FAQformat.html#format1). The first 3 columns of such files are chrom, chromStart, and chromEnd. +A Target Region Bed File is tab-delimited file describing the kit target region in [bed format](https://genome.ucsc.edu/FAQ/FAQformat.html#format1). The first 3 columns of such files are chrom, chromStart, and chromEnd. Note that by definition, bed files are 0-based or "left-open, right-closed", which means bed interval "chr1 10 20" only contains 10 bases on chr1, from the 11th to the 20th. In addition, submitters should also let GDC know the genome build (hg18, hg19 or GRCh38) of their bed files. 5. Is a Target Capture Kit uniquely defined by its Target Region Bed File? -Not necessary. Sometimes, users or manufactures may want to augment an existing kit with additional probes, in order to capture more regions or simply improve the quality of existing regions. In the later case, the bed file stays the same, but it is now a different Target Capture Kit and should be registered separately as described in Step 3 above. +Not necessarily. Sometimes, users or manufactures may want to augment an existing kit with additional probes, in order to capture more regions or simply improve the quality of existing regions. In the latter case, the bed file stays the same, but it is now a different Target Capture Kit and should be registered separately as described in Step 3 above. -## Specifying Tumor Normal Pairs for analysis +## Specifying Tumor Normal Pairs for Analysis It is critical for many cancer bioinformatics pipelines to specify which normal sample to use to factor out germline variation. In particular, this is a necessary specification for all tumor normal paired variant calling pipelines. The following details describe how the GDC determines which normal sample to use for variant calling. @@ -150,18 +140,24 @@ It is critical for many cancer bioinformatics pipelines to specify which normal * If there are multiple normals of the same experimental_strategy for a case: * Users can specify which normal to use by specifying on the aliquot. To do so one of the following should be set to `TRUE` for the specified experimental strategy: `selected_normal_low_pass_wgs`, `selected_normal_targeted_sequencing`, `selected_normal_wgs`, or `selected_normal_wxs`. * Or if no normal is specified the GDC will select the best normal for that patient based on the following criteria. This same logic will also be used if multiple normal are selected. - * If a case has blood cancer we will use sample type in the following priority order: Blood Derived Normal > Bone Marrow Normal > Mononuclear Cells from Bone Marrow Normal > Fibroblasts from Bone Marrow Normal > Lymphoid Normal > Buccal Cell Normal > Solid Tissue Normal > EBV Immortalized Normal - * If case does not have blood cancer we will use sample type in the following priority order: - Solid Tissue Normal > Buccal Cell Normal > Lymphoid Normal > Fibroblasts from Bone Marrow Normal > Mononuclear Cells from Bone Marrow Normal > Bone Marrow Normal > Blood Derived Normal > EBV Immortalized Normal - * If there are still ties we will choose the aliquot submitted first -* If there are no normals - * The GDC will not run tumor only variant calling pipeline by default. The submitter must specify one of the following properties as TRUE: `no_matched_normal_low_pass_wgs`, `no_matched_normal_targeted_sequencing`, `no_matched_normal_wgs`, `no_matched_normal_wxs`. + * If a case has blood cancer we will use sample type in the following priority order: + + Blood Derived Normal > Bone Marrow Normal > Mononuclear Cells from Bone Marrow Normal > Fibroblasts from Bone Marrow Normal > Lymphoid Normal > Buccal Cell Normal > Solid Tissue Normal > EBV Immortalized Normal -Note that we will only run variant calling for a particular tumor aliquot per experimental strategy once. You must make sure that the appropriate normal control is uploaded to the GDC when Requesting Submission. Uploading a different normal sample later will not result in reanalysis by the GDC. + * If a case does not have blood cancer we will use sample type in the following priority order: + Solid Tissue Normal > Buccal Cell Normal > Lymphoid Normal > Fibroblasts from Bone Marrow Normal > Mononuclear Cells from Bone Marrow Normal > Bone Marrow Normal > Blood Derived Normal > EBV Immortalized Normal + * If there are still ties, we will choose the aliquot submitted first. +* If there are no normals. + * The GDC will not run tumor only variant calling pipeline by default. The submitter must specify one of the following properties as TRUE: `no_matched_normal_low_pass_wgs`, `no_matched_normal_targeted_sequencing`, `no_matched_normal_wgs`, `no_matched_normal_wxs`. +Note that we will only run variant calling for a particular tumor aliquot per experimental strategy once. You must make sure that the appropriate normal control is uploaded to the GDC when Requesting Submission. Uploading a different normal sample later will not result in reanalysis by the GDC. ## Clinical Data Requirements For the GDC to release a project there is a minimum number of clinical properties that are required. Minimal cross-project GDC requirements include age, gender, and diagnosis information. Other requirements may be added when the submitter is approved for submission to the GDC. + +## miRNA Submission + +The GDC requires that miRNA reads be trimmed before being uploaded to the GDC because miRNA datasets can have different trimming schemas. Uploading untrimmed miRNA reads can delay harmonization until the problem is resolved. diff --git a/docs/Data_Submission_Portal/Users_Guide/Checklist.md b/docs/Data_Submission_Portal/Users_Guide/Checklist.md new file mode 100644 index 000000000..d984f32c7 --- /dev/null +++ b/docs/Data_Submission_Portal/Users_Guide/Checklist.md @@ -0,0 +1,39 @@ +# Before Submitting Data to the GDC Portal + +## Overview +The National Cancer Institute (NCI) Genomic Data Commons (GDC) Data Submission Portal User's Guide is the companion documentation for the [GDC Data Submission Portal](https://gdc.cancer.gov/submit-data/gdc-data-submission-portal) and provides detailed information and instructions for its use. + +## Steps to Submit Data to the GDC +The following tasks are required to submit data to the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/). + +1. Complete the GDC Data [Submission Request Form](https://gdc.cancer.gov/data-submission-request-form). After submission, the reqest will be reviewed by the GDC Data Submission Review Committee. During this time, create an [eRA Commons account](https://era.nih.gov/registration_accounts.cfm) if you do not already have one. + +2. If the study is approved, contact a [Genomic Program Administrator (GPA)](https://osp.od.nih.gov/genomic-program-administrators/) to register the approved study in [dbGaP](https://www.ncbi.nlm.nih.gov/sra/docs/submitdbgap). This includes registering the project as a GDC Trusted Partner study, registering cases, and adding authorized data submitters. For more information, see the [Data Submission Process](https://gdc.cancer.gov/submit-data/data-submission-processes-and-tools). + +3. Contact GDC User Services to create a submission project. The User Services team will require a project ID, which is a two-part identifier, where the first portion is the __Program__ followed by a hyphen (__-__) and the second portion is the __Project__. This must be alphanumeric and all caps only. An example would be `TCGA-BRCA`. You must also create a project name, which can be longer and has fewer requirements on length or character usage. An example would be `Breast Invasive Carcinoma`. + +## Key Features +The GDC Data Submission Portal is a platform that allows researchers to submit and release data to the GDC. The key features of the GDC Data Submission Portal are: + +* __Upload and Validate Data__: Project data can be uploaded to the GDC project workspace. The GDC will validate the data against the [GDC Data Dictionary](../../Data_Dictionary/viewer.md). +* __Browse Data__: Data that has been uploaded to the project workspace can be browsed to ensure that the project is ready for processing. +* __Download Data__: Data that has been uploaded into the project workspace can be downloaded for review or update by using the [API](https://docs.gdc.cancer.gov/API/Users_Guide/Downloading_Files/) or the [Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool). +* __Review and Submit Data__: Prior to submission, data can be reviewed to check for accuracy and completeness. Once the review is complete, the data can be submitted to the GDC for processing through [Data Harmonization](https://gdc.cancer.gov/submit-data/gdc-data-harmonization). +* __Release Data__: After harmonization, data can be released to the research community for access through the [GDC Data Portal](https://portal.gdc.cancer.gov/) and other [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). +* __Status and Alerts__: Visual cues are implemented in the GDC Data Submission Portal Dashboard to easily identify incomplete submissions via panel displays summarizing submitted data and associated data elements. +* __Transactions__: A list of all actions performed in a project is provided with detailed information for each action. + +## Sections to the Data Submission Portal Guide + +* [__Data Submission Overview__](Data_Submission_Overview.md): Graphical explanations used to display the life cycle of projects and their data. +* [__Data Submission Process__](Data_Submission_Process.md): An overview of the data submission process using the GDC Data Submission Portal. +* [__Data Submission Walkthrough__](Data_Submission_Walkthrough.md): Step-by-step instructions on GDC data submission and their relationship to the GDC Data Model. +* [__Pre-Release Data Portal__](Pre_Release_QC.md): Instructions on how to use the Pre-Release Data Portal for projects that have been harmonized but not released. + +## HIPAA Compliance + +The GDC will not accept any data for patients age 90 and over including any follow-up events in which the event occurs after a patient turns 90 to ensure that HIPAA compliance is maintained. To comply with these requirements data submitters may omit any data (entire cases or specific nodes) that would violate this rule or obfuscate associated dates. Please see the [Date Obfuscation](/Data_Submission_Portal/Users_Guide/Best_Practices/#date-obfuscation) section for more information. + +## Release Notes + +The [Release Notes](../../Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md) section of this User's Guide contains details about new features, bug fixes, and known issues. diff --git a/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Overview.md b/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Overview.md new file mode 100644 index 000000000..1af5cf970 --- /dev/null +++ b/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Overview.md @@ -0,0 +1,111 @@ +# Data Submission Overview + +## Overview +This section will walk users through two parts of the submission process. The first portion will be the steps taken by the users to go through the submission process from start to finish. The second portion will describe the lifecycle of a project and a file throughout the data submission process. + +## GDC Data Submission Workflow + +The diagram below illustrates the process from uploading through releasing data in the GDC Data Submission Portal. To review the steps needed before beginning submission see [Before Submitting Data to the GDC Portal](https://docs.gdc.cancer.gov/Data_Submission_Portal/Users_Guide/Checklist/) + +[![GDC Data Submission Portal Workflow Upload](images/GDC_Data_Submission_Workflow-updated_20190301.jpg)](images/GDC_Data_Submission_Workflow-updated_20190301.jpg "Click to see the full image.") + +### Review GDC Dictionary and GDC Data Model - Submitter Activity + +It is suggested that all submitters review the [GDC Dictionary](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/) and [GDC Data Model](https://gdc.cancer.gov/developers/gdc-data-model/gdc-data-model-components). It is beneficial for submitters to know which nodes will need metadata submission, how these nodes relate to each other, and what information is required for each node in the model. + +### Download Templates - Submitter Activity + +After determining the required nodes for the submission, go to each node page in the [GDC Dictionary](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/). There will be a "Download Template" drop down list. Select the file format, either TSV or JSON, and download the template for the node. If [numerous entries](Data_Submission_Walkthrough.md#submitting-numerous-cases) are being submitted all at one time, it is suggested that the user uses a TSV template. At this point, it is suggested to go through the template and remove fields that will not be populated by the metadata submission, but make sure to complete all fields that are required for the node. For more information about the Data Dictionary, please visit [here](../../../Data_Dictionary/). + +[`See GDC Data Dictionary here.`](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/) + +### Upload Case Information Including dbGaP Submitted Subject IDs - Submitter Activity + +After registering the study in [dbGaP](https://gdc.cancer.gov/submit-data/obtaining-access-submit-data), the first node to be created in the data model is the [`case` node](Data_Submission_Walkthrough.md#case-submission). The `case` node is important as it will contain a unique `submitter_id` that is registered in dbGaP under a particular project. This will connect the two databases, dbGaP and GDC, and allows for access to be granted to a controlled data set based on the study and its cases. + +To [submit the `case`](Data_Submission_Walkthrough.md#uploading-the-case-submission-file) nodes, a user must be able to [login](Data_Submission_Process.md#authentication) and access the [GDC Submission Portal](https://portal.gdc.cancer.gov/submission/) for their respective project. Metadata for all nodes are uploaded via the [API](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/#creating-and-updating-entities) or through the [Submission Portal](Data_Submission_Walkthrough.md#upload-using-the-gdc-data-submission-portal). + +[`See case example here.`](Data_Submission_Walkthrough.md#case-submission) + +[`See metadata upload example here.`](Data_Submission_Walkthrough.md#upload-using-the-gdc-data-submission-portal) + +### Upload Clinical and Biospecimen Data - Submitter Activity + +With the creation of `case` nodes, other nodes in the [data model](https://gdc.cancer.gov/developers/gdc-data-model/gdc-data-model-components) can be [uploaded](Data_Submission_Walkthrough.md#upload-using-the-gdc-data-submission-portal). This includes the [Clinical](Data_Submission_Walkthrough.md#clinical-data-submission) and [Biospecimen](Data_Submission_Walkthrough.md#biospecimen-submission) nodes, with examples for each that can be found in the [Data Upload Walkthrough](Data_Submission_Walkthrough.md). + +[`See clinical example here.`](Data_Submission_Walkthrough.md#clinical-data-submission) + +[`See biospecimen example here.`](Data_Submission_Walkthrough.md#biospecimen-submission) + +[`See metadata upload example here.`](Data_Submission_Walkthrough.md#upload-using-the-gdc-data-submission-portal) + +### Register Data Files - Submitter Activity + +Registering data files is necessary before they can be uploaded. This allows the GDC to later validate the uploads against the user-supplied md5sum and file size. The [submission](Data_Submission_Walkthrough.md#experiment-data-submission) of these files can range from clinical and biospecimen supplements to `submitted_aligned_reads` and `submitted_unaligned_reads`. + +[`See experiment data example here.`](Data_Submission_Walkthrough.md#experiment-data-submission) + +### Upload Data Using Data Transfer Tool - Submitter Activity + +Before uploading the submittable data files to the GDC, a user will need to determine if the correct nodes have been created and the information within them are correct. This is accomplished using the [Browse](Data_Submission_Process.md#browse) page in the [Data Submission Portal](https://portal.gdc.cancer.gov/submission). Here you can find the metadata and file_state, which must have progressed to `registered` for an associated file to be uploaded. You can find more about the file life cycle [here](#file-lifecycle). + +Once the submitter has verified that the submittable data files have been registered, the user can obtain the submission manifest file that is found on the [Project Overview](Data_Submission_Process.md#project-overview) page. From this point the submission process is described in the ["Uploading the Submittable Data File to the GDC"](Data_Submission_Walkthrough.md#uploading-the-submittable-data-file-to-the-gdc) section. + +For strategies on data upload, further documentation for the GDC Data Submission process is detailed on the [Data Submission Processes and Tools](https://gdc.cancer.gov/submit-data/data-submission-processes-and-tools) section of the GDC Website. + +[`See submittable data file upload example here.`](Data_Submission_Walkthrough.md#uploading-the-submittable-data-file-to-the-gdc) + +### Verify Accuracy and Completeness of Project Data - Submitter Activity + +The submitter is responsible for reviewing the data uploaded to the project workspace, see [Data Submission Walkthrough](Data_Submission_Walkthrough.md), and ensuring that it is ready for processing by the GDC [Harmonization Process](https://gdc.cancer.gov/submit-data/gdc-data-harmonization). A user should be able to go through the [Pre-Harmonization Checklist](Data_Submission_Process.md#pre-harmonization-checklist), and verify that their submission meets these criteria. + +[`See pre-harmonization checklist here.`](Data_Submission_Process.md#pre-harmonization-checklist) + +### Request Data Harmonization - Submitter Activity + +When the project is complete and ready for processing, the submitter will [request harmonization](Data_Submission_Process.md#submit-your-workspace-data-to-the-gdc). If the project is not ready for processing, the project can be re-opened and the submitter will be able to upload more data to the project workspace. + +[`See harmonization request example here.`](Data_Submission_Process.md#submit-your-workspace-data-to-the-gdc) + +> __NOTE:__ The GDC requests that users submit their data to the GDC within six months from the first upload of data to the project workspace. + +### GDC Review/QC Submitted Data - GDC Activity + +The Bioinformatics Team at the GDC runs the Quality Control pipeline on the submitted data. This pipeline mirrors the [Pre-Harmonization Checklist](Data_Submission_Process.md#pre-harmonization-checklist) and will determine if the submission is complete and is ready for the Harmonization pipeline. If the submission does contain problems, the GDC will contact the user to "Re-Open" the project and fix the errors in their submission. + +Once the review is complete, all validated nodes will be changed to state "submitted". At this point users can submit more files to a project, but they will be considered as a different batch for harmonization. + +### GDC Harmonize Data - GDC Activity + +After the submission passes the GDC Quality Control pipeline, it will be queued for the [GDC Harmonization pipeline](https://gdc.cancer.gov/about-data/gdc-data-harmonization). + +### Submitter Review/QC of Harmonized Data - Submitter Activity + +After the data is processed in the Harmonization pipeline, the GDC asks submitters to [verify the quality](https://portal.gdc.cancer.gov/submission/login?next=%2Fsubmission%2F) of their harmonized data. It is the user's responsibility to notify the GDC of any errors in their harmonized data sets. The GDC will then work with the user to correct the issue and rerun the Harmonization pipeline if needed. + +### Release Data Within Six Months - Submitter Activity + +Project release occurs after the data has been harmonized, and allows users to access this data with the [GDC Data Portal](https://portal.gdc.cancer.gov/) and other [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). The GDC will release data according to [GDC Data Sharing Policies](https://gdc.cancer.gov/submit-data/data-submission-policies). Data must be released within six months after GDC data processing has been completed, or the submitter may request earlier release. + +[`See release example here.`](Data_Submission_Process.md#release) + +>__Note__: Released cases and/or files can be redacted from the GDC. For more information, visit the [GDC Policies page (under GDC Data Sharing Policies)](https://gdc.cancer.gov/submit-data/data-submission-policies). + +### GDC Releases Data - GDC Activity + +GDC data releases are not continuous, but instead are released in discrete data updates. Once harmonized data is approved and release request is approved, data will be available in an upcoming GDC Data Release. + +## Project and File Lifecycles + +### Project Lifecycle +The diagram of the project lifecycle below demonstrates the transition of a project through the various states. Initially the project is open for data upload and validation. Any changes to the data must be made while the project status is open. When the data is uploaded and ready for review, the submitter changes the project state to review. During the review state, the project is locked and additional data cannot be uploaded. If data changes are needed during the review period, the project has to be re-opened. + +The process of Harmonization does not occur immediately after submitted files are uploaded. After the submission is complete and all the necessary data and files have been uploaded, the user submits the data to the GDC for processing through the [GDC Data Harmonization Pipelines](https://gdc.cancer.gov/submit-data/gdc-data-harmonization) and the project state changes to submitted. When the data has been processed, the project state changes back to open for new data to be submitted to the project and the submitter can review the processed data. After review of the processed data, the submitter can then release the harmonized data to the [GDC Data Portal](https://portal.gdc.cancer.gov/) and other [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools) according to [GDC Data Sharing Policies](https://gdc.cancer.gov/submit-data/data-submission-policies). + +[![GDC Data Submission Portal Workflow](images/Submission.png)](images/Submission.png "Click to see the full image.") + +### File Lifecycle + +This section describes states pertaining to submittable data files throughout the data submission process. A submittable data file could contain data such as genomic sequences (such as a BAM or FASTQ) or pathology slide images. The file lifecycle starts when a submitter uploads metadata for a file to the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/submission/). This metadata file registers a description of the file as an entity on the GDC, the status for this is known as "state" and is represented by __purple__ cirlces. The submitter can then use the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool) to upload the actual file, which is represeneted by __red__ circles. Throughout the lifecycle, the file and its associated entity transition through various states from when they are initially registered through file submission and processing. The diagram below details these state transitions. + +[![GDC Data Submission Portal File Status](images/gdc-submission-portal-file-state-vs-state.png)](images/gdc-submission-portal-file-state-vs-state.png "Click to see the full image.") diff --git a/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Process.md b/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Process.md new file mode 100644 index 000000000..dda762ceb --- /dev/null +++ b/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Process.md @@ -0,0 +1,330 @@ +# Data Submission Portal + +## Overview + +This section will walk users through the submission process using the [GDC Data Submission Portal](https://portal.gdc.cancer.gov/submission/) to upload files to the GDC. + +## Authentication + +### Requirements + +Accessing the GDC Data Submission Portal requires eRA Commons credentials with appropriate dbGaP authorization. To learn more about obtaining the required credentials and authorization, see [Obtaining Access to Submit Data]( https://gdc.cancer.gov/submit-data/obtaining-access-submit-data). + +### Authentication via eRA Commons + +Users can log into the GDC Data Submission Portal with eRA Commons credentials by clicking the "Login" button. If authentication is successful, the user will be redirected to the GDC Data Submission Portal front page and the user's eRA Commons username will be displayed in the upper right corner of the screen. + +#### GDC Authentication Tokens + +The GDC Data Portal provides authentication tokens for use with the GDC Data Transfer Tool or the GDC API. To download a token: + +1. Log into the GDC using your eRA Commons credentials. +2. Click the username in the top right corner of the screen. +3. Select the "Download Token" option. + +![Token Download Button](images/gdc-data-portal-token-download.png) + +A new token is generated each time the `Download Token` button is clicked. + +For more information about authentication tokens, see [Data Security](../../Data/Data_Security/Data_Security.md#authentication-tokens). + +>**NOTE:** The authentication token should be kept in a secure location, as it allows access to all data accessible by the associated user account. + +#### Logging Out + +To log out of the GDC, click the username in the top right corner of the screen, and select the Logout option. Users will automatically be logged out after 15 minutes of inactivity. + +![Logout link](images/gdc-data-portal-token-download.png) + +## Homepage + +After authentication, users are redirected to a homepage. The homepage acts as the entry point for GDC data submission and provides submitters with access to a list of authorized projects, reports, and transactions. Content on the homepage varies based on the user profile (e.g. submitter, program office). + +[![GDC Submitter Home Page](images/GDC-HomePage-Submit_v2.png)](images/GDC-HomePage-Submit_v2.png "Click to see the full image.") + +### Reports + +Project summary reports can be downloaded at the Submission Portal homepage at three different levels: `CASE OVERVIEW`, `ALIQUOT OVERVIEW`, and `DATA VALIDATION`. Each report is generated in tab-delimited format in which each row represents an active project. + +* __`CASE OVERVIEW`:__ This report describes the number of cases with associated biospecimen data, clinical data, or submittable data files (broken down by data type) for each project. +* __`ALIQUOT OVERVIEW`:__ This report describes the number of aliquots in a project with associated data files. Aliquot numbers are broken down by sample tissue type. +* __`DATA VALIDATION`:__ This report categorizes all submittable data files associated with a project by their file status. + +### Projects + +The projects section in the homepage lists the projects that the user has access to along with basic information about each project. For users with access to a large number of projects, this table can be filtered using the 'FILTER PROJECTS' field. Selecting a project ID will direct the user to the project's [Dashboard](#dashboard). The button used to release data for each project is also located on this screen, see [Release](#release) for details. + +## Dashboard + +The GDC Data Submission Portal dashboard provides details about a specific project. + +[![GDC Submission Dashboard Page](images/GDC_Submission_Dashboard_4.png)](images/GDC_Submission_Dashboard_4.png "Click to see the full image.") + +The dashboard contains various visual elements to guide the user through all stages of submission, from viewing the [Data Dictionary](https://docs.gdc.cancer.gov/Data_Dictionary/), support of data upload, to submitting a project for harmonization. + +To better understand the information displayed on the dashboard and the available actions, please refer to the [Data Submission Walkthrough](Data_Submission_Walkthrough.md). + +### Project Overview +The Project Overview sections of the dashboard displays the most current project state (open / review / submitted / processing) and the GDC Release, which is the date in which the project was released to the GDC. + +The search field at the top of the dashboard allows for submitted entities to be searched by partial or whole `submitter_id`. When a search term is entered into the field, a list of entities matching the term is updated in real time. Selecting one of these entities links to its details in the [Browse Tab](#browse). + +The remaining part of the top section of the dashboard is broken down into four status charts: + +* __Cases with Clinical__: The number of `cases` for which Clinical data has been uploaded. +* __Cases with Biospecimen__: The number of `cases` for which Biospecimen data has been uploaded. +* __Cases with Submittable Data Files__: The number of `cases` for which experimental data has been uploaded. +* __Submittable Data Files__: The number of files uploaded through the GDC Data Transfer Tool. For more information on this status chart, please refer to [File Lifecycle](Data_Submission_Overview.md#file-lifecycle). + * __`DOWNLOAD MANIFEST`:__ This button below the status chart allows the user to download a manifest for registered files in this project that have not yet been uploaded. + +### Action Panels + +There are two action panels available below the Project Overview. + +* [UPLOAD DATA TO YOUR WORKSPACE](Data_Submission_Walkthrough.md): Allows a submitter to upload project data to the GDC project workspace. The GDC will validate the uploaded data against the [GDC Data Dictionary](https://docs.gdc.cancer.gov/Data_Dictionary/). This panel also contains a table that displays details about the five latest transactions. Clicking the IDs in the first column will bring up a window with details about the transaction, which are documented in the [transactions](#transactions) page. This panel will also allow the user to commit file uploads to the project. +* [REVIEW AND SUBMIT YOUR WORKSPACE DATA TO THE GDC](#submit-your-workspace-data-to-the-gdc): Allows a submitter to review project data which will lock the project to ensure that additional data cannot be uploaded while in review. Once the review is complete, the data can be submitted to the GDC for processing through the [GDC Harmonization Process](https://gdc.cancer.gov/submit-data/gdc-data-harmonization). + +These actions and associated features are further detailed in their respective sections of the documentation. + +## Transactions + +The transactions page lists all of the project's transactions. The transactions page can be accessed by choosing the Transactions tab at the top of the dashboard or by choosing "View All Data Upload Transactions" in the first panel of the dashboard. + +[![GDC Submission Transactions](images/GDC_Submission_Transactions_2.png)](images/GDC_Submission_Transactions_2.png "Click to see the full image.") + +The types of transactions are the following: + +* __Upload:__ The user uploads data to the project workspace. Note that submittable data files uploaded using the GDC Data Transfer tool do not appear as transactions. Uploaded submittable data can be viewed in the Browse tab. +* __Delete:__ The user deletes data from the project workspace. +* __Review:__ The user reviews the project before submitting data to the GDC. +* __Open:__ The user re-opens the project if it was under review. This allows the upload of new data to the project workspace. +* __Submit:__ The user submits uploaded data to the GDC. This triggers the data harmonization process. +* __Release:__ The user releases harmonized data to be available through the GDC Data Portal and other GDC data access tools. + +### Transactions List View + +The transactions list view displays the following information: + +|Column|Description| +| --- | --- | +| __ID__ | Identifier of the transaction | +| __Type__ | Type of the transaction (see the list of transaction types in the previous section)| +| __Step__ | The step of the submission process that each file is currently in. This can be Validate or Commit. "Validate" represents files that have not yet been committed but have been uploaded using the submission portal or the API. | +| __DateTime__ | Date and Time that the transaction was initiated | +| __User__ | The username of the submitter that performed the transaction | +| __State__ | Indicates the status of the transaction: `SUCCEEDED`, `PENDING`, or `FAILED` | +| __Commit/Discard__ | Two buttons appear when data has been uploaded using the API or the submission portal. This allows for validated data to be incorporated into the project or discarded. This column will then display the transaction number for commited uploads and "Discarded" for the uploads that are discarded.| + +### Transaction Filters + +Choosing from the drop-down menu at the top of the table allows the transactions to be filtered by those that are in progress, to be committed, succeeded, failed, or discarded. The drop-down menu also allows for the transactions to be filtered by type and step. + +### Transactions Details + +Clicking on a transaction will open the details panel. Data in this panel is organized into multiple sections including actions, details, types, and documents as described below. + +[![GDC Submission Transactions](images/GDC_Submission_Transactions_Details_3.png)](images/GDC_Submission_Transactions_Details_3.png "Click to see the full image.") + +Navigation between the sections can be performed by either scrolling down or by clicking on the section icon displayed on the left side of the details panel. + +#### Actions + +The Actions section allows a user to perform an action for transactions that provide actions. For example, if a user uploads read groups and file metadata, a corresponding manifest file will be available for download from the transaction. This manifest is used to upload the actual files through the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool). + +[![GDC Submission Transactions Details Action](images/GDC_Submission_Transactions_Details_Action_2.png)](images/GDC_Submission_Transactions_Details_Action_2.png "Click to see the full image.") + +#### Details + +The Details section provides details about the transaction itself, such as its project, type, and number of affected cases. + +[![GDC Submission Transactions Details](images/GDC_Submission_Transactions_Details_Details_2.png)](images/GDC_Submission_Transactions_Details_Details_2.png "Click to see the full image.") + +#### Types + +The Types section lists the type of files submitted and the number of affected cases and entities. + +[![GDC Submission Transactions Types](images/GDC_Submission_Transactions_Details_Types_2.png)](images/GDC_Submission_Transactions_Details_Types_2.png "Click to see the full image.") + +#### Documents + +The Documents section lists the files submitted during the transaction. +The user can download the original files from the transaction, a report detailing the transaction, or the errors that originated from the transaction that has failed. + +[![GDC Submission Transactions Documents](images/GDC_Submission_Transactions_Details_Documents_2.png)](images/GDC_Submission_Transactions_Details_Documents_2.png "Click to see the full image.") + +## Browse + +The `Browse` menu provides access to all of a project's content. Most content is driven by the GDC Data Dictionary and the interface is dynamically generated to accommodate the content. + +Please refer to the [GDC Data Dictionary Viewer](../../Data_Dictionary/viewer.md) for specific details about dictionary-generated fields, columns, and filters. + +[![GDC Submission Cases Default View](images/GDC_Submission_Cases_Default_2.png)](images/GDC_Submission_Cases_Default_2.png "Click to see the full image.") + +### Main Interface Elements + +#### Filters + +A wide set of filters are available for the user to select the type of entity to be displayed. These filters are dynamically created based on the [GDC Data Dictionary](../../Data_Dictionary/index.md). + +Current filters are: + +|Filter|Description| +| --- | --- | +| __Cases__ | Display all `Cases` associated with the project. | +| __Clinical__ | Display all Clinical data uploaded to the project workspace. This is divided into subgroups including `Demographics`, `Diagnoses`, `Exposures`, `Family Histories`, `Follow_up`, `Molecular_tests`, and `Treatments`. | +| __Biospecimen__ | Display all Biospecimen data uploaded to the project workspace. This is divided into subgroups including `Samples`, `Portions`, `Slides`, `Analytes`, `Aliquots`, and `Read Groups`. | +| __Submittable Data Files__ | Displays all data files that have been registered with the project. This includes files that have been uploaded and those that have been registered but not uploaded yet. This category is divided into groups by file type. | +| __Annotations__ | Lists all annotations associated with the project. An annotation provides an explanatory comment associated with data in the project. | +| __Harmonized Data Files__ | Lists all data files that have been harmonized by the GDC. This category is divided into groups by generated data. | + +#### List View + +The list view is a paginated list of all entities corresponding to the selected filter. + +On the top-right section of the screen, the user can download data about all entities associated with the selected filter. + +* For the case filter, it will download all Clinical data or all Metadata. +* For all other filters, it will download the corresponding metadata (e.g., for the `demographic` filter, it will download all `demographic` data). + +[![GDC Submission Case Summary Download](images/GDC_Submission_Cases_Summary_Download_4.png)](images/GDC_Submission_Cases_Summary_Download_2.png "Click to see the full image.") + +#### Details Panel + +Clicking on an entity will open the details panel. Data in this panel is broken down into multiple sections depending on the entity type. The main sections are: + +* __Actions__: Actions that can be performed relating the entity. This includes downloading the metadata (JSON or TSV) or submittable data file pertaining to the entity and deleting the entity. See the [Deleting Entities](Data_Submission_Walkthrough.md#deleting-submitted-entities) guide for more information. +* __Summary__: A list of IDs and system properties associated with the entity. +* __Details__: Properties of the entity (not associated with cases). +* __Hierarchy__ or __Related Entities__: A list of associated entities. +* __Annotations__: A list of annotations associated with the entity. +* __Transactions__: A list of previous transactions that affect the entity. + +[![GDC Submission Case Details](images/GDC_Submission_Cases_Details_2.png)](images/GDC_Submission_Cases_Details_2.png "Click to see the full image.") + +The sections listed above can be navigated either by scrolling down or by clicking on the section icon on the left side of the details panel. + +#### Related Entities + +The Related Entities table lists all entities, grouped by type, related to the selected `case`. This section is only available at the `case` level. + +[![GDC Submission Cases Related Entities](images/GDC_Submission_Cases_Summary_Related_Entities_2.png)](images/GDC_Submission_Cases_Summary_Related_Entities_2.png "Click to see the full image.") + + +This table contains the following columns: + +* __Category__: category of the entity (Clinical, Biospecimen, submittable data file). +* __Type__: type of entity (based on Data Dictionary). +* __Count:__ number of occurrences of an entity associated with the `case`. Clicking on the count will open a window listing those entities within the Browse page. + +#### Hierarchy + +The hierarchy section is available for entities at any level (e.g., Clinical, Biospecimen, etc.), except for `case`. The user can use the hierarchy section to navigate through entities. + +The hierarchy shows: + +* The `case` associated with the entity. +* The __direct__ parents of the entity. +* The __direct__ children of the entity. + +[![GDC Submission Cases Details Hierarchy](images/GDC_Submission_Cases_Summary_Hierarchy_2.png)](images/GDC_Submission_Cases_Summary_Hierarchy_2.png "Click to see the full image.") + +After uploading data to the workspace on the GDC Data Submission Portal, data will need to be [reviewed by the submitter](#pre-harmonization-checklist) and then [submitted to the GDC](#submit-to-the-gdc) for processing. + +## Submit Your Workspace Data to the GDC + +The GDC Data Submission process is detailed on the [Data Submission Processes and Tools](https://gdc.cancer.gov/submit-data/data-submission-processes-and-tools) section of the GDC Website. + +### Review + +The submitter is responsible for reviewing the data uploaded to the project workspace (see [Data Submission Walkthrough](Data_Submission_Walkthrough.md)), and ensuring that it is ready for processing by the GDC [Harmonization Process](https://gdc.cancer.gov/submit-data/gdc-data-harmonization). + +The user will be able to view the section below on the dashboard. The `REVIEW` button is available only if the project is in "OPEN" state. + +[![GDC Submission Review Tab](images/GDC_Submission_Submit_Release_Review_tab_2_v2.png)](images/GDC_Submission_Submit_Release_Review_tab_2_v2.png "Click to see the full image.") + +Setting the project to the "REVIEW" state will lock the project and prevent users from uploading additional data. During this period, the submitter can browse the data in the Data Submission Portal or download it. Once the review is complete, the user can request to submit data to the GDC. + +Once the user clicks on `REVIEW`, the project state will change to "REVIEW": + +[![GDC Submission Review State](images/GDC_Submission_Submit_Release_Project_State_Review_3.png)](images/GDC_Submission_Submit_Release_Project_State_Review_3.png "Click to see the full image.") + +### Pre-Harmonization Checklist + +The Harmonization step is __NOT__ an automatic process that occurs when data is uploaded to the GDC. The GDC performs batch processing of submitted data for Harmonization only after verifying that the submission is complete. + +The following tests must pass before the data can be considered complete: + +1. All files that are registered have been uploaded and validated. + +2. There are no invalid characters in the `submitter_id` of any node. +The acceptable characters are alphanumeric characters [a-z, A-Z, 0-9] and `_`, `.`, `-`. Any other characters will interfere with the Harmonization workflow. + +3. There are no data files with duplicate md5sums. + +4. Clinical data nodes such as `demographic`, `diagnosis` and `clinical_supplement`, are linked to `case`. + +5. The `read_group` node is linked to a valid node: + * `submitted_unaligned_reads` + * `submitted_aligned_reads` + * `submitted_genomic_profile` + +6. The `sample`-`analyte`-`aliquot` relationships are valid. Common problems can sometimes be: + * `aliquot` attached to `sample` nodes of more than one type. + * `aliquot` attached to more than one `sample` node, potentially valid but unusual. + +7. Each `aliquot` node is only associated with one `submitted_aligned_reads` file of the same `experimental_strategy`. + +8. The information for the `platform` is in the `read_group` node. While the subsequent information about the platform is not required, it is beneficial to also have information on: + * `multiplex_barcode` + * `flow_cell_barcode` + * `lane_number` + +9. In `read_group`, the `library_strategy` should match the `library_selection`: + * Targeted Sequencing must be with either PCR or Hybrid Selection. + * WXS must be with Hybrid Selection. + * WGS must be with Random. + +10. The `target_capture_kit` property is completed when the selected `library_strategy` is `WXS`. Errors will occur if `Not Applicable` or `Unknown` is selected. + +11. Check the nodes that are related to FASTQ files. For the `submitted_unaligned_reads` node, determine that the size is correct, the files are not compressed (`.tar` or `.tar.gz`), and there is a link to `read_group`. For the `read_group` node, make sure that the `is_paired_end` is set to `true` for paired end sequencing and `false` for single end sequencing. + +Once complete, clicking the `REQUEST HARMONIZATION` button will indicate to the GDC Team and pipeline automation system that data processing can begin. + +### Submit to the GDC for Harmonization + +When the project is ready for processing, the submitter will request to submit data to the GDC for Harmonization. If the project is not ready for processing, the project can be re-opened. Then the submitter will be able to upload more data to the project workspace. + +The `REQUEST HARMONIZATION` button is available only if the project is in "REVIEW" state. At this point, the user can decide whether to re-open the project to upload more data or to request harmonization of the data to the GDC. When the project is in "REVIEW" the following panel appears on the dashboard: + +[![GDC Submission Submit Tab](images/GDC_Submission_Submit_Release_Submit_tab_2_v4.png)](images/GDC_Submission_Submit_Release_Submit_tab_2_v4.png "Click to see the full image.") + +Once the user submits data to the GDC, they cannot modify the submitted nodes and files while harmonization is underway. Additional project data can be added during this period and will be considered a separate batch. To process an additional batch the user must again review the data and select `Request Harmonization`. + +[![GDC Submission Submission Tab](images/GDC_SUBMIT_TO_GDC_v3.png)](images/GDC_SUBMIT_TO_GDC_v3.png "Click to see the full image.") + +When the user clicks on the action `REQUEST HARMONIZATION` on the dashboard, the following popup is displayed: + +[![GDC Submission Submit Popup](images/GDC_Submission_Submit_Release_Submit_Popup_v2.png)](images/GDC_Submission_Submit_Release_Submit_Popup_v2.png "Click to see the full image.") + + +After the user clicks on `SUBMIT VALIDATED DATA TO THE GDC`, the project state becomes "Harmonization Requested": + +[![GDC Submission Project State](images/GDC_Submission_Submit_Release_Project_State_v3.png)](images/GDC_Submission_Submit_Release_Project_State_v3.png "Click to see the full image.") + +The GDC requests that users submit their data to the GDC for harmonization within six months from the first upload of data to the project workspace. + +## Release +Project release occurs after the data has been harmonized, and allows users to access this data with the [GDC Data Portal](https://portal.gdc.cancer.gov/) and other [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). The GDC will release data according to [GDC Data Sharing Policies](https://gdc.cancer.gov/submit-data/data-submission-policies). Data must be released within six months after GDC data processing has been completed, or the submitter may request earlier release using the "Request Release" function. A project can only be released once. + +[![GDC Submission Release Tab](images/GDC_Submission_Landing_Submitter_4.png)](images/GDC_Submission_Landing_Submitter_4.png "Click to see the full image.") + +When the user clicks on the action `REQUEST RELEASE`, the following Release popup is displayed: + +[![GDC Submission Release Popup](images/GDC_Submission_Submit_Release_Release_Popup.png)](images/GDC_Submission_Submit_Release_Release_Popup.png "Click to see the full image.") + +After the user clicks on `RELEASE SUBMITTED AND PROCESSED DATA`, the project release state becomes "Release Requested": + +[![GDC Submission Project State](images/GDC_Submission_Submit_Release_Project_State_3.png)](images/GDC_Submission_Submit_Release_Project_State_3.png "Click to see the full image.") + + +>__Note__: Released cases and/or files can be redacted from the GDC. For more information, visit the [GDC Policies page (under GDC Data Sharing Policies)](https://gdc.cancer.gov/about-gdc/gdc-policies). diff --git a/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Walkthrough.md b/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Walkthrough.md new file mode 100644 index 000000000..86e069f93 --- /dev/null +++ b/docs/Data_Submission_Portal/Users_Guide/Data_Submission_Walkthrough.md @@ -0,0 +1,698 @@ +# Data Upload Walkthrough + +This guide details step-by-step procedures for different aspects of the GDC Data Submission process and how they relate to the GDC Data Model and structure. The first sections of this guide break down the submission process and associate each step with the Data Model. Additional sections are detailed below for strategies on expediting data submission, using features of the GDC Data Submission Portal, and best practices used by the GDC. + +## GDC Data Model Basics + +Pictured below is the submittable subset of the GDC Data Model: a roadmap for GDC data submission. Each oval node in the graphic represents an entity: a logical unit of data related to a specific clinical, biospecimen, or file facet in the GDC. An entity includes a set of fields, the associated values, and information about its related node associations. All submitted entities require a connection to another entity type, based on the GDC Data Model, and a `submitter_id` as an identifier. This walkthrough will go through the submission of different entities. The completed (submitted) portion of the entity process will be highlighted in __blue__. + +[![GDC Data Model 1](images/GDC-Data-Model-None.png)](images/GDC-Data-Model-None.png "Click to see the full image.") + +# Case Submission + +The `case` is the center of the GDC Data Model and usually describes a specific patient. Each `case` is connected to a `project`. Different types of clinical data, such as `diagnoses` and `exposures`, are connected to the `case` to describe the case's attributes and medical information. + +[![GDC Data Model 2](images/GDC-Data-Model-Case.png)](images/GDC-Data-Model-Case.png "Click to see the full image.") + +The main entity of the GDC Data Model is the `case`, each of which must be registered beforehand with [dbGaP](https://www.ncbi.nlm.nih.gov/sra/docs/submitdbgap) under a unique `submitter_id`. The first step to submitting a `case` is to consult the [Data Dictionary](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#data-dictionary-viewer), which details the fields that are associated with a `case`, the fields that are required to submit a `case`, and the values that can populate each field. Dictionary entries are available for all entities in the GDC Data Model. + +[![Dictionary Case](images/Dictionary_Case.png)](images/Dictionary_Case.png "Click to see the full image.") + +Submitting a [__Case__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=case) entity requires: + +* __`submitter_id`:__ A unique key to identify the `case` +* __`projects.code`:__ A link to the `project` + +The submitter ID is different from the universally unique identifier (UUID), which is based on the [UUID Version 4 Naming Convention](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29). The UUID can be accessed under the `_id` field for each entity. For example, the `case` UUID can be accessed under the `case_id` field. The UUID is either assigned to each entity automatically or can be submitted by the user. Submitter-generated UUIDs cannot be uploaded in `submittable_data_file` entity types. See the [Data Model Users Guide](https://docs.gdc.cancer.gov/Data/Data_Model/GDC_Data_Model/#gdc-identifiers) for more details about GDC identifiers. + +The `projects.code` field connects the `case` entity to the `project` entity. The rest of the entity connections use the `submitter_id` field instead. + +The `case` entity can be added in JSON or TSV format. A template for any entity in either of these formats can be found in the Data Dictionary at the top of each page. Templates populated with `case` metadata in both formats are displayed below. + +```JSON +{ + "type": "case", + "submitter_id": "PROJECT-INTERNAL-000055", + "projects": { + "code": "INTERNAL" + } +} +``` +```TSV +type submitter_id projects.code +case PROJECT-INTERNAL-000055 INTERNAL +``` + +>__Note:__ JSON and TSV formats handle links between entities (`case` and `project`) differently. JSON includes the `code` field nested within `projects` while TSV appends `code` to `projects` with a period. + + +## Uploading the Case Submission File + +The file detailed above can be uploaded using the GDC Data Submission Portal and the GDC API as described below: + +### Upload Using the GDC Data Submission Portal + +An example of a `case` upload is detailed below. The [GDC Data Submission Portal](https://gdc.cancer.gov/submit-data/gdc-data-submission-portal) is equipped with a wizard window to facilitate the upload and validation of entities. + +#### 1. Upload Files + +Choosing _'UPLOAD'_ from the project dashboard will open the Upload Data Wizard. + +[![GDC Submission Wizard Upload Files](images/GDC_Submission_Wizard_Upload_2.png)](images/GDC_Submission_Wizard_Upload_2.png "Click to see the full image.") + +Files containing one or more entities can be added either by clicking on `CHOOSE FILE(S)` or using drag and drop. Files can be removed from the Upload Data Wizard by clicking on the garbage can icon that is displayed next to the file after the file is selected for upload. + +#### 2. Validate Entities + +The __Validate Entities__ stage acts as a safeguard against submitting incorrectly formatted data to the GDC Data Submission Portal. During the validation stage, the GDC API will validate the content of uploaded entities against the Data Dictionary to detect potential errors. Invalid entities will not be processed and must be corrected by the user and re-uploaded before being accepted. A validation error report provided by the system can be used to isolate and correct errors. + +When the first file is added, the wizard will move to the Validate section and the user can continue to add files. When all files have been added, choosing `VALIDATE` will run a test to check if the entities are valid for submission. + +[![GDC Submission Wizard Validate Files](images/GDC_Submission_Portal_Validate.png)](images/GDC_Submission_Portal_Validate.png "Click to see the full image.") + +#### 3. Commit or Discard Files +If the upload contains valid entities, a new transaction will appear in the latest transactions panel with the option to `COMMIT` or `DISCARD` the data. Entities contained in these files can be committed (applied) to the project or discarded using these two buttons. + +If the upload contains invalid files, a transaction will appear with a FAILED status. Invalid files will need to be either corrected and re-uploaded or removed from the submission. If more than one file is uploaded and at least one is not valid, the validation step will fail for all files. + +[![Commit_Discard](images/GDC_Submission_CommitDiscard.png)](images/GDC_Submission_CommitDiscard.png "Click to see the full image.") + + +### Upload Using the GDC API + +The API has a much broader range of functionality than the Data Wizard. Entities can be created, updated, and deleted through the API. See the [API Submission User Guide](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/#creating-and-updating-entities) for a more detailed explanation and for the rest of the functionalities of the API. Generally, uploading an entity through the API can be performed using a command similar to the following: + +```Shell +curl --header "X-Auth-Token: $token" --request POST --data @CASE.json https://api.gdc.cancer.gov/v0/submission/GDC/INTERNAL/_dry_run?async=true +``` +CASE.json is detailed below. +```json +{ + "type": "case", + "submitter_id": "PROJECT-INTERNAL-000055", + "projects": { + "code": "INTERNAL" + } +} +``` + +In this example, the `_dry_run` marker is used to determine if the entities can be validated, but without committing any information. If a command passed through the `_dry_run` works, the command will work when it is changed to `commit`. For more information please go to [Dry Run Transactions](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/#dry-run-transactions). + +>__Note:__ Submission of TSV files is also supported by the GDC API. + +Next, the file can either be committed (applied to the project) through the Data Submission Portal as before, or another API query can be performed that will commit the file to the project. The transaction number in the URL (467) is printed to the console during the first step of API submission and can also be retrieved from the [Transactions](Data_Submission_Process.md#transactions) tab in the Data Submission Portal. + +```Shell +curl --header "X-Auth-Token: $token" --request POST https://api.gdc.cancer.gov/v0/submission/GDC/INTERNAL/transactions/467/commit?async=true +``` + +# Clinical Data Submission + +Typically, a submission project will include additional information about a `case` such as `demographic`, `diagnosis`, or `exposure` data. + +## Clinical Data Requirements + +For the GDC to release a project there is a minimum number of clinical properties that are required. Minimal GDC requirements for each project includes age, gender, and diagnosis information. Other [requirements](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-entity-list&anchor=clinical) may be added when the submitter is approved for submission to the GDC. + +[![GDC Data Model Clinical](images/GDC-Data-Model-Clinical.png)](images/GDC-Data-Model-Clinical.png "Click to see the full image.") + +## Submitting a Demographic Entity to a Case + +The `demographic` entity contains information that characterizes the `case` entity. + +Submitting a [__Demographic__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=demographic) entity requires: + +* __`submitter_id`:__ A unique key to identify the `demographic` entity. +* __`cases.submitter_id`:__ The unique key that was used for the `case` that links the `demographic` entity to the `case`. +* __`ethnicity`:__ An individual's self-described social and cultural grouping, specifically whether an individual describes themselves as Hispanic or Latino. The provided values are based on the categories defined by the U.S. Office of Management and Business and used by the U.S. Census Bureau. +* __`gender`:__ Text designations that identify gender. Gender is described as the assemblage of properties that distinguish people on the basis of their societal roles. +* __`race`:__ An arbitrary classification of a taxonomic group that is a division of a species. It usually arises as a consequence of geographical isolation within a species and is characterized by shared heredity, physical attributes and behavior, and in the case of humans, by common history, nationality, or geographic distribution. The provided values are based on the categories defined by the U.S. Office of Management and Business and used by the U.S. Census Bureau. + +```JSON +{ + "type": "demographic", + "submitter_id": "PROJECT-INTERNAL-000055-DEMOGRAPHIC-1", + "cases": { + "submitter_id": "PROJECT-INTERNAL-000055" + }, + "ethnicity": "not hispanic or latino", + "gender": "male", + "race": "asian", +} +``` +```TSV +type cases.submitter_id ethnicity gender race +demographic PROJECT-INTERNAL-000055 not hispanic or latino male asian +``` + +## Submitting a Diagnosis Entity to a Case + +Submitting a [__Diagnosis__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=diagnosis) entity requires: + +* __`submitter_id`:__ A unique key to identify the `diagnosis` entity. +* __`cases.submitter_id`:__ The unique key that was used for the `case` that links the `diagnosis` entity to the `case`. +* __`age_at_diagnosis`:__ Age at the time of diagnosis expressed in number of days since birth. +* __`days_to_last_follow_up`:__ Time interval from the date of last follow up to the date of initial pathologic diagnosis, represented as a calculated number of days. +* __`days_to_last_known_disease_status`:__ Time interval from the date of last follow up to the date of initial pathologic diagnosis, represented as a calculated number of days. +* __`days_to_recurrence`:__ Time interval from the date of new tumor event including progression, recurrence and new primary malignancies to the date of initial pathologic diagnosis, represented as a calculated number of days. +* __`last_known_disease_status`:__ The state or condition of an individual's neoplasm at a particular point in time. +* __`morphology`:__ The third edition of the International Classification of Diseases for Oncology, published in 2000 used principally in tumor and cancer registries for coding the site (topography) and the histology (morphology) of neoplasms. The study of the structure of the cells and their arrangement to constitute tissues and, finally, the association among these to form organs. In pathology, the microscopic process of identifying normal and abnormal morphologic characteristics in tissues, by employing various cytochemical and immunocytochemical stains. A system of numbered categories for representation of data. +* __`primary_diagnosis`:__ Text term for the structural pattern of cancer cells used to define a microscopic diagnosis. +* __`progression_or_recurrence`:__ Yes/No/Unknown indicator to identify whether a patient has had a new tumor event after initial treatment. +* __`site_of_resection_or_biopsy`:__ The third edition of the International Classification of Diseases for Oncology, published in 2000, used principally in tumor and cancer registries for coding the site (topography) and the histology (morphology) of neoplasms. The description of an anatomical region or of a body part. Named locations of, or within, the body. A system of numbered categories for representation of data. +* __`tissue_or_organ_of_origin`:__ Text term that describes the anatomic site of the tumor or disease. +* __`tumor_grade`:__ Numeric value to express the degree of abnormality of cancer cells, a measure of differentiation and aggressiveness. +* __`tumor_stage`:__ The extent of a cancer in the body. Staging is usually based on the size of the tumor, whether lymph nodes contain cancer, and whether the cancer has spread from the original site to other parts of the body. The accepted values for tumor_stage depend on the tumor site, type, and accepted staging system. These items should accompany the tumor_stage value as associated metadata. +* __`vital_status`:__ The survival state of the person registered on the protocol. + +```JSON +{ + "type": "diagnosis", + "submitter_id": "PROJECT-INTERNAL-000055-DIAGNOSIS-1", + "cases": { + "submitter_id": "GDC-INTERNAL-000099" + }, + "age_at_diagnosis": 10256, + "days_to_last_follow_up": 34, + "days_to_last_known_disease_status": 34, + "days_to_recurrence": 45, + "last_known_disease_status": "Tumor free", + "morphology": "8260/3", + "primary_diagnosis": "ACTH-producing tumor", + "progression_or_recurrence": "no", + "site_of_resection_or_biopsy": "Lung, NOS", + "tissue_or_organ_of_origin": "Lung, NOS", + "tumor_grade": "not reported", + "tumor_stage": "stage i", + "vital_status": "alive" +} +``` +```TSV +type submitter_id cases.submitter_id age_at_diagnosis days_to_last_follow_up days_to_last_known_disease_status days_to_recurrence last_known_disease_status morphology primary_diagnosis progression_or_recurrence site_of_resection_or_biopsy tissue_or_organ_of_origin tumor_grade tumor_stage vital_status +diagnosis PROJECT-INTERNAL-000055-DIAGNOSIS-1 GDC-INTERNAL-000099 10256 34 34 45 Tumor free 8260/3 ACTH-producing tumor no Lung, NOS Lung, NOS not reported stage i alive +``` + +### Submitting an Exposure Entity to a Case + +Submitting an [__Exposure__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=exposure) entity does not require any information besides a link to the `case` and a `submitter_id`. The following fields are optionally included: + +* __`alcohol_history`:__ A response to a question that asks whether the participant has consumed at least 12 drinks of any kind of alcoholic beverage in their lifetime. +* __`alcohol_intensity`:__ Category to describe the patient's current level of alcohol use as self-reported by the patient. +* __`alcohol_days_per_week`:__ Numeric value used to describe the average number of days each week that a person consumes an alchoolic beverage. +* __`years_smoked`:__ Numeric value (or unknown) to represent the number of years a person has been smoking. +* __`tobacco_smoking_onset_year`:__ The year in which the participant began smoking. +* __`tobacco_smoking_quit_year`:__ The year in which the participant quit smoking. + +```JSON +{ + "type": "exposure", + "submitter_id": "PROJECT-INTERNAL-000055-EXPOSURE-1", + "cases": { + "submitter_id": "PROJECT-INTERNAL-000055" + }, + "alcohol_history": "yes", + "alcohol_intensity": "Drinker", + "alcohol_days_per_week": 2, + "years_smoked": 5, + "tobacco_smoking_onset_year": 2007, + "tobacco_smoking_quit_year": 2012 +} +``` +```TSV +type submitter_id cases.submitter_id alcohol_history alcohol_intensity alcohol_days_per_week years_smoked tobacco_smoking_onset_year tobacco_smoking_quit_year +exposure PROJECT-INTERNAL-000055-EXPOSURE-1 PROJECT-INTERNAL-000055 yes Drinker 2 5 2007 2012 +``` + +>__Note:__ Submitting a clinical entity uses the same conventions as submitting a `case` entity (detailed above). + + +# Biospecimen Submission + +One of the main features of the GDC is the genomic data harmonization workflow. Genomic data is connected the case through biospecimen entities. The `sample` entity describes a biological piece of matter that originated from a `case`. Subsets of the `sample` such as `portions` and `analytes` can optionally be described. The `aliquot` originates from a `sample` or `analyte` and describes the nucleic acid extract that was sequenced. The `read_group` entity describes the resulting set of reads from one sequencing lane. + +## Sample Submission + +[![GDC Data Model 3](images/GDC-Data-Model-Sample.png)](images/GDC-Data-Model-Sample.png "Click to see the full image.") + +A `sample` submission has the same general structure as a `case` submission as it will require a unique key and a link to the `case`. However, `sample` entities require one additional value: `sample_type`. This peripheral data is required because it is necessary for the data to be interpreted. For example, an investigator using this data would need to know whether the `sample` came from tumor or normal tissue. + +[![Dictionary Sample](images/Dictionary_Sample.png)](images/Dictionary_Sample.png "Click to see the full image.") + +Submitting a [__Sample__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=sample) entity requires: + +* __`submitter_id`:__ A unique key to identify the `sample`. +* __`cases.submitter_id`:__ The unique key that was used for the `case` that links the `sample` to the `case`. +* __`sample_type`:__ Type of the `sample`. Named for its cellular source, molecular composition, and/or therapeutic treatment. +* __`tissue_type`:__ Text term that represents a description of the kind of tissue collected with respect to disease status or proximity to tumor tissue. + +>__Note:__ The `case` must be "committed" to the project before a `sample` can be linked to it. This also applies to all other links between entities. + +```JSON +{ + "type": "sample", + "cases": { + "submitter_id": "PROJECT-INTERNAL-000055" + }, + "sample_type": "Blood Derived Normal", + "submitter_id": "Blood-00001SAMPLE_55" + "tissue_type": "Normal" +} +``` +```TSV +type cases.submitter_id submitter_id sample_type tissue_type +sample PROJECT-INTERNAL-000055 Blood-00001SAMPLE_55 Blood Derived Normal Normal +``` + +## Portion, Analyte and Aliquot Submission + +[![GDC Data Model 4](images/GDC-Data-Model-Aliquot.png)](images/GDC-Data-Model-Aliquot.png "Click to see the full image.") + +Submitting a [__Portion__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=portion) entity requires: + +* __`submitter_id`:__ A unique key to identify the `portion`. +* __`samples.submitter_id`:__ The unique key that was used for the `sample` that links the `portion` to the `sample`. + +```JSON +{ + "type": "portion", + "submitter_id": "Blood-portion-000055", + "samples": { + "submitter_id": "Blood-00001SAMPLE_55" + } +} + +``` +```TSV +type submitter_id samples.submitter_id +portion Blood-portion-000055 Blood-00001SAMPLE_55 +``` + +Submitting an [__Analyte__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=analyte) entity requires: + +* __`submitter_id`:__ A unique key to identify the `analyte`. +* __`portions.submitter_id`:__ The unique key that was used for the `portion` that links the `analyte` to the `portion`. +* __`analyte_type`:__ Text term that represents the kind of molecular specimen analyte. + +```JSON +{ + "type": "analyte", + "portions": { + "submitter_id": "Blood-portion-000055" + }, + "analyte_type": "DNA", + "submitter_id": "Blood-analyte-000055" +} + +``` +```TSV +type portions.submitter_id analyte_type submitter_id +analyte Blood-portion-000055 DNA Blood-analyte-000055 +``` + +Submitting an [__Aliquot__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=aliquot) entity requires: + +* __`submitter_id`:__ A unique key to identify the `aliquot`. +* __`analytes.submitter_id`:__ The unique key that was used for the `analyte` that links the `aliquot` to the `analyte`. + +```JSON +{ + "type": "aliquot", + "submitter_id": "Blood-00021-aliquot55", + "analytes": { + "submitter_id": "Blood-analyte-000055" + } +} + +``` +```TSV +type submitter_id analytes.submitter_id +aliquot Blood-00021-aliquot55 Blood-analyte-000055 +``` + +>__Note:__ `aliquot` entities can be directly linked to `sample` entities via the `samples.submitter_id`. The `portion` and `analyte` entities are not required for submission. + +## Read Group Submission + +[![GDC Data Model 5](images/GDC-Data-Model-RG.png)](images/GDC-Data-Model-RG.png "Click to see the full image.") + +Information about sequencing reads is necessary for downstream analysis, thus the `read_group` entity requires more fields than the other Biospecimen entities (`sample`, `portion`, `analyte`, `aliquot`). + +Submitting a [__Read Group__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=read_group) entity requires: + +* __`submitter_id`:__ A unique key to identify the `read_group`. +* __`aliquots.submitter_id`:__ The unique key that was used for the `aliquot` that links the `read_group` to the `aliquot`. +* __`experiment_name`:__ Submitter-defined name for the experiment. +* __`is_paired_end`:__ Are the reads paired end? (Boolean value: `true` or `false`). +* __`library_name`:__ Name of the library. +* __`library_strategy`:__ Library strategy. +* __`platform`:__ Name of the platform used to obtain data. +* __`read_group_name`:__ The name of the `read_group`. +* __`read_length`:__ The length of the reads (integer). +* __`sequencing_center`:__ Name of the center that provided the sequence files. +* __`library_selection`:__ Library Selection Method. +* __`target_capture_kit`:__ Description that can uniquely identify a target capture kit. Suggested value is a combination of vendor, kit name, and kit version. + +```JSON +{ + "type": "read_group", + "submitter_id": "Blood-00001-aliquot_lane1_barcodeACGTAC_55", + "experiment_name": "Resequencing", + "is_paired_end": true, + "library_name": "Solexa-34688", + "library_strategy": "WXS", + "platform": "Illumina", + "read_group_name": "205DD.3-2", + "read_length": 75, + "sequencing_center": "BI", + "library_selection": "Hybrid Selection", + "target_capture_kit": "Custom MSK IMPACT Panel - 468 Genes", + "aliquots": + { + "submitter_id": "Blood-00021-aliquot55" + } +} + +``` +```TSV +type submitter_id experiment_name is_paired_end library_name library_selection library_strategy platform read_group_name read_length sequencing_center target_capture_kit aliquots.submitter_id +read_group Blood-00001-aliquot_lane1_barcodeACGTAC_55 Resequencing true Solexa-34688 Hybrid Selection WXS Illumina 205DD.3-2 75 BI Custom MSK IMPACT Panel - 468 Genes Blood-00021-aliquot55 +``` + +>__Note:__ Submitting a biospecimen entity uses the same conventions as submitting a `case` entity (detailed above). + +# Experiment Data Submission + +Several types of experiment data can be uploaded to the GDC. The `submitted_aligned_reads` and `submitted_unaligned_reads` files are associated with the `read_group` entity, while the array-based files such as the `submitted_tangent_copy_number` are associated with the `aliquot` entity. Each of these file types are described in their respective entity submission and are uploaded separately using the [GDC API](https://docs.gdc.cancer.gov/API/Users_Guide/Getting_Started/) or the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool). + +[![GDC Data Model 6](images/GDC-Data-Model-Reads.png)](images/GDC-Data-Model-Reads.png "Click to see the full image.") + +Before the experiment data file can be submitted, the GDC requires that the user provides information about the file as a `submittable_data_file` entity. This includes file-specific data needed to validate the file and assess which analyses should be performed. Sequencing data files can be submitted as `submitted_aligned_reads` or `submitted_unaligned_reads`. + +Submitting a [__Submitted Aligned-Reads__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=submitted_aligned_reads) ([__Submitted Unaligned-Reads__](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=submitted_unaligned_reads)) entity requires: + +* __`submitter_id`:__ A unique key to identify the `submitted_aligned_reads`. +* __`read_groups.submitter_id`:__ The unique key that was used for the `read_group` that links the `submitted_aligned_reads` to the `read_group`. +* __`data_category`:__ Broad categorization of the contents of the data file. +* __`data_format`:__ Format of the data files. +* __`data_type`:__ Specific content type of the data file. (must be "Aligned Reads"). +* __`experimental_strategy`:__ The sequencing strategy used to generate the data file. +* __`file_name`:__ The name (or part of a name) of a file (of any type). +* __`file_size`:__ The size of the data file (object) in bytes. +* __`md5sum`:__ The 128-bit hash value expressed as a 32 digit hexadecimal number used as a file's digital fingerprint. + + +```JSON +{ + "type": "submitted_aligned_reads", + "submitter_id": "Blood-00001-aliquot_lane1_barcodeACGTAC_55.bam", + "data_category": "Raw Sequencing Data", + "data_format": "BAM", + "data_type": "Aligned Reads", + "experimental_strategy": "WGS", + "file_name": "test.bam", + "file_size": 38, + "md5sum": "aa6e82d11ccd8452f813a15a6d84faf1", + "read_groups": [ + { + "submitter_id": "Primary_Tumor_RG_86-1" + } + ] +} +``` +```TSV +type submitter_id data_category data_format data_type experimental_strategy file_name file_size md5sum read_groups.submitter_id#1 +submitted_aligned_reads Blood-00001-aliquot_lane1_barcodeACGTAC_55.bam Raw Sequencing Data BAM Aligned Reads WGS test.bam 38 aa6e82d11ccd8452f813a15a6d84faf1 Primary_Tumor_RG_86-1 +``` + +>__Note:__ For details on submitting experiment data associated with more than one `read_group` entity, see the [Tips for Complex Submissions](#submitting-complex-data-model-relationships) section. + +## Uploading the Submittable Data File to the GDC + +The submittable data file can be uploaded when it is registered with the GDC. An submittable data file is registered when its corresponding entity (e.g. `submitted_unaligned_reads`) is uploaded and committed. It is important to not that the Harmonization process does not occur on these submitted files until the user clicks the [`Request Submission`](Data_Submission_Process.md#release) button. Uploading the file can be performed with either the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool) or the [GDC API](https://docs.gdc.cancer.gov/API/Users_Guide/Getting_Started/). Other types of data files such as clinical supplements, biospecimen supplements, and pathology reports are uploaded to the GDC in the same way. Supported data file formats are listed at the GDC [Submitted Data Types and File Formats](https://gdc.cancer.gov/about-data/data-types-and-file-formats/submitted-data-types-and-file-formats) website. + +__GDC Data Transfer Tool:__ A file can be uploaded using its UUID (which can be retrieved from the GDC Submission Portal or API) once it is registered. + +[![UUID Location](images/GDC_Submission_UUID_location.png)](images/GDC_Submission_UUID_location.png "Click to see the full image.") + +The following command can be used to upload the file: + +```Shell +gdc-client upload --project-id PROJECT-INTERNAL --identifier a053fad1-adc9-4f2d-8632-923579128985 -t $token -f $path_to_file +``` + +Additionally a manifest can be downloaded from the Submission Portal and passed to the Data Transfer Tool. This will allow for the upload of more than one `submittable_data_file`: + +```Shell +gdc-client upload -m manifest.yml -t $token +``` +__API Upload:__ A `submittable_data_file` can be uploaded through the API by using the `/submission/$PROGRAM/$PROJECT/files` endpoint. The following command would be typically used to upload a file: + +```Shell +curl --request PUT --header "X-Auth-Token: $token" https://api.gdc.cancer.gov/v0/submission/PROJECT/INTERNAL/files/6d45f2a0-8161-42e3-97e6-e058ac18f3f3 -d $path_to_file + +``` + +For more details on how to upload a `submittable_data_file` to a project see the [API Users Guide](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/) and the [Data Transfer Tool Users Guide](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload/). + +## Annotation Submission + +The GDC Data Portal supports the use of annotations for any submitted entity or file. An annotation entity may include comments about why particular patients or samples are not present or why they may exhibit critical differences from others. Annotations include information that cannot be submitted to the GDC through other existing nodes or properties. + +If a submitter would like to create an annotation, please contact the GDC Support Team (support@nci-gdc.datacommons.io). + +## Deleting Submitted Entities + +The GDC Data Submission Portal allows users to delete submitted entities from the project when the project is in an "OPEN" state. Files cannot be deleted while in the "SUBMITTED" state. This section applies to entities that have been committed to the project. Entities that have not been committed can be removed from the project by choosing the `DISCARD` button. Entities can also be deleted using the API. See the [API Submission Documentation](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/#deleting-entities) for specific instructions. + +>__NOTE:__ Entities associated with files uploaded to the GDC object store cannot be deleted until the associated file has been deleted. Users must utilize the [GDC Data Transfer Tool](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload/#deleting-previously-uploaded-data) to delete these files first. + +### Simple Deletion + +If an entity was uploaded and has no related entities, it can be deleted from the [Browse](Data_Submission_Process.md#browse) tab. Once the entity to be deleted is selected, choose the `DELETE` button in the right panel under "ACTIONS". + + +[![GDC Delete Unassociated Case](images/GDC-Delete-Case-Unassociated.png)](images/GDC-Delete-Case-Unassociated.png "Click to see the full image.") + + +A message will then appear asking if you are sure about deleting the entity. Choosing the `YES, DELETE` button will remove the entity from the project, whereas choosing the `NO, CANCEL` button will return the user to the previous screen. + + +[![GDC Yes or No](images/GDC-Delete-Sure.png)](images/GDC-Delete-Sure.png "Click to see the full image.") + + +### Deletion with Dependents + +If an entity has related entities, such as a `case` with multiple `samples` and `aliquots`, deletion takes one extra step. + + +[![GDC Delete Associated Case](images/GDC-Delete-Case-Associated.png)](images/GDC-Delete-Case-Associated.png "Click to see the full image.") + + +Follow the [Simple Deletion](Data_Submission_Walkthrough.md#simple-deletion) method until the end. This action will appear in the [Transactions](Data_Submission_Process.md#transactions) tab as "Delete" with a "FAILED" state. + + +[![GDC Delete Failed](images/GDC-Failed-Transaction.png)](images/GDC-Failed-Transaction.png "Click to see the full image.") + + +Choose the failed transaction and the right panel will show the list of entities related to the entity that was going to be deleted. + + +[![GDC Error Related](images/GDC-Error-Related.png)](images/GDC-Error-Related.png "Click to see the full image.") + + +Selecting the `DELETE ALL` button at the bottom of the list will delete all of the related entities, their descendants, and the original entity. + + +### Submitted Data File Deletion + +The [`submittable_data_files`](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-entity-list&anchor=submittable_data_file) that were uploaded erroneously are deleted separately from their associated entity using the GDC Data Transfer Tool. See the section on [Deleting Data Files](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload/#deleting-previously-uploaded-data) in the Data Transfer Tool users guide for specific instructions. + +## Updating Uploaded Entities + +Before harmonization occurs, entities can be modified to update, add, or delete information. These methods are outlined below. + +### Updating or Adding Fields + +Updated or additional fields can be applied to entities by re-uploading them through the GDC Data Submission portal or API. See below for an example of a case upload with a `primary_site` field being added and a `disease_type` field being updated. + +```Before +{ +"type":"case", +"submitter_id":"GDC-INTERNAL-000043", +"projects":{ + "code":"INTERNAL" +}, +"disease_type": "Myomatous Neoplasms" +} +``` +```After +{ +"type":"case", +"submitter_id":"GDC-INTERNAL-000043", +"projects":{ + "code":"INTERNAL" +}, +"disease_type": "Myxomatous Neoplasms", +"primary_site": "Pancreas" +} +``` +__Guidelines:__ + +* The newly uploaded entity must contain the `submitter_id` of the existing entity so that the system updates the correct one. +* All newly updated entities will be validated by the GDC Dictionary. All required fields must be present in the newly updated entity. +* Fields that are not required do not need to be re-uploaded and will remain unchanged in the entity unless they are updated. + +### Deleting Optional Fields + +It may be necessary to delete fields from uploaded entities. This can be performed through the API and can only be applied to optional fields. It also requires the UUID of the entity, which can be retrieved from the submission portal or using a GraphQL query. + +In the example below, the `primary_site` and `disease_type` fields are removed from a `case` entity: + +```Shell +curl --header "X-Auth-Token: $token_string" --request DELETE --header "Content-Type: application/json" "https://api.gdc.cancer.gov/v0/submission/EXAMPLE/PROJECT/entities/7aab7578-34ff-5651-89bb-57aefdc4c4f8?fields=primary_site,disease_type" +``` + +```Before +{ +"type":"case", +"submitter_id":"GDC-INTERNAL-000043", +"projects":{ + "code":"INTERNAL" +}, +"disease_type": "Germ Cell Neoplasms", +"primary_site": "Pancreas" +} +``` +```After +{ +"type":"case", +"submitter_id":"GDC-INTERNAL-000043", +"projects":{ + "code":"INTERNAL" +} +} +``` + +### Versioning +Changes to entities will create versions. For more information on this, please go to [Uploading New Versions of Data Files](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/#uploading-new-versions-of-data-files). + +## Strategies for Submitting in Bulk + +Each submission in the previous sections was broken down by component to demonstrate the GDC Data Model structure. However, the submission of multiple entities at once is supported and encouraged. Here two strategies for submitting data in an efficient manner are discussed. + +### Registering a BAM File: One Step + +Registering a BAM file (or any other type) can be performed in one step by including all of the entities, from `case` to `submitted_aligned_reads`, in one file. See the example below: + +```JSON +[{ + "type": "case", + "submitter_id": "PROJECT-INTERNAL-000055", + "projects": { + "code": "INTERNAL" + } +}, +{ + "type": "sample", + "cases": { + "submitter_id": "PROJECT-INTERNAL-000055" + }, + "sample_type": "Blood Derived Normal", + "submitter_id": "Blood-00001_55" +}, +{ + "type": "portion", + "submitter_id": "Blood-portion-000055", + "samples": { + "submitter_id": "Blood-00001_55" + } +}, +{ + "type": "analyte", + "portions": { + "submitter_id": "Blood-portion-000055" + }, + "analyte_type": "DNA", + "submitter_id": "Blood-analyte-000055" +}, +{ + "type": "aliquot", + "submitter_id": "Blood-00021-aliquot55", + "analytes": { + "submitter_id": "Blood-analyte-000055" + } +}, +{ + "type": "read_group", + "submitter_id": "Blood-00001-aliquot_lane1_barcodeACGTAC_55", + "experiment_name": "Resequencing", + "is_paired_end": true, + "library_name": "Solexa-34688", + "library_selection":"Hybrid Selection", + "library_strategy": "WXS", + "platform": "Illumina", + "read_group_name": "205DD.3-2", + "read_length": 75, + "sequencing_center": "BI", + "aliquots": + { + "submitter_id": "Blood-00021-aliquot55" + } +}, +{ + "type": "submitted_aligned_reads", + "submitter_id": "Blood-00001-aliquot_lane1_barcodeACGTAC_55.bam", + "data_category": "Raw Sequencing Data", + "data_format": "BAM", + "data_type": "Aligned Reads", + "experimental_strategy": "WGS", + "file_name": "test.bam", + "file_size": 38, + "md5sum": "aa6e82d11ccd8452f813a15a6d84faf1", + "read_groups": [ + { + "submitter_id": "Blood-00001-aliquot_lane1_barcodeACGTAC_55" + } + ] +}] +``` + +All of the entities are placed into a JSON list object: + +`[{"type": "case","submitter_id": "PROJECT-INTERNAL-000055","projects": {"code": "INTERNAL"}}}, entity-2, entity-3]` + +The entities need not be in any particular order as they are validated together. + +>__Note:__ Tab-delimited format is not recommended for 'one-step' submissions due to an inability of the format to accommodate multiple 'types' in one row. + +### Submitting Numerous Cases + +The GDC understands that submitters will have projects that comprise more entities than would be reasonable to individually parse into JSON formatted files. Additionally, many investigators store large amounts of data in a tab-delimited format (TSV). For instances like this, we recommend parsing all entities of the same type into separate TSVs and submitting them on a type-basis. + +For example, a user may want to submit 100 Cases associated with 100 `samples`, 100 `portions`, 100 `analytes`, 100 `aliquots`, and 100 `read_groups`. Constructing and submitting 100 JSON files would be tedious and difficult to organize. The solution is submitting one `case` TSV containing the 100 `cases`, one `sample` TSV containing the 100 `samples`, so on and so forth. Doing this would only require six TSVs and these files can be formatted in programs such as Microsoft Excel or Google Spreadsheets. + +See the following example TSV files: + +* [Cases.tsv](Cases.tsv) +* [Samples.tsv](Samples.tsv) +* [Portions.tsv](Portions.tsv) +* [Analytes.tsv](Analytes.tsv) +* [Aliquots.tsv](Aliquots.tsv) +* [Read-Groups.tsv](Readgroups.tsv) + +### Download Previously Uploaded Metadata Files + +The [transaction](Data_Submission_Process.md#transactions) page lists all previous transactions in the project. The user can download metadata files uploaded to the GDC workspace in the details section of the screen by selecting one transaction and scrolling to the "DOCUMENTS" section. + + +[![Transaction Original Files](images/GDC_Submission_Transactions_Original_Files_2.png)](images/GDC_Submission_Transactions_Original_Files_2.png "Click to see the full image.") + +### Download Previously Uploaded Data Files + +The only supported method to download data files previously uploaded to the GDC Submission Portal that have not been release yet is to use the API or the [Data Transfer Tool](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Getting_Started/). To retrieve data previous upload to the submission portal you will need to retrieve the data file's UUID. The UUIDs for submitted data files are located in the submission portal under the file's Summary section as well as the manifest file located on the file's Summary page. + +[![Submission Portal Summary View](images/gdc-submission__image2_submission_UUID.png)](images/gdc-submission__image2_submission_UUID.png "Click to see the full image.") + +Once the UUID(s) have been retrieved, the download process is the same as it is for downloading data files at the [GDC Portal using UUIDs](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload/#downloading-data-using-gdc-file-uuids). + + >__Note:__ When submittable data files are uploaded through the Data Transfer Tool they are not displayed as transactions. diff --git a/docs/Data_Submission_Portal/Users_Guide/Getting_Started.md b/docs/Data_Submission_Portal/Users_Guide/Getting_Started.md deleted file mode 100644 index 5de77ef20..000000000 --- a/docs/Data_Submission_Portal/Users_Guide/Getting_Started.md +++ /dev/null @@ -1,66 +0,0 @@ -# Getting Started - -## Overview - -The National Cancer Institute (NCI) Genomic Data Commons (GDC) Data Submission Portal User's Guide is the companion documentation for the [GDC Data Submission Portal](https://gdc.cancer.gov/submit-data/gdc-data-submission-portal) and provides detailed information and instructions for its use. - -The GDC Data Submission Portal is a platform that allows researchers to submit and release data to the GDC. The key features of the GDC Data Submission Portal are: - -* __Upload and Validate Data__: Project data can be uploaded to the GDC project workspace. The GDC will validate the data against the [GDC Data Dictionary](https://gdc-docs.nci.nih.gov/Data_Dictionary/). -* __Review and Submit Data__: Prior to submission, data can be reviewed to check for accuracy. Once the review is complete, the data can be submitted to the GDC for processing through [Data Harmonization](https://gdc.cancer.gov/submit-data/gdc-data-harmonization). -* __Release Data__: After harmonization, data can be released to the research community for access through [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). -* __Download Data__: Data that has been uploaded into the project workspace can be downloaded for review or update. Data can then be re-uploaded before it is released for access through [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). -* __Browse Data__: Data that has been uploaded to the project workspace can be browsed to ensure that the project is ready for processing. -* __Status and Alerts__: Visual cues are implemented to easily identify incomplete submissions. - - -## Key Features - -### Upload and Validate Data -To submit data to the GDC, the user will prepare the data and upload it to the project workspace. - -The main categories of data that can be uploaded include: - -* __Clinical Data__: Elements such as `gender`, `age`, `diagnosis`, etc. as defined in the GDC Data Dictionary. -* __Biospecimen Data__: Information about entities such as `samples`, `aliquots`, etc. as defined in the GDC Data Dictionary. -* __Submittable Data Files__: Sequencing data such as BAM and FASTQ files, slide images, and other experimental data collected by the study. - -The [GDC Data Dictionary Viewer](../../Data_Dictionary/viewer.md) outlines the minimum field requirements for each of the three categories listed above. - -### Review and Submit Data - -Once data is uploaded to the project workspace, it can be reviewed to ensure that the data is ready for processing through the [GDC Harmonization Process](https://gdc.cancer.gov/submit-data/gdc-data-harmonization). The review will lock the project to ensure that additional data cannot be uploaded while in review. During this period the data can be browsed or downloaded in the Data Submission Portal. - -If the project is ready for processing, data can be submitted to the GDC. If the project is not ready for processing, the project can be re-opened. This will allow for additional data to be uploaded to the project workspace. - -### Release Data - -The GDC will release data according to [GDC data sharing policies](https://gdc.cancer.gov/submit-data/data-submission-policies). Data may be released after six months from the date of upload, or the submitter may request earlier release using the "Request Release" function. - -Upon release, harmonized data will be available to GDC users through the [GDC Data Portal](https://portal.gdc.cancer.gov/) and other [GDC Data Access Tools](https://gdc.cancer.gov/access-data/data-access-processes-and-tools). - - -### Redaction - -Data uploaded to the GDC can be updated before it is submitted for processing and harmonization. After harmonized data is released, it can only be redacted by GDC administrators under certain conditions. To request redaction of released data, please contact [GDC User Services](https://gdc.cancer.gov/support#gdc-help-desk). - -### Browse and Download Data - -Authorized submitters can browse and retrieve data submitted to their project using the Data Submission Portal. Retrieval of data submitted to the submission portal can be accomplished by using the API or the Data Transfer Tool. UUIDs of submitted files can be retrieved from the submission portal or with a [GraphQL](https://docs.gdc.cancer.gov/API/Users_Guide/Submission/#querying-submitted-data-using-graphql) query. Please see the [API](https://docs.gdc.cancer.gov/API/Users_Guide/Downloading_Files/) documentation for more information about downloads. - - -### Status and Alerts - -The GDC Data Submission Portal Dashboard and navigation panel displays a summary of submitted data and associated data elements, such as the number of cases with Clinical data or Biospecimen data. - -### Transactions - -Submitters can access a list of all actions performed in a project by clicking on the Transactions tab on the dashboard. This will display a list of all past transactions for the selected project. Users can access details about each transaction. The most recent transactions are also displayed on the dashboard. - -### Submission Project Examples - -Step-by-step instructions on GDC data submission and their relationship to the GDC Data Model are detailed in the [Upload Data](Data_Upload_UG.md) guide. - -## Release Notes - -The [Release Notes](../../Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md) section of this User's Guide contains details about new features, bug fixes, and known issues. diff --git a/docs/Data_Submission_Portal/Users_Guide/Pre_Release_QC.md b/docs/Data_Submission_Portal/Users_Guide/Pre_Release_QC.md index 291cc668a..0996e4c69 100644 --- a/docs/Data_Submission_Portal/Users_Guide/Pre_Release_QC.md +++ b/docs/Data_Submission_Portal/Users_Guide/Pre_Release_QC.md @@ -1,90 +1,44 @@ # Pre-Release Data Portal - -## Getting Started - - -### The GDC Pre-Release Data Portal: An Overview - -The Genomic Data Commons (GDC) Portal provides users with web-based access to pre-released data from cancer genomics studies that have been harmonized by the GDC, but not yet released in the main GDC Data Portal. Key GDC Pre-Release Data Portal features include: - -* Access to data prior to release on the GDC Data Portal. -* Repository page for browsing data by project / file / case -* File / case faceted searches to filter data -* Cart for collecting data files of interest -* Authentication using eRA Commons credentials for access to controlled-access data files -* Secure data download directly from the cart or using the [GDC Data Transfer Tool](https://gdc.cancer.gov/access-data/gdc-data-transfer-tool) -* Use of API for query and download - - - +The [GDC Pre-Release Data Portal](https://portal.awg.gdc.cancer.gov/) provides users with web-based access to pre-released data from cancer genomics studies that have been harmonized by the GDC, but not yet released in the main GDC Data Portal. ## Navigation +[Pre-Release Data Portal](https://portal.awg.gdc.cancer.gov/) will appear similar to the GDC Active Portal, but the Pre-Release Data Portal features are a subset of what can be found in the GDC Data Portal. -Pre-Release Data Portal features are a subset of what can be found in the GDC Data Portal. For more information on any of these general features please review the [Data Portal User Guide](/Data_Portal/Users_Guide/Getting_Started/#navigation). - -[![GDC Views](images/AWG_Portal.png)](images/WG_Portal.png "Click to see the full image.") - - +[![GDC Views](images/AWG_Portal.png)](images/AWG_Portal.png "Click to see the full image.") +For more information on any of these general features please review the [GDC Data Portal User Guide](/Data_Portal/Users_Guide/Getting_Started/#navigation). ## Authentication -### Overview - -The GDC Pre-Release Data Portal provides access to datasets prior to release to a group of users specified by the data submitter. This area is only available to data submitters (or their designees) for reviewing pre-release data. Users must be granted access as specified in the admin portal section and also have downloader access within dbGaP for the specified project. - -### GDC Authentication Tokens - -The GDC Pre-Release Data Portal provides authentication tokens for use with the GDC Data Transfer Tool or the GDC API. To download a token: - -1. Log into the GDC using your eRA Commons credentials -2. Click the username in the top right corner of the screen -3. Select the "Download token" option - -![Token Download Button](images/gdc-data-portal-token-download.png) - -A new token is generated each time the `Download Token` button is clicked. - -For more information about authentication tokens, see [Data Security](../../Data/Data_Security/Data_Security.md#authentication-tokens). - -**NOTE:** The authentication token should be kept in a secure location, as it allows access to all data accessible by the associated user account. - ### Relationship between GDC Data Portal and Pre-Release Data Portal Tokens -The tokens used to download files from the GDC Data Portal and Pre-Release Data Portal are related but distinct. Specifically, the token generated in the Pre-Release data portal contains a longer version of the regular GDC Authentication Token downloaded from the GDC Data Portal. Because of this, the GDC Data Portal token will not function for downloading data from the Pre-release Data Portal environment using the Data Transfer Tool or API. However, the Pre-Release Data Portal token will function for downloading data from the GDC Data Portal using the API or Data Transfer Tool. Finally, if a new token is generated in the Pre-release Data Portal this will invalidate the token downloaded from the GDC Data Portal and vice versa. - -### Logging Out - -To log out of the GDC, click the username in the top right corner of the screen, and select the Logout option. - -![Logout link](images/gdc-data-portal-token-download.png) +The GDC Pre-Release Data Portal provides access to datasets prior to release to a group of users specified by the data submitter. This area is only available to data submitters (or their designees) for reviewing pre-release data. Users must be granted access as specified in the GDC Pre-Release Data Admin Portal section and have downloader access within dbGaP for the specified project. To learn more about obtaining the required credentials and authorization, see [Obtaining Access to Submit Data]( https://gdc.cancer.gov/submit-data/obtaining-access-submit-data). +The tokens used to download files from the GDC Data Portal and Pre-Release Data Portal are related but distinct. Specifically, the token generated in the Pre-Release Data Portal contains a longer version of the regular GDC Authentication Token downloaded from the GDC Data Portal. Because of this, the GDC Data Portal token will not function for downloading data from the Pre-release Data Portal environment using the Data Transfer Tool or API. However, the Pre-Release Data Portal token will function for downloading data from the GDC Data Portal using the API or Data Transfer Tool. Finally, if a new token is generated in the Pre-release Data Portal this will invalidate the token downloaded from the GDC Data Portal and vice versa. ## Data Transfer Tool -As with the GDC Data Portal, downloads of large or numerous files is best performed using the GDC Data Transfer Tool. Information on the GDC Data Transfer Tool is available in the [GDC Data Transfer Tool User's Guide](/node/8196/). An important distinction for use with the Pre-Release Data Portal is that it must always be used with a token and with the option `-s https://api.awg.gdc.cancer.gov`. +As with the GDC Data Portal, downloads of large or numerous files is best performed using the GDC Data Transfer Tool. Information on the GDC Data Transfer Tool is available in the [GDC Data Transfer Tool User's Guide](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Getting_Started/). An important distinction for use with the Pre-Release Data Portal is that it must always be used with a token and with the option `-s https://api.awg.gdc.cancer.gov`. ## GDC Pre-Release Data Admin Portal -### Overview - -The GDC Pre-Release Data Admin Portal allows Pre-Release Data Portal admins to create and maintain Pre-Release Data Groups and associated projects, as well as grant appropriate access to users within these groups. To gain access to the Pre-Release Data Admin Portal please contact the GDC Helpdesk (support@nci-gdc.datacommons.io). +The GDC Pre-Release Data Admin Portal allows admins to create and maintain Pre-Release Data Groups and associated projects, as well as grant appropriate access to users within these groups. To gain access to the Pre-Release Data Admin Portal please contact the GDC Helpdesk (support@nci-gdc.datacommons.io). [![GDC Pre-Release Data Portal Main Page](images/AWG_Admin.png)](images/AWG_Admin.png "Click to see the full image.") The Pre-Release Data Admin Portal is broken into two views on the left-most panel: -* __Users__: Allows admin to create, view, edit Pre-Release Data Portal user profiles -* __Groups__: Allows admin to manage groups projects / users +* __Users__: Allows admin to create, view, edit Pre-Release Data Portal user profiles. +* __Groups__: Allows admin to manage groups projects / users. #### Definitions | Entity | Definition | |---|---| | __User__ | An individual with an eRA Commons account. | -| __Project__ | A collection of files and observations that are contained in the GDC database and have been registered in dbGAP as a project. Only certain projects are designated as Pre-Release Data projects.| +| __Project__ | A collection of files and observations that are contained in the GDC database and have been registered in dbGaP as a project. Only certain projects are designated as Pre-Release Data projects.| | __Group__ | A collection of users and projects. When a user is assigned to a group, they will have access to the projects in that group when they login to the Pre-Release Data portal as long as they have downloader access to the project in dbGaP.| ### Users @@ -95,15 +49,15 @@ The __Users__ section of the GDC Pre-Release Data Admin portal allows admins to #### Creating Users -To create a new user in the Pre-Release Data Admin Portal, click on the `Create` button on the far right panel. +To create a new user in the Pre-Release Data Admin Portal, click on the `Create` button on the far-right panel. [![GDC Pre-Release Data Portal Main Page](images/AWG_Admin_Create_User.png)](images/AWG_Admin_Create_User.png "Click to see the full image.") Then the following information must be supplied, before clicking the `Save` button: -* __eRA Commons ID__: The eRA Commons ID of the user to be added -* __Role__: Choose between `Admin` or `User` roles -* __Group (Optional)__: Choose existing groups to add the user to +* __eRA Commons ID__: The eRA Commons ID of the user to be added. +* __Role__: Choose between `Admin` or `User` roles. +* __Group (Optional)__: Choose existing groups to add the user to. After clicking `Save`, the user should appear in the list of users in the center panel. Also clicking on the user in the list will display information about that user and gives the options to `Edit` the user profile, or `Delete` the user. @@ -117,24 +71,24 @@ The __Groups__ section of the GDC Pre-Release Data Admin portal allows admins to #### Creating Groups -To create a new group in the Pre-Release Data Admin Portal, click on the `Create` button on the far right panel. +To create a new group in the Pre-Release Data Admin Portal, click on the `Create` button on the far-right panel. [![GDC Pre-Release Data Portal Main Page](images/AWG_Admin_Groups_Add.png)](images/AWG_Admin_Groups_Add.png "Click to see the full image.") Then the following information must be supplied, before clicking the `Save` button: -* __Name__: The name of the group -* __Description__: The description of the group -* __Users (Optional)__: Choose existing users to add to the group -* __Projects(Optional)__: Choose existing projects to add to the group +* __Name__: The name of the group. +* __Description__: The description of the group. +* __Users (Optional)__: Choose existing users to add to the group. +* __Projects(Optional)__: Choose existing projects to add to the group. After clicking `Save`, the group should appear in the list of groups in the center panel. Also clicking on the group in the list will display information about that group and gives the options to `Edit` or `Delete` the group. [![GDC Pre-Release Data Portal Main Page](images/AWG_Admin_New_Group.png)](images/AWG_Admin_New_Group.png "Click to see the full image.") -## API +## AWG API -API functionality is similar to what is available for the main GDC Data Portal. You can read more about the GDC API in general in the [API User Guide](/API/Users_Guide/Getting_Started/). Important differences for the AWG API include the following: +API functionality is similar to what is available for the main GDC Data Portal. You can read more about the GDC API in general in the [API User Guide](/API/Users_Guide/Getting_Started/). Important differences for the Analysis Working Group (AWG) API include the following: * The base URL is different. Instead use https://api.awg.gdc.cancer.gov/ * An authorization token must always be passed with every query rather than just for downloading controlled access data. diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC-HomePage-Submit_v2.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC-HomePage-Submit_v2.png index 56849cc7e..79810d43c 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/GDC-HomePage-Submit_v2.png and b/docs/Data_Submission_Portal/Users_Guide/images/GDC-HomePage-Submit_v2.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Data_Submission_Workflow-updated_20190301.jpg b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Data_Submission_Workflow-updated_20190301.jpg new file mode 100644 index 000000000..51fce4c7c Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Data_Submission_Workflow-updated_20190301.jpg differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_SUBMIT_TO_GDC_v3.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_SUBMIT_TO_GDC_v3.png new file mode 100644 index 000000000..3cd73a01f Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_SUBMIT_TO_GDC_v3.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_2.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_2.png index 29f8cebd9..dc6357a73 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_2.png and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_2.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_4.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_4.png new file mode 100644 index 000000000..69ffdbe76 Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Dashboard_4.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State.png index 18683c176..8375522e7 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State.png and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State_Review_3.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State_Review_3.png new file mode 100644 index 000000000..ec84b299a Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State_Review_3.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State_v3.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State_v3.png new file mode 100644 index 000000000..78e6420e8 Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Project_State_v3.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Submit_tab_2_v4.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Submit_tab_2_v4.png new file mode 100644 index 000000000..e4423432c Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Submit_Release_Submit_tab_2_v4.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_2.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_2.png index 5f30a9bb6..7b2c85630 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_2.png and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_2.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_2.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_2.png index dc75edf28..2e007b0ba 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_2.png and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_2.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_3.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_3.png new file mode 100644 index 000000000..9f65626fb Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_Transactions_Details_3.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_UUID_location.png b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_UUID_location.png new file mode 100644 index 000000000..a12708b36 Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/GDC_Submission_UUID_location.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/Submission.png b/docs/Data_Submission_Portal/Users_Guide/images/Submission.png new file mode 100644 index 000000000..eee369813 Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/Submission.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/Untitled.png b/docs/Data_Submission_Portal/Users_Guide/images/Untitled.png deleted file mode 100644 index 7dbe428eb..000000000 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/Untitled.png and /dev/null differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow.png b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow.png index 4dd08fd1f..81f788499 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow.png and b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow_2.jpg b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow_2.jpg new file mode 100644 index 000000000..fd641d17d Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow_2.jpg differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow_2.png b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow_2.png new file mode 100644 index 000000000..cec6b4b9f Binary files /dev/null and b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-data-upload-workflow_2.png differ diff --git a/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-file-state-vs-state.png b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-file-state-vs-state.png index 75c10971a..a7a08c50f 100644 Binary files a/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-file-state-vs-state.png and b/docs/Data_Submission_Portal/Users_Guide/images/gdc-submission-portal-file-state-vs-state.png differ diff --git a/docs/Data_Transfer_Tool/Release_Notes/DTT_Release_Notes.md b/docs/Data_Transfer_Tool/Release_Notes/DTT_Release_Notes.md index c5efa4685..cf9117250 100644 --- a/docs/Data_Transfer_Tool/Release_Notes/DTT_Release_Notes.md +++ b/docs/Data_Transfer_Tool/Release_Notes/DTT_Release_Notes.md @@ -2,12 +2,36 @@ | Version | Date | |---|---| +| [v1.4.0](DTT_Release_Notes.md#v140) | December 18, 2018 | | [v1.3.0](DTT_Release_Notes.md#v130) | August 22, 2017 | | [v1.2.0](DTT_Release_Notes.md#v120) | Oct 31, 2016 | | [v1.1.0](DTT_Release_Notes.md#v110) | September 7, 2016 | | [v1.0.1](DTT_Release_Notes.md#v101) | June 2, 2016 | | [v1.0.0](DTT_Release_Notes.md#v100) | May 26, 2016 | +## V1.4.0 +* __GDC Product__: Data Transfer Tool +* __Release Date__: December 18, 2018 + +### New Features and Changes +* Enabled download latest file version feature +* Removal of Interactive mode +* Enabled display of all default settings +* Standardized upload and download help menus + +### Bugs Fixed Since Last Release +* Download flag --no-related-files bug preventing file downloads fixed +* File name handling with forward slashes bug fixed +* Download flag --no-segment-md5sums bug fixed. + +### Known Issues and Workarounds +* Use of non-ASCII characters in token passed to Data Transfer Tool will produce incorrect error message "Internal server error: Auth service temporarily unavailable". +* On some terminals, dragging and dropping a file into the interactive client will add single quotes (' ') around the file path. This causes the interactive client to misinterpret the file path and generate an error when attempting to load a manifest file or token. + * *Workaround:* Manually type out the file name or remove the single quotes from around the file path. +* When any files mentioned in the upload manifest are not present in the upload directory the submission will hang at the missing file. + * *Workaround:* Edit the manifest to specify only the the files that are present in the upload directory for submission or copy the missing files into the upload directory. + + ## v1.3.0 * __GDC Product__: Data Transfer Tool * __Release Date__: August 22, 2017 @@ -103,12 +127,6 @@ * On some terminals, dragging and dropping a file into the interactive client will add single quotes (' ') around the file path. This causes the interactive client to misinterpret the file path and generate an error when attempting to load a manifest file or token. * *Workaround:* Manually type out the file name or remove the single quotes from around the file path. - - - - - - ## v1.0.0 * __GDC Product__: Data Transfer Tool diff --git a/docs/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help.md b/docs/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help.md index 7eaf8d739..42df8861f 100644 --- a/docs/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help.md +++ b/docs/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help.md @@ -10,7 +10,7 @@ The GDC Data Transfer Tool comes with built-in help menus. These menus are displ gdc-client --help ``` ``` Output -usage: gdc-client [-h] [--version] {download,upload,interactive} ... +usage: gdc-client [-h] [--version] {download,upload,settings} ... The Genomic Data Commons Command Line Client @@ -19,11 +19,11 @@ optional arguments: --version show program's version number and exit commands: - {download,upload,interactive} + {download,upload,settings} for more information, specify -h after a command download download data from the GDC upload upload data to the GDC - interactive run in interactive mode + settings display default settings ``` The available menus are provided below. @@ -36,7 +36,7 @@ The GDC Data Transfer Tool displays the following output when executed without a gdc-client ``` ```Output -usage: gdc-client [-h] [--version] {download,upload,interactive} ... +usage: gdc-client [-h] [--version] {download,upload,settings} ... gdc-client: error: too few arguments ``` @@ -49,53 +49,64 @@ The GDC Data Transfer Tool displays the following help menu for its download fun gdc-client download --help ``` ```Output -usage: gdc-client download [-h] [--debug] [--log-file LOG_FILE] - [-t TOKEN_FILE] [-d DIR] [-s server] - [--no-segment-md5sums] [--no-file-md5sum] - [-n N_PROCESSES] - [--http-chunk-size HTTP_CHUNK_SIZE] - [--save-interval SAVE_INTERVAL] - [--no-verify] [--no-related-files] - [--no-annotations] [--no-auto-retry] - [--retry-amount RETRY_AMOUNT] - [--wait-time WAIT_TIME] [-u] [-m MANIFEST] - [file_id [file_id ...]] +usage: gdc-client download [-h] [--debug] + [--log-file LOG_FILE] + [--color_off] [-t TOKEN_FILE] + [-d DIR] [-s server] + [--no-segment-md5sums] + [--no-file-md5sum] + [-n N_PROCESSES] + [--http-chunk-size HTTP_CHUNK_SIZE] + [--save-interval SAVE_INTERVAL] + [--no-verify] + [--no-related-files] + [--no-annotations] + [--no-auto-retry] + [--retry-amount RETRY_AMOUNT] + [--wait-time WAIT_TIME] + [--latest] [--config FILE] [-u] + [-m MANIFEST] + [file_id [file_id ...]] positional arguments: - file_id The GDC UUID of the file(s) to download +file_id The GDC UUID of the file(s) to download optional arguments: - -h, --help show this help message and exit - --debug Enable debug logging. If a failure occurs, the program - will stop. - --log-file LOG_FILE Save logs to file. Amount logged affected by --debug - -t TOKEN_FILE, --token-file TOKEN_FILE - GDC API auth token file - -d DIR, --dir DIR Directory to download files to. Defaults to current dir - -s server, --server server +-h, --help show this help message and exit +--debug Enable debug logging. If a failure occurs, the program + will stop. +--log-file LOG_FILE Save logs to file. Amount logged affected by --debug +--color_off Disable colored output +-t TOKEN_FILE, --token-file TOKEN_FILE + GDC API auth token file +-d DIR, --dir DIR Directory to download files to. Defaults to current + dir +-s server, --server server The TCP server address server[:port] - --no-segment-md5sums Do not calculate inbound segment md5sumsand/or do not +--no-segment-md5sums Do not calculate inbound segment md5sums and/or do not verify md5sums on restart - --no-file-md5sum Do not verify file md5sum after download - -n N_PROCESSES, --n-processes N_PROCESSES - Number of client connections. - --http-chunk-size HTTP_CHUNK_SIZE - Size in bytes of standard HTTP block size. - --save-interval SAVE_INTERVAL - The number of chunks after which to flush state file. - A lower save interval will result in more frequent - printout but lower performance. - --no-verify Perform insecure SSL connection and transfer - --no-related-files Do not download related files. - --no-annotations Do not download annotations. - --no-auto-retry Ask before retrying to download a file - --retry-amount RETRY_AMOUNT - Number of times to retry a download - --wait-time WAIT_TIME - Amount of seconds to wait before retrying - -u, --udt Use the UDT protocol. - -m MANIFEST, --manifest MANIFEST - GDC download manifest file +--no-file-md5sum Do not verify file md5sum after download +-n N_PROCESSES, --n-processes N_PROCESSES + Number of client connections. +--http-chunk-size HTTP_CHUNK_SIZE, -c HTTP_CHUNK_SIZE + Size in bytes of standard HTTP block size. +--save-interval SAVE_INTERVAL + The number of chunks after which to flush state file. + A lower save interval will result in more frequent + printout but lower performance. +--no-verify Perform insecure SSL connection and transfer +--no-related-files Do not download related files. +--no-annotations Do not download annotations. +--no-auto-retry Ask before retrying to download a file +--retry-amount RETRY_AMOUNT + Number of times to retry a download +--wait-time WAIT_TIME + Amount of seconds to wait before retrying +--latest Download latest version of a file if it exists +--config FILE Path to INI-type config file +-u, --udt Use the UDT protocol. +-m MANIFEST, --manifest MANIFEST + GDC download manifest file ``` ### Upload help menu @@ -107,38 +118,51 @@ The GDC Data Transfer Tool displays the following help menu for its upload funct gdc-client upload --help ``` ```Output -usage: gdc-client upload [-h] [--debug] [-v] [--log-file LOG_FILE] - [-T TOKEN | -t TOKEN] [-H HOST] [-P PORT] - [--project-id PROJECT_ID] [--identifier IDENTIFIER] - [--path path] [--upload-id UPLOAD_ID] [--insecure] - [--server SERVER] [--part-size PART_SIZE] - [-n N_PROCESSES] [--disable-multipart] [--abort] - [--resume] [--delete] [--manifest MANIFEST] +usage: gdc-client upload [-h] [--debug] + [--log-file LOG_FILE] + [--color_off] [-t TOKEN_FILE] + [--project-id PROJECT_ID] + [--path path] + [--upload-id UPLOAD_ID] + [--insecure] [--server SERVER] + [--part-size PART_SIZE] + [--upload-part-size UPLOAD_PART_SIZE] + [-n N_PROCESSES] + [--disable-multipart] [--abort] + [--resume] [--delete] + [--manifest MANIFEST] + [--config FILE] + [file_id [file_id ...]] +positional arguments: + file_id The GDC UUID of the file(s) to upload optional arguments: - -h, --help show this help message and exit - --debug Enable debug logging. If a failure occurs, the program - will stop. - --log-file LOG_FILE Save logs to file. Amount logged affected by --debug - -t TOKEN_FILE, --token-file TOKEN_FILE - GDC API auth token file - --project-id PROJECT_ID, -p PROJECT_ID - The project ID that owns the file - --path path, -f path directory path to find file - --upload-id UPLOAD_ID, -u UPLOAD_ID - Multipart upload id - --insecure, -k Allow connections to server without certs - --server SERVER, -s SERVER - GDC API server address - --part-size PART_SIZE, -ps PART_SIZE - Part size for multipart upload - -n N_PROCESSES, --n-processes N_PROCESSES - Number of client connections - --disable-multipart Disable multipart upload - --abort Abort previous multipart upload - --resume, -r Resume previous multipart upload - --delete Delete an uploaded file - --manifest MANIFEST, -m MANIFEST - Manifest which describes files to be uploaded ---identifier, -i DEPRECATED + -h, --help show this help message and exit + --debug Enable debug logging. If a failure occurs, the program + will stop. + --log-file LOG_FILE Save logs to file. Amount logged affected by --debug + --color_off Disable colored output + -t TOKEN_FILE, --token-file TOKEN_FILE + GDC API auth token file + --project-id PROJECT_ID, -p PROJECT_ID + The project ID that owns the file + --path path, -f path directory path to find file + --upload-id UPLOAD_ID, -u UPLOAD_ID + Multipart upload id + --insecure, -k Allow connections to server without certs + --server SERVER, -s SERVER + GDC API server address + --part-size PART_SIZE + DEPRECATED in favor of [--upload-part-size] + --upload-part-size UPLOAD_PART_SIZE, -c UPLOAD_PART_SIZE + Part size for multipart upload + -n N_PROCESSES, --n-processes N_PROCESSES + Number of client connections + --disable-multipart Disable multipart upload + --abort Abort previous multipart upload + --resume, -r Resume previous multipart upload + --delete Delete an uploaded file + --manifest MANIFEST, -m MANIFEST + Manifest which describes files to be uploaded + --config FILE Path to INI-type config file ``` diff --git a/docs/Data_Transfer_Tool/Users_Guide/Appendix_A_-_Config_File.md b/docs/Data_Transfer_Tool/Users_Guide/Appendix_A_-_Config_File.md new file mode 100644 index 000000000..48b7b1d2e --- /dev/null +++ b/docs/Data_Transfer_Tool/Users_Guide/Appendix_A_-_Config_File.md @@ -0,0 +1,40 @@ +###Data Transfer Tool Configuration File +The DTT has the ability to save and reuse configuration parameters in the format of a flat text file via a command line argument. A simple text file needs to be created first with an extension of either txt or dtt. The supported section headers are upload and download which can be used independently of each other or used in the same configuration file. Each section header corresponds to the main functions of the application which are to either download data from the GDC portals or to upload data to the submission system of the GDC. The configurable parameters are those listed in the help menus under either [download](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help/#download-help-menu) or [upload](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help/#upload-help-menu). + + +Example usage: + + gdc-client download d45ec02b-13c3-4afa-822d-443ccd3795ca --config my-dtt-config.dtt + +Example of configuration file: + + [upload] + path = /some/upload/path + http_chunk_size = 1024 + + + [download] + dir = /some/download/path + http_chunk_size = 2048 + retry_amount = 6 + + +###Display Config Parameters +This command line flag can be used with either the download or upload application feature to display what settings are active within a custom data transfer tool configuration file. + + gdc-client settings download --config my-dtt-config.dtt + [download] + no_auto_retry = False + no_file_md5sum = False + save_interval = 1073741824 + http_chunk_size = 2048 + server = http://exmple-site.com + n_processes = 8 + no_annotations = False + no_related_files = False + retry_amount = 6 + no_segment_md5sum = False + manifest = [] + wait_time = 5.0 + no_verify = True + dir = /some/download/path diff --git a/docs/Data_Transfer_Tool/Users_Guide/Appendix_A_-_Key_Terms.md b/docs/Data_Transfer_Tool/Users_Guide/Appendix_A_-_Key_Terms.md deleted file mode 100644 index 61a7e1e16..000000000 --- a/docs/Data_Transfer_Tool/Users_Guide/Appendix_A_-_Key_Terms.md +++ /dev/null @@ -1,13 +0,0 @@ -The following table provides definitions and explanations for terms and acronyms relevant to the content presented within this document. - -| Term | Definition | -|-------|--------------------------------------------------| -| eRA | Electronic Research Administration | -| GDC | Genomic Data Commons | -| HTTP | Hypertext Transfer Protocol | -| HTTPS | HTTP Secure | -| ID | Identifier | -| NCI | National Cancer Institute | -| TCGA | The Cancer Genome Atlas | -| TCP | Transmission Control Protocol | -| UUID | Universally Unique Identifier | diff --git a/docs/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md b/docs/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md index a57d21721..4ea3daac1 100644 --- a/docs/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md +++ b/docs/Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md @@ -1,4 +1,6 @@ -#Data Downloads and Uploads from the command line. +#Data Transfer Tool Command Line Documentation + + ## Downloads @@ -26,6 +28,19 @@ The GDC Data Transfer Tool supports resumption of interrupted downloads. To resu gdc-client download f80ec672-d00f-42d5-b5ae-c7e06bc39da1 +### Download Latest Version of a File +The GDC Data Transfer Tool supports file versioning. Our backend data storage supports multiple file versions so older and current versions can be accessible to our users. For information about accessing file versioning information with our API and finding older UUID information from current UUIDs please check out the [the API User Guide](https://docs.gdc.cancer.gov/API/Users_Guide/Search_and_Retrieval/#example-of-retrieving-file-version-information) section in our API documentation. When working with older manifests or older lists of UUIDs the latest version of a file can always be download with the --latest flag. + +```Shell +gdc-client download 426de656-7e34-4a49-b87e-6e2563fa3cdd --latest -t gdc-user-token.2018.txt +``` +```Output +Downloading LATEST versions of files +Latest version for 426de656-7e34-4a49-b87e-6e2563fa3cdd ==> 6633bfbd-87f1-4d3a-a475-7ad1e8c2017a +100% [#############################################################################################################################] Time: 0:01:16 14.10 MB/s +Successfully downloaded: 1 +``` + ### Downloading Controlled-Access Data A user authentication token is required for downloading Controlled-Access Data from GDC. Tokens can be obtained from the GDC Data Portal (see instructions in [Obtaining an Authentication Token](Preparing_for_Data_Download_and_Upload.md#obtaining-an-authentication-token)). Once downloaded, the token *file* can be passed to the GDC Data Transfer Tool using the **-t** or **--token-file** option: @@ -137,3 +152,211 @@ To resolve this issue, delete the file using the **--delete** switch before re-u Attempting to run gdc-client.exe by double-clicking it in the Windows Explorer will produce a window that blinks once and disappears. This is normal, the executable must be run using the command prompt. Click 'Start', followed by 'Run' and type 'cmd' into the text bar. Then navigate to the path containing the executable using the 'cd' command. + +## Help Menus + +The GDC Data Transfer Tool comes with built-in help menus. These menus are displayed when the GDC Data Transfer Tool is run with flags -h or --help for any of the main arguments to the tool. Running the GDC Data Transfer Tool without argument or flag will present a list of available command options. + + + +```Shell +gdc-client --help +``` +``` Output +usage: gdc-client [-h] [--version] {download,upload,settings} ... + +The Genomic Data Commons Command Line Client + +optional arguments: + -h, --help show this help message and exit + --version show program's version number and exit + +commands: + {download,upload,settings} + for more information, specify -h after a command + download download data from the GDC + upload upload data to the GDC + settings display default settings +``` + + The available menus are provided below. + +### Root menu + +The GDC Data Transfer Tool displays the following output when executed without any arguments. + +```Shell +gdc-client +``` +```Output +usage: gdc-client [-h] [--version] {download,upload,settings} ... +gdc-client: error: too few arguments +``` + + +### Download help menu + +The GDC Data Transfer Tool displays the following help menu for its download functionality. + +```Shell +gdc-client download --help +``` +```Output +usage: gdc-client download [-h] [--debug] + [--log-file LOG_FILE] + [--color_off] [-t TOKEN_FILE] + [-d DIR] [-s server] + [--no-segment-md5sums] + [--no-file-md5sum] + [-n N_PROCESSES] + [--http-chunk-size HTTP_CHUNK_SIZE] + [--save-interval SAVE_INTERVAL] + [--no-verify] + [--no-related-files] + [--no-annotations] + [--no-auto-retry] + [--retry-amount RETRY_AMOUNT] + [--wait-time WAIT_TIME] + [--latest] [--config FILE] [-u] + [-m MANIFEST] + [file_id [file_id ...]] + +positional arguments: +file_id The GDC UUID of the file(s) to download + +optional arguments: +-h, --help show this help message and exit +--debug Enable debug logging. If a failure occurs, the program + will stop. +--log-file LOG_FILE Save logs to file. Amount logged affected by --debug +--color_off Disable colored output +-t TOKEN_FILE, --token-file TOKEN_FILE + GDC API auth token file +-d DIR, --dir DIR Directory to download files to. Defaults to current + dir +-s server, --server server + The TCP server address server[:port] +--no-segment-md5sums Do not calculate inbound segment md5sums and/or do not + verify md5sums on restart +--no-file-md5sum Do not verify file md5sum after download +-n N_PROCESSES, --n-processes N_PROCESSES + Number of client connections. +--http-chunk-size HTTP_CHUNK_SIZE, -c HTTP_CHUNK_SIZE + Size in bytes of standard HTTP block size. +--save-interval SAVE_INTERVAL + The number of chunks after which to flush state file. + A lower save interval will result in more frequent + printout but lower performance. +--no-verify Perform insecure SSL connection and transfer +--no-related-files Do not download related files. +--no-annotations Do not download annotations. +--no-auto-retry Ask before retrying to download a file +--retry-amount RETRY_AMOUNT + Number of times to retry a download +--wait-time WAIT_TIME + Amount of seconds to wait before retrying +--latest Download latest version of a file if it exists +--config FILE Path to INI-type config file +-u, --udt Use the UDT protocol. +-m MANIFEST, --manifest MANIFEST + GDC download manifest file +``` + +### Upload help menu + +The GDC Data Transfer Tool displays the following help menu for its upload functionality. + + +```Shell +gdc-client upload --help +``` +```Output +usage: gdc-client upload [-h] [--debug] + [--log-file LOG_FILE] + [--color_off] [-t TOKEN_FILE] + [--project-id PROJECT_ID] + [--path path] + [--upload-id UPLOAD_ID] + [--insecure] [--server SERVER] + [--part-size PART_SIZE] + [--upload-part-size UPLOAD_PART_SIZE] + [-n N_PROCESSES] + [--disable-multipart] [--abort] + [--resume] [--delete] + [--manifest MANIFEST] + [--config FILE] + [file_id [file_id ...]] +positional arguments: + file_id The GDC UUID of the file(s) to upload + +optional arguments: + -h, --help show this help message and exit + --debug Enable debug logging. If a failure occurs, the program + will stop. + --log-file LOG_FILE Save logs to file. Amount logged affected by --debug + --color_off Disable colored output + -t TOKEN_FILE, --token-file TOKEN_FILE + GDC API auth token file + --project-id PROJECT_ID, -p PROJECT_ID + The project ID that owns the file + --path path, -f path directory path to find file + --upload-id UPLOAD_ID, -u UPLOAD_ID + Multipart upload id + --insecure, -k Allow connections to server without certs + --server SERVER, -s SERVER + GDC API server address + --part-size PART_SIZE + DEPRECATED in favor of [--upload-part-size] + --upload-part-size UPLOAD_PART_SIZE, -c UPLOAD_PART_SIZE + Part size for multipart upload + -n N_PROCESSES, --n-processes N_PROCESSES + Number of client connections + --disable-multipart Disable multipart upload + --abort Abort previous multipart upload + --resume, -r Resume previous multipart upload + --delete Delete an uploaded file + --manifest MANIFEST, -m MANIFEST + Manifest which describes files to be uploaded + --config FILE Path to INI-type config file +``` + +##Data Transfer Tool Configuration File +The DTT has the ability to save and reuse configuration parameters in the format of a flat text file via a command line argument. A simple text file needs to be created first with an extension of either txt or dtt. The supported section headers are upload and download which can be used independently of each other or used in the same configuration file. Each section header corresponds to the main functions of the application which are to either download data from the GDC portals or to upload data to the submission system of the GDC. The configurable parameters are those listed in the help menus under either [download](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help/#download-help-menu) or [upload](https://docs.gdc.cancer.gov/Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help/#upload-help-menu). + + +Example usage: + + gdc-client download d45ec02b-13c3-4afa-822d-443ccd3795ca --config my-dtt-config.dtt + +Example of configuration file: + + [upload] + path = /some/upload/path + http_chunk_size = 1024 + + + [download] + dir = /some/download/path + http_chunk_size = 2048 + retry_amount = 6 + + +###Display Config Parameters +This command line flag can be used with either the download or upload application feature to display what settings are active within a custom data transfer tool configuration file. + + gdc-client settings download --config my-dtt-config.dtt + [download] + no_auto_retry = False + no_file_md5sum = False + save_interval = 1073741824 + http_chunk_size = 2048 + server = http://exmple-site.com + n_processes = 8 + no_annotations = False + no_related_files = False + retry_amount = 6 + no_segment_md5sum = False + manifest = [] + wait_time = 5.0 + no_verify = True + dir = /some/download/path diff --git a/docs/Encyclopedia/ReadyForApproval/DAVE.md b/docs/Encyclopedia/ReadyForApproval/DAVE.md new file mode 100644 index 000000000..33bc88c26 --- /dev/null +++ b/docs/Encyclopedia/ReadyForApproval/DAVE.md @@ -0,0 +1,16 @@ +# DAVE # + +## Description ## +The NCI Genomic Data Commons's DAVE (Data Analysis, Visualization, and Exploration) tools +are an open access interactive visualization application created to interact with the data stored in the GDC. Analysis can be performed in real time and online without downloading any of the data. +## Overview ## + + +### Tools ### +## References ## +1.[GDC DAVE]https://gdc.cancer.gov/dave-factsheet + +## External Links ## +* N/A + +Categories: Workflow Type diff --git a/docs/Encyclopedia/ReadyForApproval/FASTQv3.md b/docs/Encyclopedia/ReadyForApproval/FASTQv3.md new file mode 100644 index 000000000..3b64ea4cd --- /dev/null +++ b/docs/Encyclopedia/ReadyForApproval/FASTQv3.md @@ -0,0 +1,19 @@ +# FASTQ # +## Description ## +Is a file format standard used to store text-based sequence and quality scores information generated from high-throughput sequencing data acquisition systems. + +## Overview ## + +### Structure ### +The format of the a FASTQ file consists of: +1) A line starting with "@" and containing the sequence identifier along with an optional description. +2) Lines consisting of raw sequence information. +3) A line starting with the "+" repeating the sequence ID or left blank. +4) Lines containing the quality scores information. + +## References ## +1. [FASTQ Format]https://en.wikipedia.org/wiki/FASTQ_format + +## External Links ## +* +Categories: Data Format diff --git a/docs/Encyclopedia/ReadyForApproval/Mutation_Annotation_Format_TCGAv2.md b/docs/Encyclopedia/ReadyForApproval/Mutation_Annotation_Format_TCGAv2.md new file mode 100644 index 000000000..7e20fc7f5 --- /dev/null +++ b/docs/Encyclopedia/ReadyForApproval/Mutation_Annotation_Format_TCGAv2.md @@ -0,0 +1,373 @@ +Mutation Annotation Format (MAF) - Legacy TCGA Specification +============================================== + + +*This definition was taken from the previously public wiki hosted by TCGA and reflects the MAF format +that was available during the active period of the TCGA project.* + + + + +**Document Information** + +The spec has been reverted to the June 26th version (version 20). Additional +changes are the removal of the "under construction" banner, changing all text to +black, and fixing a typo in the link to the MAF 2.2 specification. + +**Specification for Mutation Annotation Format** +Version 2.4.1 +June 20, 2014 + +**Contents** + +- 1 Current version changes + +- 2 About MAF specifications + + - 2.1 Definition of open access MAF + data + + - 2.2 Somatic MAF vs. Protected + MAF + +- 3 MAF file fields + + - 3.1 Table 1 - File column + headers + +- 4 MAF file checks + +- 5 MAF naming convention + +- 6 Previous specification + versions + +Current version changes +======================= + +This current revision is **version 2.4.1** of the Mutation Annotation Format +(MAF) specification. + +The following items in the specification were added or modified in version 2.4.1 +from version 2.4: + +- Header for MAF file is "\#version 2.4.1" + +- "Somatic" and "None" are the only acceptable values for "Mutation_Status" + for a somatic.MAF (named .somatic.maf). When Mutation_Status is None, + Validation_Status must be Invalid. + +- Centers need to make sure that Mutations_Status "None" doesn't include + germline mutation. + +- For a somatic MAF, following rules should be satisfied: + SOMATIC = (A AND (B OR C OR D)) OR (E AND F) + A: *Mutation_Status* == "Somatic" + B: *Validation_Status* == "Valid" + C. *Verification_Status* == "Verified" + D. *Variant_Classification* is not {Intron, 5'UTR, 3'UTR, 5'Flank, 3'Flank, + IGR}, which implies that *Variant_Classification* can only be + \\{Frame_Shift_Del, Frame_Shift_Ins, In_Frame_Del, In_Frame_Ins, + Missense_Mutation, Nonsense_Mutation, Silent, Splice_Site, + Translation_Start_Site, Nonstop_Mutation, RNA, Targeted_Region}. + E: *Mutations_status == "None"* + F: *Validation_status == "Invalid"* + +- Extra validation rules: If Validation_Status == Valid or Invalid, then + Validation_Method != none (case insensitive). + +About MAF specifications +======================== + +Mutation annotation files should be transferred to the DCC. Those files should +be formatted using the mutation annotation format (MAF) that is described below. +File naming convention is also +[below](#MutationAnnotationFormat(MAF)Specificat). + +Following categories of somatic mutations are reported in MAF files: + +- Missense and nonsense + +- Splice site, defined as SNP within 2 bp of the splice junction + +- Silent mutations + +- Indels that overlap the coding region or splice site of a gene or the + targeted region of a genetic element of interest. + +- Frameshift mutations + +- Mutations in regulatory regions + +### Definition of open access MAF data + +A large proportion of MAFs are submitted as discovery data and sites labeled as +somatic in these files overlap with known germline variants. In order to +minimize germline contamination in putative (unvalidated) somatic calls, certain +filtering criteria have been imposed. Based on current policy, open access MAF +data should: + +- **include** all validated somatic mutation calls + +- **include** all unvalidated somatic mutation calls that overlap with a + coding region or splice site + +- **exclude** all other types of mutation calls (i.e., non-somatic calls + (validated or not), unvalidated somatic calls that are not in coding region + or splice sites, and dbSNP sites that are not annotated as somatic in dbSNP, + COSMIC or OMIM) + + + +### Somatic MAF vs. Protected MAF + +Centers will submit to the DCC MAF archives that contain Somatic MAF +(named**.somatic.maf**) for open access data and an all-inclusive Protected MAF +(named**.protected.maf**) that does not filter any data out and represents the +original super-set of mutation calls. The files will be formatted using the +Mutation Annotation Format (MAF). + +The following table lists some of the critical attributes of somatic and +protected MAF files and provides a comparison. + +| Attribute | Somatic MAF | Protected MAF | +| ----------- | ----------- | ------------- | +| **File naming** | Somatic MAFs should be named as**\*.somatic.maf**and cannot contain 'germ' or 'protected' in file name. | Protected MAFs should be named as**\*.protected.maf**and should not contain 'somatic' in the file name. | +| **Mutation category** | Somatic MAFs can only contain entries where*Mutation_Status*is "Somatic". If any other value is assigned to the field, the archive will fail. Experimentally validated or unvalidated (see next row) somatic mutations can be included in the file. | There is no such restriction for protected MAF. The file should contain all mutation calls including those from which .somatic.maf is derived. | +| **Filtering criteria** | In order to minimize germline contamination, somatic MAFs can contain unvalidated somatic mutations only from coding regions and splice sites, which implies: | There are no such constraints for mutations in protected MAF. | +| | If *Validation_Status* **is**"Unknown",*V a riant_Classification* **cannot** be 3'UTR, 3'Flank, 5'UTR, 5'Flank, IGR, or Intron.*Variant_Classification*can only be \\{Frame_Shift_Del, Frame_Shift_Ins, In_Frame_Del, In_Frame_Ins, Missense_Mutation, Nonsense_Mutation, Silent, Splice_Site, Translation_Start_Site, Nonstop_Mutation, RNA, Targeted_Region, De_novo_Start_InFrame, De_novo_Start_OutOfFrame\\}. | | +| | There is no such constraint for experimentally validated (*Validation_Status*is "Valid") somatic mutations. | | +| | | | +| | dbSNP sites that are not annotated as somatic in dbSNP, COSMIC or OMIM must be removed from somatic MAFs. | | +| **Access level** | These files are deployed as open access data. | These files are deployed as protected data. | + +MAF file fields +=============== + +The format of a MAF file is tab-delimited columns. Those columns are described +in Table 1 and are required in every MAF file. The order of the columns will be +validated by the DCC. Column headers and values **are** case sensitive where +specified. Columns may allow null values (i.e.\_ blank cells) and/or have +enumerated values. **The validator looks for a header stating the version of the +specification to validate against (e.g. \#version 2.4). If not, validation +fails.** Any columns that come after the columns described in Table 1 are +optional. Optional columns are not validated by the DCC and can be in any order. + + + +Table 1 - File column headers +----------------------------- + + + +| **Index** | **MAF Column Header** | **Description of Values** | **Example** | **Case Sensitive** | **Null** | **Enumerated** | +| --------- | --------------------- | ------------------------- | ----------- | ------------------ | -------- | -------------- | +| 1 | Hugo_Symbol | HUGO symbol for the gene (HUGO symbols are *always* in all caps). If no gene exists within 3kb enter "Unknown". |EGFR | Yes | No | Set or Unknown | | | | | | | | | | +| | | Source: | | | | | | | | | | | | | | +| 2 | Entrez_Gene_Id | Entrez gene ID (an integer). If no gene exists within 3kb enter "0". | 1956 | No | No | Set | | | | | | | | | | +| | | Source: | | | | | | | | | | | | | | +| 3 | Center | Genome sequencing center reporting the variant. If multiple institutions report the same mutation separate list using semicolons. Non-GSC centers will be also supported if center name is an accepted center name. | hgsc.bcm.edu;genome.wustl.edu | Yes | No | Set | | | | | | | | | | +| 4 | NCBI_Build | Any TGCA accepted genome identifier. Can be string, integer or a float. | hg18, hg19, GRCh37, GRCh37-lite, 36, 36.1, 37, | No | No | Set and Enumerated. | | | | | | | | | | +| 5 | Chromosome | Chromosome number without "chr" prefix that contains the gene. | X, Y, M, 1, 2, etc. | Yes | No | Set | | | | | | | | | | +| 6 | Start_Position | Lowest numeric position of the reported variant on the genomic reference sequence. Mutation start coordinate (1-based coordinate system). | 999 | No | No | Set | | | | | | | | | | +| 7 | End_Position | Highest numeric genomic position of the reported variant on the genomic reference sequence. Mutation end coordinate (inclusive, 1-based coordinate system). | 1000 | No | No | Set | | | | | | | | | | +| 8 | Strand | Genomic strand of the reported allele. Variants should always be reported on the positive genomic strand. (Currently, only the positive strand is an accepted value). | \+ | No | No | \+ | | | | | | | | | | +| 9 | Variant_Classification | Translational effect of variant allele. | Missense_Mutation | Yes | No | Frame_Shift_Del, Frame_Shift_Ins, In_Frame_Del, In_Frame_Ins, Missense_Mutation, Nonsense_Mutation, Silent, Splice_Site, Translation_Start_Site, Nonstop_Mutation, 3'UTR, 3'Flank, 5'UTR, 5'Flank, IGR *(See Notes Section #1)* , Intron, RNA, Targeted_Region | | | | | | | | | | +| 10 | Variant_Type | Type of mutation. TNP (tri-nucleotide polymorphism) is analogous to DNP but for 3 consecutive nucleotides. ONP (oligo-nucleotide polymorphism) is analogous to TNP but for consecutive runs of 4 or more. | INS | Yes | No | SNP, DNP, TNP, ONP, INS, DEL, or Consolidated *(See Notes Section #2)* ) | | | | | | | | | | +| 11 | Reference_Allele | The plus strand reference allele at this position. Include the sequence deleted for a deletion, or "-" for an insertion. | A | Yes | No | A,C,G,T and/or - | | | | | | | | | | +| 12 | Tumor_Seq_Allele1 | Primary data genotype. Tumor sequencing (discovery) allele 1. " -" for a deletion represent a variant. "-" for an insertion represents wild-type allele. Novel inserted sequence for insertion should not include flanking reference bases. | C | Yes | No | A,C,G,T and/or - | | | | | | | | | | +| 13 | Tumor_Seq_Allele2 | Primary data genotype. Tumor sequencing (discovery) allele 2. " -" for a deletion represents a variant. "-" for an insertion represents wild-type allele. Novel inserted sequence for insertion should not include flanking reference bases. | G | Yes | No | A,C,G,T and/or - | | | | | | | | | | +| 14 | dbSNP_RS | Latest dbSNP rs ID (dbSNP_ID) or "novel" if there is no dbSNP record. source: | rs12345 | Yes | Yes | Set or "novel" | | | | | | | | | | +| 15 | dbSNP_Val_Status | dbSNP validation status. Semicolon- separated list of validation statuses. | by2Hit2Allele;byCluster | No | Yes | by1000genomes;by2Hit2Allele; byCluster; byFrequency; byHapMap; byOtherPop; bySubmitter; alternate_allele *(See Notes Section #3)* **Note that "none" will no longer be an acceptable value.** | | | | | | | | | | +| 16 | Tumor_Sample_Barcode | BCR aliquot barcode for the tumor sample including the two additional fields indicating plate and well position. i.e. TCGA-SiteID-PatientID-SampleID-PortionID-PlateID-CenterID. The full TCGA Aliquot ID. | TCGA-02-0021-01A-01D-0002-04 | Yes | No | Set | | | | | | | | | | +| 17 | Matched_Norm_Sample_Barcode | BCR aliquot barcode for the matched normal sample including the two additional fields indicating plate and well position. i.e. TCGA-SiteID-PatientID-SampleID-PortionID-PlateID-CenterID. The full TCGA Aliquot ID; e.g. TCGA-02-0021-10A-01D-0002-04 (compare portion ID '10A' normal sample, to '01A' tumor sample). | TCGA-02-0021-10A-01D-0002-04 | Yes | No | Set | | | | | | | | | | +| 18 | Match_Norm_Seq_Allele1 | Primary data. Matched normal sequencing allele 1. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | T | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 19 | Match_Norm_Seq_Allele2 | Primary data. Matched normal sequencing allele 2. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | ACGT | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 20 | Tumor_Validation_Allele1 | Secondary data from orthogonal technology. Tumor genotyping (validation) for allele 1. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | \- | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 21 | Tumor_Validation_Allele2 | Secondary data from orthogonal technology. Tumor genotyping (validation) for allele 2. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | A | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 22 | Match_Norm_Validation_Allele1 | Secondary data from orthogonal technology. Matched normal genotyping (validation) for allele 1. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | C | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 23 | Match_Norm_Validation_Allele2 | Secondary data from orthogonal technology. Matched normal genotyping (validation) for allele 2. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | G | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 24 | Verification_Status *(See Notes Section #4)* | Second pass results from independent attempt using same methods as primary data source. Generally reserved for 3730 Sanger Sequencing. | Verified | Yes | Yes | Verified, Unknown | | | | | | | | | | +| 25 | Validation_Status *(See Notes Section #5)* | Second pass results from orthogonal technology. | Valid | Yes | No | Untested, Inconclusive, Valid, Invaild | | | | | | | | | | +| 26 | Mutation_Status | Updated to reflect validation or verification status and to be in agreement with the [VCF VLS](https://wiki.nci.nih.gov/x/2gcYAw) field. The values allowed in this field are constrained by the value in the Validation_Status field. | Somatic | Yes | No | **Validation_Status values:** Untested, Inconslusive, Valid, Invalid - **Allowed Mutations_Status Values for Untested and Inconclusive:** *(See Notes Seciton #6)* None, Germline, Somatic, LOH, Post-transcriptional modification **Unknown Allowed Mutation_status Values for Valid:** *(See Notes Seciton #6)* Germline, Somatic, LOH, Post-transcriptional modification, Unknown - **Allowed Mutations_Status Values for Invalid:** *(See Notes Seciton #6)* none | | | | | | | | | | + | | | | | | | | | | | | | | | +| 27 | Sequencing_Phase | TCGA sequencing phase. Phase should change under any circumstance that the targets under consideration change. | Phase_I | No | Yes | No | | | | | | | | | | +| 28 | Sequence_Source | Molecular assay type used to produce the analytes used for sequencing. Allowed values are a subset of the [SRA 1.5](http://www.ncbi.nlm.nih.gov/viewvc/v1/trunk/sra/doc/SRA_1-5/) library_strategy field values. This subset matches those used at CGHub. | WGS;WXS | Yes | No | **Common TCGA values:** WGS, WGA, WXS, RNA-Seq, miRNA-Seq, Bisulfite-Seq, VALIDATION, Other **Other allowed values (per SRA 1.5)** ncRNA-Seq, WCS, CLONE, POOLCLONE, AMPLICON, CLONEEND, FINISHING, ChIP-Seq, MNase-Seq, DNase-Hypersensitivity, EST, FL-cDNA, CTS, MRE-Seq, MeDIP-Seq, MBD-Seq, Tn-Seq, FAIRE-seq, SELEX, RIP-Seq, ChIA-PET + | | | | | | | | | | +| 29 | Validation_Method | The assay platforms used for the validation call. Examples: Sanger_PCR_WGA, Sanger_PCR_gDNA, 454_PCR_WGA, 454_PCR_gDNA; separate multiple entries using semicolons. | Sanger_PCR_WGA;Sanger_PCR_gDNA | No | **NO**. I**f Validation_Status = Untested then "none"** If Validation_Status = Valid or Invalid, then not "none" (case insensitive) | No | | | | | | | | | | +| 30 | Score | Not in use. | NA | No | Yes | No | | | | | | | | | | +| 31 | BAM_File | Not in use. | NA | No | Yes | No | | | | | | | | | | +| 32 | Sequencer | Instrument used to produce primary data. Separate multiple entries using semicolons. | Illumina GAIIx;SOLID | Yes | No | Illumina GAIIx, Illumina HiSeq, SOLID, 454, ABI 3730xl, Ion Torrent PGM, Ion Torrent Proton, PacBio RS, Illumina MiSeq, Illumina HiSeq 2500, 454 GS FLX Titanium, AB SOLiD 4 System | | | | | | | | | | +| 33 | Tumor_Sample_UUID | BCR aliquot UUID for tumor sample | 550e8400-e29b-41d4-a716-446655440000 | Yes | No | | | | | | | | | | | +| 34 | Matched_Norm_Sample_UUID | BCR aliquot UUID for matched normal | 567e8487-e29b-32d4-a716-446655443246 | Yes | No | + +**Notes**
+*1 Intergenic Region.*
+*2 Consolidationd is used to indicate a site that was initially reported as a variant but subsequently removed from further analysis because it was consolidated into a new variant. For example, a SNP variant incorporated into a TNP variant.*
+*3 Used when the discovered varieant differs from that of dbSNP.*
+*4 These MAF headers describe the technology that was used to confirm a mutation, whether the same technology ("verification") or a different technology ("validation") is used to prove that a variant is germline or a somatic mutation.*
+*5 These MAF headers describe the technology that was used toconfirm a mutation, whether the same technology (verification) or a different technology (validation) is used to prove that a variant is germline or a somatic mutation.*
+*6 Explanation of some Validation Status-Mutation Status combinations.*
+ +| Validation Status | Mutation Status | Explanation | +| ------------------ | --------------- | ----------- | +| Valid | Unknown | a valid variant with unknown somatic status due to lack of data from matched normal tissue. | +| Invalid | None | validation attempted, tumor and normal are homozygous reference (formerly described as Wildtype) | +| Inconclusive | Unknown | validation failed, neither the genotype nor its somatic status is certain due to lack of data from matched normal tissue | +| Inconclusive | None | validation failed, tumor genotype appears to be homozygous reference | + + Important Criteria + + **Index column indicates the order in which the columns are expected**. **All + headers are case sensitive.** The Case Sensitive column specifies which values + are case sensitive. The Null column indicates which MAF columns are allowed to + have null values. The Enumerated column indicates which MAF columns have + specified values: an Enumerated value of "No" indicates that there are no + specified values for that column; other values indicate the specific values + listed allowed; a value of "Set" indicates that the MAF column values come from + a specified set of known values (*e.g.*HUGO gene symbols). + + +MAF file checks +=============== + +The DCC Archive Validator checks the integrity of a MAF file. Validation will +fail if any of the below are not true for a MAF file: + +1. Column header text (including case) and order must match specification + (Table 1) exactly + +2. Values under column headers listed in the specification (Table 1) as not + null must have values + +3. Values that are specified in Table 1 as Case Sensitive must be. + +4. If column headers are listed in the specification as having *enumerated* + values (*i.e.* a "Yes" in the "Enumerated" column), then the values under + those column must come from the enumerated values listed under "Enumerated". + +5. If column headers are listed in the specification as having *set* values + (*i.e.* a "Set" in the "Enumerated" column), then the values under those + column must come from the enumerated values of that domain (*e.g.* HUGO gene + symbols). + +6. All Allele-based columns must contain- (deletion), or a string composed of + the following capitalized letters: A, T, G, C. + +7. IfValidation_Status== "Untested" + thenTumor_Validation_Allele1,Tumor_Validation_Allele2,Match_Norm_Validation_Allele1,Match_Norm_Validation_Allele2can + be null (depending onValidation_Status). + + 1. IfValidation_Status== "Inconclusive" + thenTumor_Validation_Allele1,Tumor_Validation_Allele2,Match_Norm_Validation_Allele1,Match_Norm_Validation_Allele2can + be null (depending onValidation_Status)**.** + +8. If Validation_Status == Valid, then Validated_Tumor_Allele1 and + Validated_Tumor_Allele2must be populated (one of A, C, G, T, and -) + + 1. If Validation_Status == "Valid" then Tumor_Validation_Allele1, + Tumor_Validation_Allele2, Match_Norm_Validation_Allele1, + Match_Norm_Validation_Allele2 cannot be null + + 2. IfValidation_Status== "Invalid" + thenTumor_Validation_Allele1,Tumor_Validation_Allele2,Match_Norm_Validation_Allele1,Match_Norm_Validation_Allele2cannot + be null AND Tumor_Validation_Allelle1 == + Match_Norm_Validation_Allele1AND Tumor_Validation_Allelle2 == + Match_Norm_Validation_Allele2 (Added as a replacement for 8a as a + result of breakdown) + +9. Check allele values against Mutation_Status: + Check allele values against Validation_status: + + 1. If Mutation_Status == "Germline" and Validation_Status == "Valid", then + Tumor_Validation_Allele1 == Match_Norm_Validation_Allele1 and + Tumor_Validation_Allele2 == Match_Norm_Validation_Allele2. + + 2. If Mutation_Status == "Somatic" and Validation_Status == "Valid", then + Match_Norm_Validation_Allele1 == Match_Norm_Validation_Allele2 == + Reference_Allele and (Tumor_Validation_Allele1 or + Tumor_Validation_Allele2) != Reference_Allele + + 3. If Mutation_Status == "LOH" and Validation_Status=="Valid", then + Tumor_Validation_Allele1 == Tumor_Validation_Allele2 and + Match_Norm_Validation_Allele1 != Match_Norm_Validation_Allele2 and + Tumor_Validation_Allele1 == (Match_Norm_Validation_Allele1 or + Match_Norm_Validation_Allele2). + +10. Check that Start_position \<= End_position + +11. Check for the Start_position and End_position against Variant_Type: + + 1. If Variant_Type == "INS", then (End_position - Start_position + 1 == + length (Reference_Allele) or End_position - Start_position == 1) and + length(Reference_Allele) \<= length(Tumor_Seq_Allele1 and + Tumor_Seq_Allele2) + + 2. If Variant_Type == "DEL", then End_position - Start_position + 1 == + length (Reference_Allele), then length(Reference_Allele) \>= + length(Tumor_Seq_Allele1 and Tumor_Seq_Allele2) + + 3. If Variant_Type == "SNP", then length(Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) == 1 and (Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) != "-" + + 4. If Variant_Type == "DNP", then length(Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) == 2 and (Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) !contain "-" + + 5. If Variant_Type == "TNP", then length(Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) == 3 and (Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) !contain "-" + + 6. If Variant_Type == "ONP", then length(Reference_Allele) == + length(Tumor_Seq_Allele1) == length(Tumor_Seq_Allele2) \> 3 and + (Reference_Allele and Tumor_Seq_Allele1 and Tumor_Seq_Allele2) !contain + "-" + +12. Validation for UUID-based files: + + 1. Column \#33 must be Tumor_Sample_UUID containing UUID of the BCR aliquot + for tumor sample + + 2. Column \#34 must be Matched_Norm_Sample_UUID containing UUID of the BCR + aliquot for matched normal sample + + 3. Metadata represented by Tumor_Sample_Barcode and + Matched_Norm_Sample_Barcode should correspond to the UUIDs assigned to + Tumor_Sample_UUID and Matched_Norm_Sample_UUID respectively + +13. If Validation_Status == "Valid" or "Invalid", then Validation_Method != + "none" (case insensitive) . + +MAF naming convention +===================== + +In archives uploaded to the DCC, the MAF file name should relate to the +containing archive name in the following way: + +If the archive has the name + + \_\.\.Level_2.\.\.0.tar.gz + +then a somatic MAF file with the archive should be named according to + + \_\.\.Level_2.\[.\].somatic.maf + +and a protected MAF with the archive should be named according to + + \_\.\.Level_2.\[.\].protected.maf + +The \ may consist of alphanumeric characters, dash, and +underscore; no spaces or periods; or it may be left out altogether. The purpose +of the optional tag is to impart some brief annotation. + +*Example* + +For the archive + + genome.wustl.edu_OV.IlluminaGA_DNASeq.Level_2.7.6.0.tar.gz + +the following are examples of valid maf names + + genome.wustl.edu_OV.IlluminaGA_DNASeq.Level_2.7.somatic.maf + genome.wustl.edu_OV.IlluminaGA_DNASeq.Level_2.7.protected.maf diff --git a/docs/Encyclopedia/ReadyForApproval/Portion.md b/docs/Encyclopedia/ReadyForApproval/Portion.md new file mode 100644 index 000000000..e2193c608 --- /dev/null +++ b/docs/Encyclopedia/ReadyForApproval/Portion.md @@ -0,0 +1,15 @@ +# Portion # +## Description ## +An portion is a physical piece of any sample. +## Overview ## +A portion is typically one of several sequential 100-120 mg sections of a vial. The [GDC Data Model](https://gdc.cancer.gov/developers/gdc-data-model/gdc-data-model-components) +relates portions to samples and/or analytes but is not a required biospecimen entity. + +## References ## +1. [GDC Data Dictionary - Portion](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=portion) +1. [TCGA Enyclopedia - Portion](hhttps://wiki.nci.nih.gov/display/TCGA/Portion) + +## External Links ## +* N/A + +Categories: General, Biospecimen diff --git a/docs/Encyclopedia/Under_Development/DAVE.md b/docs/Encyclopedia/Under_Development/DAVE.md new file mode 100644 index 000000000..33bc88c26 --- /dev/null +++ b/docs/Encyclopedia/Under_Development/DAVE.md @@ -0,0 +1,16 @@ +# DAVE # + +## Description ## +The NCI Genomic Data Commons's DAVE (Data Analysis, Visualization, and Exploration) tools +are an open access interactive visualization application created to interact with the data stored in the GDC. Analysis can be performed in real time and online without downloading any of the data. +## Overview ## + + +### Tools ### +## References ## +1.[GDC DAVE]https://gdc.cancer.gov/dave-factsheet + +## External Links ## +* N/A + +Categories: Workflow Type diff --git a/docs/Encyclopedia/Under_Development/FASTQ.md b/docs/Encyclopedia/Under_Development/FASTQ.md deleted file mode 100644 index b6d0f3ee8..000000000 --- a/docs/Encyclopedia/Under_Development/FASTQ.md +++ /dev/null @@ -1,13 +0,0 @@ -# FASTQ # -## Description ## -## Overview ## -### Structure ### -#### Header (Optional) #### -#### Body (Optional) #### -## References ## -1. - -## External Links ## -* TBD - -Categories: Data Format diff --git a/docs/Encyclopedia/Under_Development/Node.md b/docs/Encyclopedia/Under_Development/Node.md new file mode 100644 index 000000000..2e3c23c54 --- /dev/null +++ b/docs/Encyclopedia/Under_Development/Node.md @@ -0,0 +1,3 @@ +# Node # +## Description ## +Please see [Entity]https://docs.gdc.cancer.gov/Encyclopedia/pages/Entity/ diff --git a/docs/Encyclopedia/Under_Development/Portion.md b/docs/Encyclopedia/Under_Development/Portion.md index 090f7509a..83f0ba7b7 100644 --- a/docs/Encyclopedia/Under_Development/Portion.md +++ b/docs/Encyclopedia/Under_Development/Portion.md @@ -2,7 +2,7 @@ ## Description ## An portion is a physical sub-part of any sample.. ## Overview ## -A portion is typically one of several sequential 100-120 mg sections of a vial. The [GDC Data Model](https://gdc.cancer.gov/developers/gdc-data-model/gdc-data-model-components) +A portion is typically one of several sequential 100-120 mg sections of a vial. The [GDC Data Model](https://gdc.cancer.gov/developers/gdc-data-model/gdc-data-model-components) relates portions to samples and/or analytes but is not a required biospecimen entity. ## References ## diff --git a/docs/Encyclopedia/ReadyForApproval/Aligned_Reads.md b/docs/Encyclopedia/pages/Aligned_Reads.md similarity index 100% rename from docs/Encyclopedia/ReadyForApproval/Aligned_Reads.md rename to docs/Encyclopedia/pages/Aligned_Reads.md diff --git a/docs/Encyclopedia/pages/Analyte.md b/docs/Encyclopedia/pages/Analyte.md new file mode 100644 index 000000000..832240b01 --- /dev/null +++ b/docs/Encyclopedia/pages/Analyte.md @@ -0,0 +1,15 @@ +# Analyte # +## Description ## +An analyte is any substance or sample being analyzed. + +## Overview ## +An analyte is the specimen extracted for analysis from a portion or sample using a specific extraction protocol. +The [GDC Data Model](https://gdc.cancer.gov/developers/gdc-data-model/gdc-data-model-components) relates analytes to aliquots or portions or samples but is not a required biospecimen entity. + +## References ## +1. [GDC Data Dictionary - Analyte](https://docs.gdc.cancer.gov/Data_Dictionary/viewer/#?view=table-definition-view&id=analyte) + +## External Links ## +# [Analyte Wikipedia](https://en.wikipedia.org/wiki/Analyte) + +Categories: General, Biospecimen diff --git a/docs/Encyclopedia/pages/Annotations.md b/docs/Encyclopedia/pages/Annotations.md new file mode 100644 index 000000000..13b956954 --- /dev/null +++ b/docs/Encyclopedia/pages/Annotations.md @@ -0,0 +1,27 @@ +Annotations +=========================== + +Annotations contain important information about files, cases, or metadata nodes that may be of use to data downloaders when analyzing GDC data. They should be reviewed prior to running an analysis. An annotation may include key comments about why particular patients, samples, or files are absent from the GDC or why they may exhibit critical differences from others. Annotations include information that cannot be submitted to the GDC through other existing nodes or properties. + +Annotations are automatically downloaded in TSV format with impacted files when using the Data Transfer Tool. They may also be searched via the [API](/API/Users_Guide/Search_and_Retrieval/#annotations-endpoint) or on the annotations page of the [GDC Data Portal](https://portal.gdc.cancer.gov/annotations). Instructions on accessing annotations in the GDC Data Portal are found in the [GDC Data Portal User Guide](/Data_Portal/Users_Guide/Repository/#annotations-view). + +For information on Annotation structure and content please review the [GDC Data Dictionary](/Data_Dictionary/viewer/#?view=table-definition-view&id=annotation) + +For information about TCGA conventions for annotations please see the [TCGA Introduction to Annotations](Annotations_TCGA/). + +If a submitter would like to create an annotation, please contact the GDC Support Team (support@nci-gdc.datacommons.io). + + + +## References ## +1. [API User Guide](/API/Users_Guide/Search_and_Retrieval/#annotations-endpoint) +2. [GDC Data Portal](https://portal.gdc.cancer.gov/annotations) +3. [GDC Data Portal User Guide](/Data_Portal/Users_Guide/Repository/#annotations-view) +4. [GDC Data Dictionary](/Data_Dictionary/viewer/#?view=table-definition-view&id=annotation) +5. [TCGA Annotations](Annotations_TCGA/) + + +## External Links ## + + +Categories: Data Type diff --git a/docs/Encyclopedia/pages/Introduction+to+Annotations.md b/docs/Encyclopedia/pages/Annotations_TCGA.md similarity index 96% rename from docs/Encyclopedia/pages/Introduction+to+Annotations.md rename to docs/Encyclopedia/pages/Annotations_TCGA.md index 0c8379427..81c5b8a00 100644 --- a/docs/Encyclopedia/pages/Introduction+to+Annotations.md +++ b/docs/Encyclopedia/pages/Annotations_TCGA.md @@ -1,7 +1,8 @@ Introduction to Annotations =========================== -This document is retained here for reference purposes and should not be considered the current standard. -Document was adapted from https://wiki.nci.nih.gov/pages/viewpage.action?spaceKey=TCGA&title=Introduction+to+Annotations +This document is retained for reference purposes for TCGA and should not be considered the current GDC standard. For information on the existing GDC use of annotations please see the [Annotations Encyclopedia entry](/Encyclopedia/pages/Annotations/). + +This document was adapted from https://wiki.nci.nih.gov/pages/viewpage.action?spaceKey=TCGA&title=Introduction+to+Annotations This section includes the following topics. diff --git a/docs/Encyclopedia/pages/Mutation_Annotation_Format_TCGAv2.md b/docs/Encyclopedia/pages/Mutation_Annotation_Format_TCGAv2.md new file mode 100644 index 000000000..7e20fc7f5 --- /dev/null +++ b/docs/Encyclopedia/pages/Mutation_Annotation_Format_TCGAv2.md @@ -0,0 +1,373 @@ +Mutation Annotation Format (MAF) - Legacy TCGA Specification +============================================== + + +*This definition was taken from the previously public wiki hosted by TCGA and reflects the MAF format +that was available during the active period of the TCGA project.* + + + + +**Document Information** + +The spec has been reverted to the June 26th version (version 20). Additional +changes are the removal of the "under construction" banner, changing all text to +black, and fixing a typo in the link to the MAF 2.2 specification. + +**Specification for Mutation Annotation Format** +Version 2.4.1 +June 20, 2014 + +**Contents** + +- 1 Current version changes + +- 2 About MAF specifications + + - 2.1 Definition of open access MAF + data + + - 2.2 Somatic MAF vs. Protected + MAF + +- 3 MAF file fields + + - 3.1 Table 1 - File column + headers + +- 4 MAF file checks + +- 5 MAF naming convention + +- 6 Previous specification + versions + +Current version changes +======================= + +This current revision is **version 2.4.1** of the Mutation Annotation Format +(MAF) specification. + +The following items in the specification were added or modified in version 2.4.1 +from version 2.4: + +- Header for MAF file is "\#version 2.4.1" + +- "Somatic" and "None" are the only acceptable values for "Mutation_Status" + for a somatic.MAF (named .somatic.maf). When Mutation_Status is None, + Validation_Status must be Invalid. + +- Centers need to make sure that Mutations_Status "None" doesn't include + germline mutation. + +- For a somatic MAF, following rules should be satisfied: + SOMATIC = (A AND (B OR C OR D)) OR (E AND F) + A: *Mutation_Status* == "Somatic" + B: *Validation_Status* == "Valid" + C. *Verification_Status* == "Verified" + D. *Variant_Classification* is not {Intron, 5'UTR, 3'UTR, 5'Flank, 3'Flank, + IGR}, which implies that *Variant_Classification* can only be + \\{Frame_Shift_Del, Frame_Shift_Ins, In_Frame_Del, In_Frame_Ins, + Missense_Mutation, Nonsense_Mutation, Silent, Splice_Site, + Translation_Start_Site, Nonstop_Mutation, RNA, Targeted_Region}. + E: *Mutations_status == "None"* + F: *Validation_status == "Invalid"* + +- Extra validation rules: If Validation_Status == Valid or Invalid, then + Validation_Method != none (case insensitive). + +About MAF specifications +======================== + +Mutation annotation files should be transferred to the DCC. Those files should +be formatted using the mutation annotation format (MAF) that is described below. +File naming convention is also +[below](#MutationAnnotationFormat(MAF)Specificat). + +Following categories of somatic mutations are reported in MAF files: + +- Missense and nonsense + +- Splice site, defined as SNP within 2 bp of the splice junction + +- Silent mutations + +- Indels that overlap the coding region or splice site of a gene or the + targeted region of a genetic element of interest. + +- Frameshift mutations + +- Mutations in regulatory regions + +### Definition of open access MAF data + +A large proportion of MAFs are submitted as discovery data and sites labeled as +somatic in these files overlap with known germline variants. In order to +minimize germline contamination in putative (unvalidated) somatic calls, certain +filtering criteria have been imposed. Based on current policy, open access MAF +data should: + +- **include** all validated somatic mutation calls + +- **include** all unvalidated somatic mutation calls that overlap with a + coding region or splice site + +- **exclude** all other types of mutation calls (i.e., non-somatic calls + (validated or not), unvalidated somatic calls that are not in coding region + or splice sites, and dbSNP sites that are not annotated as somatic in dbSNP, + COSMIC or OMIM) + + + +### Somatic MAF vs. Protected MAF + +Centers will submit to the DCC MAF archives that contain Somatic MAF +(named**.somatic.maf**) for open access data and an all-inclusive Protected MAF +(named**.protected.maf**) that does not filter any data out and represents the +original super-set of mutation calls. The files will be formatted using the +Mutation Annotation Format (MAF). + +The following table lists some of the critical attributes of somatic and +protected MAF files and provides a comparison. + +| Attribute | Somatic MAF | Protected MAF | +| ----------- | ----------- | ------------- | +| **File naming** | Somatic MAFs should be named as**\*.somatic.maf**and cannot contain 'germ' or 'protected' in file name. | Protected MAFs should be named as**\*.protected.maf**and should not contain 'somatic' in the file name. | +| **Mutation category** | Somatic MAFs can only contain entries where*Mutation_Status*is "Somatic". If any other value is assigned to the field, the archive will fail. Experimentally validated or unvalidated (see next row) somatic mutations can be included in the file. | There is no such restriction for protected MAF. The file should contain all mutation calls including those from which .somatic.maf is derived. | +| **Filtering criteria** | In order to minimize germline contamination, somatic MAFs can contain unvalidated somatic mutations only from coding regions and splice sites, which implies: | There are no such constraints for mutations in protected MAF. | +| | If *Validation_Status* **is**"Unknown",*V a riant_Classification* **cannot** be 3'UTR, 3'Flank, 5'UTR, 5'Flank, IGR, or Intron.*Variant_Classification*can only be \\{Frame_Shift_Del, Frame_Shift_Ins, In_Frame_Del, In_Frame_Ins, Missense_Mutation, Nonsense_Mutation, Silent, Splice_Site, Translation_Start_Site, Nonstop_Mutation, RNA, Targeted_Region, De_novo_Start_InFrame, De_novo_Start_OutOfFrame\\}. | | +| | There is no such constraint for experimentally validated (*Validation_Status*is "Valid") somatic mutations. | | +| | | | +| | dbSNP sites that are not annotated as somatic in dbSNP, COSMIC or OMIM must be removed from somatic MAFs. | | +| **Access level** | These files are deployed as open access data. | These files are deployed as protected data. | + +MAF file fields +=============== + +The format of a MAF file is tab-delimited columns. Those columns are described +in Table 1 and are required in every MAF file. The order of the columns will be +validated by the DCC. Column headers and values **are** case sensitive where +specified. Columns may allow null values (i.e.\_ blank cells) and/or have +enumerated values. **The validator looks for a header stating the version of the +specification to validate against (e.g. \#version 2.4). If not, validation +fails.** Any columns that come after the columns described in Table 1 are +optional. Optional columns are not validated by the DCC and can be in any order. + + + +Table 1 - File column headers +----------------------------- + + + +| **Index** | **MAF Column Header** | **Description of Values** | **Example** | **Case Sensitive** | **Null** | **Enumerated** | +| --------- | --------------------- | ------------------------- | ----------- | ------------------ | -------- | -------------- | +| 1 | Hugo_Symbol | HUGO symbol for the gene (HUGO symbols are *always* in all caps). If no gene exists within 3kb enter "Unknown". |EGFR | Yes | No | Set or Unknown | | | | | | | | | | +| | | Source: | | | | | | | | | | | | | | +| 2 | Entrez_Gene_Id | Entrez gene ID (an integer). If no gene exists within 3kb enter "0". | 1956 | No | No | Set | | | | | | | | | | +| | | Source: | | | | | | | | | | | | | | +| 3 | Center | Genome sequencing center reporting the variant. If multiple institutions report the same mutation separate list using semicolons. Non-GSC centers will be also supported if center name is an accepted center name. | hgsc.bcm.edu;genome.wustl.edu | Yes | No | Set | | | | | | | | | | +| 4 | NCBI_Build | Any TGCA accepted genome identifier. Can be string, integer or a float. | hg18, hg19, GRCh37, GRCh37-lite, 36, 36.1, 37, | No | No | Set and Enumerated. | | | | | | | | | | +| 5 | Chromosome | Chromosome number without "chr" prefix that contains the gene. | X, Y, M, 1, 2, etc. | Yes | No | Set | | | | | | | | | | +| 6 | Start_Position | Lowest numeric position of the reported variant on the genomic reference sequence. Mutation start coordinate (1-based coordinate system). | 999 | No | No | Set | | | | | | | | | | +| 7 | End_Position | Highest numeric genomic position of the reported variant on the genomic reference sequence. Mutation end coordinate (inclusive, 1-based coordinate system). | 1000 | No | No | Set | | | | | | | | | | +| 8 | Strand | Genomic strand of the reported allele. Variants should always be reported on the positive genomic strand. (Currently, only the positive strand is an accepted value). | \+ | No | No | \+ | | | | | | | | | | +| 9 | Variant_Classification | Translational effect of variant allele. | Missense_Mutation | Yes | No | Frame_Shift_Del, Frame_Shift_Ins, In_Frame_Del, In_Frame_Ins, Missense_Mutation, Nonsense_Mutation, Silent, Splice_Site, Translation_Start_Site, Nonstop_Mutation, 3'UTR, 3'Flank, 5'UTR, 5'Flank, IGR *(See Notes Section #1)* , Intron, RNA, Targeted_Region | | | | | | | | | | +| 10 | Variant_Type | Type of mutation. TNP (tri-nucleotide polymorphism) is analogous to DNP but for 3 consecutive nucleotides. ONP (oligo-nucleotide polymorphism) is analogous to TNP but for consecutive runs of 4 or more. | INS | Yes | No | SNP, DNP, TNP, ONP, INS, DEL, or Consolidated *(See Notes Section #2)* ) | | | | | | | | | | +| 11 | Reference_Allele | The plus strand reference allele at this position. Include the sequence deleted for a deletion, or "-" for an insertion. | A | Yes | No | A,C,G,T and/or - | | | | | | | | | | +| 12 | Tumor_Seq_Allele1 | Primary data genotype. Tumor sequencing (discovery) allele 1. " -" for a deletion represent a variant. "-" for an insertion represents wild-type allele. Novel inserted sequence for insertion should not include flanking reference bases. | C | Yes | No | A,C,G,T and/or - | | | | | | | | | | +| 13 | Tumor_Seq_Allele2 | Primary data genotype. Tumor sequencing (discovery) allele 2. " -" for a deletion represents a variant. "-" for an insertion represents wild-type allele. Novel inserted sequence for insertion should not include flanking reference bases. | G | Yes | No | A,C,G,T and/or - | | | | | | | | | | +| 14 | dbSNP_RS | Latest dbSNP rs ID (dbSNP_ID) or "novel" if there is no dbSNP record. source: | rs12345 | Yes | Yes | Set or "novel" | | | | | | | | | | +| 15 | dbSNP_Val_Status | dbSNP validation status. Semicolon- separated list of validation statuses. | by2Hit2Allele;byCluster | No | Yes | by1000genomes;by2Hit2Allele; byCluster; byFrequency; byHapMap; byOtherPop; bySubmitter; alternate_allele *(See Notes Section #3)* **Note that "none" will no longer be an acceptable value.** | | | | | | | | | | +| 16 | Tumor_Sample_Barcode | BCR aliquot barcode for the tumor sample including the two additional fields indicating plate and well position. i.e. TCGA-SiteID-PatientID-SampleID-PortionID-PlateID-CenterID. The full TCGA Aliquot ID. | TCGA-02-0021-01A-01D-0002-04 | Yes | No | Set | | | | | | | | | | +| 17 | Matched_Norm_Sample_Barcode | BCR aliquot barcode for the matched normal sample including the two additional fields indicating plate and well position. i.e. TCGA-SiteID-PatientID-SampleID-PortionID-PlateID-CenterID. The full TCGA Aliquot ID; e.g. TCGA-02-0021-10A-01D-0002-04 (compare portion ID '10A' normal sample, to '01A' tumor sample). | TCGA-02-0021-10A-01D-0002-04 | Yes | No | Set | | | | | | | | | | +| 18 | Match_Norm_Seq_Allele1 | Primary data. Matched normal sequencing allele 1. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | T | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 19 | Match_Norm_Seq_Allele2 | Primary data. Matched normal sequencing allele 2. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | ACGT | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 20 | Tumor_Validation_Allele1 | Secondary data from orthogonal technology. Tumor genotyping (validation) for allele 1. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | \- | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 21 | Tumor_Validation_Allele2 | Secondary data from orthogonal technology. Tumor genotyping (validation) for allele 2. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | A | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 22 | Match_Norm_Validation_Allele1 | Secondary data from orthogonal technology. Matched normal genotyping (validation) for allele 1. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | C | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 23 | Match_Norm_Validation_Allele2 | Secondary data from orthogonal technology. Matched normal genotyping (validation) for allele 2. "-" for deletions; novel inserted sequence for INS not including flanking reference bases. | G | Yes | Yes | A,C,G,T and/or - | | | | | | | | | | +| 24 | Verification_Status *(See Notes Section #4)* | Second pass results from independent attempt using same methods as primary data source. Generally reserved for 3730 Sanger Sequencing. | Verified | Yes | Yes | Verified, Unknown | | | | | | | | | | +| 25 | Validation_Status *(See Notes Section #5)* | Second pass results from orthogonal technology. | Valid | Yes | No | Untested, Inconclusive, Valid, Invaild | | | | | | | | | | +| 26 | Mutation_Status | Updated to reflect validation or verification status and to be in agreement with the [VCF VLS](https://wiki.nci.nih.gov/x/2gcYAw) field. The values allowed in this field are constrained by the value in the Validation_Status field. | Somatic | Yes | No | **Validation_Status values:** Untested, Inconslusive, Valid, Invalid - **Allowed Mutations_Status Values for Untested and Inconclusive:** *(See Notes Seciton #6)* None, Germline, Somatic, LOH, Post-transcriptional modification **Unknown Allowed Mutation_status Values for Valid:** *(See Notes Seciton #6)* Germline, Somatic, LOH, Post-transcriptional modification, Unknown - **Allowed Mutations_Status Values for Invalid:** *(See Notes Seciton #6)* none | | | | | | | | | | + | | | | | | | | | | | | | | | +| 27 | Sequencing_Phase | TCGA sequencing phase. Phase should change under any circumstance that the targets under consideration change. | Phase_I | No | Yes | No | | | | | | | | | | +| 28 | Sequence_Source | Molecular assay type used to produce the analytes used for sequencing. Allowed values are a subset of the [SRA 1.5](http://www.ncbi.nlm.nih.gov/viewvc/v1/trunk/sra/doc/SRA_1-5/) library_strategy field values. This subset matches those used at CGHub. | WGS;WXS | Yes | No | **Common TCGA values:** WGS, WGA, WXS, RNA-Seq, miRNA-Seq, Bisulfite-Seq, VALIDATION, Other **Other allowed values (per SRA 1.5)** ncRNA-Seq, WCS, CLONE, POOLCLONE, AMPLICON, CLONEEND, FINISHING, ChIP-Seq, MNase-Seq, DNase-Hypersensitivity, EST, FL-cDNA, CTS, MRE-Seq, MeDIP-Seq, MBD-Seq, Tn-Seq, FAIRE-seq, SELEX, RIP-Seq, ChIA-PET + | | | | | | | | | | +| 29 | Validation_Method | The assay platforms used for the validation call. Examples: Sanger_PCR_WGA, Sanger_PCR_gDNA, 454_PCR_WGA, 454_PCR_gDNA; separate multiple entries using semicolons. | Sanger_PCR_WGA;Sanger_PCR_gDNA | No | **NO**. I**f Validation_Status = Untested then "none"** If Validation_Status = Valid or Invalid, then not "none" (case insensitive) | No | | | | | | | | | | +| 30 | Score | Not in use. | NA | No | Yes | No | | | | | | | | | | +| 31 | BAM_File | Not in use. | NA | No | Yes | No | | | | | | | | | | +| 32 | Sequencer | Instrument used to produce primary data. Separate multiple entries using semicolons. | Illumina GAIIx;SOLID | Yes | No | Illumina GAIIx, Illumina HiSeq, SOLID, 454, ABI 3730xl, Ion Torrent PGM, Ion Torrent Proton, PacBio RS, Illumina MiSeq, Illumina HiSeq 2500, 454 GS FLX Titanium, AB SOLiD 4 System | | | | | | | | | | +| 33 | Tumor_Sample_UUID | BCR aliquot UUID for tumor sample | 550e8400-e29b-41d4-a716-446655440000 | Yes | No | | | | | | | | | | | +| 34 | Matched_Norm_Sample_UUID | BCR aliquot UUID for matched normal | 567e8487-e29b-32d4-a716-446655443246 | Yes | No | + +**Notes**
+*1 Intergenic Region.*
+*2 Consolidationd is used to indicate a site that was initially reported as a variant but subsequently removed from further analysis because it was consolidated into a new variant. For example, a SNP variant incorporated into a TNP variant.*
+*3 Used when the discovered varieant differs from that of dbSNP.*
+*4 These MAF headers describe the technology that was used to confirm a mutation, whether the same technology ("verification") or a different technology ("validation") is used to prove that a variant is germline or a somatic mutation.*
+*5 These MAF headers describe the technology that was used toconfirm a mutation, whether the same technology (verification) or a different technology (validation) is used to prove that a variant is germline or a somatic mutation.*
+*6 Explanation of some Validation Status-Mutation Status combinations.*
+ +| Validation Status | Mutation Status | Explanation | +| ------------------ | --------------- | ----------- | +| Valid | Unknown | a valid variant with unknown somatic status due to lack of data from matched normal tissue. | +| Invalid | None | validation attempted, tumor and normal are homozygous reference (formerly described as Wildtype) | +| Inconclusive | Unknown | validation failed, neither the genotype nor its somatic status is certain due to lack of data from matched normal tissue | +| Inconclusive | None | validation failed, tumor genotype appears to be homozygous reference | + + Important Criteria + + **Index column indicates the order in which the columns are expected**. **All + headers are case sensitive.** The Case Sensitive column specifies which values + are case sensitive. The Null column indicates which MAF columns are allowed to + have null values. The Enumerated column indicates which MAF columns have + specified values: an Enumerated value of "No" indicates that there are no + specified values for that column; other values indicate the specific values + listed allowed; a value of "Set" indicates that the MAF column values come from + a specified set of known values (*e.g.*HUGO gene symbols). + + +MAF file checks +=============== + +The DCC Archive Validator checks the integrity of a MAF file. Validation will +fail if any of the below are not true for a MAF file: + +1. Column header text (including case) and order must match specification + (Table 1) exactly + +2. Values under column headers listed in the specification (Table 1) as not + null must have values + +3. Values that are specified in Table 1 as Case Sensitive must be. + +4. If column headers are listed in the specification as having *enumerated* + values (*i.e.* a "Yes" in the "Enumerated" column), then the values under + those column must come from the enumerated values listed under "Enumerated". + +5. If column headers are listed in the specification as having *set* values + (*i.e.* a "Set" in the "Enumerated" column), then the values under those + column must come from the enumerated values of that domain (*e.g.* HUGO gene + symbols). + +6. All Allele-based columns must contain- (deletion), or a string composed of + the following capitalized letters: A, T, G, C. + +7. IfValidation_Status== "Untested" + thenTumor_Validation_Allele1,Tumor_Validation_Allele2,Match_Norm_Validation_Allele1,Match_Norm_Validation_Allele2can + be null (depending onValidation_Status). + + 1. IfValidation_Status== "Inconclusive" + thenTumor_Validation_Allele1,Tumor_Validation_Allele2,Match_Norm_Validation_Allele1,Match_Norm_Validation_Allele2can + be null (depending onValidation_Status)**.** + +8. If Validation_Status == Valid, then Validated_Tumor_Allele1 and + Validated_Tumor_Allele2must be populated (one of A, C, G, T, and -) + + 1. If Validation_Status == "Valid" then Tumor_Validation_Allele1, + Tumor_Validation_Allele2, Match_Norm_Validation_Allele1, + Match_Norm_Validation_Allele2 cannot be null + + 2. IfValidation_Status== "Invalid" + thenTumor_Validation_Allele1,Tumor_Validation_Allele2,Match_Norm_Validation_Allele1,Match_Norm_Validation_Allele2cannot + be null AND Tumor_Validation_Allelle1 == + Match_Norm_Validation_Allele1AND Tumor_Validation_Allelle2 == + Match_Norm_Validation_Allele2 (Added as a replacement for 8a as a + result of breakdown) + +9. Check allele values against Mutation_Status: + Check allele values against Validation_status: + + 1. If Mutation_Status == "Germline" and Validation_Status == "Valid", then + Tumor_Validation_Allele1 == Match_Norm_Validation_Allele1 and + Tumor_Validation_Allele2 == Match_Norm_Validation_Allele2. + + 2. If Mutation_Status == "Somatic" and Validation_Status == "Valid", then + Match_Norm_Validation_Allele1 == Match_Norm_Validation_Allele2 == + Reference_Allele and (Tumor_Validation_Allele1 or + Tumor_Validation_Allele2) != Reference_Allele + + 3. If Mutation_Status == "LOH" and Validation_Status=="Valid", then + Tumor_Validation_Allele1 == Tumor_Validation_Allele2 and + Match_Norm_Validation_Allele1 != Match_Norm_Validation_Allele2 and + Tumor_Validation_Allele1 == (Match_Norm_Validation_Allele1 or + Match_Norm_Validation_Allele2). + +10. Check that Start_position \<= End_position + +11. Check for the Start_position and End_position against Variant_Type: + + 1. If Variant_Type == "INS", then (End_position - Start_position + 1 == + length (Reference_Allele) or End_position - Start_position == 1) and + length(Reference_Allele) \<= length(Tumor_Seq_Allele1 and + Tumor_Seq_Allele2) + + 2. If Variant_Type == "DEL", then End_position - Start_position + 1 == + length (Reference_Allele), then length(Reference_Allele) \>= + length(Tumor_Seq_Allele1 and Tumor_Seq_Allele2) + + 3. If Variant_Type == "SNP", then length(Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) == 1 and (Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) != "-" + + 4. If Variant_Type == "DNP", then length(Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) == 2 and (Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) !contain "-" + + 5. If Variant_Type == "TNP", then length(Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) == 3 and (Reference_Allele and + Tumor_Seq_Allele1 and Tumor_Seq_Allele2) !contain "-" + + 6. If Variant_Type == "ONP", then length(Reference_Allele) == + length(Tumor_Seq_Allele1) == length(Tumor_Seq_Allele2) \> 3 and + (Reference_Allele and Tumor_Seq_Allele1 and Tumor_Seq_Allele2) !contain + "-" + +12. Validation for UUID-based files: + + 1. Column \#33 must be Tumor_Sample_UUID containing UUID of the BCR aliquot + for tumor sample + + 2. Column \#34 must be Matched_Norm_Sample_UUID containing UUID of the BCR + aliquot for matched normal sample + + 3. Metadata represented by Tumor_Sample_Barcode and + Matched_Norm_Sample_Barcode should correspond to the UUIDs assigned to + Tumor_Sample_UUID and Matched_Norm_Sample_UUID respectively + +13. If Validation_Status == "Valid" or "Invalid", then Validation_Method != + "none" (case insensitive) . + +MAF naming convention +===================== + +In archives uploaded to the DCC, the MAF file name should relate to the +containing archive name in the following way: + +If the archive has the name + + \_\.\.Level_2.\.\.0.tar.gz + +then a somatic MAF file with the archive should be named according to + + \_\.\.Level_2.\[.\].somatic.maf + +and a protected MAF with the archive should be named according to + + \_\.\.Level_2.\[.\].protected.maf + +The \ may consist of alphanumeric characters, dash, and +underscore; no spaces or periods; or it may be left out altogether. The purpose +of the optional tag is to impart some brief annotation. + +*Example* + +For the archive + + genome.wustl.edu_OV.IlluminaGA_DNASeq.Level_2.7.6.0.tar.gz + +the following are examples of valid maf names + + genome.wustl.edu_OV.IlluminaGA_DNASeq.Level_2.7.somatic.maf + genome.wustl.edu_OV.IlluminaGA_DNASeq.Level_2.7.protected.maf diff --git a/docs/Encyclopedia/pages/TCGA_VCF_1.1v2.md b/docs/Encyclopedia/pages/TCGA_VCF_1.1v2.md new file mode 100644 index 000000000..b8d17d479 --- /dev/null +++ b/docs/Encyclopedia/pages/TCGA_VCF_1.1v2.md @@ -0,0 +1,1351 @@ +TCGA Variant Call Format (VCF) 1.1 Specification +================================================ + +**Document Information** +This document is retained here for reference purposes and should not be considered the current standard. + + +**Specification for TCGA Variant Call Format (VCF)** +Version 1.1 + + +Please note that VCF files are treated as **protected** data and must be +submitted to the DCC only in **Level 2** archives. + +About TCGA VCF specification +============================ + +Variant Call Format (VCF) is a format for storing and reporting genomic sequence +variations. VCF files are modular where the annotations and genotype information +for a variant are separated from the call itself. As of May 2011, VCF version +4.1 (described +[here](http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41)) +is the most recent release. GSCs will generate sequence variation data using +high-throughput sequencing technologies and resulting variations will be +submitted to DCC as VCF files. TCGA has adopted VCF 4.1 with certain +modifications to support supplemental information specific to the project. +Subsequent sections describe the format TCGA VCF files should follow and +validation steps that would have to be implemented at the DCC. + +Summary of current version changes +================================== + +Following is a summary of additions/modifications for this version and the corresponding validation rule +number is included in parentheses. + +**UUID compliance**: All TCGA data is currently in the process of being +converted to be UUID-compliant. Until the conversion is complete and all centers +are prepared to start submitting UUID-compliant data, some of the VCF files may +adhere to UUID-based specification whereas some may still have barcodes. +Non-UUID files will follow the specification described here but for +UUID-compliance, VCF files should satisfy the following criteria. + +1. **SampleUUID** and **SampleTCGABarcode** are required tags in each + ##SAMPLE declaration. Please note that **SampleName** will not be a + required tag once submitting center has fully converted to UUIDs. + + 1. Metadata represented by SampleTCGABarcode at the DCC should correspond + to the UUID assigned to SampleUUID. + +2. **Individual** is not a required tag in ##SAMPLE declaration. + +3. If ##**INDIVIDUAL** is declared in the header, all SampleUUIDs in the + header must correspond to the same participant, and the corresponding TCGA + barcode for that participant should be assigned to ##INDIVIDUAL. + + + +1. SampleName is a required tag in ##SAMPLE declaration. The value assigned + to SampleName should be a valid [aliquot + barcode](https://docs.gdc.cancer.gov/Encyclopedia/pages/TCGA_Barcode/) / [UUID](https://docs.gdc.cancer.gov/Encyclopedia/pages/UUID/) + in the database. (#15b, #15h) + +2. Header declarations for INFO and FORMAT fields should match the values + defined in Tables 4 and 5 respectively. (#7a) + +3. Following FORMAT fields are required for all variant records in a VCF file: + (#10c) + + - Genotype (**GT**) + + - Read depth (**DP**) + + - Reads supporting ALT (**AD** or **DP4**) + + - Average base quality for reads supporting alleles (**BQ**) + + - Somatic status of the variant (**SS**). SS can be 0, 1, 2, 3, 4 or 5 + depending on whether relative to normal the variant is wildtype, + germline, somatic, LOH, post-transcriptional modification, or unknown + respectively. (#23) + +4. Values for INFO field **VLS** (validation status relative to non-adjacent + Normal) will be checked for validity. It can be 0, 1, 2, 3, 4, or 5 based on + whether the mutation is wildtype, germline, somatic, LOH, post + transcriptional modification, or unknown respectively. (#9c) + +5. Validation of tags in PEDIGREE declaration has changed as follows: (#16) + + - Name_0, Name_1, etc. do not have to be these literal strings but instead + represent arbitrary strings. + + - The keys and values used in the should be unique + across assignments in any given PEDIGREE declaration. + + - Value assigned in does not have to be defined as a + SAMPLE in a genotype column or in the header. + +TCGA-specific customizations +============================ + +The VCF 4.1 specification has been customized to support TCGA-specific variant +information. While majority of the steps pertaining to the basic structure of +the file remain the same, checks for supplemental information fields have been +introduced. For example, TCGA VCF specification allows for additional fields to +represent data associated with complex rearrangements, RNA-Seq variants, and +sample-specific metadata. + +All TCGA-specific additions and modifications in [validation +steps](#validation-rules) are prefixed with a + tag for convenient comparison with 1000Genomes VCF 4.1. The +following table summarizes TCGA-specific customizations that have been added to +the VCF 4.1 specification. The first column, "Customization type", indicates +whether a new validation step has been introduced or if an existing step has +been modified + +**Table 1: TCGA-specific validation steps** + +| **Customization type** | **Description** | **Validation step # in TCGA-VCF 1.1 spec** | **Corresponding validation step # in VCF 4.1 spec** | +|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|------------------------------------------------------| +| New | Validate that file contains ##tcgaversion HEADER line. Its presence indicates that the file is TCGA VCF and the value assigned to the field contains format version number | \--- | \--- | +| New | Additional mandatory header lines (Please refer to [Table 2](#TCGAVariantCallFormat(VCF)1.1Specificat)) | \#1 | \#1 | +| New | Validation of SAMPLE meta-information lines | \#15 | \--- | +| New | Validation of PEDIGREE meta-information lines | \#16 | \--- | +| Modification | Acceptable value set for CHROM has been modified | \#18a,b | \#16a | +| Modification | Acceptable value set for ALT has been modified | \#19 | \#17 | +| New | Validation for INFO sub-field "VT" has been added | \#22 | \--- | +| New | Validation for FORMAT sub-field "SS" has been added | \#23 | \--- | +| New | Validation for INFO/FORMAT sub-field "DP" has been added | \#24 | \--- | +| New | Validation for complex rearrangement records has been added | \#25 | \--- | +| New | Validation for RNA-Seq annotation fields has been added | \#26 | \--- | +| New | Mandatory FORMAT fields have been added | \#10c | \--- | +| New | Check for consistent definitions for INFO and FORMAT fields | \#7a | \--- | + +File format +=========== + +The following example (based on [VCF version +4.1)](http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41) +shows different components of a TCGA VCF file. Any VCF file contains two main +sections. The HEADER section contains meta-information for variant records that +are reported as individual rows in the BODY of the VCF file. Both sections are +described below. + +**Case-sensitivity**: Please note that all fields and their associated +validation rules are case-sensitive (as given in the specification) unless noted +otherwise. + +**Figure 1: Components of a sample TCGA VCF file** + +| ![images](images/vcfExample_VCF.png) | +|------------------------------------------| + + + + +HEADER +------ + +The HEADER contains meta-information lines that provide supplemental information +about variants contained in BODY of the file. HEADER lines could be formatted in +the following two ways: + + + ##key=value + + Example: + + ##fileformat=VCFv4.1 + + ##fileDate=20090805 + + +or + + ##FIELDTYPE= + + Example: + + ##INFO= + +Meta-information could be applicable either to all variant records in the file +(e.g., date of creation of file) or to individual variants (e.g., flag to +indicate whether a given variant exists in dbSNP). + +### Generic meta-information + +**Format**: *##key=value* OR *##FIELDTYPE=* + +The following table lists some of the reserved field names. Files can be +customized to contain additional meta-information fields as long as they are not +in conflict with reserved field names. The first field in Table 2 (fileformat) +is mandatory and lists the VCF version number of the file. + +**Table 2: Examples of generic meta-information fields** + +| **Field** | **Case-Sensitive** | **Description** | **Sample values** | Required (fields in red are TCGA-specific requirements) +| ------------- | --------------------- | --------------- | ------------------ | ----------------------------------------------------- | +| Fileformat | No | Lists the VCF version number the file is based on; must be the first line in the file | ##fileformat=VCFv4.1 | Yes | +| fileDate | No | Date file was created; should be in yyyymmdd format | ##fileDate=20090805 | Yes | +| Tcgaversion | No | Indicates that the file follows TCGA-VCF specification. Format version number is assigned to the field. | ##tcgaversion=1.1 | Yes | +| Reference | No | Reference build used for variant calling and against which variant coordinates are shown | ##reference=1000GenomesPilot-NCBI36 | Yes | +| | | | | | +| | | | OR | | +| | | | | | +| | | | ##reference= | | +| Assembly | No | External assembly file. The field can be assigned a file name if assembly file is included in the archive submitted to the DCC or it can be a URL pointing to the file location. | ##assembly=[ftp://ftp-trace.ncbi.nih.gov/](ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/release/sv/breakpoint_assemblies.fasta) | Yes | +| | | | [1000genomes/ftp/release/sv/breakpoint_assemblies.fasta](ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/release/sv/breakpoint_assemblies.fasta) | (if a contig from an assembly file is being referred to in the VCF file, especially for breakends) | +| center | No | Name of the center where VCF file is generated. A comma-separated list can be provided if files from multiple centers are merged. | ##center="Broad" | Yes | +| | | | | | +| | | | OR | | +| | | | | | +| | | | ##center="Broad,UCSC,BCM" | | +| phasing | No | Indicates whether genotype calls are partially phased (phasing=partial) or unphased (phasing=none) | ##phasing=none | Yes | +| geneAnno | No | URL of the gene annotation source e.g., Generic Annotation File (GAF) | ##geneAnno=[https://gdc.cancer.gov/about-data/data-harmonization-and-generation/gdc-reference-files](https://api.gdc.cancer.gov/legacy/data/95c3618c-bd9e-4df4-96e4-ef8d54710e51) | Yes (if annotation tags like GENE, SID and RGN are used) | +| vcfProcessLog | No | Lists algorithm, version and settings used to generate variant calls in a VCF file. If multiple VCF files are processed to produce a single merged file, the field records attributes for individual VCF files and the programs used to merge the files along with the associated version, parameters and contact information of the person who produced the merged file. | | | | | **Note**: If VCF file does not represent a set of merged files, *MergeSoftware*, *MergeParam*, *MergeVer* and *MergeContact* tags will not be applicable and can be omitted. + | | | | ##vcfProcessLog=, InputVCFSource=, | | +| | | **Note**: If VCF file does not represent a set of merged files, *MergeSoftware*, *MergeParam*, *MergeVer* and *MergeContact* tags will not be applicable and can be omitted. | InputVCFVer=<1.0>, | | +| | | | InputVCFParam= | | +| | | **Note**: If multiple parameters need to be declared in *InputVCFParam*, key=value pairs can be used to name these parameters. For example: | InputVCFgeneAnno=> | | +| | | InputVCFParam= | | | +| | | If there are multiple files for which parameters have to be declared, following format can be used: | OR | | +| | | InputVCFParam= | | | +| | | | ##vcfProcessLog=, | | +| | | | InputVCFSource=, | | +| | | | InputVCFVer=<1.0,2.1,2.0>, | | +| | | | InputVCFParam=, | | +| | | | InputVCFgeneAnno=, | | +| | | | MergeSoftware=, | | +| | | | MergeParam=, | | +| | | | MergeVer=<2.1,3.0>, | | +| | | | MergeContact=> | | +| INDIVIDUAL | No | Specifies the individual for which data is presented in the file | ##INDIVIDUAL=TCGA-24-0980 | No | + +### INFO/FORMAT/FILTER meta-information + +**Format**: *##FIELDTYPE=* + +INFO, FORMAT and FILTER (case-sensitive values) are optional fields that have to +be declared in the HEADER if they are being referred to in BODY of the file. +Different *keys* that can be used to define them are described in Table 3. All +three fields do not use the same set of keys. Please refer to individual field +definitions for further details. + +**Important**: TCGA VCF 1.1 requires all VCF files to follow consistent header +declarations for standard INFO and FORMAT sub-fields. Please refer to Tables 4 +and 5 for details. If a sub-field exists in these tables and is used in a TCGA +VCF file, then all pairs in the definition should match entries in +the corresponding table for the file to pass validation. + +**Table 3: Description of keys used in INFO/FORMAT/FILTER meta-information +declarations** + +| **Key** | **Case-sensitive** | **Description** | **Data Type (Possible values)** | **Additional Notes** | +| ----------- | ------------------ | --------------- | ------------------------------- | -------------------- | +| ID | Yes | name of the field; also used in BODY of the file to assign values for individual variant records | String, no whitespaces, no comma | \--- | +| Number | Yes | specifies the number of values that can be associated with the corresponding field | Set | Any integer \>= 0 indicating number of values; | +| | | | *(Integer \>= 0, "A", "G", ".")* | "A", if the field has one value per alternate allele; | +| | | | | "G", if the field has one value per genotype; | +| | | | | ".", if number of values varies, is unknown, or is unbounded | +| Type | Yes | indicates data type of the value associated with the field | Set | "Flag" type indicates that the field does not contain a value entry, and hence the *Number* should be 0 in this case. FORMAT fields cannot have a "Flag" *Type* assigned to them. | +| | | | *(Integer, Float, Flag, Character, String)* | | +| Description | Yes | provides a brief description of the field | String, surrounded by double-quotes, cannot itself contain a double-quote, cannot contain trailing whitespace at the end of string before closing quotes | \--- | + +#### INFO lines + +**Format**: *##INFO=* +**Required keys**: ID, Type, Number, Description + +INFO fields are optional and contain additional annotations for a variant. +Certain INFO fields have already been created and exist as reserved fields in +the current VCF standard. Custom INFO fields can be added based on study +requirements as long as they do not use the reserved field names. If an INFO +field is declared in the header, it needs to be described further using the +following format: + + ##INFO= + + Example: + + ##INFO= + + ##INFO= + +#### FORMAT lines + +**Format**: *##FORMAT=* +**Required keys**: ID, Type, Number, Description + +FORMAT declaration lines are used when annotations need to be added for +individual genotypes associated with each sample in the file. FORMAT sub-fields +are declared precisely as the INFO sub-fields with the exception that a FORMAT +sub-field cannot be assigned a "Flag" *Type.* + + ##FORMAT= + + Example: + + ##FORMAT= + + ##FORMAT= + +**Important**: TCGA VCF 1.1 requires the following FORMAT sub-fields to be +defined for all variant records. Therefore, these FORMAT lines are not optional +for TCGA VCF files and should be declared in the header. Please refer to Table 5 +for definitions for these sub-fields. + +- Genotype (**GT**) + +- Read depth (**DP**) + +- Reads supporting ALT (**AD** or **DP4**). Either AD or DP4 is required to be + defined although DP4 is preferred. + +- Average base quality for reads supporting alleles (**BQ**) + +- Somatic status of the variant (**SS**). SS can be 0, 1, 2, 3, 4, or 5 + depending on whether relative to normal the variant is wildtype, germline, + somatic, LOH, post-transcriptional modification, or unknown respectively. + +These should be considered as required fields so that they are included by +default unless there is an exceptional scenario where the information for a +field cannot be obtained. In such a case, "." can be used to indicate missing +value. + +#### FILTER lines + +**Format**: *##FILTER=* +**Required keys**: ID, Description + +FILTER fields are defined to list filtering criteria used for generating variant +calls. Custom filters can be applied as long as a definition is provided in the +HEADER. FILTERs that have been applied to the data should be described as +follows. Please note that FILTER declarations do not include *Type* or *Number* +keys. + + ##FILTER= + + Example: + + ##FILTER= + + ##FILTER= + +#### Consistent definitions for reserved INFO and FORMAT fields + +To ensure that all TCGA VCF files have consistent definitions for standard +fields and to avoid merging errors due to contradicting definitions, following +header declarations for common fields are proposed. The 'Source' column in the +tables below indicates whether the field is from 1000Genomes VCF or if it is +specific to TCGA-VCF. By adhering to these definitions, we can ensure that a +given field is interpreted the same way across all centers and that same +'Number', 'Type' and 'Description' values are used for these IDs. + +##### Table 4: INFO sub-field definitions + +| **Sub-field** | **Source** | **Formatted declaration** | +|---------------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| AA | VCF | ##INFO= | +| AC | VCF | ##INFO= | +| AF | VCF | ##INFO= | +| AN | VCF | ##INFO= | +| BQ | VCF | ##INFO= | +| CIGAR | VCF | ##INFO= | +| DB | VCF | ##INFO= | +| DP | VCF | ##INFO= | +| END | VCF | ##INFO= | +| H2 | VCF | ##INFO= | +| H3 | VCF | ##INFO= | +| MQ | VCF | ##INFO= | +| MQ0 | VCF | ##INFO= | +| NS | VCF | ##INFO= | +| SB | VCF | ##INFO= | +| SOMATIC | VCF | ##INFO= | +| VALIDATED | VCF | ##INFO= | +| 1000G | VCF | ##INFO= | +| IMPRECISE | VCF | ##INFO= | +| NOVEL | VCF | ##INFO= | +| SVTYPE | VCF | ##INFO= | +| SVLEN | VCF | ##INFO= | +| CIPOS | VCF | ##INFO= | +| CIEND | VCF | ##INFO= | +| HOMLEN | VCF | ##INFO= | +| HOMSEQ | VCF | ##INFO= | +| BKPTID | VCF | ##INFO= | +| MEINFO | VCF | ##INFO= | +| METRANS | VCF | ##INFO= | +| DGVID | VCF | ##INFO= | +| DBVARID | VCF | ##INFO= | +| DBRIPID | VCF | ##INFO= | +| MATEID | VCF | ##INFO= | +| PARID | VCF | ##INFO= | +| EVENT | VCF | ##INFO= | +| CILEN | VCF | ##INFO= | +| DPADJ | VCF | ##INFO= | +| CN | VCF | ##INFO= | +| CNADJ | VCF | ##INFO= | +| CICN | VCF | ##INFO= | +| CICNADJ | VCF | ##INFO= | +| VLS | TCGA-VCF | ##INFO= | +| SID | TCGA-VCF | ##INFO= | +| GENE | TCGA-VCF | ##INFO= | +| RGN | TCGA-VCF | ##INFO= | +| RE | TCGA-VCF | ##INFO= | +| VT | TCGA-VCF | ##INFO= | + +##### Table 5: FORMAT sub-field definitions + +| **Sub-field** | **Source** | **Formatted declaration** | +|---------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| GT | VCF | ##FORMAT= | +| DP | VCF | ##FORMAT= | +| FT | VCF | ##FORMAT= | +| GL | VCF | ##FORMAT= | +| PL | VCF | ##FORMAT= | +| GP | VCF | ##FORMAT= | +| GQ | VCF | ##FORMAT= | +| HQ | VCF | ##FORMAT= | +| CN | VCF | ##FORMAT= | +| CNQ | VCF | ##FORMAT= | +| CNL | VCF | ##FORMAT= | +| MQ | VCF | ##FORMAT= | +| HAP | VCF | ##FORMAT= | +| AHAP | VCF | ##FORMAT= | +| SS | TCGA-VCF | ##FORMAT= | +| TE | TCGA-VCF | ##FORMAT= | +| AD | TCGA-VCF | ##FORMAT= | +| DP4 | TCGA-VCF | ##FORMAT= | +| BQ | TCGA-VCF | ##FORMAT= | +| VAQ | TCGA-VCF | ##FORMAT= | + + + + + +### TCGA-specific meta-information + +#### PEDIGREE lines + +**Format**: *##PEDIGREE=* +**Required keys**: Name_0,..,Name_N where N \>= 1; + +PEDIGREE lines are used to specify derivation relationships between different +genomes. *Name_0* is associated with the derived genome and *Name_1* through +*Name_N* represent the genomes from which it is derived. In the case of tumor +clonal populations, one population is clonally derived from another. In the +example below, PRIMARY-TUMOR-GENOME is derived from GERMLINE-GENOME. + + ##PEDIGREE=,Name_1=,...,Name_N=> + + where N is \>= 1; + + Example: + + ##PEDIGREE= + +#### SAMPLE lines + +**Format**: *##SAMPLE=* +**Required keys**: ID, SampleName, Individual, File, Platform, Source, Accession + +For UUID-compliant files, following rules should be followed: + +**Required keys**: ID, SampleName, Individual, SampleUUID, SampleTCGABarcode, +File, Platform, Source, Accession + +- Value assigned to "SampleUUID" should be a valid [aliquot + UUID](https://docs.gdc.cancer.gov/Encyclopedia/pages/UUID/) in the database. + +- Value assigned to "SampleTCGABarcode" should represent the aliquot-level + metadata associated with SampleUUID. This metadata mapping is originally + received by the DCC from BCR. + +> Example: + +> ##SAMPLE=,Mixture=<0.1,0.9>,Genome_Description=<"Germline +> contamination","Tumor genome">> + + + +SAMPLE lines are used to include additional metadata about each sample for which +data is represented in the VCF file. All samples are listed in the column header +line following the FORMAT column (Figure 1). Each of these samples should have +its own HEADER declaration where the sample identifier in the column header +should be the same as the value assigned to "ID" key in the corresponding +declaration. Value assigned to "SampleName" should be a valid [aliquot +barcode](https://docs.gdc.cancer.gov/Encyclopedia/pages/TCGA_Barcode/) / [UUID](https://docs.gdc.cancer.gov/Encyclopedia/pages/UUID/) +in the database. The declaration lists information about the sample (source, +platform, source file, etc.) and can also be used to indicate if the sample is a +mixture of different kind of genomes. In the example below, "Genomes", "Mixture" +and 'Genome_Description" tags represent comma-separated list of different +genomes that a sample contains, proportion of each genome in the sample, and a +brief description of each genome respectively. + +##SAMPLE=,Mixture= +,Genome_Description=<"S1","S2",..,"SK">> + +Example: + +##SAMPLE=,Mixture=<0.1,0.9>,Genome_Description=<"Germline +contamination","Tumor genome">> + +- "Description" field for genome mixture has been renamed to + "Genome_Description" to distinguish it from sample description. + +- Values for tags related to genome mixture (Genomes, Mixture, + Genome_Description) are within angle brackets. + +### Column header meta-information + +**Format**: Tab-delimited line starting with "#" and containing headers for all +columns in the BODY as shown below. + +This is a mandatory header line where the first 8 fields are fixed and have to +defined in the column header. "FORMAT" onwards are optional and are included to +encapsulate per-sample/genome genotype data. + +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT ... + +BODY +### Variant records + +Data lines are tab-delimited and list information about individual variants and +associated genotypes across samples. The first 8 fields (Figure 1) are required +to be listed in the VCF column header line. Some of these fields require +non-null values (see Table 6) for each record. For the remaining fixed fields, +even if the field does not have an associated value, it still needs to be +specified with a missing value identifier ("." in VCF 4.1). Subsequent fields +are optional. + +**Table 6: Description of fields in the BODY of a VCF file** + +| **Index** | **Field** | **Case-sensitive** | **Description** | **Data type** | **Sample values** | **Required\*** | **Additional notes** | +| --------- | ---------- | ------------------ | --------------- | ------------- | --------------------- | -------------- | -------------------- | +| 1 | CHROM | Yes | *Chromosome*: an identifier from the reference genome or the assembly file defined in the HEADER. | Alphanumeric string | 20 | Yes | Chromosome name should not contain "chr" prefix, e.g., "chr10" will be an invalid entry | +| | | | | *([1-22], X, Y, MT, )* | | | | +| 2 | POS | Yes | *Position*: The reference position, with the 1st base having position 1. | Non-negative integer | 1110696 | Yes | \--- | +| 3 | ID | Yes | *Identifier*: Semi-colon separated list of unique identifiers if available. | String, no white-space or semi-colons | rs6054257_66370 | No | **Important**: When using an rsID as the variant identifier, please append chromosomal location of the variant to the ID. For example, if the variant is at chr7:6013153 and the corresponding rsID is rs10000, then the variant ID should be rs10000_6013153. This is to ensure that there is a consistent rule for satisfying the condition for unique IDs even if a file contains single rsID that maps to multiple variants. | +| 4 | REF | Yes | *Reference allele(s)*: Reference allele at the position. | String | GTCT | Yes | Value in POS field refers to the position of the first base in the REF string. | +| | | | | *([ACGTN]+* ) | | | | +| 5 | ALT | Yes | *Alternate allele(s)*: Comma separated list of alternate non-reference alleles called on at least one of the samples. Angle-bracketed ID String (\) can also be used for symbolically representing alternate alleles. | String; no whitespace, commas, or angle-brackets in the ID string | G,GTCT | No | if ALT==, ID needs to be defined in the header as | +| | | | | *([ACGTN]+, , .)* | . | | ##ALT= | +| | | | | | | | | +| 6 | QUAL | Yes | *Quality score*: Phred-scaled quality score for the assertion made in ALT. | Integer \>= 0 | 50 | No | Scores should be non-negative integers or missing values | +| 7 | FILTER | Yes | *Filtering results*: PASS if this position has passed all filters, Otherwise, if the site has not passed all filters, a semicolon-separated list of codes for filters that fail. | String, no whitespace or semi-colon | PASS | No | "0" is reserved and cannot be used as a filter String. | +| | | | | | q10;s50 | | | +| 8 | INFO | Yes | *Additional information*: INFO fields are encoded as a semicolon-separated series of keys (same as ID in an INFO declaration) with optional values in the format **. | String, no whitespace, semi-colons, or equal-signs | NS=3;DP=14; | No | \--- | +| 9 | FORMAT | Yes | *Genotype sub-fields*: If genotype data is present in the file, the fixed fields are followed by a FORMAT column. The field contains a colon-separated list of all pre-defined FORMAT sub-fields (same as ID in a FORMAT declaration) that are applicable to all samples that follow. | String, no whitespace, sub-fields cannot contain colon | GT:GQ:DP:HQ | No | "GT" must be the first sub-field if it is present in the FORMAT field. | +| 10 | | Case should be same as in "ID" tag of \#\#SAMPLE declaration in the header | *Per-sample genotype information*: An arbitrary number of sample IDs can be added to the column header line and a variant record in the BODY can contain genotype information corresponding to FORMAT column for each sample. Contains a colon-separated list of values assigned to each of the sub-fields in FORMAT column. | String, no whitespace, sub-fields cannot contain colon | 0\|0:48:1:51,51 | No | Values are assigned to FORMAT sub-fields in the SAME order as specified in "FORMAT" column. All samples in any given row for a variant record MUST contain values for all sub-fields as defined in "FORMAT" column. If any of the fields does not have an associated value, then missing value identifier (".") should be used for that field. However, "." cannot be used as a value for any of the IDs in the FORMAT field (e.g., GT:.:DP would lead to an error). | + +* A "Required" field cannot contain missing value identifier for any record +listed in data lines. + +Extensions for TCGA data +======================== + +TCGA data includes but is not limited to SNP's and small indels. A variant +representation format for cancer data should be able to support more complex +variation types such as structural variants, complex rearrangements and RNA-Seq +variants. The following sub-sections present an overview of the extensions that +have been added to clearly describe such variations in a VCF file. + +Structural variants +------------------- + +A [structural variant](http://www.ncbi.nlm.nih.gov/dbvar/content/overview/) (SV) +can be defined as a region of DNA that includes a variation in the structure of +the chromosome. Such variations could be due to inversions and balanced +translocations or genomic imbalances (insertions and deletions), also referred +to as copy number variants (CNVs). Certain features have been added to the +format in order to clearly describe structural variants in a VCF file. A +detailed description of the extensions is available +[here](http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41). + +Complex rearrangements +---------------------- + +Chromosomal rearrangements are caused by breakage of DNA double helices at two +different locations. The broken ends in turn rejoin to produce a new chromosomal +arrangement. Complex rearrangements involving more than two breaks are +frequently observed in cancer genomes. Certain modifications need to be made to +the VCF standard to adequately represent such variations in a VCF file. A +detailed specification of the proposed extensions to describe rearrangements in +a VCF file is available +[here](http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41). +Figure 2 illustrates some of the concepts relevant to VCF records for complex +rearrangements. + +**Figure 2: Adjacencies and breakends in a chromosomal rearrangement** (adapted +from VCF 4.1 specification) + +| ![media](images/ccr_VCF.png) | +| ------------------------------------------ | + + + +A VCF file has one line for each of the two breakends in an adjacency. Table 7 +provides a list of sub-fields that have been added to describe breakends. An +INFO sub-field (**SVTYPE=BND**) is used to indicate a breakend record. +Sub-fields MATEID and PARID are used to represent variant record IDs of +corresponding mates and partners respectively. + +**Table 7: Fields added for breakends** + +| **Field:Sub-field** | **Description** | **Declaration in HEADER** | **Required** | **(Sample values in BODY)** | +| ------------------- | --------------- | ------------------------- | ------------ | --------------------------- | +| INFO:**SVTYPE** | Type of structural variant; SVTYPE is set to "BND" for breakend records | ##INFO= | Yes | +| | | *SVTYPE=BND* | (SVTYPE=BND for breakend records) | +| INFO:**MATEID** | ID of corresponding mate of the breakend record | ##INFO= | No | +| | | *MATEID=bnd_U* | | +| INFO:**PARID** | ID of corresponding partner of the breakend record | ##INFO= | No | +| | | *PARID=bnd_V* | | +| INFO:**EVENT** | ID of event associated to breakend | ##INFO= | No | +| | | *EVENT=RR0* | | + +The specification for ALT field deviates from the standard format for breakend +records. ALT field for a breakend record can be represented in four possible +ways based on the type of replacement. + +REF ALT Description + +s t[p[ piece extending to the right of p is joined after t + +s t]p] reverse comp piece extending left of p is joined after t + +s ]p]t piece extending to the left of p is joined before t + +s [p[t reverse comp piece extending right of p is joined before t + +Legend: + +s: sequence of REF bases beginning at position POS + +t: sequence of bases that replaces "s" + +p: position of the breakend mate indicating the first mapped base that joins at +the adjacency; represented as a string of the form "chr:pos" + +[]: square brackets indicate direction that the joined sequence continues in, +starting from p + +RNA-Seq variants +---------------- + +VCF specifications have been extended to address expressed variants obtained +from RNA-Seq. Features added for structural variants from genome/exome +sequencing are applicable to RNA-Seq structural variants. However, RNA-Seq +breakends are represented by setting **SVTYPE=FND** instead of BND (Table 8) +since they can be different from those observed in DNA-Seq. + +**Table 8: Fields added for RNA-Seq variants** + +| **Field:Sub-field** | **Description** | **Declaration in HEADER** | **Required** | +| ------------------- | --------------- | ------------------------- | ------------ | +| INFO:**SVTYPE** | Type of structural variant; SVTYPE is set to "FND" for breakends associated with RNA-Seq | ##INFO= | Yes | +| | | *SVTYPE=FND* | (required for RNA-Seq breakend records; SVTYPE=FND) | + +VCF files for RNA-Seq variants may include gene-related annotations. However, +this is not a standard feature of VCF files as eventually all VCF variants will +be annotated using information in Generic Annotation File (GAF). Additional INFO +and FORMAT sub-fields have been included to describe the characteristics of +expressed nucleotide variants (Table 8a). + +**Table 8a: Annotation fields added for RNA-Seq variants** + +| **Field:Sub-field** | **Description** | **Declaration in HEADER** | **Required** | +| ------------------- | --------------- | ------------------------- | ------------ | +| INFO:**SID** | Unique identifiers from the gene annotation source as specified in ##geneAnno; "unknown" should be used if identifier is not known; comma-separated list of IDs can be used if variant overlaps with multiple features | ##INFO= | No | +| | | *SID=13,198* | | +| INFO:**GENE** | HUGO gene symbol; "unknown" should be used when gene symbol is unknown; comma-separated list of genes can be used if variant overlaps with multiple transcripts/genes | ##INFO= | No | +| | | *GENE=ERBB2,ERBB2* | | +| INFO:**RGN** | Region where a nucleotide variant occurs in relation to a gene | ##INFO= | No | +| | | *RGN=exon,3_utr* | | +| INFO:**RE** | Flag to indicate if position is known to have RNA-edits occur | ##INFO= | No | +| | | *RE* | | +| FORMAT:**TE** | Translational effect of a nucleotide variant in a codon | ##FORMAT= | | +| | | *MIS,NA* | | + +Including validation status in VCF file +--------------------------------------- + +Somatic variations are often validated using follow-up experiments to confirm +the variant is not due to sequencing errors. Following points need to be +considered while including validation status in VCF file: + +- A single VCF file will contain sequence data for a single case. The file + could be the result of merging calls from different centers so validation + can be performed on a set of variants reported in a merged VCF file. + +- Validation with secondary technology is performed after obtaining results + from primary sequencing method. Therefore, validation is a confirmation step + and may or may not be performed before a first-pass VCF file with all + candidate mutations is generated and submitted to the DCC. + +- A single mutation can be verified with multiple independent methods and the + results may or may not be in agreement. + +- If results from different methods are in conflict, the final validation + status of the variant call needs to be inferred based on available + information. This could be done manually or programatically. + +**Format validation** + +Since validation data is added as additional genotype/sample columns, the file +will pass validation as long as all existing format rules are followed and +header declarations are correct. + +**Sample TCGA VCF file with validation status** + +Line1 ##fileformat=VCFv4.1 + +Line2 ##tcgaversion=1.1 + +Line3 ##fileDate=20120205 + +Line4 ##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta + +Line5 ##FORMAT= + +Line6 ##FORMAT= + +Line7 ##FORMAT= + +Line8 ##INFO= + +Line9 ##FILTER= + +Line10 +##SAMPLE= + +Line11 +##SAMPLE= + +Line12 +##SAMPLE= + +Line13 +##SAMPLE= + +Line14 +##SAMPLE= + +Line15 #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOR NORMAL_454 +TUMOR_454 TUMOR_Sanger + +Line16 20 14370 var1 G A 29 PASS VLS=2 GT:GQ:SS 0/0:48:. 0/1:50:2 0/0:20:. +0/1:20:2 0/1:.:2 + +Line17 5 15000 var2 T C 35 PASS VLS=1 GT:GQ:SS 0/1:48:. 1/1:51:3 0/1:60:. +0/1:50:1 0/1:13:1 + +Line18 3 170089 var2 G T 30 PASS . GT:GQ:SS 0/1:48:. 0/1:51:1 .:.:. .:.:. .:.:. + +The format follows these guidelines: + +1. **Sample columns** + + - An additional column is included for every line of evidence used for + validation. In the example above, tumor calls are verified with 454 and + Sanger sequencing and normal calls are validated with 454. Therefore, 3 + genotype columns exist in addition to the NORMAL and TUMOR sequencing + calls obtained with the primary sequencing method. + + - The validation platform name is appended to the original sample to + distinguish the validation results from primary sequencing. + _ is used in the example above. + + - **Note**: \ can be obtained from DCC [Code Tables + Report](http://tcga-data.nci.nih.gov/datareports/codeTablesReport.htm). + The ##SAMPLE meta-information line also includes a 'Platform' tag + where platform name is defined. + + - Each new genotype column header added to the file (e.g., TUMOR_454, + TUMOR_Sanger) has to be defined in the header using the ##SAMPLE + meta-information line (e.g., Lines 13 and 14). + + - As per VCF specification, the order of FORMAT sub-fields is defined by + the FORMAT column and all calls from primary and validation sequencing + should comply with this order. + + - If a sub-field does not apply to any given validation call, it should be + assigned a missing value ("."). + +2. **FORMAT sub-field "SS"** + + - For any given tumor genotype call, sub-field SS indicates variant status + with respect to non-adjacent normal counterpart (0, 1, 2, 3, 4 or 5 + based on whether the variant is wildtype, germline, somatic, LOH, + post-transcriptional modification, or unknown respectively). Therefore, + each tumor genotype call (primary and secondary sequencing) will have + its own corresponding SS sub-field. + +3. **INFO sub-field "VLS"** + + - Sub-field VLS represents an inferred decision for a tumor genotype call + and is based on the calls obtained with validation. In the example + above, var1 shows a somatic call (SS=2) for the tumor sample based on + primary sequencing, and both validation methods confirm this call. + Therefore, the final validation status of var1 is a somatic variation + (VLS=2). However, var2 has a LOH variant in tumor sample (SS=3) based on + primary sequencing whereas both validation methods indicate that it is a + germline variant (SS=1). In such a case, "VLS" has to be inferred from + available information and could differ from the SS value assigned to the + tumor sample based on primary sequencing. + +Validation rules +================ + +At the minimum, every file needs to go through the checks listed below. +Following is an example of a VCF file that shows certain violations cited in the +listed validation steps. Please note that line numbers in the file segment below +are added for illustration purposes alone and are not expected to be found in an +actual VCF file. + +Line1 ##fileformat=VCFv4.1 + +Line2 ##fileDate=20090805 + +Line3 ##source=myImputationProgramV3.1 + +Line4 ##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta + +Line5 ##INFO= + +Line6 ##INFO= + +Line7 ##FORMAT= + +Line8 ##FORMAT= + +Line9 ##FORMAT= + +Line10 ##FORMAT= + +Line11 ##FILTER= + +Line12 ##FILTER= + +Line13 FILTER= + +Line14 ##ALT= + +Line15 #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT TCGA-02-0001-01 +TCGA-02-0001-02 + +Line16 20 14370 var1 G A 29 q10 NS=2;DP=14 GT:GQ:DP 0|0:48 0|1:48:3 + +Line17 19 15000 var2 G A 35 q10;s50 NS=2.5 GQ:GT 48:0|0 51:0|1 + +Line18 19 16000 var3 C T 30 q10;s10 NS=2 GT:GQ:DP 0/2:48:3 0/1:51:4 + +Line19 2 14477 rs123 C \ 12 PASS NS=3;DB GT:GQ 0/1:50 1/1:40 + +Line20 9 13567 . A \ 20 PASS NS=3 GT:GQ:PL 0/1:49:42,3 1/1:38:96,47/70 + +Line21 3 18901 rs456 T C 15 PASS NS=3/DB GT 0/1 1/1 + +**Important**: A file will be validated as a TCGA VCF file only if it contains +##tcgaversion HEADER line (e.g., ##tcgaversion=1.1). The current acceptable +version is 1.1. + +1. Mandatory [header lines](#TCGAVariantCallFormat(VCF)1.1Specificat) should be + present. + +2. All meta-information header lines should be prefixed with "\#\#". + +3. [Column header](#TCGAVariantCallFormat(VCF)1.1Specificat) line should be + prefixed with "\#". A VCF file can contain only a single column header line + that must contain all required field names. + +4. Any line lacking the "##" or "#" prefix will be assumed to be a BODY data + line and will have to follow the specified format. For example, Line13 leads + to a violation as it lacks "##" or "#" but is not a tab-delimited row + containing variant information. + +5. HEADER lines cannot be present within the BODY of a file and vice-versa. + +6. [INFO](#TCGAVariantCallFormat(VCF)1.1Specificat), + [FORMAT](#TCGAVariantCallFormat(VCF)1.1Specificat) and + [FILTER](#TCGAVariantCallFormat(VCF)1.1Specificat)declarations should follow + the format below where all keys are required but the order of keys is + irrelevant. + +7. ##INFO= + +8. ##FORMAT= + +9. ##FILTER= + +10. Values assigned to *ID, Number, Type* and *Description* in INFO, FORMAT or + FILTER declarations should follow the rules listed below. A detailed + description of the declaration format is provided + [here](#TCGAVariantCallFormat(VCF)1.1Specificat). + + 1. If an INFO or FORMAT sub-field exists in Table 4 or 5 respectively (i.e. + ID of the sub-field matches value in "Sub-field" column of the table) + then *ID*, *Number*, *Type* and *Description* values for that sub-field + declaration must match the corresponding value in "Formatted + declaration" column of the table for that sub-field. (TCGA VCF 1.1) + + 2. ID, Number, Type !\~ /(\\s\|,\|=\|;)/ + + 3. *Number* is in {Integer\>=0, "A", "G", "."} + + 4. *Type* is in {Integer, String, Float, Flag, Character} + + 5. *Description* should be within double quotes and cannot itself contain a + double quote + + 6. *Description* string cannot contain leading or trailing whitespace after + opening or before closing quotation marks; Line10 shows a violation as + *Description* string contains leading and trailing whitespace. + + 7. If ID == "FORMAT", then Type != "Flag" + +11. Any INFO, FORMAT or FILTER sub-fields used in the BODY are required to be + defined in the HEADER. For example, var1 (Line16) shows an example of a + violation as read depth "DP" is assigned a value (DP=14) without being + defined as an INFO sub-field in the HEADER. + +12. Validation of **INFO** sub-fields: + + 1. An INFO sub-field should be included for a variant record in the BODY as + *\* (e.g., NS=2) where *key*is the "ID" value of the + sub-field in the HEADER declaration. + + - **Exception**: An INFO field of "Flag" *Type* will not be assigned a + value in the BODY. The presence of a flag in INFO column merely + indicates that the variant record satisfies a condition associated + with the flag. For example, Line19 has a "DB" flag without a value + entry in the INFO column. "DB" in the INFO column indicates that the + variant exists in dbSNP. + + 2. Multiple INFO sub-fields can be associated with a single variant record + using ";" as a separator (e.g., Line16). Line21 has a violation as "/" + is used as a separator in INFO column. + + 3. If INFO field "VLS" is defined for a record, its value can only be 0, 1, + 2, 3, 4, or 5 based on whether the mutation is wildtype, germline, + somatic, LOH, post-transcriptional modification, or unknown. + +13. Validation of **FORMAT** sub-fields: + + 1. FORMAT column for a variant record contains a colon-separated list of + all pre-defined FORMAT sub-fields (identified by "ID" value in the + HEADER declaration) that are applicable to all samples that follow. A + ":" is the only valid separator for sub-fields. + + 2. Number of colon-separated sub-fields in FORMAT column should equal to + number of colon-separated values assigned to each sample. For example, + var1 (Line16) violates this rule for the sample TCGA-02-0001-01 as there + are 3 sub-fields in FORMAT column but only 2 values in the sample + column. + + 3. Following FORMAT fields are required for all variant records in a VCF + file. Missing value (".") is allowed for these fields. + + - Genotype (**GT**) + + - Read depth (**DP**) + + - Reads supporting ALT (**AD** or **DP4**) + + - Average base quality for reads supporting alleles (**BQ**) + + - Somatic status of the variant (**SS**). SS can be 0, 1, 2, 3, 4, or + 5 depending on whether relative to normal the variant is wildtype, + germline, somatic, LOH, post-transcriptional modification, or + unknown respectively + + 4. *GT* must be the first sub-field in the string FORMAT. For example, var2 + (Line17) violates this rule as GT is not the first sub-field even though + it is present in the FORMAT field. + + - GT is a required sub field for all variants. Missing value (".") is + allowed for GT. GT is not a required sub field and can be omitted + for a variant row if none of the samples have genotype calls + available (TCGA VCF 1.1) + + - *GT* represents the genotype, encoded as allele values separated by + either of / (genotype unphased) or \| (genotype phased). The + allele values are 0 for the reference allele (in REF field), 1 for + the first allele listed in ALT, 2 for the second allele list in ALT + and so on. Examples: 0/1, 1\|0, or 1/2, etc. + + - *GT*is assigned only one allele value for haploid calls (e.g. on Y + chromosome). Therefore, if CHROM=="Y" then*GT*should have only one + allele value assigned to it (e.g., "1", "0", ".", etc.) instead of + two alleles (e.g., "1/1", "0\|0"). If CHROM=="MT" then There is no + constraint on the number of alleles as long as the number is bounded + within the alleles listed in REF and/or ALT (e.g., 0/1, 0/1/2, 1 are + all valid values for MT if REF and ALT have one and two allele + values respectively). + + - All samples should have values assigned to *GT* for any given + variant. If an allele cannot be called for a sample at a given + locus, . will be specified for each missing allele in the *GT* + field (for example "./." for a diploid genotype and "." for haploid + genotype). + + - Validation should include ensuring that allele number in *GT* is + within the range of alleles specified in ALT and REF. For example, + var3 (Line18) violates this rule as it lists GT as "0/2" for sample + TCGA-02-0001-01 but ALT contains only one allele so the only + acceptable allele numbers are 0 (REF) and 1 (ALT). + +14. If an INFO or FORMAT sub-field is declared in the header AND is assigned a + value for a variant record in the body, the data type should be consistent + with the expected type defined in the *Type*key of the corresponding + declaration. For example, var2 (Line17) violates this rule as the definition + for "NS" INFO sub-field states the data type is integer whereas the variant + record contains a float value (2.5) assigned to the sub-field. + + 1. **Exception**: The rule does not apply if *Type* of a field is not + defined or is incorrectly defined (e.g., field not declared in HEADER, + *Type* not included in declaration, incorrect value for *Type)*. It also + does not apply to any missing values (denoted with ".") in the record as + they do not have an associated data type. + +15. Multiple comma-separated values (corresponding to value assigned to *Number* + key in declaration) can be specified for an INFO or FORMAT sub-field for a + variant record. No other character can be used as separator. Line20 shows a + violation as a "/" is used as separator between 2nd and 3rd values for + *"PL"* FORMAT sub-field in the second sample column. + +16. If *Number* tag is assigned a known bounded value (an integer, "A", "G") for + an INFO/FORMAT sub-field, it should be consistent with number of values + specified for any variant record in BODY of file. For example, Line20 shows + a violation as *"PL"* is associated with 3 integer values (Line10) but the + variant record has only 2 comma-separated integer values (42,3) for + TCGA-02-0001-01. + +17. Validation of **FILTER** sub-fields: + + 1. Valid values for FILTER column are "PASS" or a code for the filter that + the variant call fails (e.g., "q10" in Line16). The code must correspond + to the "ID" value of the corresponding FILTER declaration. + + 2. If a call fails multiple filters, FILTER column should contain + semicolon-separated list of all failed filter codes (e.g., "q10;s50" in + Line17). A ";" is the only valid separator. + + 3. All codes listed in the FILTER column must have a well-formed + declaration in the HEADER. Line18 shows a violation as "q10" does not + have an associated definition in the HEADER. + +18. \ Validation of + [SAMPLE](#TCGAVariantCallFormat(VCF)1.1Specificat) meta-information lines: + + 1. Each sample ID in the column header (immediately after FORMAT column) + must have an associated HEADER declaration where value assigned to "ID" + tag in the declaration is the same as sample ID used in the column name. + + 2. Declaration must contain all required fields. + + 3. Genome mixture tags (Genomes, Mixture, Genome_Description) are enclosed + within angle brackets (<>) and can have multiple comma-separated + values. + + 4. If more than one of the genome mixture tags (Genomes, Mixture, + Genome_Description) are defined in a SAMPLE meta-information line, then + number of comma-separated values should be the same for all defined + tags. For example, "Genomes=,Mixture=<0.1,0.8,0.1>" would + lead to a violation as Mixture has 3 values while Genomes has only 2 + values. + + 5. Individual values in "Genomes" are strings without white-space, comma or + angle brackets. + + 6. Individual values in "Mixture" represent proportion (floating point + number >= 0 and <= 1) of each genome in the sample and all + comma-separated values should add up to a sum of 1. + + 7. Individual values in "Genome_Description" are strings surrounded by + double quotes where the string itself cannot contain a double quote. + + 8. The value assigned to "SampleName" must be a valid [aliquot + barcode](https://docs.gdc.cancer.gov/Encyclopedia/pages/TCGA_Barcode/) / [UUID](https://docs.gdc.cancer.gov/Encyclopedia/pages/UUID/) + in the database (TCGA VCF 1.1). + +19. Validation of + [PEDIGREE](#TCGAVariantCallFormat(VCF)1.1Specificat) meta-information lines: + + 1. Declaration line should follow the format: + + 2. ##PEDIGREE= + +> where: + +- N \>= 1 + +- Name_0 through Name_N are arbitrary (not literal) strings that cannot + contain white-space, comma, or angle brackets (TCGA VCF 1.1) + +- G0-ID through GN-ID are strings that cannot contain white-space, comma, or + angle brackets. Each of these should be a header for the genotype columns + immediately after FORMAT column and should be defined using "ID" tag in the + corresponding ##SAMPLE meta-information line. (TCGA VCF 1.1) + +- The keys and values used in the should be unique across + assignments in any given PEDIGREE declaration. + +1. Validation of custom meta-information fields: + + 1. If a user-created custom meta-information declaration is encountered and + the corresponding key/value structure and content have not been defined + in this specification, the line should be validated to ensure it follows + one of the following two formats: + + 2. ##key=value + + 3. Example: + + 4. ## + + 5. OR + + 6. ##FIELDTYPE= + + 7. Example: + + 8. ##contig= + +> where: + +- key !\~ /(\\s\|,\|=\|;)/ + +- value !\~ /(\\s\|,\|=\|;)/ UNLESS *value* is within double quotes, in which + case it cannot itself contain a double quote or leading/trailing whitespace + OR if *value* is within angle brackets. + +1. *CHROM*, *POS*, and *REF* are required fields and cannot contain missing + value identifiers. Please refer to [Table + 6](#TCGAVariantCallFormat(VCF)1.1Specificat) for acceptable values. + + 1. *CHROM* is in {[1-22], X, Y, MT,} where chr_ID + cannot contain whitespace or <> + + 2. If CHROM == then the VCF file MUST have a declaration for + assembly file in the HEADER. Please note that values assigned to the + field are currently not being validated. + + 3. ##assembly=url or filename + + 4. Example: + + 5. ##assembly=ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/release/sv/breakpoint_assemblies.fasta + + 6. ##assembly=breakpoint_assemblies.fasta + + 7. *POS* is a non-negative integer + + 8. *REF* =\~ /[ACGTN]+/ + +2. *ALT* is in {[ACGTN]+, ".", , **SV_ALT**}; + + 1. String SV_ALT can be in one of the following four formats and can be + used in the *ALT*field ONLY when the corresponding INFO field has the + key-value pair "SVTYPE=BND" or "SVTYPE=FND". + + 2. Format Example + + 3. seq[chr:pos[ G[17:198982[ + + 4. seq]chr:pos] GC]1:238909] + + 5. ]chr:pos]seq ]\:235788]GCNA + + 6. [chr:pos[seq [1:2812734[ACT + +> where: + +- *seq* is in {[ACGTN]+, "."} + +- *chr* is in {\, [1-22], X, Y, MT} where *chr_ID* is a string + +- *pos* is a non-negative integer + +1. Similar to 18b, if chr == (where *chr_ID* is a string) then the + VCF file must have an ##assembly declaration in the HEADER. + +2. If *ALT* is assigned a value in format, (e.g., rs123 in Line19), + should be defined in the HEADER as + ##ALT= (Line14) where ID cannot + contain white-space or angle brackets. Line20 shows a violation of this rule + as *ALT==* but there is no corresponding *ALT* declaration in the + HEADER with . + +3. ALT can contain multiple comma-separated values. No other character can be + used as a separator. + +4. No two records are allowed to have the the same *ID* value. Two records can, + however, have the same *CHROM* and *POS*values. + + 1. **Exception**: Multiple records in a file are allowed to have the same + missing value identifier (".") as *ID*. + +5. *QUAL* field can only contain non-negative integers or "." (missing value). + +6. If INFO sub-field "VT" is declared and used in the BODY, its + value can only be in {SNP, INS, DEL} + +7. If FORMAT sub-field "SS" is declared and used in the BODY, its + value can be 0, 1, 2, 3, 4 or 5 depending on whether relative to normal the + variant is wildtype, germline, somatic, LOH, post-transcriptional + modification, or unknown respectively. + +8. "DP" sub-field for read depth can be defined in INFO (combined + depth across all samples) or FORMAT (depth in a specific sample) field. If + both INFO and FORMAT have values for the sub-field, then sum of DP values + across all FORMAT sample columns should be equal to DP value in the INFO + field. + +9. Validation of **complex rearrangement** records: + + 1. If INFO field includes key-value pairs "SVTYPE=BND" or "SVTYPE=FND" and + has values for "MATEID" and/or "PARID", then the value (or multiple + comma-separated values) assigned to MATEID or PARID should exist in the + file as "ID" field for another variant record. + +10. Validation of RNA-Seq **annotation fields**: + + 1. If INFO field includes "SID", "GENE" or "RGN" keys with associated + values, then file MUST contain a declaration for ##geneAnno in the + HEADER. + + 2. Number of comma-separated values in the optional INFO sub-fields "SID", + "GENE" and "RGN" and the FORMAT sub-field "TE" must be the same if more + than one of these sub-fields are defined for a record. + + 3. INFO sub-field "RGN" is in {5_utr, 3_utr, exon, intron, ncds, sp}. + + 4. FORMAT sub-field "TE" is in {SIL, MIS, NSNS, NSTP, FSH, NA} + + 5. If "RGN" and "TE" have the same number of comma-separated values, then + "RGN" must be "exon" for "TE" to have any value other than "NA". For + example, if "RGN=exon,intron,intron" then having "MIS,SIL,NA" for TE + would lead to a violation as the 2nd value for RGN is "intron" but the + corresponding TE value is "SIL" instead of "NA". + +11. Validation of + [vcfProcessLog](#TCGAVariantCallFormat(VCF)1.1Specificat) tags: + +##vcfProcessLog=,InputVCFSource=,InputVCFVer=<1.0>,InputVCFParam=,InputVCFgeneAnno=> + +OR + +##vcfProcessLog=,InputVCFSource=,InputVCFVer=<1.0,2.1,2.0>, + +InputVCFParam=,InputVCFgeneAnno=, + +MergeSoftware=,MergeParam=,MergeVer=<2.1,3.0>,MergeContact=> + +1. Individual values for each tag are enclosed within angle brackets (<>) + instead of double quotes. + + 1. If a field contains multiple values, they are separated by comma. + **Exception**: Separator for multiple values in *InputVCFParam* and + *MergeParam* is a ";" instead of ",". Individual values within these + tags can contain comma-separated parameters (e.g., . + +**Table 9: Test files known to pass/fail validation steps** + +| **Expected result** | **Validation** | **Test file** | +|---------------------|--------------------------------------------------------------|----------------------------------------------------------------| +| Success | file with no failures | /vcfFormat/TCGA-24-0980_IlluminaGA-DNASeq_exome.format2.vcf | +| Failure | "chr" prefix for chromosome names | /BI/20110324/BCM-GBM_solid.TCGA-06-0208.mut.vcf | +| Failure | column header line has no "\#" as beginning | /genome.wustl.edu/20110420/TCGA-06-0145-01A-01W-0224-08.vcf.gz | +| Failure | double quotes missing from SAMPLE metadata lines Description | /BCM/TCGA-06-0145_IlluminaGA-DNASeq_exome.vcf | +| Failure | scores in QUAL column are negative integers | /UCSC/20110420/TCGA-13-0723_W_capture.vcf | + +- missing values for FORMAT fields + +- trailing whitespace at the end of description strings in metadata + +- filter not listed in FILTER metadata line + +- in multi-allelic sites, different alternative alleles in the ALT field are + separated by "/" instead of "," diff --git a/docs/index.md b/docs/index.md index 127c60055..b782d0dcb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,7 @@ The GDC documentation is divided into the following top-level sections: * GDC API: [PDF](API/PDF/API_UG.pdf) - [HTML](API/Users_Guide/Getting_Started.md) * GDC Data Portal: [PDF](Data_Portal/PDF/Data_Portal_UG.pdf) - [HTML](Data_Portal/Users_Guide/Getting_Started.md) -* GDC Data Submission Portal: [PDF](Data_Submission_Portal/PDF/Data_Submission_Portal_UG.pdf) - [HTML](Data_Submission_Portal/Users_Guide/Getting_Started.md) +* GDC Data Submission Portal: [PDF](Data_Submission_Portal/PDF/Data_Submission_Portal_UG.pdf) - [HTML](Data_Submission_Portal/Users_Guide/Checklist.md) * GDC Data Transfer Tool: [PDF](Data_Transfer_Tool/PDF/Data_Transfer_Tool_UG.pdf) - [HTML](Data_Transfer_Tool/Users_Guide/Getting_Started.md) * GDC Dictionary: [HTML](Data_Dictionary/index.md) * GDC Data: [PDF](Data/PDF/Data_UG.pdf) - [HTML](Data/File_Formats/VCF_Format.md) diff --git a/mkdocs.yml b/mkdocs.yml index 7d2f7ab26..27189687e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,6 +2,8 @@ copyright: '© 2015-2016' extra: dictionary_app_root: /apps/dictionary dictionary_viewer_page_id: Viewer + gdcmvs_app_root: /apps/gdcmvs + gdcmvs_viewer_page_id: Search encyclopedia_entries_page_title: EncyclopediaEntries encyclopedia_page_title: Encyclopedia nav_exclude: @@ -28,6 +30,7 @@ pages: - BAM Slicing: API/Users_Guide/BAM_Slicing.md - Submission: API/Users_Guide/Submission.md - Python Examples: API/Users_Guide/Python_Examples.md + - GraphQL Examples: API/Users_Guide/GraphQL_Examples.md - System Information: API/Users_Guide/System_Information.md - Additional Examples: API/Users_Guide/Additional_Examples.md - 'Appendix A: Available Fields': API/Users_Guide/Appendix_A_Available_Fields.md @@ -39,46 +42,34 @@ pages: - Getting Started: Data_Portal/Users_Guide/Getting_Started.md - Projects: Data_Portal/Users_Guide/Projects.md - Exploration: Data_Portal/Users_Guide/Exploration.md + - Analysis: Data_Portal/Users_Guide/Custom_Set_Analysis.md - Repository: Data_Portal/Users_Guide/Repository.md - - Genes and Mutations: Data_Portal/Users_Guide/Genes_and_Mutations.md - - Custom Set Analysis: Data_Portal/Users_Guide/Custom_Set_Analysis.md - - Annotations: Data_Portal/Users_Guide/Annotations.md - Advanced Search: Data_Portal/Users_Guide/Advanced_Search.md - - Authentication: Data_Portal/Users_Guide/Authentication.md - - Downloading Files: Data_Portal/Users_Guide/Cart.md - - File Cart: Data_Portal/Users_Guide/Cart.md - - Image Viewer: Data_Portal/Users_Guide/Image_viewer.md + - Cart and File Download: Data_Portal/Users_Guide/Cart.md - Legacy Archive: Data_Portal/Users_Guide/Legacy_Archive.md - Release Notes: Data_Portal/Release_Notes/Data_Portal_Release_Notes.md - fa-file-text Download PDF /Data_Portal/PDF/Data_Portal_UG.pdf: Data_Portal/PDF/index.md -- Data Submission Portal: - - Getting Started: Data_Submission_Portal/Users_Guide/Getting_Started.md - - Submission Workflow: Data_Submission_Portal/Users_Guide/Submission_Workflow.md - - Authentication: Data_Submission_Portal/Users_Guide/Authentication.md - - Homepage: Data_Submission_Portal/Users_Guide/Homepage.md - - Dashboard: Data_Submission_Portal/Users_Guide/Dashboard.md - - Upload Data: Data_Submission_Portal/Users_Guide/Data_Upload_UG.md - - Submit Data: Data_Submission_Portal/Users_Guide/Submit_Data.md - - Release Data: Data_Submission_Portal/Users_Guide/Release_Data.md - - Transactions: Data_Submission_Portal/Users_Guide/Transactions.md - - Browse Data: Data_Submission_Portal/Users_Guide/Browse_Data.md - - Pre-Release Data Review: Data_Submission_Portal/Users_Guide/Pre_Release_QC.md - - Best Practices: Data_Submission_Portal/Users_Guide/Best_Practices.md +- Data Submission: + - Before Submitting Data to the GDC Portal: Data_Submission_Portal/Users_Guide/Checklist.md + - Data Submission Overview: Data_Submission_Portal/Users_Guide/Data_Submission_Overview.md + - Data Submission Portal: Data_Submission_Portal/Users_Guide/Data_Submission_Process.md + - Data Upload Walkthrough: Data_Submission_Portal/Users_Guide/Data_Submission_Walkthrough.md + - Pre-Release Data Portal: Data_Submission_Portal/Users_Guide/Pre_Release_QC.md + - Submission Best Practices: Data_Submission_Portal/Users_Guide/Best_Practices.md - Release Notes: Data_Submission_Portal/Release_Notes/Data_Submission_Portal_Release_Notes.md - fa-file-text Download PDF /Data_Submission_Portal/PDF/Data_Submission_Portal_UG.pdf: Data_Submission_Portal/PDF/index.md - Data Transfer Tool: - Getting Started: Data_Transfer_Tool/Users_Guide/Getting_Started.md - - Accessing Built-in Help: Data_Transfer_Tool/Users_Guide/Accessing_Built-in_Help.md - Preparing for Data Download and Upload: Data_Transfer_Tool/Users_Guide/Preparing_for_Data_Download_and_Upload.md - - Data Download and Upload - Command Line: Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md - - Data Download - UI: Data_Transfer_Tool/Users_Guide/Data_Download_DTT_UI.md - - Key Terms: Data_Transfer_Tool/Users_Guide/Appendix_A_-_Key_Terms.md + - Data Transfer Tool Command Line Documentation: Data_Transfer_Tool/Users_Guide/Data_Download_and_Upload.md - Release Notes - Command Line: Data_Transfer_Tool/Release_Notes/DTT_Release_Notes.md + - Data Transfer Tool UI Documentation: Data_Transfer_Tool/Users_Guide/Data_Download_DTT_UI.md - Release Notes - UI: Data_Transfer_Tool/Release_Notes/DTT_UI_Release_Notes.md - fa-file-text Download PDF /Data_Transfer_Tool/PDF/Data_Transfer_Tool_UG.pdf: Data_Transfer_Tool/PDF/index.md - Data Dictionary: - About: Data_Dictionary/index.md - Viewer: Data_Dictionary/viewer.md + - Search: Data_Dictionary/gdcmvs.md - Release Notes: Data_Dictionary/Release_Notes/Data_Dictionary_Release_Notes.md - Data: - Introduction: Data/Introduction.md @@ -96,9 +87,10 @@ pages: - Encyclopedia: Encyclopedia/index.md - EncyclopediaEntries: - Affymetrix SNP 6.0: Encyclopedia/pages/Affymetrix_SNP_6.0.md + - Annotations: Encyclopedia/pages/Annotations.md + - Annotations TCGA: Encyclopedia/pages/Annotations_TCGA.md - Aggregated Somatic Mutation: Encyclopedia/pages/Aggregated_Somatic_Mutation.md - Aliquot: Encyclopedia/pages/Aliquot.md - - Annotations: Encyclopedia/pages/Introduction+to+Annotations.md - Biospecimen Data: Encyclopedia/pages/Biospecimen_Data.md - Case: Encyclopedia/pages/Case.md - Cancer Genomics Hub: Encyclopedia/pages/Cancer_Genomics_Hub.md @@ -126,6 +118,7 @@ pages: - Manifest File: Encyclopedia/pages/Manifest_File.md - MD5 Checksum: Encyclopedia/pages/MD5_Checksum.md - Mutation Annotation Format: Encyclopedia/pages/Mutation_Annotation_Format.md + - Mutation Annotation Format Legacy: Encyclopedia/pages/Mutation_Annotation_Format_TCGAv2.md - Redaction: Encyclopedia/pages/Redaction.md - Release Number: Encyclopedia/pages/Release_Number.md - REST API: Encyclopedia/pages/REST_API.md @@ -136,6 +129,7 @@ pages: - TCIA: Encyclopedia/pages/TCIA.md - UUID: Encyclopedia/pages/UUID.md - Variant Call Format: Encyclopedia/pages/Variant_Call_Format.md + - Variant Call Format Legacy: Encyclopedia/pages/Mutation_Annotation_Format_TCGAv2.md - Variant Type: Encyclopedia/pages/Variant_Type.md repo_url: https://github.com/NCI-GDC/gdc-docs site_name: GDC Docs diff --git a/theme/apps/dictionary/scripts/dictionary.js b/theme/apps/dictionary/scripts/dictionary.js index 6070442cf..fa9b86519 100644 --- a/theme/apps/dictionary/scripts/dictionary.js +++ b/theme/apps/dictionary/scripts/dictionary.js @@ -427,7 +427,7 @@ clinical: ['clinical', 'clinical_test'], annotation: ['analysis', 'archive', 'publication', 'slide'] }, - LINK_EXCLUDES: ['file', 'archive', 'clinical_test'], + LINK_EXCLUDES: ['file', 'archive', 'clinical_test', 'submitted_methylation_beta_value'], PROPERTY_EXCLUDES: ['type', 'clinical_data_bundles', 'biospecimen_data_bundles', 'pathology_data_bundles', 'batch_id'], CATEGORY_TEMPLATE_INCLUDES: { }, @@ -823,8 +823,7 @@ { enum: unfilteredDict.properties[key].enum.filter( en => !(unfilteredDict.properties[key].deprecated_enum || []) - .map(dEn => dEn.toLowerCase()) - .includes(en.toLowerCase()) + .includes(en) ) } : {} )}), diff --git a/theme/apps/gdcmvs/dist/bundle.js b/theme/apps/gdcmvs/dist/bundle.js new file mode 100644 index 000000000..935f63e47 --- /dev/null +++ b/theme/apps/gdcmvs/dist/bundle.js @@ -0,0 +1 @@ +!function(e){var t={};function a(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=e,a.c=t,a.d=function(e,t,i){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(a.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(i,n,function(t){return e[t]}.bind(null,n));return i},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=7)}([function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=0,n=$(".navbar .container").height(),c=n,s=!1,r=t.getHeaderOffset=function(){return c},l=(t.getScrollTop=function(){return i},t.onScroll=function(e){var t=e.scrollTop();t-i>0?(c=n-64,i=t):(c=n,i=t)},t.onResize=function(e,t,a){n=$(".navbar .container").height(),l(e,t,a),c=n},t.setHeight=function(e,t,a){e.attr("style","margin-top: "+(n-54)+"px !important"),t.attr("style","min-height: calc(100vh - "+(n+10)+"px)"),a.attr("style","min-height: calc(100vh - "+(n+12)+"px)")}),d=(t.errorNotification=function(e,t){if(!0!==s){s=!0,$("#gdc-loading-icon").fadeOut("fast");var a=$("#alert-error");a.text("Error "+e+": "+t),a.css({top:r()+20+"px"}).addClass("alert__show"),setTimeout(function(){a.removeClass("alert__show"),s=!1},3900)}},t.dialogsOnResize=function(e){var t=$("#gdc_data, #gdc_terms_data, #compare_dialog, #ncit_details, #caDSR_data, #compareGDC_dialog, #source_details, #type_details");0!=t.length&&t.each(function(t,a){var i=$(a).parent();i.offset().top([^]*)","g").exec(t)[1]},t.removeDuplicateSynonyms=function(e){if(void 0!=e.s){var t={},a=[];for(var i in e.s.forEach(function(e){var a=e.trim().toLowerCase();a in t||(t[a]=[]),t[a].push(e)}),t){var n=o(t[i]);a.push(n)}return a}},t.getAllSyn=function(e){var t={};return e.forEach(function(e){void 0!==e.i_c&&(e.i_c.c&&void 0===t[e.i_c.c]?e.i_c.n_syn?(t[e.i_c.c]={n_syn:[],checker_n_c:[e.n_c],all_syn:[]},t[e.i_c.c].n_syn=e.i_c.n_syn,e.i_c.n_syn.forEach(function(a){void 0!==a.s&&(t[e.i_c.c].all_syn=t[e.i_c.c].all_syn.concat(a.s.map(function(e){return e.termName})))})):(t[e.i_c.c]={n_syn:[],checker_n_c:[e.n_c],all_syn:[]},""!==e.n_c&&t[e.i_c.c].n_syn.push({n_c:e.n_c,s:e.s}),""!==e.n_c&&void 0!==e.s&&(t[e.i_c.c].all_syn=t[e.i_c.c].all_syn.concat(e.s.map(function(e){return e.termName})))):void 0!==t[e.i_c.c]&&-1===t[e.i_c.c].checker_n_c.indexOf(e.n_c)&&(""!==e.n_c&&t[e.i_c.c].n_syn.push({n_c:e.n_c,s:e.s}),""!==e.n_c&&void 0!==e.s&&(t[e.i_c.c].all_syn=t[e.i_c.c].all_syn.concat(e.s.map(function(e){return e.termName}))),t[e.i_c.c].checker_n_c.push(e.n_c)))}),t}),o=(t.searchFilter=function(e,t){var a=d(e),i=[];return JSON.parse(JSON.stringify(e)).forEach(function(e){var a=e.n.replace(//g,"").replace(/<\/b>/g,"").toLowerCase().indexOf(t);-1!==a&&(0===a&&i.unshift(e),0!==a&&i.push(e))}),JSON.parse(JSON.stringify(e)).forEach(function(e){void 0!==e.s&&(e.s.map(function(e){return e.termName.trim().toLowerCase()}).map(function(e){return e.indexOf(t)>=0}).indexOf(!0)>=0&&!_.some(i,e)&&i.push(e))}),JSON.parse(JSON.stringify(e)).forEach(function(e){if(void 0!==e.all_syn)e.all_syn.map(function(e){return e.trim().toLowerCase()}).map(function(e){return e.indexOf(t)>=0}).indexOf(!0)>=0&&!_.some(i,e)&&i.push(e);else if(void 0!==e.i_c&&a[e.i_c.c]&&a[e.i_c.c].all_syn){a[e.i_c.c].all_syn.map(function(e){return e.trim().toLowerCase()}).map(function(e){return e.indexOf(t)>=0}).indexOf(!0)>=0&&!_.some(i,e)&&i.push(e)}}),i.forEach(function(e){e.n=e.n.replace(//g,"").replace(/<\/b>/g,"").replace(new RegExp(t,"ig"),"$&"),void 0!==e.s&&(e.s=e.s.map(function(e){return{termName:e.termName.replace(//g,"").replace(/<\/b>/g,"").replace(new RegExp(t,"ig"),"$&"),termGroup:e.termGroup,termSource:e.termSource}})),void 0!==e.i_c&&void 0!==e.i_c.n_syn&&e.i_c.n_syn.forEach(function(e){void 0!==e.s&&(e.s=e.s.map(function(e){return{termName:e.termName.replace(//g,"").replace(/<\/b>/g,"").replace(new RegExp(t,"ig"),"$&"),termGroup:e.termGroup,termSource:e.termSource}}))}),void 0!==e.n_syn&&e.n_syn.forEach(function(e){void 0!==e.s&&(e.s=e.s.map(function(e){return{termName:e.termName.replace(//g,"").replace(/<\/b>/g,"").replace(new RegExp(t,"ig"),"$&"),termGroup:e.termGroup,termSource:e.termSource}}))})}),i},t.searchFilterCR=function(e,t){var a=a=d(e),i=[];return JSON.parse(JSON.stringify(e)).forEach(function(e){var a=e.n.replace(//g,"").replace(/<\/b>/g,"").toLowerCase().indexOf(t);-1!==a&&(0===a&&i.unshift(e),0!==a&&i.push(e))}),JSON.parse(JSON.stringify(e)).forEach(function(e){void 0!==e.s&&(e.s.map(function(e){return e.termName.trim().toLowerCase()}).map(function(e){return e.indexOf(t)>=0}).indexOf(!0)>=0&&!_.some(i,e)&&i.push(e))}),JSON.parse(JSON.stringify(e)).forEach(function(e){if(void 0!==e.all_syn)e.all_syn.map(function(e){return e.trim().toLowerCase()}).map(function(e){return e.indexOf(t)>=0}).indexOf(!0)>=0&&!_.some(i,e)&&i.push(e);else if(void 0!==e.i_c&&a[e.i_c.c]&&a[e.i_c.c].all_syn){a[e.i_c.c].all_syn.map(function(e){return e.trim().toLowerCase()}).map(function(e){return e.indexOf(t)>=0}).indexOf(!0)>=0&&!_.some(i,e)&&i.push(e)}}),i},t.findWord=function(e){var t="";return 1==e.length?e[0]:(e.forEach(function(e){if(""===t){var a=e.indexOf(" "),i=e.indexOf(",");-1==a&&-1==i?/^[A-Z][a-z0-9]{0,}$/.test(e)&&(t=e):-1!==a&&-1==i?/^[A-Z][a-z0-9]{0,}$/.test(e.substr(0,a))&&(t=e):-1==a&&-1!==i?/^[A-Z][a-z0-9]{0,}$/.test(e.substr(0,i))&&(t=e):i>a?/^[A-Z][a-z0-9]{0,}$/.test(e.substr(0,a))&&(t=e):/^[A-Z][a-z0-9]{0,}$/.test(e.substr(0,i))&&(t=e)}}),""==t&&(t=e[0]),t)})},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.apiEVSRest=t.apiGetGDCandCDEDataById=t.apiGetCDEDataById=t.apiGetGDCDataById=t.apiSearchAll=t.apiGDCDictionaryVersion=t.apiSuggestMisSpelled=t.apiSuggest=void 0;var i=a(0),n="https://gdc-mvs.nci.nih.gov/gdc/search";t.apiSuggest=function(e,t){$.getJSON(n+"/suggest?keyword="+e,function(e){t(e)})},t.apiSuggestMisSpelled=function(e,t){$.getJSON(n+"/suggestMisSpelled?keyword="+e,function(e){t(e)})},t.apiGDCDictionaryVersion=function(e){$.getJSON(n+"/gdcDictionaryVersion",function(t){e(t)})},t.apiSearchAll=function(e,t,a){$.getJSON(n+"/all/p",{keyword:e,option:JSON.stringify(t)},function(i){a(e,t,i)}).fail(function(e,t,a){(0,i.errorNotification)(e.status,a)})},t.apiGetGDCDataById=function(e,t){$.getJSON(n+"/p/local/vs",{id:e},function(a){t(e,a)}).fail(function(e,t,a){(0,i.errorNotification)(e.status,a)})},t.apiGetCDEDataById=function(e,t){$.getJSON(n+"/p/cde/vs",{id:e},function(a){t(e,a)}).fail(function(e,t,a){(0,i.errorNotification)(e.status,a)})},t.apiGetGDCandCDEDataById=function(e,t){$.getJSON(n+"/p/both/vs",{local:e.local,cde:e.cde},function(a){t(e,a)}).fail(function(e,t,a){(0,i.errorNotification)(e.status,a)})},t.apiEVSRest=function(e,t){$.getJSON(n+"/ncit/detail?code="+e,function(a){t(e,a)}).fail(function(e,t,a){(0,i.errorNotification)(e.status,a)})}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePopUps=t.compare=t.showCompareResult=t.dialogEvents=void 0;var i=o(a(16)),n=o(a(18)),c=o(a(20)),s=o(a(22)),r=o(a(23)),l=o(a(25)),d=a(27);function o(e){return e&&e.__esModule?e:{default:e}}t.dialogEvents=function(e,t){e.on("click",".getCDEData",function(e){e.preventDefault();var t=e.currentTarget.dataset;(0,i.default)(t.cdeid,t.targets)}),e.on("click",".getGDCData",function(e){e.preventDefault();var t=e.currentTarget.dataset,a=t.ref.replace(/@/g,"/");(0,n.default)(a,t.tgt,t.keyword)}),e.on("click",".toCompare",function(e){e.preventDefault();var t=e.currentTarget.dataset.ref.replace(/@/g,"/");(0,c.default)(t)}),e.on("click",".compareGDC",function(e){e.preventDefault();var t=e.currentTarget.dataset,a=t.ref.replace(/@/g,"/");(0,s.default)(a,t.cdeid)}),e.on("click",".getGDCTerms",function(e){e.preventDefault();var t=e.currentTarget.dataset,a=t.ref.replace(/@/g,"/");(0,r.default)(a,t.targets)}),t.on("click",".getNCITDetails",function(e){e.preventDefault();var t=e.currentTarget.dataset;(0,l.default)(t.uid)}),t.on("click",".getSourceDetails",function(e){e.preventDefault(),(0,d.renderSource)()}),t.on("click",".getTypeDetails",function(e){e.preventDefault(),(0,d.renderType)()}),t.on("click",".compare-form__toggle",function(e){e.preventDefault();var t=$(e.currentTarget),a=t.closest(".compare-form__values, .table__gdc-match").find(".compare-form__synm");t.closest(".compare-form__values, .table__gdc-match").find(".compare-form__matched").slideToggle(350),a.slideToggle(350,function(){a.is(":visible")?(t.attr("title","collapse"),t.attr("aria-label","collapse"),t.attr("aria-expanded","true"),t.html('')):(t.attr("title","expand"),t.attr("aria-label","expand"),t.attr("aria-expanded","false"),t.html(''))})})};var p=function(e,t,a){var i=[],n=[];(t=JSON.parse(JSON.stringify(t))).forEach(function(e){i.push(e.n.trim().toLowerCase()),e.s&&e.s.length>0&&(e.s=e.s.map(function(e){return{termName:e.termName.toLowerCase(),termSource:e.termSource,termGroup:e.termGroup}})),e.all_syn&&e.all_syn.length>0&&(e.all_syn=e.all_syn.map(function(e){return e.toLowerCase()}))});var c=[];return e.forEach(function(e){var s=e.trim().replace(/[\ ]+/g," ");e=e.trim().toLowerCase().replace(/[\ ]+/g," ");new RegExp(e,"ig");var r=e;if(""!==r){var l=[];if(!1===a.partial){var d=[],o=i.indexOf(r);if(o>=0&&(t[o].match=s,l.push(t[o]),d.push(t[o].n),n.push(o)),!0===a.synonyms){t.forEach(function(e,a){e.all_syn&&-1!==e.all_syn.indexOf(r)&&-1===d.indexOf(t[a].n)&&(l.push(t[a]),d.push(t[a].n),n.push(a)),e.s&&e.s.forEach(function(e){e.termName.trim().toLowerCase()===r&&-1===d.indexOf(t[a].n)&&(l.push(t[a]),d.push(t[a].n),n.push(a))})});var _=v(l,r,a);l.forEach(function(e){if(e.match=s,void 0!==e.n_syn&&void 0===e.s)e.n_syn.forEach(function(t){if(void 0===e.matched_s&&void 0!==_[t.n_c])e.matched_s=[],e.chk_n_c=[],e.chk_n_c.push(t.n_c),e.matched_s.push({n_c:t.n_c,s:_[t.n_c]});else if(void 0!==e.matched_s&&-1===e.chk_n_c.indexOf(t.n_c)&&void 0!==_[t.n_c]){var a={};a.n_c=t.n_c,a.s=_[t.n_c],e.matched_s.push(a),e.chk_n_c.push(t.n_c)}});else if(void 0!==e.s&&void 0===e.n_syn&&void 0!==_[e.n_c])if(void 0===e.matched_s)e.matched_s=[],e.chk_n_c=[],e.chk_n_c.push(e.n_c),e.matched_s.push({n_c:e.n_c,s:_[e.n_c]});else if(void 0!==e.matched_s&&-1===e.chk_n_c.indexOf(e.n_c)&&void 0!==_[e.n_c]){var t={};t.n_c=e.n_c,t.s=_[e.n_c],e.matched_s.push(t),e.chk_n_c.push(e.n_c)}})}}else{var p=[];i.forEach(function(e,i){if(e.indexOf(r)>=0&&-1===p.indexOf(t[i].n)&&(t[i].match=s,l.push(t[i]),p.push(t[i].n),n.push(i)),!0===a.synonyms){t.forEach(function(e,a){e.all_syn&&e.all_syn.forEach(function(e){-1!==e.indexOf(r)&&-1===p.indexOf(t[a].n)&&(l.push(t[a]),p.push(t[a].n),n.push(a))}),e.s&&e.s.forEach(function(e){-1!==e.termName.indexOf(r)&&-1===p.indexOf(t[a].n)&&(l.push(t[a]),p.push(t[a].n),n.push(a))})});var c=v(l,r,a);l.forEach(function(e){if(e.match=s,void 0!==e.n_syn&&void 0===e.s)e.n_syn.forEach(function(t){if(void 0===e.matched_s&&void 0!==c[t.n_c])e.matched_s=[],e.chk_n_c=[],e.chk_n_c.push(t.n_c),e.matched_s.push({n_c:t.n_c,s:c[t.n_c]});else if(void 0!==e.matched_s&&-1===e.chk_n_c.indexOf(t.n_c)&&void 0!==c[t.n_c]){var a={};a.n_c=t.n_c,a.s=c[t.n_c],e.matched_s.push(a),e.chk_n_c.push(t.n_c)}});else if(void 0!==e.s&&void 0===e.n_syn&&void 0!==c[e.n_c])if(void 0===e.matched_s)e.matched_s=[],e.chk_n_c=[],e.chk_n_c.push(e.n_c),e.matched_s.push({n_c:e.n_c,s:c[e.n_c]});else if(void 0!==e.matched_s&&-1===e.chk_n_c.indexOf(e.n_c)&&void 0!==c[e.n_c]){var t={};t.n_c=e.n_c,t.s=c[e.n_c],e.matched_s.push(t),e.chk_n_c.push(e.n_c)}})}})}l.length>0&&l.sort(function(e,t){return e.n.toLowerCase()>t.n.toLowerCase()?1:t.n.toLowerCase()>e.n.toLowerCase()?-1:0}),0===l.length&&l.push({n:"",n_c:"",match:s,s:[]}),c=c.concat(JSON.parse(JSON.stringify(l)))}}),c=a.unmatched?c.concat(t.filter(function(e,t){return!n.includes(t)})):c},u=t.showCompareResult=function(e,t,a){return e.length>0?'\n
\n
\n
\n\n '+e.map(function(a,i){var n=new RegExp(a.match,"ig");return("\n "+(void 0!==a.match&&0!==i&&e[i-1].match!==e[i].match?'
':"")+"\n "+(void 0===a.match&&0!==i?'
':"")+'\n
\n
\n '+(void 0!==a.match&&0!==i&&e[i-1].match!==e[i].match?a.match:"")+"\n "+(void 0!==a.match&&0===i?a.match:"")+"\n "+(void 0===a.match?'--':"")+"\n
\n "+(void 0!==a.n_syn?'\n
\n
\n
'+(""!==a.n&&!0===t.partial?a.n.replace(n,"$&"):""!==a.n&&a.n.trim().toLowerCase()===(void 0!==a.match?a.match.trim().toLowerCase():"")?""+a.n+"":""===a.n?'--':""+a.n)+'\n
\n
\n '+(0!==a.n_syn.length?'\n \n ':"")+"\n
\n
\n\n "+(void 0!==a.matched_s&&0!==a.matched_s.length?'\n
\n '+a.matched_s.map(function(e){return('\n
\n
'+e.n_c+' (NCIt)
\n
\n '+(void 0!==e.s?'\n \n \n \n \n \n \n \n \n\n '+e.s.map(function(e){return('\n \n \n \n \n \n ").trim()}).join("")+"\n
TermSourceType
'+e.termName.replace(n,"$&")+''+(void 0!==e.termSource&&null!==e.termSource?e.termSource:"")+''+(void 0!==e.termGroup&&null!==e.termGroup?e.termGroup:"")+"
\n ":"")+"\n
\n
\n ").trim()}).join("")+"\n
\n ":"")+'\n\n \n
\n ":"")+"\n\n "+(void 0!==a.s?'\n
\n
\n
'+(""!==a.n&&!0===t.partial?a.n.replace(n,"$&"):""!==a.n&&a.n.trim().toLowerCase()===(void 0!==a.match?a.match.trim().toLowerCase():"")?""+a.n+"":""===a.n?'--':""+a.n)+'\n
\n
\n '+(0!==a.s.length?'\n \n ':"")+"\n
\n
\n\n "+(void 0!==a.matched_s&&0!==a.matched_s.length?'\n
\n '+a.matched_s.map(function(e){return('\n
\n
'+e.n_c+' (NCIt)
\n
\n '+(void 0!==e.s?'\n \n \n \n \n \n \n \n \n\n '+e.s.map(function(e){return('\n \n \n \n \n \n ").trim()}).join("")+"\n
TermSourceType
'+e.termName.replace(n,"$&")+''+(void 0!==e.termSource&&null!==e.termSource?e.termSource:"")+''+(void 0!==e.termGroup&&null!==e.termGroup?e.termGroup:"")+"
\n ":"")+"\n
\n
\n ").trim()}).join("")+"\n
\n ":"")+"\n\n "+(0!==a.s.length?'\n \n ":"")+"\n
\n ":"")+"\n "+(void 0===a.s&&void 0===a.n_syn?'\n
'+a.n+"
\n ":"")+"\n
\n "+(e.length-1===i?'
':"")+"\n ").trim()}).join("")+"\n
\n
\n
\n ":'\n
\n
\n Sorry, no results found for keyword: '+a+"\n
\n
\n "},v=function(e,t,a){if(!1===a.partial){var i={};return e.forEach(function(e){e.matched_s&&(e.matched_s=void 0),void 0!==e.n_syn&&void 0===e.s?e.n_syn.forEach(function(e){void 0!==e.s&&e.s.forEach(function(a){a.termName.trim().toLowerCase()===t&&(void 0===i[e.n_c]?(i[e.n_c]=[],i[e.n_c].push(a)):void 0===i[e.n_c]||_.some(i[e.n_c],a)||i[e.n_c].push(a))})}):void 0!==e.s&&void 0===e.n_syn&&e.s.forEach(function(a){a.termName.trim().toLowerCase()===t&&(void 0===i[e.n_c]?(i[e.n_c]=[],i[e.n_c].push(a)):void 0===i[e.n_c]||_.some(i[e.n_c],a)||i[e.n_c].push(a))})}),i}var n={};return e.forEach(function(e){e.matched_s&&(e.matched_s=void 0),void 0!==e.n_syn&&void 0===e.s?e.n_syn.forEach(function(e){void 0!==e.s&&(e.s=e.s.map(function(e){return{termName:e.termName.toLowerCase(),termGroup:e.termGroup,termSource:e.termSource}}),e.s.forEach(function(a){a.termName.indexOf(t)>=0&&(void 0===n[e.n_c]?(n[e.n_c]=[],n[e.n_c].push(a)):void 0===n[e.n_c]||_.some(n[e.n_c],a)||n[e.n_c].push(a))}))}):void 0!==e.s&&void 0===e.n_syn&&(e.s=e.s.map(function(e){return{termName:e.termName.toLowerCase(),termGroup:e.termGroup,termSource:e.termSource}}),e.s.forEach(function(a){a.termName.indexOf(t)>=0&&(void 0===n[e.n_c]?(n[e.n_c]=[],n[e.n_c].push(a)):void 0===n[e.n_c]||_.some(n[e.n_c],a)||n[e.n_c].push(a))}))}),n};t.compare=function(e){""!==$("#cp_input").val().trim()?(e.length>500&&$("#gdc-loading-icon").show(),setTimeout(function(){$("#cp_massage").html(""),$("#compare_form").css("display","none"),$("#compare_result").css("display","block"),$("#compare-input").hide(),$("#compare-matched").show(),$("#compare_download").show(),$("#compare").hide(),$("#cancelCompare").hide(),$("#cp_bottom-matched").show();var t=$("#cp_input").val().split(/\n/),a={};a.partial=$("#compare_filter").prop("checked"),a.unmatched=$("#compare_unmatched").prop("checked"),a.synonyms=$("#compare_synonyms").prop("checked");var i=p(t,e,a);$("#compare-matched").data("compareResult",i),$("#compare-matched").data("options",a),$("#pagination-matched").pagination({dataSource:i,pageSize:50,callback:function(e,t){var i=u(e,a);$("#compare_result").html(i)}}),$("#compare_filter").bind("click",function(){if($("#compare_result").is(":visible")){var a={};a.partial=$("#compare_filter").prop("checked"),a.unmatched=$("#compare_unmatched").prop("checked"),a.synonyms=$("#compare_synonyms").prop("checked"),e.length>500&&$("#gdc-loading-icon").show(),setTimeout(function(){var i=p(t,e,a);$("#compare-matched").data("compareResult",i),$("#compare-matched").data("options",a),$("#pagination-matched").pagination({dataSource:i,pageSize:50,callback:function(e,t){var i=u(e,a);$("#compare_result").html(i)}}),e.length>500&&$("#gdc-loading-icon").hide()},100)}}),$("#compare_unmatched").bind("click",function(){if($("#compare_result").is(":visible")){var a={};a.partial=$("#compare_filter").prop("checked"),a.unmatched=$("#compare_unmatched").prop("checked"),a.synonyms=$("#compare_synonyms").prop("checked"),e.length>500&&$("#gdc-loading-icon").show(),setTimeout(function(){var i=p(t,e,a);$("#compare-matched").data("compareResult",i),$("#compare-matched").data("options",a),$("#pagination-matched").pagination({dataSource:i,pageSize:50,callback:function(e,t){var i=u(e,a);$("#compare_result").html(i)}}),e.length>500&&$("#gdc-loading-icon").hide()},100)}}),$("#compare_synonyms").bind("click",function(){if($("#compare_result").is(":visible")){var a={};a.partial=$("#compare_filter").prop("checked"),a.unmatched=$("#compare_unmatched").prop("checked"),a.synonyms=$("#compare_synonyms").prop("checked"),e.length>500&&$("#gdc-loading-icon").show(),setTimeout(function(){var i=p(t,e,a);$("#compare-matched").data("compareResult",i),$("#compare-matched").data("options",a),$("#pagination-matched").pagination({dataSource:i,pageSize:50,callback:function(e,t){var i=u(e,a);$("#compare_result").html(i)}}),e.length>500&&$("#gdc-loading-icon").hide()},100)}}),$("#downloadCompareCVS").bind("click",function(){e.length>500&&$("#gdc-loading-icon").show(),setTimeout(function(){!function(e){var t="User Defined Values, Matched GDC Values, ICDO3 code, NCIt code, ICDO3 Strings/Synonyms,\n";e.forEach(function(a,i){var n=!0,c=a.match;void 0!==a.match&&0!==i&&e[i-1].match===e[i].match&&(c=""),void 0===a.match&&(c="--"),t+='"'+c+'","'+a.n+'",',t+=void 0!==a.i_c?'"'+a.i_c.c+'",':'"",',a.ic_enum&&a.ic_enum.forEach(function(e,a){t+=0===a?'"","'+e.n+'",':'"'+e.n+'",'}),a.n_syn&&0!==a.n_syn.length&&a.n_syn.forEach(function(e,a){0!==e.s.length&&(t+=0===a?'\n"","","","'+e.n_c+'",':'"","","","'+e.n_c+'",',e.s.forEach(function(e){t+='"'+e.termName+'",'}),t+="\n",n=!1)}),a.s&&0!==a.s.length&&(t+='"'+a.n_c+'",',a.s.forEach(function(e){t+='"'+e.termName+'",'}),t+="\n",n=!1),1==n&&(t+="\n")});var a=new Blob([t],{type:"data:text/csv;charset=utf-8,"}),i=URL.createObjectURL(a),n=document.createElement("a");n.href=i,n.target="_blank",n.download="Compare_Values_GDC.csv",n.style.visibility="hidden",document.body.appendChild(n),n.click(),document.body.removeChild(n)}($("#compare-matched").data("compareResult")),e.length>500&&$("#gdc-loading-icon").hide()},100)}),$("#back2Compare").bind("click",function(){$("#compare_result").html(""),$("#compare-matched").val(""),$("#compare_result").css("display","none"),$("#compare_form").css("display","block"),$("#compare-input").show(),$("#compare-matched").hide(),$("#compare_download").hide(),$("#compare").show(),$("#cancelCompare").show(),$("#cp_bottom-matched").hide()}),e.length>500&&$("#gdc-loading-icon").hide()},100)):$("#cp_massage").html("Please type in user defined values.")},t.removePopUps=function(){$("#gdc_data").length&&$("#gdc_data").remove(),$("#caDSR_data").length&&$("#caDSR_data").remove(),$("#gdc_terms_data").length&&$("#gdc_terms_data").remove(),$("#ncit_details").length&&$("#ncit_details").remove(),$("#compare_dialog").length&&$("#compare_dialog").remove(),$("#compareGDC_dialog").length&&$("#compareGDC_dialog").remove()}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,a,l){var d="";if(0!==l.length){var o=JSON.parse(JSON.stringify(l)),_=JSON.parse(JSON.stringify(l)),p=JSON.parse(JSON.stringify(l)),u=(0,n.dtRender)(o,t,a);u.active=!1;var v=(0,c.default)(_,t,a);v.active=!1;var f=(0,s.vsRender)(p,t,a);f.active=!1,0===f.len&&0===v.len&&(u.len=0),0===u.len&&0===v.len&&0===f.len?d='
\n
\n

Sorry, no results found for keyword: '+t+'

\n
\n
\n

Suggestion:

\n
    \n
  • Make sure all words are spelled correctly.
  • \n
  • Try different keywords.
  • \n
  • Try more general keywords.
  • \n
\n
\n
\n
\n
':(0==a.activeTab?f.active=!0:1==a.activeTab?v.active=!0:u.active=!0,d=(0,r.tabsRender)(u,v,f,t))}else 1==a.error?d='
\n
\n

Please, enter a valid keyword!

\n
\n
':(0,i.apiSuggestMisSpelled)(t,function(a){d='
\n
\n

Sorry, no results found for keyword: '+t+'

\n
\n '+(0!==a.length?'

\n Did you mean:
\n '+a.map(function(e,t){return("\n "+(0!==t?",":"")+'\n '+e.id+"\n ").trim()}).join("")+"

":"")+'\n

\n

Suggestion:

\n
    \n
  • Make sure all words are spelled correctly.
  • \n
  • Try different keywords.
  • \n
  • Try more general keywords.
  • \n
\n
\n
\n
\n
',e.html(d),$(".indicator__suggest-term").click(function(e){e.preventDefault(),$("#keywords").val(this.innerText),$("#search").trigger("click")})});e.html(d)};var i=a(1),n=a(4),c=function(e){return e&&e.__esModule?e:{default:e}}(a(11)),s=a(5),r=a(6);a(0)},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dtEvents=t.dtRender=void 0;var i=function(e){return e&&e.__esModule?e:{default:e}}(a(10));t.dtRender=function(e,t,a){var n="",c="",s=0,r=[],l={},d={},o={len:0},p={};t=t.trim().replace(/[\ ,:_-]+/g," ");var u=new RegExp(t,"ig"),v=[];e.forEach(function(e){var i=e.highlight;if(!_.isEmpty(i)){var p=e._source,f="enum.s.termName"in i||"enum.s.termName.have"in i?i["enum.s.termName"]||i["enum.s.termName.have"]:[],h="enum.n"in i||"enum.n.have"in i?i["enum.n"]||i["enum.n.have"]:[],m="enum.n_c"in i?i["enum.n_c"]:[],b=[];h.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");p.enum.forEach(function(a){a.n===t&&!0===a.gdc_d&&b.push(e)})});var g="name"in i||"name.have"in i?i.name||i["name.have"]:[],y="desc"in i?i.desc:[],x="enum.i_c.c"in i||"enum.i_c.have"in i?i["enum.i_c.c"]||i["enum.i_c.have"]:[],w=[];0===f.length&&0===b.length&&(w="enum"in e._source?e._source.enum:[]);var C="cde.id"in i?i["cde.id"]:[],$="cde_pv.n"in i||"cde_pv.n.have"in i?i["cde_pv.n"]||i["cde_pv.n.have"]:[],S="cde_pv.ss.s"in i||"cde_pv.ss.s.have"in i?i["cde_pv.ss.s"]||i["cde_pv.ss.s.have"]:[],k="cde_pv.ss.c"in i?i["cde_pv.ss.c"]:[],D=[],T=[],O=[],N=[],E=[],G=[],I=[],H=[],R=[],L=[];w.length>0&&w.forEach(function(e){!0===e.gdc_d&&O.push(e.n)}),y.forEach(function(e){-1===v.indexOf(p.name)&&v.push(p.name)}),g.forEach(function(e){v.push(e.replace(//g,"").replace(/<\/b>/g,""))}),f.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");D.push(t)}),b.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");N.push(t)}),m.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");E.push(t)}),x.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");-1===N.indexOf(t)&&T.push(t)}),C.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");G.push(t)}),$.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");I.push(t)}),S.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");H.push(t)}),k.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");R.push(t)}),void 0!==p.cde_pv&&p.cde_pv.length>0&&p.cde_pv.forEach(function(e){var t=!1;p.cde&&-1!==G.indexOf(p.cde.id)&&a.syn&&(t=!0),void 0!==e.ss&&e.ss.length>0&&e.ss.forEach(function(e){e.s.forEach(function(e){-1!==H.indexOf(e)&&(t=!0)}),-1!==R.indexOf(e.c)&&(t=!0)}),(t=t||I.indexOf(e.n)>=0)&&-1===L.indexOf(e.n.toLowerCase())&&L.push(e.n.toLowerCase())}),p.category!=n&&(s++,n=p.category,(l={}).id=n,l.title=n,l.desc="",l.data_tt_id=s+"_"+l.id,l.data_tt_parent_id="--",l.type="category",l.node="branch",l.exist=!0,l.len=0,r.push(l)),p.node!=c&&(s++,c=p.node,(d={}).l_id=p.node,d.id=p.node,d.title=p.n_title,d.desc=p.n_desc,d.data_tt_id=s+"_"+d.id,d.data_tt_parent_id=l.data_tt_id,d.type="folder",d.node="branch",d.exist=!0,d.len=0,r.push(d));var A={},P=0,M=0,j=0;if(s++,A.id=s+"_"+p.name,A.l_id=p.name,A.parent_l_id=d.l_id,A.title="name"in i||"name.have"in i?i.name||i["name.have"]:[p.name],A.desc="desc"in i?i.desc:[p.desc],void 0!==A.title[0]&&-1===t.indexOf(" ")&&(A.title[0]=A.title[0].replace(//g,"").replace(/<\/b>/g,"").replace(u,"$&")),void 0!==A.desc[0]&&-1===t.indexOf(" ")&&"desc"in i&&(A.desc[0]=A.desc[0].replace(//g,"").replace(/<\/b>/g,"").replace(u,"$&")),A.data_tt_id=A.id,A.data_tt_parent_id=d.data_tt_id,A.type="property",A.exist=!0,("name"in i||"name.have"in i||"desc"in i)&&(P=1),void 0!=p.enum)if(0==b.length&&0==x.length&&0==L.length&&0==D.length&&0==E&&0==G.length)A.node="branch",A.title&&-1!==v.indexOf(A.title[0].replace(//g,"").replace(/<\/b>/g,""))&&r.push(A),O.sort(),p.enum.forEach(function(e){if(!1!==e.gdc_d){var t={};t.title=e.n,t.desc="",t.data_tt_id=s+"_"+e.n,t.data_tt_parent_id=A.id,t.type="value",t.node="leaf",t.exist=!1,r.push(t)}});else{A.node="branch",r.push(A);var B=[];("enum.n"in i||"enum.n.have"in i)&&(B=i["enum.n"]||i["enum.n.have"]);var V={};B.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?V[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(u,"$&"):V[a]=e});var J=[],W=[];if(p.enum.forEach(function(e){if(void 0===e.gdc_d||e.gdc_d){s++;var t={};t.id=s+"_"+e.n,t.exist=!1,p.cde&&-1!==G.indexOf(p.cde.id)&&(t.exist=!0),-1!==L.indexOf(e.n.toLowerCase())?(j--,t.exist=!0):(-1!==N.indexOf(e.n)?t.exist=!0:-1!==E.indexOf(e.n_c)&&(t.exist=!0),void 0!==e.i_c&&!0!==t.exist&&e.i_c.have.forEach(function(e){-1!==T.indexOf(e)&&(t.exist=!0)}),void 0!==e.s&&!0!==t.exist&&e.s.forEach(function(e){-1!==D.indexOf(e.termName)&&(t.exist=!0)})),t.title=e.n in V?V[e.n]:e.n,t.desc="",t.data_tt_id=t.id,t.data_tt_parent_id=A.id,t.type="value",t.node="leaf",-1==W.indexOf(t.title)&&(t.exist&&(M++,W.push(t.title)),J.push(t))}}),0==M){if(A.node="",J.forEach(function(e){r.push(e)}),A.title&&-1===v.indexOf(A.title[0].replace(//g,"").replace(/<\/b>/g,""))){if(0===b.length&&0===L.length)return;var z={};z.id=s+"_l",z.l_id=p.cde.id,z.l_type="cde",z.url=p.cde.url,z.desc="",z.data_tt_id=z.id,z.data_tt_parent_id=A.id,z.type="link",z.node="leaf",r.push(z)}}else J.forEach(function(e){r.push(e)});j+=L.length}else if(L.length>0){A.node="branch",r.push(A),s++;var U={};U.id=s+"_l",U.l_id=p.cde.id,U.l_type="cde",U.url=p.cde.url,U.desc="",U.data_tt_id=U.id,U.data_tt_parent_id=A.id,U.type="link",U.node="leaf",r.push(U),j=L.length}else A.node="",r.push(A);A.len=M+j,!1===a.desc&&p.cde&&-1!==G.indexOf(p.cde.id)&&P++,l.len+=A.len+P,d.len+=A.len+P,o.len+=A.len+P}});var f=[];r.forEach(function(e){var t={nodes:[]};"category"==e.type&&(t.title=e.title,t.type="category",t.len=e.len,t.id=e.id,r.forEach(function(a){if("folder"==a.type&&a.data_tt_parent_id===e.data_tt_id){var i={};i.title=a.title,i.desc=a.desc,i.len=a.len,i.type=a.type,i.l_id=a.l_id,i.properties=[],r.forEach(function(e){if("property"===e.type&&e.data_tt_parent_id===a.data_tt_id){var t={};t.title=e.title,t.desc=e.desc,t.len=e.len,t.type=e.type,t.parent_l_id=e.parent_l_id,t.l_id=e.l_id,t.hl_values=[],t.all_values=[],t.link_values=[],r.forEach(function(a){if("value"===a.type&&a.data_tt_parent_id===e.data_tt_id){var i={};i.title=a.title,i.type=a.type,t.all_values.push(i),a.exist&&t.hl_values.push(i)}if("link"===a.type&&a.data_tt_parent_id===e.data_tt_id){var n={};n.url=a.url,n.type=a.type,n.l_id=a.l_id,n.l_type=a.l_type,t.link_values.push(n)}}),i.properties.push(t)}}),t.nodes.push(i)}}),f.push(t))});var h=$("#root").offset().top,m=window.innerHeight-h-313;p.height=m<430?430:m;var b=$.templates(i.default).render({options:p,newtrs:f});return o.html=b,o},t.dtEvents=function(e){e.on("click",".treeview__toggle",function(e){!function(e){e.preventDefault();var t=$(e.currentTarget),a=t.closest(".treeview__parent");a.find(">ul.treeview__ul").toggle(),a.hasClass("treeview__parent--open")?(a.removeClass("treeview__parent--open"),t.attr("aria-label","expand"),t.html('')):(a.addClass("treeview__parent--open"),t.attr("aria-label","collapse"),t.html(''))}(e)}),e.on("click","#trs-checkbox",function(e){!function(e){var t=e.currentTarget,a=$(".treeview__ul--hl"),i=$(".treeview__ul--all");t.checked?(i.addClass("treeview__ul").each(function(e,t){var a=$(t),i=a.prev(".treeview__ul--hl");i.is(":visible")&&(a.show(),i.hide())}),a.removeClass("treeview__ul")):(a.addClass("treeview__ul").each(function(e,t){var a=$(t),i=a.next(".treeview__ul--all");i.is(":visible")&&(a.show(),i.hide())}),i.removeClass("treeview__ul"))}(e)}),e.on("click","#trs_toggle",function(e){!function(e){var t=$(e.currentTarget),a=$(".treeview .treeview__ul"),i=$(".treeview .treeview__parent"),n=$(".treeview .treeview__toggle");t.hasClass("active")?(a.hide(),i.removeClass("treeview__parent--open"),n.attr("aria-label","expand"),n.html(''),t.html(' Expand All')):(a.show(),i.addClass("treeview__parent--open"),n.attr("aria-label","collapse"),n.html(''),t.html(' Collapse All'))}(e)})}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.vsEvents=t.vsRender=void 0;var i=function(e){return e&&e.__esModule?e:{default:e}}(a(13)),n=a(0);t.vsRender=function(e,t,a){var c=[],s=0,r={};t=t.trim().replace(/[\ ,:_-]+/g," ");var l=new RegExp(t,"ig"),d=!1;e.forEach(function(e){var i=e.highlight;if(void 0!=i["enum.n"]||void 0!=i["enum.n.have"]||void 0!=i["enum.s.termName"]||void 0!=i["enum.s.termName.have"]||void 0!=i["cde_pv.n"]||void 0!=i["cde_pv.n.have"]||void 0!=i["cde_pv.ss.s"]||void 0!=i["cde_pv.ss.s.have"]||void 0!=i["enum.i_c.c"]||void 0!=i["enum.i_c.have"]||void 0!=i["enum.n_c"]||void 0!=i["cde_pv.ss.c"]||void 0!=i["cde.id"]){var r=e._source,o={},p={},u={},v={},f={},h={},m={},b=[],g=[],y={};y.category=r.category,y.node=r.node,y.name=r.name,y.local=void 0!=r.enum,y.syn=!1,void 0!==r.enum&&r.enum.forEach(function(e){y.syn||void 0!==e.n_c&&(y.syn=!0)}),y.ref=r.name+"@"+r.node+"@"+r.category,y.cdeId=void 0!==r.cde?r.cde.id:"",y.cdeUrl=void 0!==r.cde?r.cde.url:"",y.cdeLen=void 0!=r.cde_pv&&0!=r.cde_pv.length,y.vs=[],y.tgts_enum_n="",y.tgts_cde_n="";var x="enum.n"in i||"enum.n.have"in i?i["enum.n"]||i["enum.n.have"]:[],w="enum.s.termName"in i||"enum.s.termName.have"in i?i["enum.s.termName"]||i["enum.s.termName.have"]:[],C="enum.n_c"in i?i["enum.n_c"]:[],$="cde.id"in i?i["cde.id"]:[],S="cde_pv.n"in i||"cde_pv.n.have"in i?i["cde_pv.n"]||i["cde_pv.n.have"]:[],k="cde_pv.ss.s"in i||"cde_pv.ss.s.have"in i?i["cde_pv.ss.s"]||i["cde_pv.ss.s.have"]:[],D="cde_pv.ss.c"in i?i["cde_pv.ss.c"]:[],T="enum.i_c.c"in i?i["enum.i_c.c"]:[],O="enum.i_c.have"in i?i["enum.i_c.have"]:[];x.forEach(function(e,a){var i=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?o[i]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):o[i]=e}),w.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?p[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):p[a]=e}),C.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?u[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):u[a]=e}),$.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?h[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):h[a]=e}),S.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?v[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):v[a]=e}),k.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?f[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):f[a]=e}),D.forEach(function(e){var a=e.replace(//g,"").replace(/<\/b>/g,"");-1===t.indexOf(" ")?m[a]=e.replace(//g,"").replace(/<\/b>/g,"").replace(l,"$&"):m[a]=e}),T.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");-1==b.indexOf(t)&&b.push(t)}),O.forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");-1==g.indexOf(t)&&g.push(t)});var N={};if(void 0!==r.cde_pv&&r.cde_pv.length>0&&r.cde_pv.forEach(function(e){var t=!1;r.cde&&r.cde.id in h&&a.syn&&(t=!0);var i=[];void 0!==e.ss&&e.ss.length>0&&e.ss.forEach(function(e){var c=[],s=[],r={};for(var l in e.s.forEach(function(e){var t=e.trim().toLowerCase();t in r||(r[t]=[]),r[t].push(e)}),r){var d=(0,n.findWord)(r[l]);c.push(d)}c.forEach(function(e){e in f?(t=!0,s.push(f[e])):s.push(e)}),e.c in m&&a.syn&&(e.c=m[e.c],t=!0),i.push({c:e.c,s:s})}),(t=t||e.n in v)&&(N[e.n.toLowerCase()]={pv:e.n in v?v[e.n]:e.n,pvm:e.m,ss:i},e.n=e.n.replace(/\'/g,"^"),y.tgts_cde_n+=e.n+"#")}),r.enum){for(var E in r.enum.forEach(function(e){var t=!1;r.cde&&r.cde.id in h&&(t=!0);var a=[];e.s&&e.s.forEach(function(e){e.termName in p?(t=!0,a.push({termName:p[e.termName],termGroup:e.termGroup,termSource:e.termSource})):a.push(e)});var i={};if(t?(e.n in o?i.n=o[e.n]:i.n=e.n,i.ref=y.ref,i.n_c=e.n_c,i.s=a):(e.n in o&&(i.n=o[e.n],i.ref=y.ref,i.n_c=e.n_c,i.s=a),e.n_c in u&&(i.n=e.n,i.ref=y.ref,i.n_c=u[e.n_c],i.s=a)),void 0!==e.i_c)if(b.indexOf(e.i_c.c)>=0)i.gdc_d=e.gdc_d,e.term_type&&(i.term_type=e.term_type),i.i_c=e.i_c.c.replace(l,"$&"),void 0==i.n&&(i.n=e.n,i.ref=y.ref,i.n_c=e.n_c,i.s=a);else{var n=!1;e.i_c.have.forEach(function(e){n||g.indexOf(e)>=0&&(n=!0)}),n?(i.i_c=e.i_c.c.replace(l,"$&"),i.gdc_d=e.gdc_d,e.term_type&&(i.term_type=e.term_type),void 0==i.n&&(i.n=e.n,i.ref=y.ref,i.n_c=e.n_c,i.s=a)):(i.i_c=e.i_c.c,i.gdc_d=e.gdc_d,e.term_type&&(i.term_type=e.term_type))}var c=e.n.toLowerCase();if(c in N?(void 0==i.n&&(i.n=e.n,i.ref=y.ref,i.n_c=e.n_c,i.s=a),i.cde_s=N[c].ss,i.cde_s.length&&(i.cde_pv=N[c].pv,i.cde_pvm=N[c].pvm),delete N[c]):i.cde_s=[],void 0!==i.n){var s=i.n.replace(//g,"").replace(/<\/b>/g,"");y.tgts_enum_n+=s+"#",y.vs.push(i)}}),N){var G={n:"no match"};G.ref=y.ref,G.n_c="",G.s=[],G.cde_s=N[E].ss,G.cde_s.length&&(G.cde_pv=N[E].pv,G.cde_pvm=N[E].pvm),y.vs.push(G)}y.vs&&function(){var e={},t=[];y.vs.forEach(function(t){if(void 0!==t.i_c){var a=t.i_c.replace(//g,"").replace(/<\/b>/g,""),i=t.n.replace(//g,"").replace(/<\/b>/g,""),n=void 0!==t.term_type&&""!==t.term_type?t.term_type:"*";a in e&&!_.some(e[a],{n:t.n,term_type:n})?(i!==a&&("PT"===n?e[a].n.unshift({n:t.n,term_type:n}):(e[a].n.push({n:t.n,term_type:n}),"*"===n&&(d=!0)),e[a].n_clr.push(i)),-1==e[a].checker_n_c.indexOf(t.n_c.replace(//g,"").replace(/<\/b>/g,""))&&(""!==t.n_c&&e[a].n_syn.push({n_c:t.n_c,s:t.s}),e[a].checker_n_c.push(t.n_c.replace(//g,"").replace(/<\/b>/g,"")))):(e[a]={i_c:t.i_c,n:[],n_clr:[],n_syn:[],checker_n_c:[t.n_c.replace(//g,"").replace(/<\/b>/g,"")]},""!==t.n_c&&e[a].n_syn.push({n_c:t.n_c,s:t.s}),i!==a&&("PT"===n?e[a].n.unshift({n:t.n,term_type:n}):e[a].n.push({n:t.n,term_type:n}),e[a].n_clr.push(i)))}});var a=function(t){r.enum.forEach(function(a){if(a.i_c&&a.i_c.c==t&&-1===e[t].n_clr.indexOf(a.n)){var i=void 0!==a.term_type&&""!==a.term_type?a.term_type:"*";if(a.n.replace(//g,"").replace(/<\/b>/g,"")!==a.i_c.c.replace(//g,"").replace(/<\/b>/g,"")&&("PT"===i?e[t].n.unshift({n:a.n,term_type:i}):(e[t].n.push({n:a.n,term_type:i}),"*"===i&&(d=!0))),-1==e[t].checker_n_c.indexOf(a.n_c.replace(//g,"").replace(/<\/b>/g,""))){var n=[];a.s&&a.s.forEach(function(e){e.termName in p?(exist=!0,n.push({termName:p[e.termName],termGroup:e.termGroup,termSource:e.termSource})):n.push(e)}),e[t].checker_n_c.push(a.n_c.replace(//g,"").replace(/<\/b>/g,"")),""!==a.n_c&&e[t].n_syn.push({n_c:a.n_c,s:n})}}})};for(var i in e)a(i);var n=[];y.vs.forEach(function(a){if(void 0===a.gdc_d||a.gdc_d){var i=a.n.replace(//g,"").replace(/<\/b>/g,"");if(i in e&&(a.term_i_c=e[i]),void 0!==a.i_c){var c=a.i_c.replace(//g,"").replace(/<\/b>/g,"");if(-1!==n.indexOf(c))return;n.push(i),c in e&&(a.term_i_c=e[c])}a.temp_i_c&&a.temp_i_c.checker_n_c&&delete a.term_i_c.checker_n_c,a.term_i_c&&a.term_i_c.n_clr&&delete a.term_i_c.n_clr,t.push(a)}}),y.vs=t}(),s+=y.vs.length}else if(!_.isEmpty(N)){for(var I in N){var H={n:"no match"};H.ref=y.ref,H.n_c="",H.s=[],H.cde_s=N[I].ss,H.cde_s.length&&(H.cde_pv=N[I].pv,H.cde_pvm=N[I].pvm),y.vs.push(H)}s+=y.vs.length}0!==y.vs.length&&c.push(y)}});var o="",p=$("#keywords").val();if(!0===d?$("#unofficial-term").html("(*) Term type not assigned."):$("#unofficial-term").html(""),0==c.length||1===c.length&&0===c[0].vs.length)o='
Sorry, no results found for keyword: '+p+"
";else{var u=$("#root").offset().top,v=window.innerHeight-u-310;r.height=v<430?430:v,r.keyword=p,o=$.templates({markup:i.default,allowCode:!0}).render({options:r,values:c})}var f={};return f.len=s,f.html=o,f},t.vsEvents=function(e){e.on("click",".table__toggle",function(e){!function(e){e.preventDefault();var t=$(e.currentTarget),a=t.closest(".table__gdc-values, .table__cde-values").find(".data-content");a.slideToggle(400,function(){a.is(":visible")?(t.attr("title","collapse"),t.attr("aria-label","collapse"),t.attr("aria-expanded","true"),t.html('')):(t.attr("title","expand"),t.attr("aria-label","expand"),t.attr("aria-expanded","false"),t.html(''))})}(e)}),e.on("click",".gdc-details",function(e){!function(e){e.preventDefault();var t=$(e.currentTarget),a=t.parent().find(".gdc-links");a.slideToggle(350,function(){a.is(":visible")?t.attr("aria-expanded","true"):t.attr("aria-expanded","false")})}(e)}),e.on("click",".cde-suggest",function(e){!function(e){e.preventDefault();var t=$("#alert-suggest");t.css({top:(0,n.getHeaderOffset)()+20+"px"}).addClass("alert__show"),setTimeout(function(){t.removeClass("alert__show")},3900)}(e)}),e.on("click",".show-more-less",function(e){!function(e){e.preventDefault();var t=$(e.currentTarget),a=t.closest(".table__values").find(".table__row--toggle");t.hasClass("more")?(t.removeClass("more"),t.attr("aria-expanded","false"),a.slideToggle(350),t.html(' Show More ('+t.attr("data-hidden")+")")):(t.addClass("more"),t.attr("aria-expanded","true"),a.slideToggle(350),t.html(' Show Less'))}(e)})}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tabsEvents=t.tabsRender=void 0;var i=function(e){return e&&e.__esModule?e:{default:e}}(a(14));var n=function(e){var t=JSON.parse(localStorage.getItem("option"));t.activeTab=e,localStorage.setItem("option",JSON.stringify(t))};t.tabsRender=function(e,t,a,n){return $.templates(i.default).render({trs_active:e.active,trs_len:e.len,trsHtml:e.html,ps_active:t.active,ps_len:t.len,psHtml:t.html,vs_active:a.active,vs_len:a.len,vsHtml:a.html,keyword:n})},t.tabsEvents=function(e){e.on("click","#tab-values",function(){n(0)}),e.on("click","#tab-properties",function(){n(1)}),e.on("click","#tab-dictionary",function(){n(2)}),e.tooltip({selector:'[data-toggle="tooltip"]',delay:{show:100,hide:50},placement:"bottom",trigger:"hover"})}},function(e,t,a){a(8),e.exports=a(30)},function(e,t,a){"use strict";var i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(9)),n=(function(e){e&&e.__esModule}(a(3)),a(0)),c=a(4),s=a(5),r=a(6),l=a(2);window.onload=function(){!function(){var e=$(window),t=$(document),a=$(document.body),d=$("#root"),o=$("#search"),_=$("#keywords"),p=$("#searchclear"),u=$("#suggestBox"),v=$("#docs-container"),f=$(".parent-container"),h=$(".main-container"),m=$("#gdc-loading-icon"),b=$("#version-content"),g=$("#search-bar-options"),y=$(".search-bar__boolean");i.removeExternalLinkIcons(),i.renderLocalStorach(_,d,g,m),i.gdcDictionaryVersion(b),g.on("show.bs.dropdown",function(e){u.hide()}),o.click(function(){i.clickSearch(_,d,u,m)}),_.keypress(function(e){i.enterSearch(e,_,o)}),_.keydown(function(e){i.selectSuggestion(e,u)}),_.bind("input",function(e){i.suggest(e,_,p,u,g)}),t.click(function(e){i.removeBox(e,u)}),p.click(function(e){i.clearSearch(e,_,g)}),y.click(function(e){i.booleanOptions(e,_)}),(0,n.setHeight)(v,f,h),e.scroll(function(){(0,n.onScroll)(e)}),e.resize(function(){(0,n.onResize)(v,f,h),(0,n.dialogsOnResize)(e)}),(0,c.dtEvents)(d),(0,r.tabsEvents)(d),(0,s.vsEvents)(d),(0,l.dialogEvents)(d,a)}()}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.gdcDictionaryVersion=t.renderLocalStorach=t.removeExternalLinkIcons=t.booleanOptions=t.clearSearch=t.removeBox=t.suggest=t.selectSuggestion=t.enterSearch=t.clickSearch=void 0;var i=a(1),n=r(a(3)),c=r(a(15)),s=(a(0),a(2));function r(e){return e&&e.__esModule?e:{default:e}}var l=-1,d=function(e,t){var a=e;return-1!==t.indexOf(" OR")&&(a=t.substring(0,t.lastIndexOf("OR"))+"OR "+e),-1!==t.indexOf(" AND")&&(a=t.substring(0,t.lastIndexOf("AND"))+"AND "+e),-1!==t.indexOf(" NOT")&&(a=t.substring(0,t.lastIndexOf("NOT"))+"NOT "+e),a},o=function(e){var t=p(e),a=function(e,t){e.indexOf(t);return e.substring(0,t)}(e.value,t);if(null!=a)return a},p=function(e){var t=0;if(document.selection){e.focus();var a=document.selection.createRange();a.moveStart("character",-e.value.length),t=a.text.length}else(e.selectionStart||"0"==e.selectionStart)&&(t=e.selectionStart);return t},u=(t.clickSearch=function(e,t,a,c){var r=e.val().trim(),d=(r.toLowerCase(),function(e){var t={};return t.desc=$("#i_desc").prop("checked"),t.syn=$("#i_syn").prop("checked"),t.match=$("#i_ematch").prop("checked")?"exact":"partial",t.activeTab=t.desc?1:e,t}(function(){var e=0,t=0;return $(".tab-nav__li").each(function(a,i){$(i).hasClass("active")&&(e=t),t++}),e}())),o=function(e){var t=/^(NOT|AND|OR)|(NOT|AND|OR)$/g.test(e),a=e.match(/(NOT|AND|OR)/g),i=e.replace(/\s\s+/g," ").split(" ");return i.forEach(function(e,a){i[a-1]===e&&(t=!0)}),null!==a&&a.forEach(function(e,i){0!==i&&a[0]!==e&&(t=!0)}),t}(r);if(""==r||o)return d.error=!0,e.addClass("search-bar__input--has-error"),void(0,n.default)(t,r,d,[]);a.hide(),l=-1,c.fadeIn(100),(0,i.apiSearchAll)(r,d,function(e,a,i){-1===r.indexOf(" AND ")&&-1===r.indexOf(" OR ")&&-1===r.indexOf(" NOT ")||(i=u(r,i)),localStorage.clear(),localStorage.setItem("keyword",r),localStorage.setItem("option",JSON.stringify(a)),(0,n.default)(t,r,a,i),c.fadeOut("fast"),(0,s.removePopUps)()})},function(e,t){if(-1!==e.indexOf(" AND ")){var a=e.split(" AND ");return t.forEach(function(e){if(void 0!==e.highlight){var t={},i=function(i){e.highlight[i].forEach(function(e){a.every(function(t){return-1!=e.toString().trim().toLowerCase().replace(//g,"").replace(/<\/b>/g,"").indexOf(t.toString().trim().toLowerCase())})&&(void 0===t[i]?(t[i]=[],t[i].push(e)):t[i].push(e))})};for(var n in e.highlight)i(n);_.isEmpty(t)?e.highlight={}:e.highlight=t}}),t}if(-1!==e.indexOf(" OR ")){var i=e.split(" OR ");return t.forEach(function(e){if(void 0!==e.highlight){var t={},a=function(a){e.highlight[a].forEach(function(e){i.forEach(function(i){-1!==e.toString().trim().toLowerCase().replace(//g,"").replace(/<\/b>/g,"").indexOf(i.toString().trim().toLowerCase())&&(void 0===t[a]?(t[a]=[],-1==t[a].indexOf(e)&&(/[8]{1}[0-9]{3}[\/]{1}[0-9]{1}/.test(e.replace(//g,"").replace(/<\/b>/g,""))?t[a].push(e.replace(//g,"").replace(/<\/b>/g,"").replace(i,"$&")):t[a].push(e))):-1==t[a].indexOf(e)&&(/[8]{1}[0-9]{3}[\/]{1}[0-9]{1}/.test(e.replace(//g,"").replace(/<\/b>/g,""))?t[a].push(e.replace(//g,"").replace(/<\/b>/g,"").replace(i,"$&")):t[a].push(e)))})})};for(var n in e.highlight)a(n);_.isEmpty(t)?e.highlight={}:e.highlight=t}}),t}if(-1!==e.indexOf(" NOT ")){var n=e.split(" NOT ");return t.forEach(function(e){if(void 0!==e.highlight){var t={},a=function(a){e.highlight[a].forEach(function(e){n.forEach(function(i,n){0===n&&-1!==e.toString().trim().toLowerCase().replace(//g,"").replace(/<\/b>/g,"").indexOf(i.toString().trim().toLowerCase())&&(void 0===t[a]?(t[a]=[],-1==t[a].indexOf(e)&&(/[8]{1}[0-9]{3}[\/]{1}[0-9]{1}/.test(e.replace(//g,"").replace(/<\/b>/g,""))?t[a].push(e.replace(//g,"").replace(/<\/b>/g,"").replace(i,"$&")):t[a].push(e))):-1==t[a].indexOf(e)&&(/[8]{1}[0-9]{3}[\/]{1}[0-9]{1}/.test(e.replace(//g,"").replace(/<\/b>/g,""))?t[a].push(e.replace(//g,"").replace(/<\/b>/g,"").replace(i,"$&")):t[a].push(e)))})})};for(var i in e.highlight)a(i);_.isEmpty(t)?e.highlight={}:e.highlight=t}}),n.splice(0,1),t.forEach(function(e){if(void 0!==e.highlight){var t={},a=function(a){e.highlight[a].forEach(function(e){n.forEach(function(i,c){n.every(function(t){return-1==e.toString().trim().toLowerCase().replace(//g,"").replace(/<\/b>/g,"").indexOf(t.toString().trim().toLowerCase())})&&(void 0===t[a]?(t[a]=[],-1==t[a].indexOf(e)&&(/[8]{1}[0-9]{3}[\/]{1}[0-9]{1}/.test(e.replace(//g,"").replace(/<\/b>/g,""))?t[a].push(e.replace(//g,"").replace(/<\/b>/g,"").replace(i,"$&")):t[a].push(e))):-1==t[a].indexOf(e)&&(/[8]{1}[0-9]{3}[\/]{1}[0-9]{1}/.test(e.replace(//g,"").replace(/<\/b>/g,""))?t[a].push(e.replace(//g,"").replace(/<\/b>/g,"").replace(i,"$&")):t[a].push(e)))})})};for(var i in e.highlight)a(i);_.isEmpty(t)?e.highlight={}:e.highlight=t}}),t}});t.enterSearch=function(e,t,a){var i=$("#suggestBox .selected");i.children(".suggest__name").text();13==e.keyCode&&e.preventDefault(),13==e.keyCode&&0!==i.length?(t.val(o(e.currentTarget)),a.trigger("click")):13==e.keyCode&&a.trigger("click")},t.selectSuggestion=function(e,t){var a=$(e.currentTarget);if((40==e.keyCode||38==e.keyCode)&&""!==a.val().trim()&&"none"!=t.css("display")){e.preventDefault(),l+=40==e.keyCode?1:-1;var i=t.find("div");l>=i.length&&(l=0),l<0&&(l=i.length-1),i.removeClass("selected").eq(l).addClass("selected");var n=i.eq(l).children(".suggest__name").text(),c=o(e.currentTarget);$("#keywords").val(d(n,c))}},t.suggest=function(e,t,a,n,s){var r=$(e.currentTarget);if(t.hasClass("search-bar__input--has-error")&&t.removeClass("search-bar__input--has-error"),s.show(),""===r.val().trim())return n.hide().html(""),l=-1,void s.hide();var _=o(e.currentTarget);-1!==_.indexOf(" OR")&&-1===_.indexOf(" AND")&&-1===_.indexOf(" NOT")&&(_=_.substring(_.lastIndexOf(" OR")+4)),-1!==_.indexOf(" AND")&&-1===_.indexOf(" OR")&&-1===_.indexOf(" NOT")&&(_=_.substring(_.lastIndexOf(" AND")+5)),-1!==_.indexOf(" NOT")&&-1===_.indexOf(" AND")&&-1===_.indexOf(" OR")&&(_=_.substring(_.lastIndexOf(" NOT")+5));var p=o(e.currentTarget);/.+(NOT|AND|OR)/g.test(p)?$("#suggestWidth").text(p.match(/.+(NOT|AND|OR)/g)[0]):$("#suggestWidth").text(""),(0,i.apiSuggest)(_,function(e){if(0===e.length)return n.hide().html(""),void(l=-1);var a=$("#suggestWidth").width();0!=a?n.css({left:a+"px",width:"auto"}):n.css({left:"",width:""});var i=$.templates(c.default).render({results:e});l=-1,n.show().html(i),n.click(function(e){var a=$(e.target),i=a.hasClass("suggest__object")?a.children(".suggest__name").text():a.parent().children(".suggest__name").text(),n=o(document.getElementById("keywords"));t.val(d(i,n)).focus()})})},t.removeBox=function(e,t){$(e.currentTarget)!=t&&(t.hide(),l=-1)},t.clearSearch=function(e,t,a){e.preventDefault(),a.hide(),t.val("").focus()},t.booleanOptions=function(e,t){e.preventDefault();var a=$(e.currentTarget).data("boolean");t.val(function(e,t){return t+" "+a+" "}).focus()},t.removeExternalLinkIcons=function(){$('#body a[href^="http"]').each(function(e,t){var a=$(t);a.removeClass("external-link"),a.html($.trim(a[0].innerText))})},t.renderLocalStorach=function(e,t,a,c){localStorage.hasOwnProperty("keyword")&&localStorage.hasOwnProperty("option")&&(c.show(),setTimeout(function(){var s=localStorage.getItem("keyword"),r=JSON.parse(localStorage.getItem("option"));null==s&&null==r&&null==items||(e.val(s),"partial"!=r.match&&$("#i_ematch").prop("checked",!0),0!=r.desc&&$("#i_desc").prop("checked",!0),0!=r.syn&&$("#i_syn").prop("checked",!0),a.show(),(0,i.apiSearchAll)(s,r,function(e,a,i){(0,n.default)(t,e,a,i),c.fadeOut("fast")}))},100))},t.gdcDictionaryVersion=function(e){(0,i.apiGDCDictionaryVersion)(function(t){e.html("GDC Dictionary Version - "+t)})}},function(e,t){e.exports='
Name
Description
'},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(a(12));t.default=function(e,t,a){var n=[],c={};t=t.trim().replace(/[\ ,:_-]+/g," ");var s=new RegExp(t,"ig");e.forEach(function(e){var a=e.highlight,i=e._source;if("name"in a||"name.have"in a||"desc"in a||"cde.id"in a){var c={};c.nm="name"in a||"name.have"in a?a.name||a["name.have"]:[i.name];var r={};("cde.id"in a?a["cde.id"]:[]).forEach(function(e){var t=e.replace(//g,"").replace(/<\/b>/g,"");r[t]=e}),c.nm_link=c.nm[0].replace(//g,"").replace(/<\/b>/g,""),-1===t.indexOf(" ")&&(c.nm[0]=c.nm[0].replace(//g,"").replace(/<\/b>/g,"").replace(s,"$&")),c.nd=i.node,c.ct=i.category,c.desc="desc"in a?a.desc:[i.desc],void 0!==c.desc[0]&&-1===t.indexOf(" ")&&"desc"in a&&(c.desc[0]=c.desc[0].replace(//g,"").replace(/<\/b>/g,"").replace(s,"$&")),c.enum=void 0!=i.enum,c.ref=i.name+"@"+i.node+"@"+i.category,c.cdeId=void 0!==i.cde?i.cde.id:"",c.cdeId in r&&(c.cdeId=c.cdeId.replace(s,"$&")),c.cdeUrl=void 0!==i.cde?i.cde.url:"",c.cdeLen=void 0!=i.cde_pv&&0!=i.cde_pv.length,c.type=Array.isArray(i.type)?i.type[0]:i.type,c.type&&(c.type=c.type.toLowerCase()),n.push(c)}});var r="";if(0==n.length){r='
Sorry, no results found for keyword: '+$("#keywords").val()+"
"}else{var l=$("#root").offset().top,d=window.innerHeight-l-310;c.height=d<430?430:d,r=$.templates(i.default).render({options:c,props:n})}var o={};return o.len=n.length,o.html=r,o}},function(e,t){e.exports='
Category / Node
Property
Description
GDC Property Values
caDSR CDE Reference
{{for props}}
{{:desc}}
{{if enum}} See All Values
Compare with User List {{else type != ""}} type: {{:type}} {{/if}}
{{if cdeId == ""}} {{else}} CDE ID - {{:cdeId}} {{/if}}
{{/for}}
'},function(e,t){e.exports='
Category / Node / Property
Matched GDC Values
{{for values}}
{{:category}}
  • {{:node}}
    • {{:name}}
{{for vs}} {{if #getIndex() == 5}}
{{/if}}
{{if n == "no match" || gdc_d == false}}
no match
{{else}}
{{if s.length || term_i_c !== undefined}} {{/if}}
{{/if}}
{{/for}} {{if vs.length > 5}}
{{/if}}
{{/for}}
'},function(e,t){e.exports='
Results for {{:keyword}} in:
{{:vsHtml}}
{{:psHtml}}
{{:trsHtml}}
'},function(e,t){e.exports='{{for results}}
{{:id}} {{for type}}{{if #index !==0}}, {{/if}}{{:}}{{/for}}
{{/for}} '},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(a(17)),n=a(1),c=a(0);t.default=function(e,t){e=e.replace(//g,"").replace(/<\/b>/g,""),(0,n.apiGetCDEDataById)(e,function(e,a){var n=[];a.forEach(function(e){var t={};t.pv=e.n,t.pvm=e.m,t.pvd=e.d,t.i_rows=[],t.rows=[],e.ss.forEach(function(e){var a={},i={};a.pvc=e.c,i.pvc=e.c,i.s=e.s,a.s=[];var n={};for(var s in e.s.forEach(function(e){var t=e.trim().toLowerCase();t in n||(n[t]=[]),n[t].push(e)}),n){var r=(0,c.findWord)(n[s]);a.s.push(r)}t.i_rows.push(a),t.rows.push(i)}),n.push(t)});var s=null,r=$(window),l=(0,c.htmlChildContent)("HeaderTemplate",i.default),d=(0,c.htmlChildContent)("BodyTemplate",i.default);null!==t&&void 0!==t&&""!==t&&(t=t.replace(/\^/g,"'"),s=t.split("#"),n.forEach(function(e){s.indexOf(e.pv)>-1&&(e.e=!0)})),$("#caDSR_data").length&&$("#caDSR_data").remove();var o=$.templates(l).render({targets:s,items_length:a.length}),_=$.templates({markup:d,allowCode:!0}).render({targets:s,items:n}),p=.2*window.innerHeight<(0,c.getHeaderOffset)()?(0,c.getHeaderOffset)()+20:.2*window.innerHeight;$(document.body).append(_),$("#caDSR_data").dialog({modal:!1,position:{my:"center top+"+p,at:"center top",of:$("#docs-container")},width:900,height:"auto",minWidth:700,maxWidth:1e3,minHeight:300,maxHeight:600,title:"caDSR Values",open:function(){$(this).prev(".ui-dialog-titlebar").css("padding-top","7.5em").html(o);var e=$(this).parent();e.offset().top-r.scrollTop()<(0,c.getHeaderOffset)()&&e.css("top",r.scrollTop()+(0,c.getHeaderOffset)()+20+"px"),$("#close_caDSR_data").bind("click",function(){$("#caDSR_data").dialog("close")}),$("#cde-data-invariant").bind("click",function(){$("#cde-syn-data-list").find('div[name="syn_area"]').each(function(){var e=$(this).html(),t=$(this).parent().children('div[name="syn_invariant"]');$(this).html(t[0].innerHTML),t[0].innerHTML=e})})},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"}),void 0!==$("#show_all_cde_syn")&&$("#show_all_cde_syn").bind("click",function(){$(this).prop("checked")?$('#cde-syn-data-list div.table__row[style="display: none;"]').each(function(){$(this).css("display","block")}):$('#cde-syn-data-list div.table__row[style="display: block;"]').each(function(){$(this).css("display","none")})})})}},function(e,t){e.exports='
caDSR Values {{:items_length}}
{{if targets !== null}} {{/if}}
PV
PV Meaning
Description
NCIt Code and Synonyms
{{for items}} {{if e == true || ~root.targets == null}}
{{:pv}}
{{:pvm}}
{{:pvd}}
{{for i_rows}}
{{* if(data.pvc.indexOf(\'E\') === -1 && data.pvc.indexOf(\'C\') !== -1) { }} {{:pvc}} (NCIt) {{* } else { }} {{:pvc}} (CTCAE){{* } }}
{{for s}}{{>#data}}
{{/for}}
{{/for}}
{{else}} {{/if}} {{/for}}
'},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(a(19)),n=a(1),c=a(0);t.default=function(e,t,a){(0,n.apiGetGDCDataById)(e,function(e,n){$("#gdc_data").length&&$("#gdc_data").remove();var s=$(window),r=!1,l=[],d={},o={},_=(0,c.htmlChildContent)("HeaderTemplate",i.default),p=(0,c.htmlChildContent)("BodyTemplate",i.default);a=null===a||void 0===a?"@#$%^":a.trim().replace(/[\ ,:_-]+/g," ");var u=new RegExp(a.replace(/( NOT | AND | OR )/g,"|"),"ig");n.forEach(function(e){var t=void 0!==e.term_type&&""!==e.term_type?e.term_type:"*";void 0!==e.i_c&&(e.i_c.c in o?e.n!==e.i_c.c&&("PT"===t?o[e.i_c.c].n.unshift({n:e.n.replace(u,"$&"),term_type:t}):o[e.i_c.c].n.push({n:e.n.replace(u,"$&"),term_type:t})):(o[e.i_c.c]={c:e.i_c.c,have:e.i_c.have,n:[]},e.n!==e.i_c.c&&("PT"===t?o[e.i_c.c].n.unshift({n:e.n.replace(u,"$&"),term_type:t}):o[e.i_c.c].n.push({n:e.n.replace(u,"$&"),term_type:t}))))}),n.forEach(function(e){if(void 0!==e.i_c&&(r=!0),!0===e.gdc_d)if(void 0===o[e.n]||d[e.n]){if(!d[e.n]){var a={};void 0!==e.i_c&&(a.i_c=o[e.i_c.c],a.i_c.c=a.i_c.c.replace(u,"$&")),a.n=null!==t&&void 0!==t&&e.n===t.replace(//g,"").replace(/<\/b>/g,"")?t.replace(//g,"").replace(/<\/b>/g,"").replace(u,"$&"):e.n,a.n_c=e.n_c,a.s=e.s,l.push(a),d[e.n]=a}}else{var i={};i.n=null!==t&&void 0!==t&&e.n===t.replace(//g,"").replace(/<\/b>/g,"")?t.replace(//g,"").replace(/<\/b>/g,"").replace(u,"$&"):e.n,i.i_c=o[e.n],i.i_c.c=i.i_c.c.replace(u,"$&"),i.n_c=e.n_c,i.s=e.s,l.push(i),d[e.n]=i}}),(n=l).length>500&&$("#gdc-loading-icon").show(),n.sort(function(e,t){return e.n.toLowerCase()>t.n.toLowerCase()?1:t.n.toLowerCase()>e.n.toLowerCase()?-1:0});var v=null===t||void 0===t?t:t.replace(//g,"").replace(/<\/b>/g,"").replace(u,"$&"),f=$.templates(_).render({target:v,icdo:r,items_length:n.length}).trim(),h=$.templates(p).render({target:v,keyword:a,icdo:r,items:n}).trim(),m=.2*window.innerHeight<(0,c.getHeaderOffset)()?20:.2*window.innerHeight;setTimeout(function(){$(document.body).append(h);var e={width:450,minWidth:400,maxWidth:700};r&&(e.width=700,e.minWidth=600,e.maxWidth=900),$("#gdc_data").dialog({modal:!1,position:{my:"center top+"+m,at:"center top",of:$("#docs-container")},width:e.width,minWidth:e.minWidth,maxWidth:e.maxWidth,height:550,minHeight:350,maxHeight:650,open:function(){r?$(this).prev(".ui-dialog-titlebar").css("padding-top","7.5em").html(f):$(this).prev(".ui-dialog-titlebar").css("padding-top","3.8em").html(f);var e=$(this).parent();e.offset().top-s.scrollTop()<(0,c.getHeaderOffset)()&&e.css("top",s.scrollTop()+(0,c.getHeaderOffset)()+20+"px"),$("#close_gdc_data").bind("click",function(){$("#gdc_data").dialog("close")}),n.length>500&&$("#gdc-loading-icon").hide()},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"}),void 0!==$("#show_all_gdc_data")&&$("#show_all_gdc_data").bind("click",function(){if($(this).prop("checked")){$("#gdc-data-list .gdc-data__item--hide").each(function(){$(this).removeClass("gdc-data__item--hide").addClass("gdc-data__item--show")});var e=$("#gdc_data_match").offset().top-$("#gdc_data").offset().top;$("#gdc_data").scrollTop(e-120)}else $("#gdc-data-list .gdc-data__item--show").each(function(){$(this).is("#gdc_data_match")||$(this).removeClass("gdc-data__item--show").addClass("gdc-data__item--hide")})})},100)})}},function(e,t){e.exports='
GDC Values {{:items_length}} {{if target !== null && target !== undefiend }}
{{/if}}
{{if icdo !== false}}
GDC Term
ICD-O-3 Code
ICD-O-3 Term
{{/if}}
{{if icdo}}
{{if target !== null && target !== undefined}} {{for items}} {{if n == ~root.target }}
{{:n}}
{{if i_c}}{{:i_c.c}}{{/if}}
{{if i_c}}{{if i_c.n}} {{for i_c.n}} {{/for}}
Term Source Type
{{:n}} ICD-O-3 {{:term_type}}
{{else}}{{:n}}{{/if}}{{/if}}
{{else}}
{{:n}}
{{if i_c}}{{:i_c.c}}{{/if}}
{{if i_c}}{{if i_c.n}} {{for i_c.n}} {{/for}}
Term Source Type
{{:n}} ICD-O-3 {{:term_type}}
{{else}}{{:n}}{{/if}}{{/if}}
{{/if}} {{/for}} {{else}} {{for items}}
{{:n}}
{{if i_c}}{{:i_c.c}}{{/if}}
{{if i_c}}{{if i_c.n}}{{for i_c.n}}{{:}}
{{/for}}{{else}}{{:n}}{{/if}}{{/if}}
{{/for}} {{/if}}
{{else}}
{{if target !== null && target !== undefined}} {{for items}} {{if n == ~root.target }}
{{:n}}
{{else}}
{{:n}}
{{/if}} {{/for}} {{else}} {{for items}}
{{:n}}
{{/for}} {{/if}}
{{/if}}
'},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(a(21)),n=a(2),c=a(1),s=a(0);var r=function(e,t){return e.length>0?"\n "+e.map(function(e){return('\n
\n '+(void 0!==e.n_syn&&0!==e.n_syn.length?'\n
\n
'+e.n+'
\n \n
\n \n ":"\n "+(void 0!==e.s&&0!==e.s.length?'\n
\n
'+e.n+'
\n \n
\n \n ":'\n
\n
'+e.n+"
\n
\n ")+"\n ")+"\n
\n ").trim()}).join(""):'\n
\n
\n Sorry, no results found for keyword: '+t+"\n
\n
\n "};t.default=function(e){e=e.replace(/@/g,"/"),(0,c.apiGetGDCDataById)(e,function(e,t){$("#compare_dialog").length&&$("#compare_dialog").remove();var a=$(window),c=!1,l=[],d={},o=(0,s.htmlChildContent)("HeaderTemplate",i.default),_=(0,s.htmlChildContent)("BodyTemplate",i.default),p=(0,s.htmlChildContent)("BottomTemplate",i.default),u=(0,s.getAllSyn)(t);t.forEach(function(e){if(void 0!==e.i_c&&(c=!0),!1!==e.gdc_d)if(void 0===d[e.n]&&e.i_c){var t={n:e.n,i_c:e.i_c?e.i_c:void 0,n_syn:e.i_c&&u[e.i_c.c]?u[e.i_c.c].n_syn:e.n_c?[{n_c:e.n_c,s:e.s}]:[],ic_enum:e.i_c&&e.ic_enum?e.ic_enum:void 0,all_syn:e.i_c&&u[e.i_c.c]?u[e.i_c.c].all_syn:void 0};l.push(t),d[e.n]=e}else void 0===e.i_c&&l.push(e)}),c&&(t=l),t.length>500&&$("#gdc-loading-icon").show(),t.sort(function(e,t){return e.n.toLowerCase()>t.n.toLowerCase()?1:t.n.toLowerCase()>e.n.toLowerCase()?-1:0});var v=$.templates(o).render(),f=$.templates(_).render({items:t}),h=$.templates(p).render(),m=.2*window.innerHeight<(0,s.getHeaderOffset)()?20:.2*window.innerHeight;setTimeout(function(){$(document.body).append(f),$("#compare_dialog").dialog({modal:!1,position:{my:"center top+"+m,at:"center top",of:$("#docs-container")},width:1200,height:590,minWidth:1200,maxWidth:1200,minHeight:590,maxHeight:810,title:"Compare Your Values with GDC Values",open:function(){var e="";$(this).prev(".ui-dialog-titlebar").css("padding-top","7.5em").html(v),$(this).after(h);var i=$(this).parent();i.offset().top-a.scrollTop()<(0,s.getHeaderOffset)()?i.css("top",a.scrollTop()+(0,s.getHeaderOffset)()+20+"px"):i.css("top",i.offset().top-50+"px"),$("#cp_result").css("display","none"),$("#compare").bind("click",function(){(0,n.compare)(t)}),$("#cancelCompare, #close_to_compare").bind("click",function(){$("#compare_dialog").dialog("close")}),$("#pagination-compare").pagination({dataSource:t,pageSize:50,callback:function(e,t){var a=r(e);$("#cp_right").html(a)}}),$("#compare-input, #compare-matched").bind("mousedown",function(e){$(e.currentTarget).focus(),i.draggable("disable")}),i.bind("mousedown",function(e){$(e.currentTarget).draggable("enable")}),$("#compare-input").on("input",function(){var a=$("#compare-input").val().trim().replace(/[\ ]+/g," ").toLowerCase();if(e!==a){e=a;var i=$("#compare-input").val().trim().replace(/[\ ]+/g," ");if(a.length>=3){var n=(0,s.searchFilter)(t,a);$("#pagination-compare").pagination({dataSource:n,pageSize:50,callback:function(e,t){var a=r(e,i);$("#cp_right").html(a)}})}else $("#pagination-compare").pagination({dataSource:t,pageSize:50,callback:function(e,t){var a=r(e,i);$("#cp_right").html(a)}})}});var c="";$("#compare-matched").on("input",function(){var e=$("#compare-matched").val().trim().replace(/[\ ]+/g," ").toLowerCase();if(c!==e){c=e;var t=$("#compare-matched").val().trim().replace(/[\ ]+/g," ");if(e.length>=3){var a=$("#compare-matched").data("compareResult"),i=$("#compare-matched").data("options"),r=(0,s.searchFilterCR)(a,e);$("#pagination-matched").pagination({dataSource:r,pageSize:50,callback:function(e,a){var c=(0,n.showCompareResult)(e,i,t);$("#compare_result").html(c)}})}else{var l=$("#compare-matched").data("compareResult"),d=$("#compare-matched").data("options");$("#pagination-matched").pagination({dataSource:l,pageSize:50,callback:function(e,a){var i=(0,n.showCompareResult)(e,d,t);$("#compare_result").html(i)}})}}}),t.length>500&&$("#gdc-loading-icon").hide()},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"})},100)})}},function(e,t){e.exports='
Compare Your Values with GDC Values
User Defined Values
Matched GDC Values
'},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=a(1),n=a(0),c=function(e,t,a){var i=[],n=[];a.sensitive?t.forEach(function(e){i.push(e.trim())}):t.forEach(function(e){i.push(e.trim().toLowerCase())});var c='
GDC Values
Matched caDSR Values
';e.forEach(function(e){var s=$.trim(e);if(""!==s){var r="",l=a.sensitive?i.indexOf(s):i.indexOf(s.toLowerCase());l>=0&&(r=t[l],n.push(l)),c+=""===r?'
'+e+'
'+(r='
--
')+"
":'
'+e+'
'+r+"
"}});for(var s=0;s=0||(c+='
--
'+t[s]+"
");return c+="
"};t.default=function(e,t){var a={};a.local=e,a.cde=t.replace(//g,"").replace(/<\/b>/g,""),(0,i.apiGetGDCandCDEDataById)(a,function(e,t){$("#compareGDC_dialog").length&&$("#compareGDC_dialog").remove();var a=$(window);$(document.body).append('
');var i=.2*window.innerHeight<(0,n.getHeaderOffset)()?(0,n.getHeaderOffset)()+20:.2*window.innerHeight,s=[],r=[],l={sensitive:!1,unmatched:!1};t.to.forEach(function(e){s.push(e.n)}),t.from.forEach(function(e){r.push(e.n)});var d='
'+c(r.sort(),s.sort(),l)+"
";$("#compareGDC_result").html(d),$("#compareGDC_dialog").dialog({modal:!1,position:{my:"center top+"+i,at:"center top",of:$("#docs-container")},width:750,height:550,minWidth:715,maxWidth:900,minHeight:300,maxHeight:800,title:"Compare GDC Values with caDSR Values ",open:function(){var e=$(this).parent();e.find(".ui-dialog-titlebar").css("padding","15px").append('
'),e.find(".ui-dialog-titlebar-close").html(""),e.offset().top-a.scrollTop()<(0,n.getHeaderOffset)()&&e.css("top",a.scrollTop()+(0,n.getHeaderOffset)()+20+"px"),$("#compareGDC_filter").bind("click",function(){var e={};e.sensitive=$("#compareGDC_filter").prop("checked"),e.unmatched=$("#compareGDC_unmatched").prop("checked");var t=c(r.sort(),s.sort(),e);$("#cpGDC_result_table").html(t)}),$("#compareGDC_unmatched").bind("click",function(){var e={};e.sensitive=$("#compareGDC_filter").prop("checked"),e.unmatched=$("#compareGDC_unmatched").prop("checked");var t=c(r.sort(),s.sort(),e);$("#cpGDC_result_table").html(t)})},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"})})}},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(a(24)),n=a(1),c=a(0);var s=function(e,t,a){return(0!==e.length?'\n
\n
\n
\n '+e.map(function(e,a){return('\n
\n '+(t?'\n
'+e.n+'
\n
'+(e.i_c?""+e.i_c.c:"")+'
\n
'+(e.i_c&&e.ic_enum?'\n \n \n \n \n \n \n \n \n '+e.ic_enum.map(function(e){return('\n \n \n \n \n \n ").trim()}).join(""):"")+'\n
TermSourceType

'+e.n+'

ICD-O-3'+e.term_type+"
\n
\n
\n '+(e.n_syn?"\n "+e.n_syn.map(function(e){return('\n
\n
\n '+(void 0!==e.n_c&&""!==e.n_c?''+e.n_c+"":"")+'\n
\n
\n '+(void 0!==e.s?'\n \n \n \n \n \n \n \n \n '+e.s.map(function(e){return('\n \n \n \n \n \n ").trim()}).join("")+"\n
TermSourceType

'+e.termName+'

'+(void 0!==e.termSource&&null!==e.termSource?e.termSource:"")+''+(void 0!==e.termGroup&&null!==e.termGroup?e.termGroup:"")+"
\n ":"")+"\n
\n
\n ").trim()}).join("")+"\n ":'\n
\n
\n '+(void 0!==e.n_c&&""!==e.n_c?''+e.n_c+"":"")+'\n
\n
\n '+(void 0!==e.s&&void 0!==e.n_c&&""!==e.n_c?'\n \n \n \n \n \n \n \n \n '+e.s.map(function(e){return('\n \n \n \n \n \n ").trim()}).join("")+"\n
TermSourceType

'+e.termName+'

'+(void 0!==e.termSource&&null!==e.termSource?e.termSource:"")+''+(void 0!==e.termGroup&&null!==e.termGroup?e.termGroup:"")+"
\n ":"")+"\n
\n
\n ")+"\n
\n ":'\n
'+e.n+'
\n
\n '+(e.n_syn?"\n "+e.n_syn.map(function(e){return('\n
\n
\n '+(void 0!==e.n_c&&""!==e.n_c?''+e.n_c+"":"")+'\n
\n
\n '+(void 0!==e.s?'\n \n \n \n \n \n \n \n \n '+e.s.map(function(e){return('\n \n \n \n \n \n ").trim()}).join("")+"\n
TermSourceType

'+e.termName+'

'+(void 0!==e.termSource&&null!==e.termSource?e.termSource:"")+''+(void 0!==e.termGroup&&null!==e.termGroup?e.termGroup:"")+"
\n ":"")+"\n
\n
\n ").trim()}).join("")+"\n ":'\n
\n
\n '+(void 0!==e.n_c&&""!==e.n_c?''+e.n_c+"":"")+'\n
\n
\n '+(void 0!==e.s&&void 0!==e.n_c&&""!==e.n_c?'\n \n \n \n \n \n \n \n \n '+e.s.map(function(e){return('\n \n \n \n \n \n ").trim()}).join("")+"\n
TermSourceType

'+e.termName+'

'+(void 0!==e.termSource&&null!==e.termSource?e.termSource:"")+''+(void 0!==e.termGroup&&null!==e.termGroup?e.termGroup:"")+"
\n ":"")+"\n
\n
\n ")+"\n
\n ")+"\n
").trim()}).join("")+"\n
\n
\n
\n ":'\n
\n
\n Sorry, no results found for keyword: '+a+"\n
\n
\n ")+" "};t.default=function(e,t){e=e.replace(//g,"").replace(/<\/b>/g,""),(0,n.apiGetGDCDataById)(e,function(e,a){$("#gdc_terms_data").length&&$("#gdc_terms_data").remove();var n=[],r=!1,l=$(window),d=[],o={};null!==t&&void 0!==t&&(n=t.split("#"));var _=(0,c.htmlChildContent)("HeaderTemplate",i.default),p=(0,c.htmlChildContent)("FooterTemplate",i.default),u=(0,c.getAllSyn)(a);a.forEach(function(e){o[e.n]||(void 0!==e.i_c&&(r=!0),!0===e.gdc_d&&(void 0!==e.i_c?void 0!==u[e.i_c.c]&&(e.n_c&&delete e.n_c,e.s&&delete e.s,e.n_syn=u[e.i_c.c].n_syn,e.all_syn=u[e.i_c.c].all_syn,d.push(e)):d.push(e)),o[e.n]=e)}),(a=d).length>500&&$("#gdc-loading-icon").show(),a.sort(function(e,t){return e.n.toLowerCase()>t.n.toLowerCase()?1:t.n.toLowerCase()>e.n.toLowerCase()?-1:0});var v=$.templates(_).render({targets:n,icdo:r,items_length:a.length}),f=.2*window.innerHeight<(0,c.getHeaderOffset)()?(0,c.getHeaderOffset)()+20:.2*window.innerHeight;setTimeout(function(){$(document.body).append('
');var e={width:800,minWidth:700,maxWidth:900};r&&(e.width=1e3,e.minWidth=1050,e.maxWidth=1150),$("#gdc_terms_data").dialog({modal:!1,position:{my:"center top+"+f,at:"center top",of:$("#docs-container")},width:e.width,height:550,minWidth:e.minWidth,maxWidth:e.maxWidth,minHeight:550,maxHeight:600,open:function(){var e="";$(this).prev(".ui-dialog-titlebar").css("padding-top","7.8em").html(v);var t=$(this).parent();t.offset().top-l.scrollTop()<(0,c.getHeaderOffset)()?t.css("top",l.scrollTop()+(0,c.getHeaderOffset)()+20+"px"):t.css("top",t.offset().top-50+"px"),$("#close_gdc_terms_data").bind("click",function(){$("#gdc_terms_data").dialog("close")}),$("#gdc-data-invariant").bind("click",function(){$(this).prop("checked")?($("#gdc-syn-data-list").find('div[name="syn_area"]').each(function(){$(this).hide()}),$("#gdc-syn-data-list").find('div[name="syn_invariant"]').each(function(){$(this).show()})):($("#gdc-syn-data-list").find('div[name="syn_area"]').each(function(){$(this).show()}),$("#gdc-syn-data-list").find('div[name="syn_invariant"]').each(function(){$(this).hide()}))}),$(this).after(p),$("#pagination-container").pagination({dataSource:a,pageSize:50,callback:function(e,t){var a=s(e,r);$("#gdc_terms_data").html(a)}}),$("#gdc-values-input").bind("mousedown",function(e){$(e.currentTarget).focus(),t.draggable("disable")}),t.bind("mousedown",function(e){$(e.currentTarget).draggable("enable")}),$("#gdc-values-input").on("input",function(){var t=$("#gdc-values-input").val().trim().replace(/[\ ]+/g," ").toLowerCase();if(e!==t){e=t;var i=$("#gdc-values-input").val().trim().replace(/[\ ]+/g," ");if(t.length>=3){var n=(0,c.searchFilter)(a,t);$("#pagination-container").pagination({dataSource:n,pageSize:50,callback:function(e,t){var a=s(e,r,i);$("#gdc_terms_data").html(a)}})}else $("#pagination-container").pagination({dataSource:a,pageSize:50,callback:function(e,t){var a=s(e,r,i);$("#gdc_terms_data").html(a)}})}}),a.length>500&&$("#gdc-loading-icon").hide()},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"}),void 0!==$("#show_all_gdc_syn")&&$("#show_all_gdc_syn").bind("click",function(){$(this).prop("checked")?$("#gdc-syn-data-list .gdc-term__item--hide").each(function(){$(this).removeClass("gdc-term__item--hide").addClass("gdc-term__item--show")}):$("#gdc-syn-data-list .gdc-term__item--show").each(function(){$(this).is("#gdc_term_item")||$(this).removeClass("gdc-term__item--show").addClass("gdc-term__item--hide")})})},100)})}},function(e,t){e.exports='
GDC Values {{:items_length}}
{{if targets.length !== 0}} {{/if}}
{{if icdo}}
GDC Value
ICD-O-3 Code
ICD-O-3 Term
NCIt Code
NCIt Terms
{{else}}
GDC Value
NCIt Code
NCIt Terms
{{/if}}
{{for items}} {{if e === true || ~root.targets.length == 0}}
{{if ~root.icdo}}
{{:n}}
{{if i_c}}{{:i_c.c}}{{/if}}
{{if i_c}}{{if i_c.n}}{{for i_c.n}}{{:}}
{{/for}}{{else}}{{:n}}{{/if}}{{/if}}
{{if i_c !== undefined}} {{for i_c.n_syn}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/for}} {{else}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/if}}
{{else}}
{{:n}}
{{if i_c !== undefined}} {{for i_c.n_syn}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/for}} {{else}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/if}}
{{/if}}
{{else}}
{{if ~root.icdo}}
{{:n}}
{{if i_c}}{{:i_c.c}}{{/if}}
{{if i_c}}{{if i_c.n}}{{for i_c.n}}{{:}}
{{/for}}{{else}}{{:n}}{{/if}}{{/if}}
{{if i_c !== undefined}} {{for i_c.n_syn}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/for}} {{else}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/if}}
{{else}}
{{:n}}
{{if i_c !== undefined}} {{for i_c.n_syn}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/for}} {{else}}
{{if n_c !== undefined && n_c !== ""}} {{:n_c}} {{/if}}
{{for s_r}}{{:}}
{{/for}}
{{/if}}
{{/if}}
{{/if}} {{/for}}
'},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e=e.replace(//g,"").replace(/<\/b>/g,""),(0,n.apiEVSRest)(e,function(e,t){$("#ncit_details").length&&$("#ncit_details").remove();var a={};a.code=t.code,a.name=t.preferredName,a.definition=t.definitions.length?t.definitions.find(function(e){return"NCI"===e.defSource}).description:void 0,a.synonyms=t.synonyms;var n=$(window),s=(0,c.htmlChildContent)("HeaderTemplate",i.default),r=(0,c.htmlChildContent)("BodyTemplate",i.default),l=.2*window.innerHeight<(0,c.getHeaderOffset)()?(0,c.getHeaderOffset)()+20:.2*window.innerHeight,d=$.templates(s).render(),o=$.templates(r).render({item:a});$(document.body).append(o),$("#ncit_details").dialog({modal:!1,position:{my:"center top+"+l,at:"center top",of:$("#docs-container")},width:600,height:600,minWidth:420,maxWidth:800,minHeight:350,maxHeight:650,open:function(){$(this).prev(".ui-dialog-titlebar").css("padding-top","3.5em").html(d);var e=$(this).parent();e.find(".ui-dialog-titlebar-close").html(""),e.offset().top-n.scrollTop()<(0,c.getHeaderOffset)()&&e.css("top",n.scrollTop()+(0,c.getHeaderOffset)()+20+"px"),$("#close_ncit_details").bind("click",function(){$("#ncit_details").dialog("close")})},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"})})};var i=function(e){return e&&e.__esModule?e:{default:e}}(a(26)),n=a(1),c=a(0)},function(e,t){e.exports='
NCIt Terms & Properties

Preferred Name: {{:item.name}}

{{if item.definition !== undefined}}

Definition: {{:item.definition}}

{{/if}}

NCI Thesaurus Code: {{:item.code}}

{{if item.synonyms.length }}

Synonyms & Abbreviations:

{{for item.synonyms}} {{/for}}
Term Source Type
{{:termName}} {{if termSource !== undefined && termSource !== null}}{{:termSource}}{{/if}} {{if termGroup !== undefined && termGroup !== null}}{{:termGroup}}{{/if}}
{{/if}}

more details

'},function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.renderType=t.renderSource=void 0;var i=s(a(28)),n=s(a(29)),c=(a(1),a(0));function s(e){return e&&e.__esModule?e:{default:e}}t.renderSource=function(){var e=(0,c.htmlChildContent)("HeaderTemplate",i.default),t=(0,c.htmlChildContent)("BodyTemplate",i.default),a=.2*window.innerHeight<(0,c.getHeaderOffset)()?(0,c.getHeaderOffset)()+20:.2*window.innerHeight;$(document.body).append(t),$("#source_details").dialog({modal:!1,position:{my:"center top+"+a,at:"center top",of:$("#docs-container")},width:600,height:600,minWidth:500,maxWidth:800,minHeight:400,maxHeight:650,open:function(){$(this).prev(".ui-dialog-titlebar").css("padding-top","3.5em").html(e),$("#close_source_details").bind("click",function(){$("#source_details").dialog("close")})},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"})},t.renderType=function(){var e=(0,c.htmlChildContent)("HeaderTemplate",n.default),t=(0,c.htmlChildContent)("BodyTemplate",n.default),a=.2*window.innerHeight<(0,c.getHeaderOffset)()?(0,c.getHeaderOffset)()+20:.2*window.innerHeight;$(document.body).append(t),$("#type_details").dialog({modal:!1,position:{my:"center top+"+a,at:"center top",of:$("#docs-container")},width:600,height:600,minWidth:500,maxWidth:800,minHeight:400,maxHeight:650,open:function(){$(this).prev(".ui-dialog-titlebar").css("padding-top","3.5em").html(e),$("#close_type_details").bind("click",function(){$("#type_details").dialog("close")})},close:function(){$(this).remove()}}).parent().draggable({containment:"#docs-container"})}},function(e,t){e.exports='
Sources
NCIt includes some data, notably terms, codes, and definitions, tagged as coming from the sources listed below. The extent and nature of this source data varies greatly:
  • Some sources, such as FDA and CDISC, are important partners in developing extensive tagged terminology subsets for regulatory and standards purposes;
  • Several, such as CTCAE, DCP, DTP, and NCI-GLOSS, represent separate NCI terminology that has been cross-linked to NCIt concepts in whole or partially;
  • Several outside sources, such as CRCH and JAX, have contributed terminology in particular fields; and
  • Other sources are included in a variety of more limited ways to provide useful cross-links and information.
Source Description
ACC American College of Cardiology
BioCarta BioCarta online maps of molecular pathways, adapted for NCI use
BRIDG Biomedical Research Integrated Domain Model Group
CareLex CareLex electronic Trial Master File Terminology
CDC U.S. Centers for Disease Control and Prevention
CDISC Clinical Data Interchange Standards Consortium
CDISC-GLOSS CDISC Glossary Terminology
COH City of Hope
CRCH Cancer Research Center of Hawaii Nutrition Terminology
CTCAE Common Terminology Criteria for Adverse Events
CTEP Cancer Therapy Evaluation Program
CTRP Clinical Trials Reporting Program
DCP NCI Division of Cancer Prevention Program
DICOM Digital Imaging Communications in Medicine
DTP NCI Developmental Therapeutics Program
EDQM European Directorate for the Quality of Medicines & Healthcare
FDA U.S. Food and Drug Administration
GAIA Global Alignment of Immunization safety Assessment in pregnancy Terminology
GENC Geopolitical Entities, Names, and Codes Terminology
HGNC HUGO Gene Nomenclature Committee
ICH International Conference on Harmonization
IMDRF International Medical Device Regulators Forum
JAX Jackson Laboratories Mouse Terminology, adapted for NCI use
KEGG KEGG Pathway Database
MedDRA Medical Dictionary for Regulatory Activities
MMHCC Mouse Models of Human Cancer Consortium
NCCN National Comprehensive Cancer Network
NCI National Cancer Institute Thesaurus
NCI-GLOSS NCI Dictionary of Cancer Terms
NCI-HL7 NCI Health Level 7
NCPDP National Council for Prescription Drug Programs
NICHD National Institute of Child Health and Human Development
PID NCI Nature Pathway Interaction Database
PI-RADS Prostate Imaging-Reporting and Data System
RENI Registry Nomenclature Information System
UCUM Unified Code for Units of Measure
Zebrafish Zebrafish Model Organism Database
'},function(e,t){e.exports='
Term Types

NCI Thesaurus Term Types use 2- or 3-character abbreviations to code the nature of each term associated with a concept. Here is a listing of the term type codes and their meanings:

Name Description
AB Abbreviation
AD Adjectival form (and other parts of grammer)
AQ* Antiquated preferred term
AQS Antiquated term, use when there are antiquated synonyms within a concept
BR US brand name, which may be trademarked
CA2 ISO 3166 alpha-2 country code
CA3 ISO 3166 alpha-3 country code
CNU ISO 3166 numeric country code
CI ISO Country code (deprecated)
CN Drug study code
CS US State Department country code
DN Display name
FB Foreign brand name, which may be trademarked
LLT Lower Level Term
HD* Header (groups concepts, but not used for coding data)
PT* Preferred term
SN Chemical structure name
SY Synonym

*Note on special rules governing NCI PT, HD, and AQ term types: Each concept should have one, and only one, term coded with one of these three values. The NCI Preferred Term is always taken from one of the NCI terms, normally that with a type of PT (Preferred Term). However, in special cases, a concept will not have a PT term, but instead, will have either an HD (Header) term or an AQ term. These tags are considered equivalent to PT by the software. This means that a concept may have only as single NCI PT, or HD, or AQ term. In those cases where multiple antiquated terms are needed for a concept which is itself coded as antiquated, one should be tagged AQ and the rest tagged AQS.

'},function(e,t){}]); \ No newline at end of file diff --git a/theme/apps/gdcmvs/dist/styles.css b/theme/apps/gdcmvs/dist/styles.css new file mode 100644 index 000000000..945e4f097 --- /dev/null +++ b/theme/apps/gdcmvs/dist/styles.css @@ -0,0 +1 @@ +.ui-resizable{box-sizing:content-box}.ui-dialog .ui-dialog-titlebar{padding-top:8em}.ui-dialog .ui-dialog-content{padding:0}.ui-widget.ui-widget-content{font-size:1.3rem;background:#fff;box-shadow:0 5px 15px rgba(0,0,0,.5);border:1px solid rgba(0,0,0,.2);border-radius:6px}.dialog__header{position:absolute;width:100%;top:0;left:0}.dialog__footer{text-align:center;padding:1em;border-top:1px solid #ddd}.dialog__titlebar{padding:1em;border-bottom:1px solid #ddd}.dialog__pagination{display:inline-block;margin-bottom:-.9em}.dialog__input-group{width:280px;display:inline-flex;margin-left:30px}.dialog__input{height:2.1em;border:1px solid #dce4ec;font-size:14px;padding:5px 10px}.dialog__input-addon{height:2.1em;padding:7px 12px;font-size:14px;display:inline-table}.dialog__indicator{position:relative;height:100%}.dialog__indicator-content{min-width:450px;text-align:center;margin:auto;font-size:1.2em;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.dialog__indicator-term{color:#2a72a4}.titlebar__container-btn{display:inline-block;margin-left:1.5em}.titlebar__options{display:inline-block}.ui-dialog .ui-dialog-title{float:none;width:auto;margin:0;padding-bottom:.35em;padding-right:.75em;line-height:1;font-weight:700;color:#3a3a3a;font-size:1.3em;display:inline-block;overflow:initial}.ui-dialog .ui-dialog-titlebar-close{position:absolute;background:none;border:none;text-indent:0;right:.5em;top:1.3em;color:#bbb;width:22px;height:22px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{color:#666}.ui-dialog-titlebar-close:after{position:relative;font-family:FontAwesome;font-size:1.5em;content:"\F00D";z-index:2}.ui-label{display:inline;padding:.2em .6em .3em;font-size:1.3em;font-weight:700;line-height:1;background-color:#2079bb;color:#fff;border-radius:.25em;margin-right:.75em}.ui-checkbox{margin:0;display:inline-block}.ui-checkbox .checkbox__label:first-child{padding:0}.checkbox__label--height{line-height:2em}.ncit__content,.source__content,.type__content{margin:1em}.compare-form{margin:.5em 1em;height:97%}.compare_result{height:100%}.compare-form__message{text-align:center;height:2em;color:#c74060;width:50%;display:inline-block}.compare-form__top{margin-bottom:.3em;height:90%}.compare-form__left{width:46%;height:100%;display:inline-block}.compare-form__textarea{width:98%;height:100%;resize:none}.compare-form__middle{width:2%;height:100%;margin-right:3%;border-right:1px dashed #bbb;display:inline-block}.compare-form__right{width:48%;height:100%;overflow:auto;border:1px solid #a9a9a9;display:inline-block;padding:.2em}.compare-form__value{padding-right:1em;width:95%}.compare-form__toggle,.compare-form__value{display:inline-block;vertical-align:middle}.compare-form__matched,.compare-form__synm{padding:.5em .5em 0}.compare-form__i_c,.compare-form__n_syn{padding-bottom:.5em}.compare-form__ic_enum,.compare-form__s{padding-left:1em}.compare-form__bottom{text-align:center;padding:1em;border-top:1px solid #ddd}.compare-form__pagination{text-align:center}.compare-form__content-pagination,.compare-form__pagination{width:49%;display:inline-block}.compare-form__button{padding:.4em 2em;min-width:9em;box-shadow:none!important;border:1px solid #2079bb;font-size:1em;color:#2079bb;background-color:#fff}.compare-form__button:active,.compare-form__button:active:hover,.compare-form__button:focus,.compare-form__button:hover{color:#fff;background-color:#2079bb;border-color:#2079bb;outline:none}.compare-form__button--download{padding:.3em .5em;min-width:3em}.compare-form__button--cancel{margin-left:1em}.compare-form__button-content{display:inline-block;width:50%}.compare_result__bottom{text-align:center}.gdc-data-list{outline:none}.table_td-term{word-wrap:break-word;width:115px;margin:0}.gdc-data__item--show,.gdc-term__item--show{display:block}.gdc-data__item--hide,.gdc-term__item--hide{display:none}.paginationjs .paginationjs-pages li.active>a{background:#6a7676}.getSourceDetails:focus,.getSourceDetails:hover,.getTypeDetails:focus,.getTypeDetails:hover{text-decoration:underline!important}.treeview,.treeview ul{list-style:none;padding:0}.treeview .treeview__parent>ul{display:none}.treeview__row{border-bottom:1px solid #ecf0f1;text-align:left;padding-top:8px;padding-bottom:8px;line-height:1.428571}.treeview__category .treeview__indenter{padding-left:25px}.treeview__folder .treeview__indenter{padding-left:40px}.treeview__property .treeview__indenter{padding-left:55px}.treeview__link .treeview__col:first-child,.treeview__value .treeview__col:first-child{padding-left:85px}.treeview__indenter{position:relative}.treeview__toggle{padding-left:8px;padding-right:8px;position:absolute;right:0}.treeview__col{display:inline-block}.search-bar{width:60%;min-width:690px;margin:0 auto}.search-bar__input{box-shadow:1px 7px 7px -6px #e3e3e3;border-radius:4px}.search-bar__input:hover{box-shadow:0 3px 8px 0 #e3e3e3}.search-bar__options{padding:.85em 0;position:absolute;right:160px;top:0;bottom:0;z-index:100}.search-bar__option{display:inline-block;font-size:20px;cursor:pointer;color:#aaa!important;height:25px;width:21px;padding:0 .1em}.search-bar__option:focus,.search-bar__option:hover{color:#555!important;outline:none}.search-bar__btn{background-color:#6a7676;border-color:#6a7676;padding:8px 45px;font-size:17px;color:#fff}.search-bar__btn:active,.search-bar__btn:active:hover,.search-bar__btn:focus,.search-bar__btn:hover{background-color:#788787;border-color:#788787;outline:none}.search-bar__input--has-error{border:2px solid #c74060}.search-bar__dropdown{right:-15px;left:auto;min-width:85px;text-align:center}.search-bar__dropdown>li>a{line-height:1.2em;font-size:.9em;color:#3a3a3a}.search-bar__dropdown>li>a:focus,.search-bar__dropdown>li>a:hover{background-color:#f0f0f0;color:#3a3a3a;outline:none}.suggest{position:relative}.suggest__listbox{width:calc(100% - 11.5em);display:none;border-radius:5px;padding-top:.5em;padding-bottom:.5em;background-color:#fff;box-shadow:0 2px 3px 3px rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.08);position:absolute;top:2px;left:3px;z-index:100}.suggest__object{line-height:1.8em;font-size:1em;display:flex;justify-content:space-between}.suggest__object:hover{background-color:#f0f0f0;cursor:pointer}.suggest__name{margin:0 .9em}.suggest__type{font-weight:700;margin-right:.9em}.suggest__listbox .selected{background-color:#f0f0f0}.suggest__width{width:auto;visibility:hidden;position:fixed;overflow:auto;font-size:1.2em}.search-options{width:60%;min-width:690px;margin:0 auto;padding:1.5em 0;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ecf0f1}.ref-box__link{margin-left:2em}.results{border:1px solid #dce4ec;border-radius:5px;background-color:#fff}.tab-nav{display:flex;justify-content:center;align-items:center;margin:2em 0}.tab-nav__text{color:#535a60}.tab-nav__term{color:#000}.tab-nav__group{margin-left:2em}.tab-nav__btn{padding:.15em 1em;min-width:12.2em;box-shadow:none!important;border:1px solid #2079bb;font-size:1em;color:#2079bb!important;position:relative;float:left;margin-left:-1px;text-align:center;border-radius:4px}.tab-nav__btn:focus,.tab-nav__btn:hover{text-decoration:none}.tab-nav__btn:focus{outline:none;border:1px solid #19659e;background-color:#19659e!important;color:#fff!important}.tab-nav__li.active .tab-nav__btn{background-color:#2079bb;color:#fff!important}.tab-nav__li:not(:first-child):not(:last-child) .tab-nav__btn{border-radius:0}.tab-nav__li:first-child:not(:last-child) .tab-nav__btn{border-bottom-right-radius:0;border-top-right-radius:0}.tab-nav__li:last-child:not(:first-child) .tab-nav__btn{border-bottom-left-radius:0;border-top-left-radius:0}.tab-nav__notification{position:absolute;top:-10px;right:10px;font-size:.9em;font-weight:700;padding:0 5px;color:#fff;background-color:#cc426c;border-radius:10px;line-height:1.5em}.tab-nav__btn:active,.tab-nav__btn:focus{background-color:#3598db;color:#fff!important}.tab-nav__ul{margin:0;padding:0}.tab-nav__li{position:relative;display:block;float:left}.tab-nav__tooltip{display:inline-block}.cde-suggest{font-size:.8em}.table__row--striped:nth-of-type(2n){background:#fafafa}.table__row--flex{display:flex;align-items:stretch}.table__values{border-left:1px solid #ecf0f1}.table__value-row{display:flex;align-items:stretch}.table__right{text-align:right}.table__gdc-values{border-right:1px solid #ecf0f1}.table__cde-values,.table__gdc-values{border-bottom:1px solid #ecf0f1}.table__ico3-code{color:#2a72a4;white-space:nowrap}.table__row-syn{margin-bottom:10px}.table__row-syn:last-child{margin-bottom:0}.table__ul{padding-left:15px;list-style:none}.table__li:before{font-family:FontAwesome;content:"\F107";display:inline-block;margin:0 5px 0 -15px;color:#acacac;transform:rotate(45deg);position:absolute}.table__row--toggle{display:none}body{min-width:970px}#body{min-height:640px;margin-top:0!important}.main-container{padding-bottom:127px;font-size:1.3rem}.info-content{display:flex;justify-content:space-between;margin:.5em 0}footer{margin:0;position:absolute;bottom:0}a,a:focus,a:hover,a:link,a:visited{color:#2a72a4}.gdc-app-list a{color:inherit}.checkbox__label{margin-left:20px;position:relative}.checkbox__label,.checkbox__label--padding{padding-left:0!important}.checkbox__btn{position:relative;display:block;border:1px solid #dce4ec;background-color:#fff;border-radius:.25em;width:2em;height:2em;float:left;margin-right:.5em}.checkbox__icon{position:absolute;font-size:.9em;line-height:0;top:50%;left:26%}.checkbox__input{margin:0!important;position:absolute!important;top:5px;left:5px}.checkbox__input+.checkbox__btn>.checkbox__icon{opacity:0}.checkbox__input:checked+.checkbox__btn{background-color:#6a7676;border-color:#6a7676}.checkbox__input:checked+.checkbox__btn>.checkbox__icon{opacity:1;color:#fff}.checkbox__input:disabled>.checkbox__btn{opacity:.5}.checkbox__input:focus+.checkbox__btn{box-shadow:0 0 4px 2px #c2c2c2;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.table{margin-bottom:0}.table__container{font-size:1.3rem;padding-left:15px;padding-right:15px}.table__container--margin-bottom{margin-bottom:15px}.table__body--overflow{overflow-y:auto;max-height:500px}.table__th{font-weight:700;text-align:left;padding-top:15px;padding-bottom:15px}.table__th--right{text-align:right}.table__td{text-align:left;padding-top:12px;padding-bottom:12px;line-height:1.428571}.table__td--title{font-weight:700;color:#217dbc}.table__td--slim{padding-top:8px;padding-bottom:8px}.table__td--xslim{padding-top:5px;padding-bottom:5px}.table__td--right{text-align:right}.table__td--padding-left{padding-left:35px}.table__td--word-break{word-wrap:break-word}.table__row{border-bottom:1px solid #ecf0f1}.table__row--undisplay{display:none}.table__hr{margin-left:-15px;margin-right:-15px}.table__content,.table__hr{border-bottom:1px solid #ecf0f1}.table__content{display:none}.table__thead{background:#f1f1f1;color:#555}.table__thead--padding-right{padding-right:15px}.table__tooltip,.table__tooltip:hover{color:#555;margin-left:10px}.table__tooltip:focus{color:#000;outline:none}.table__arrow{padding-right:1em;display:inline-block;width:25px}.table__dropdown-toggle{color:#788d90!important}.table__dropdown-toggle:focus,.table__dropdown-toggle:hover{color:#3598db!important}.table__dropdown-menu{left:auto}.table__dropdown-menu:before{position:absolute;top:-7px;left:79px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,.2);content:""}.table__dropdown-menu:after{position:absolute;top:-6px;left:80px;display:inline-block;border-right:6px solid transparent;border-bottom:7px solid #fff;border-left:6px solid transparent;content:""}.table__dropdown-link{color:#3a3a3a!important}.table__dropdown-link:focus,.table__dropdown-link:hover{text-decoration:none;color:#fff!important;background-color:#3598db!important}.table__td--term,.table__th--term{width:65%}.table__td--source,.table__th--source{width:20%}.table__td--type,.table__th--type{width:15%}.table-striped>tbody>tr{background-color:#fff}.thead__row{display:flex;align-items:center}.checkbox-th{margin:0;display:inline-block}.btn-th{display:inline-block;padding:3px 10px;font-size:1em;margin-left:2em;background-color:#fff;border:1px solid #dce4ec}.btn-th:active,.btn-th:focus,.btn-th:hover{color:#333;background-color:#e6e6e6;border-color:#adadad;outline:none}.btn-th__icon{padding-right:5px;font-weight:700}.indicator{position:relative;padding-bottom:36%}.indicator__content{width:60%;min-width:550px;text-align:center;margin:auto;padding:1em 0;background-color:#fff;color:#535a60;font-size:1.2em;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.indicator--has-error{color:#c74060}.indicator__term{color:#2a72a4}.indicator__card{margin:2em auto;max-width:450px;text-align:left}.indicator__mean-span{color:#c74060;font-size:1.1em}.indicator__suggestion{font-style:italic}.indicator__suggestion-p{margin:.8em 0}.tooltip.bottom:after{position:absolute;top:2px;left:50%;display:inline-block;border-right:5px solid transparent;border-bottom:5px solid #fff;border-left:5px solid transparent;content:"";margin-left:-5px}.tooltip.bottom .tooltip-arrow{border-bottom-color:#ccc}.tooltip-inner{color:#3a3a3a;background-color:#fff;border:1px solid #ccc}.alert__error{color:#cc426c;border:1px solid #cc426c!important;border-left:5px solid #cc426c!important;background-color:#fff6f9!important;border-radius:initial}.alert__error,.alert__suggest{visibility:hidden;position:fixed;top:10em;left:50%;transform:translateX(-50%);font-weight:700;padding:1rem;z-index:999}.alert__suggest{color:#166aa2;border:1px solid #166aa2!important;border-left:5px solid #166aa2!important;background-color:#daf2fb!important;border-radius:initial}.alert__show{visibility:visible;animation-name:fadeInDownUp;animation-duration:4s}@keyframes fadeInDownUp{0%{opacity:0;transform:translate3d(-50%,-100%,0)}20%{opacity:1;transform:translate3d(-50%,0,0)}80%{opacity:1;transform:translate3d(-50%,0,0)}to{opacity:0;transform:translate3d(-50%,-100%,0)}} \ No newline at end of file diff --git a/theme/apps/gdcmvs/lib/css/jquery-ui.min.css b/theme/apps/gdcmvs/lib/css/jquery-ui.min.css new file mode 100644 index 000000000..bbac8fb43 --- /dev/null +++ b/theme/apps/gdcmvs/lib/css/jquery-ui.min.css @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.12.1 - 2018-01-04 +* http://jqueryui.com +* Includes: draggable.css, core.css, resizable.css, button.css, controlgroup.css, checkboxradio.css, dialog.css +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move} \ No newline at end of file diff --git a/theme/apps/gdcmvs/lib/css/pagination.min.css b/theme/apps/gdcmvs/lib/css/pagination.min.css new file mode 100644 index 000000000..117bf0ba3 --- /dev/null +++ b/theme/apps/gdcmvs/lib/css/pagination.min.css @@ -0,0 +1 @@ +.paginationjs{line-height:1.6;font-family:Marmelad,"Lucida Grande",Arial,"Hiragino Sans GB",Georgia,sans-serif;font-size:14px;box-sizing:initial}.paginationjs:after{display:table;content:" ";clear:both}.paginationjs .paginationjs-pages{float:left}.paginationjs .paginationjs-pages ul{float:left;margin:0;padding:0}.paginationjs .paginationjs-go-button,.paginationjs .paginationjs-go-input,.paginationjs .paginationjs-nav{float:left;margin-left:10px;font-size:14px}.paginationjs .paginationjs-pages li{float:left;border:1px solid #aaa;border-right:none;list-style:none}.paginationjs .paginationjs-pages li>a{min-width:30px;height:28px;line-height:28px;display:block;background:#fff;font-size:14px;color:#333;text-decoration:none;text-align:center}.paginationjs .paginationjs-pages li>a:hover{background:#eee}.paginationjs .paginationjs-pages li.active{border:none}.paginationjs .paginationjs-pages li.active>a{height:30px;line-height:30px;background:#aaa;color:#fff}.paginationjs .paginationjs-pages li.disabled>a{opacity:.3}.paginationjs .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs .paginationjs-pages li:first-child,.paginationjs .paginationjs-pages li:first-child>a{border-radius:3px 0 0 3px}.paginationjs .paginationjs-pages li:last-child{border-right:1px solid #aaa;border-radius:0 3px 3px 0}.paginationjs .paginationjs-pages li:last-child>a{border-radius:0 3px 3px 0}.paginationjs .paginationjs-go-input>input[type=text]{width:30px;height:28px;background:#fff;border-radius:3px;border:1px solid #aaa;padding:0;font-size:14px;text-align:center;vertical-align:baseline;outline:0;box-shadow:none;box-sizing:initial}.paginationjs .paginationjs-go-button>input[type=button]{min-width:40px;height:30px;line-height:28px;background:#fff;border-radius:3px;border:1px solid #aaa;text-align:center;padding:0 8px;font-size:14px;vertical-align:baseline;outline:0;box-shadow:none;color:#333;cursor:pointer;vertical-align:middle\9}.paginationjs.paginationjs-theme-blue .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-blue .paginationjs-pages li{border-color:#289de9}.paginationjs .paginationjs-go-button>input[type=button]:hover{background-color:#f8f8f8}.paginationjs .paginationjs-nav{height:30px;line-height:30px}.paginationjs .paginationjs-go-button,.paginationjs .paginationjs-go-input{margin-left:5px\9}.paginationjs.paginationjs-small{font-size:12px}.paginationjs.paginationjs-small .paginationjs-pages li>a{min-width:26px;height:24px;line-height:24px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-pages li.active>a{height:26px;line-height:26px}.paginationjs.paginationjs-small .paginationjs-go-input{font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-input>input[type=text]{width:26px;height:24px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-button{font-size:12px}.paginationjs.paginationjs-small .paginationjs-go-button>input[type=button]{min-width:30px;height:26px;line-height:24px;padding:0 6px;font-size:12px}.paginationjs.paginationjs-small .paginationjs-nav{height:26px;line-height:26px;font-size:12px}.paginationjs.paginationjs-big{font-size:16px}.paginationjs.paginationjs-big .paginationjs-pages li>a{min-width:36px;height:34px;line-height:34px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-pages li.active>a{height:36px;line-height:36px}.paginationjs.paginationjs-big .paginationjs-go-input{font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-input>input[type=text]{width:36px;height:34px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-button{font-size:16px}.paginationjs.paginationjs-big .paginationjs-go-button>input[type=button]{min-width:50px;height:36px;line-height:34px;padding:0 12px;font-size:16px}.paginationjs.paginationjs-big .paginationjs-nav{height:36px;line-height:36px;font-size:16px}.paginationjs.paginationjs-theme-blue .paginationjs-pages li>a{color:#289de9}.paginationjs.paginationjs-theme-blue .paginationjs-pages li>a:hover{background:#e9f4fc}.paginationjs.paginationjs-theme-blue .paginationjs-pages li.active>a{background:#289de9;color:#fff}.paginationjs.paginationjs-theme-blue .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-blue .paginationjs-go-button>input[type=button]{background:#289de9;border-color:#289de9;color:#fff}.paginationjs.paginationjs-theme-green .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-green .paginationjs-pages li{border-color:#449d44}.paginationjs.paginationjs-theme-blue .paginationjs-go-button>input[type=button]:hover{background-color:#3ca5ea}.paginationjs.paginationjs-theme-green .paginationjs-pages li>a{color:#449d44}.paginationjs.paginationjs-theme-green .paginationjs-pages li>a:hover{background:#ebf4eb}.paginationjs.paginationjs-theme-green .paginationjs-pages li.active>a{background:#449d44;color:#fff}.paginationjs.paginationjs-theme-green .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-green .paginationjs-go-button>input[type=button]{background:#449d44;border-color:#449d44;color:#fff}.paginationjs.paginationjs-theme-yellow .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-yellow .paginationjs-pages li{border-color:#ec971f}.paginationjs.paginationjs-theme-green .paginationjs-go-button>input[type=button]:hover{background-color:#55a555}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li>a{color:#ec971f}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li>a:hover{background:#fdf5e9}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li.active>a{background:#ec971f;color:#fff}.paginationjs.paginationjs-theme-yellow .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-yellow .paginationjs-go-button>input[type=button]{background:#ec971f;border-color:#ec971f;color:#fff}.paginationjs.paginationjs-theme-red .paginationjs-go-input>input[type=text],.paginationjs.paginationjs-theme-red .paginationjs-pages li{border-color:#c9302c}.paginationjs.paginationjs-theme-yellow .paginationjs-go-button>input[type=button]:hover{background-color:#eea135}.paginationjs.paginationjs-theme-red .paginationjs-pages li>a{color:#c9302c}.paginationjs.paginationjs-theme-red .paginationjs-pages li>a:hover{background:#faeaea}.paginationjs.paginationjs-theme-red .paginationjs-pages li.active>a{background:#c9302c;color:#fff}.paginationjs.paginationjs-theme-red .paginationjs-pages li.disabled>a:hover{background:0 0}.paginationjs.paginationjs-theme-red .paginationjs-go-button>input[type=button]{background:#c9302c;border-color:#c9302c;color:#fff}.paginationjs.paginationjs-theme-red .paginationjs-go-button>input[type=button]:hover{background-color:#ce4541}.paginationjs .paginationjs-pages li.paginationjs-next{border-right:1px solid #aaa\9}.paginationjs .paginationjs-go-input>input[type=text]{line-height:28px\9;vertical-align:middle\9}.paginationjs.paginationjs-big .paginationjs-pages li>a{line-height:36px\9}.paginationjs.paginationjs-big .paginationjs-go-input>input[type=text]{height:36px\9;line-height:36px\9} \ No newline at end of file diff --git a/theme/apps/gdcmvs/lib/js/jquery-ui.min.js b/theme/apps/gdcmvs/lib/js/jquery-ui.min.js new file mode 100644 index 000000000..154404f40 --- /dev/null +++ b/theme/apps/gdcmvs/lib/js/jquery-ui.min.js @@ -0,0 +1,8 @@ +/*! jQuery UI - v1.12.1 - 2018-01-04 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/resizable.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/dialog.js, widgets/mouse.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var h=l+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,l,h=i.nodeName.toLowerCase();return"area"===h?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(h)?(r=!i.disabled,r&&(l=t(i).closest("fieldset")[0],l&&(r=!l.disabled))):r="a"===h?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),l=t.pageX,h=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(h=this.originalPageY)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)} +},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)l=s.snapElements[d].left-s.margins.left,h=l+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,l-g>_||m>h+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(l-_),r=g>=Math.abs(h-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(l-m),r=g>=Math.abs(h-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,l=this._change[o];return this._updatePrevProperties(),l?(i=l.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,l,h=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,l=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,h.animate||this.element.css(t.extend(a,{top:l,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!h.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&c&&(t.top=l-e.minHeight),n&&c&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,l={width:i.size.width-r,height:i.size.height-a},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(l,c&&h?{top:c,left:h}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,l=t(this).resizable("instance"),h=l.options,c=l.element,u=h.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(l.containerElement=t(d),/document/.test(u)||u===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=l._num(e.css("padding"+s))}),l.containerOffset=e.offset(),l.containerPosition=e.position(),l.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=l.containerOffset,n=l.containerSize.height,o=l.containerSize.width,a=l._hasScroll(d,"left")?d.scrollWidth:o,r=l._hasScroll(d)?d.scrollHeight:n,l.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,l=a.containerOffset,h=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=l),h.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?l.left:0),h.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?l.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-l.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-l.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),l=a.outerWidth()-e.sizeDiff.width,h=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,l="number"==typeof s.grid?[s.grid,s.grid]:s.grid,h=l[0]||1,c=l[1]||1,u=Math.round((n.width-o.width)/h)*h,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=l,_&&(p+=h),v&&(f+=c),g&&(p-=h),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-h)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-h>0?(i.size.width=p,i.position.left=a.left-u):(p=h-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable;var o=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var l=n[s]("widget");t.data(l[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(l[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var a=i.options.classes[n]||"";a=t.trim(a.replace(o,"")),s[n]=(a+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length +}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),l=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(l>=0?"+":"")+l,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog}); \ No newline at end of file diff --git a/theme/apps/gdcmvs/lib/js/jsrender.min.js b/theme/apps/gdcmvs/lib/js/jsrender.min.js new file mode 100644 index 000000000..1c0437c82 --- /dev/null +++ b/theme/apps/gdcmvs/lib/js/jsrender.min.js @@ -0,0 +1,4 @@ +/*! JsRender v0.9.90 (Beta): http://jsviews.com/#jsrender */ +/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */ +!function(e,t){var n=t.jQuery;"object"==typeof exports?module.exports=n?e(t,n):function(n){if(n&&!n.fn)throw"Provide jQuery or null";return e(t,n)}:"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t,!1)}(function(e,t){"use strict";function n(e,t){return function(){var n,r=this,i=r.base;return r.base=e,n=t.apply(r,arguments),r.base=i,n}}function r(e,t){return ne(t)&&(t=n(e?e._d?e:n(a,e):a,t),t._d=1),t}function i(e,t){var n,i=t.props;for(n in i)!Ee.test(n)||e[n]&&e[n].fix||(e[n]="convert"!==n?r(e.constructor.prototype[n],i[n]):i[n])}function o(e){return e}function a(){return""}function s(e){try{throw console.log("JsRender dbg breakpoint: "+e),"dbg breakpoint"}catch(t){}return this.base?this.baseApply(arguments):e}function d(e){this.name=(t.link?"JsViews":"JsRender")+" Error",this.message=e||this.name}function l(e,t){if(e){for(var n in t)e[n]=t[n];return e}}function u(e,t,n){return e?re(e)?u.apply(ee,e):(le.delimiters=[e,t,he=n?n.charAt(0):he],ce=e.charAt(0),fe=e.charAt(1),ge=t.charAt(0),ve=t.charAt(1),e="\\"+ce+"(\\"+he+")?\\"+fe,t="\\"+ge+"\\"+ve,X="(?:(\\w+(?=[\\/\\s\\"+ge+"]))|(\\w+)?(:)|(>)|(\\*))\\s*((?:[^\\"+ge+"]|\\"+ge+"(?!\\"+ve+"))*?)",de.rTag="(?:"+X+")",X=new RegExp("(?:"+e+X+"(\\/)?|\\"+ce+"(\\"+he+")?\\"+fe+"(?:(?:\\/(\\w+))\\s*|!--[\\s\\S]*?--))"+t,"g"),de.rTmpl=new RegExp("^\\s|\\s$|<.*>|([^\\\\]|^)[{}]|"+e+".*"+t),pe):le.delimiters}function p(e,t){t||e===!0||(t=e,e=void 0);var n,r,i,o,a=this,s=!t||"root"===t;if(e){if(o=t&&a.type===t&&a,!o)if(n=a.views,a._.useKey){for(r in n)if(o=t?n[r].get(e,t):n[r])break}else for(r=0,i=n.length;!o&&r1)for(d=o.bindTo=[];s--;)d.unshift(s);p&&(p.tag=o,o.linkCtx=p),n.ctx=Q(n.ctx,(p?p.view:t).ctx),i(o,n)}o._er=r&&a,o.ctx=n.ctx||o.ctx||{},n.ctx=void 0,a=o.cvtArgs()[0]}return a=u&&t._.onRender?t._.onRender(a,t,o):a,void 0!=a?a:""}function m(e,t){var n,r,i,o,a,s,d,l=this;if(l.tagName?(s=l,l=s.tagCtxs?s.tagCtxs[t||0]:s.tagCtx):s=l.tag,a=s.bindTo,o=l.args,(d=s.convert)&&""+d===d&&(d="true"===d?void 0:l.view.getRsc("converters",d)||I("Unknown converter: '"+d+"'")),e&&e.length)o=e;else if(d&&!e&&(o=o.slice()),a){for(i=[],n=a.length;n--;)r=a[n],i.unshift(w(l,r));e&&(o=i)}if(d)if(a=a||[0],n=a.length,d=d.apply(s,i||o),re(d)&&d.length===n||(d=[d],a=[0],n=1),e)o=d;else for(;n--;)r=a[n],+r===r&&(o[r]=d[n]);return o}function w(e,t){return e=e[+t===t?"args":"props"],e&&e[t]}function x(e){return this.cvtArgs(!0,e)}function _(e,t){var n,r,i=this;if(""+t===t){for(;void 0===n&&i;)r=i.tmpl&&i.tmpl[e],n=r&&r[t],i=i.parent;return n||ee[e][t]}}function b(e,t,n,r,o,a){function s(e){var t;(t=d[e])&&(d[e]=t=re(t)?t:[t],E!==t.length&&I(e+" length not same as bindTo "))}t=t||Y;var d,l,u,p,c,f,g,v,h,m,x,_,b,y,k,C,T,j,A,R,V,$,E,M=0,N="",P=t.linkCtx||0,O=t.ctx,U=n||t.tmpl,q="number"==typeof r&&t.tmpl.bnds[r-1];for("tag"===e._is?(d=e,e=d.tagName,r=d.tagCtxs,u=d.template):(l=t.getRsc("tags",e)||I("Unknown tag: {{"+e+"}} "),u=l.template),void 0===a&&q&&(q._lr=(l.lateRender||q._lr)&&"false"!==q._lr)&&(a=""),void 0!==a?(N+=a,r=a=[{props:{},args:[],params:{}}]):q&&(r=q(t.data,t,de)),g=r.length;M0&&(a=n)){if(!a)if(/^\.\/[^\\:*?"<>]*$/.test(n))(s=ie[e=e||n])?n=s:a=document.getElementById(n);else if(t.fn&&!de.rTmpl.test(n))try{a=t(n,document)[0]}catch(d){}a&&(i?n=a.innerHTML:(o=a.getAttribute(Oe),o&&(o!==Ue?(n=ie[o],delete ie[o]):t.fn&&(n=t.data(a)[Ue])),o&&n||(e=e||(t.fn?Ue:n),n=j(e,a.innerHTML,r,i)),n.tmplName=e=e||o,e!==Ue&&(ie[e]=n),a.setAttribute(Oe,e),t.fn&&t.data(a,Ue,n))),a=void 0}else n.fn||(n=void 0);return n}var a,s,d=n=n||"";if(de._html=oe.html,0===i&&(i=void 0,d=o(d)),i=i||(n.markup?n:{}),i.tmplName=e,r&&(i._parentTmpl=r),!d&&n.markup&&(d=o(n.markup))&&d.fn&&(d=d.markup),void 0!==d)return d.fn||n.fn?d.fn&&(s=d):(n=$(d,i),U(d.replace(Te,"\\$&"),n)),s||(s=l(function(){return s.render.apply(s,arguments)},n),k(s)),s}function A(e,t){return ne(e)?e.call(t):e}function R(e){for(var t=[],n=0,r=e.length;nS-(I||0))){if(I=F.slice(I,S+r.length),q!==!0)if(J=o||p[g-1].bd,K=J[J.length-1],K&&K.prm){for(;K.sb&&K.sb.prm;)K=K.sb;B=K.sb={path:K.sb,bnd:K.bnd}}else J.push(B={path:J.pop()});E=fe+":"+I+" onerror=''"+ge,q=f[E],q||(f[E]=!0,f[E]=q=U(E,n,!0)),q!==!0&&B&&(B._cpfn=q,B.prm=u.bd,B.bnd=B.bnd||B.path&&B.path.indexOf("^")>=0)}return d?(d=!R,d?r:A+'"'):s?(s=!V,s?r:A+'"'):(w?(h[g]=S++,u=p[++g]={bd:[]},w):"")+(N?g?"":(c=F.slice(c,S),(i?(i=a=o=!1,"\b"):"\b,")+c+(c=S+r.length,l&&t.push(u.bd=[]),"\b")):k?(g&&O(e),l&&t.pop(),i=_,a=x,c=S+r.length,l&&(l=u.bd=t[i]=[],l.skp=!x),_+":"):_?_.split("^").join(".").replace(be,P)+(T?(u=p[++g]={bd:[]},v[g]=L,T):b):b?b:$?($=v[g]||$,v[g]=!1,u=p[--g],$+(T?(u=p[++g],v[g]=L,T):"")):j?(v[g]||O(e),","):m?"":(d=R,s=V,'"'))}O(e)}var i,o,a,s,d,l=t&&t[0],u={bd:l},p={0:u},c=0,f=(n?n.links:l&&(l.links=l.links||{}))||Y.tmpl.links,g=0,v={},h={},m=(e+(n?" ":"")).replace(ye,r);return!g&&m||O(e)}function L(e,t,n){var r,i,o,a,s,d,l,u,p,c,f,g,v,h,m,w,x,_,b,y,k,C,T,j,A,R,V,E,M,N,S,F=0,P=ue.useViews||t.useViews||t.tags||t.templates||t.helpers||t.converters,I="",U={},J=e.length;for(""+t===t?(_=n?'data-link="'+t.replace(ke," ").slice(1,-1)+'"':t,t=0):(_=t.tmplName||"unnamed",t.allowCode&&(U.allowCode=!0),t.debug&&(U.debug=!0),f=t.bnds,x=t.tmpls),r=0;r":a+o):(k&&(b=$(C,U),b.tmplName=_+"/"+o,b.useViews=b.useViews||P,L(k,b),P=b.useViews,x.push(b)),A||(y=o,P=P||o&&(!se[o]||!se[o].flow),j=I,I=""),T=e[r+1],T=T&&"else"===T[0]),M=E?";\ntry{\nret+=":"\n+",h="",m="",R&&(g||N||a&&a!==Pe||S)){if(V=new Function("data,view,j,u","// "+_+" "+ ++F+" "+o+"\nreturn {"+s+"};"),V._er=E,V._tag=o,V._bd=!!g,V._lr=S,n)return V;q(V,g),w='c("'+a+'",view,',c=!0,h=w+F+",",m=")"}if(I+=R?(n?(E?"try{\n":"")+"return ":M)+(c?(c=void 0,P=p=!0,w+(V?(f[F-1]=V,F):"{"+s+"}")+")"):">"===o?(l=!0,"h("+v[0]+")"):(u=!0,"((v="+v[0]+")!=null?v:"+(n?"null)":'"")'))):(d=!0,"\n{view:view,tmpl:"+(k?x.length:"0")+","+s+"},"),y&&!T){if(I="["+I.slice(0,-1)+"]",w='t("'+y+'",view,this,',n||g){if(I=new Function("data,view,j,u"," // "+_+" "+F+" "+y+"\nreturn "+I+";"),I._er=E,I._tag=y,g&&q(f[F-1]=I,g),I._lr=S,n)return I;h=w+F+",undefined,",m=")"}I=j+M+w+(I.deps&&F||I)+")",g=0,y=0}E&&!T&&(P=!0,I+=";\n}catch(e){ret"+(n?"urn ":"+=")+h+"j._err(e,view,"+E+")"+m+";}"+(n?"":"ret=ret"))}I="// "+_+"\nvar v"+(d?",t=j._tag":"")+(p?",c=j._cnvt":"")+(l?",h=j._html":"")+(n?";\n":',ret=""\n')+(U.debug?"debugger;":"")+I+(n?"\n":";\nreturn ret;");try{I=new Function("data,view,j,u",I)}catch(B){O("Compiled template code:\n\n"+I+'\n: "'+(B.message||B)+'"')}return t&&(t.fn=I,t.useViews=!!P),I}function Q(e,t){return e&&e!==t?t?l(l({},t),e):e:t&&l({},t)}function H(e){return Fe[e]||(Fe[e]="&#"+e.charCodeAt(0)+";")}function D(e){var t,n,r=[];if(typeof e===Ie)for(t in e)n=e[t],t!==te&&e.hasOwnProperty(t)&&!ne(n)&&r.push({key:t,prop:n});return r}function Z(e,n,r){var i=this.jquery&&(this[0]||I("Unknown template")),o=i.getAttribute(Oe);return S.call(o&&t.data(i)[Ue]||ie(i),e,n,r)}function z(e){return void 0!=e?$e.test(e)&&(""+e).replace(Ne,H)||e:""}var G=t===!1;t=t&&t.fn?t:e.jQuery;var W,X,Y,ee,te,ne,re,ie,oe,ae,se,de,le,ue,pe,ce,fe,ge,ve,he,me,we,xe="v0.9.90",_e="_ocp",be=/^(!*?)(?:null|true|false|\d[\d.]*|([\w$]+|\.|~([\w$]+)|#(view|([\w$]+))?)([\w$.^]*?)(?:[.[^]([\w$]+)\]?)?)$/g,ye=/(\()(?=\s*\()|(?:([([])\s*)?(?:(\^?)(!*?[#~]?[\w$.^]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*:?\/]|(=))\s*|(!*?[#~]?[\w$.^]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*(([)\]])(?=\s*[.^]|\s*$|[^([])|[)\]])([([]?))|(\s+)/g,ke=/[ \t]*(\r\n|\n|\r)/g,Ce=/\\(['"])/g,Te=/['"\\]/g,je=/(?:\x08|^)(onerror:)?(?:(~?)(([\w$_\.]+):)?([^\x08]+))\x08(,)?([^\x08]+)/gi,Ae=/^if\s/,Re=/<(\w+)[>\s]/,Ve=/[\x00`><"'&=]/g,$e=/[\x00`><\"'&=]/,Ee=/^on[A-Z]|^convert(Back)?$/,Me=/^\#\d+_`[\s\S]*\/\d+_`$/,Ne=Ve,Se=0,Fe={"&":"&","<":"<",">":">","\0":"�","'":"'",'"':""","`":"`","=":"="},Pe="html",Ie="object",Oe="data-jsv-tmpl",Ue="jsvTmpl",qe="For #index in nested block use #getIndex().",Je={},Ke=e.jsrender,Be=Ke&&t&&!t.render,Le={template:{compile:j},tag:{compile:C},viewModel:{compile:V},helper:{},converter:{}};if(ee={jsviews:xe,sub:{View:y,Err:d,tmplFn:U,parse:B,extend:l,extendCtx:Q,syntaxErr:O,onStore:{template:function(e,t){null===t?delete Je[e]:Je[e]=t}},addSetting:M,settings:{allowCode:!1},advSet:a,_ths:i,_gm:r,_tg:function(){},_cnvt:h,_tag:b,_er:I,_err:P,_cp:o,_sq:function(e){return"constructor"===e&&O(""),e}},settings:{delimiters:u,advanced:function(e){return e?(l(ue,e),de.advSet(),pe):ue}},map:N},(d.prototype=new Error).constructor=d,c.depends=function(){return[this.get("item"),"index"]},f.depends="index",y.prototype={get:p,getIndex:f,getRsc:_,getTmpl:v,ctxPrm:g,_is:"view"},de=ee.sub,pe=ee.settings,!(Ke||t&&t.render)){for(W in Le)E(W,Le[W]);oe=ee.converters,ae=ee.helpers,se=ee.tags,de._tg.prototype={baseApply:T,cvtArgs:m,bndArgs:x,ctxPrm:g},Y=de.topView=new y,t?(t.fn.render=Z,te=t.expando,t.observable&&(l(de,t.views.sub),ee.map=t.views.map)):(t={},G&&(e.jsrender=t),t.renderFile=t.__express=t.compile=function(){throw"Node.js: use npm jsrender, or jsrender-node.js"},t.isFunction=function(e){return"function"==typeof e},t.isArray=Array.isArray||function(e){return"[object Array]"==={}.toString.call(e)},de._jq=function(e){e!==t&&(l(e,t),t=e,t.fn.render=Z,delete t.jsrender,te=t.expando)},t.jsrender=xe),le=de.settings,le.allowCode=!1,ne=t.isFunction,t.render=Je,t.views=ee,t.templates=ie=ee.templates;for(me in le)M(me);(pe.debugMode=function(e){return void 0===e?le.debugMode:(le.debugMode=e,le.onError=e+""===e?new Function("","return '"+e+"';"):ne(e)?e:void 0,pe)})(!1),ue=le.advanced={useViews:!1,_jsv:!1},se({"if":{render:function(e){var t=this,n=t.tagCtx,r=t.rendering.done||!e&&(arguments.length||!n.index)?"":(t.rendering.done=!0,void(t.selected=n.index));return r},contentCtx:!0,flow:!0},"for":{render:function(e){var t,n=!arguments.length,r=this,i=r.tagCtx,o="",a=0;return r.rendering.done||(t=n?i.view.data:e,void 0!==t&&(o+=i.render(t,n),a+=re(t)?t.length:1),(r.rendering.done=a)&&(r.selected=i.index)),o},flow:!0},props:{baseTag:"for",dataMap:N(D),flow:!0},include:{flow:!0},"*":{render:o,flow:!0},":*":{render:o,flow:!0},dbg:ae.dbg=oe.dbg=s}),oe({html:z,attr:z,url:function(e){return void 0!=e?encodeURI(""+e):null===e?e:""}})}return le=de.settings,re=(t||Ke).isArray,pe.delimiters("{{","}}","^"),Be&&Ke.views.sub._jq(t),t||Ke},window); +//# sourceMappingURL=jsrender.min.js.map diff --git a/theme/apps/gdcmvs/lib/js/jsrender.min.js.map b/theme/apps/gdcmvs/lib/js/jsrender.min.js.map new file mode 100644 index 000000000..e857189bc --- /dev/null +++ b/theme/apps/gdcmvs/lib/js/jsrender.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["jsrender.js"],"names":["factory","global","$","jQuery","exports","module","fn","define","amd","getDerivedMethod","baseMethod","method","ret","tag","this","prevBase","base","apply","arguments","getMethod","$isFunction","_d","noop","tagHandlersFromProps","tagCtx","prop","props","rHasHandlers","test","fix","constructor","prototype","retVal","val","dbgBreak","console","log","e","baseApply","JsViewsError","message","name","link","$extend","target","source","$viewsDelimiters","openChars","closeChars","$isArray","$views","$subSettings","delimiters","linkChar","charAt","delimOpenChar0","delimOpenChar1","delimCloseChar0","delimCloseChar1","rTag","$sub","RegExp","rTmpl","$viewsSettings","getView","inner","type","undefined","views","i","l","found","view","root","_","useKey","get","length","parent","getNestedIndex","index","getIndex","contextParameter","key","value","isContextCb","wrapped","deps","res","obsCtxPrm","storeView","isUpdate","isRenderCall","store","ctx","$helpers","it","linked","_cxp","scope","isTop","_ocps","_crcp","_ucp","_ceo","_ocp","unshift","cvtArgs","tagElse","ind","data","_vw","getTemplate","tmpl","getRsc","$templates","convertVal","converter","onError","argsLen","bindTo","boundTag","bnds","linkCtx","_lr","args","_bd","_tg","bnd","unlinked","inline","tagName","convert","flow","extendCtx","_er","onRender","convertArgs","bound","boundArgs","tagCtxs","error","slice","argOrProp","context","convertBoundArgs","getResource","resourceType","itemName","renderTag","parentView","makeArray","linkedElement","bindToLength","topView","tagDef","template","tags","attr","parentTag","m","itemRet","tagCtxCtx","ctxPrm","content","callInit","mapDef","thisMap","tagDataMap","contentCtx","parentTmpl","_is","lateRender","params","tmpls","render","renderContent","getTmpl","_ctr","init","dataMap","arrVws","dataBoundOnly","map","parents","parentTags","rendering","argDefault","isNaN","parseInt","noVws","HTML","linkedCtxParam","_cp","src","unmap","tgt","rWrappedInViewMarker","links","renderWithViews","$converters","html","View","contentTmpl","parentView_","self_","self","isArray","id","viewId","scp","indexStr","push","splice","compileChildResources","storeName","storeNames","resources","jsvStores","compileTag","Tag","baseTag","compiledDef","depends","$tags","_parentTmpl","compileTmpl","options","lookupTemplate","currentName","nodeType","elem","document","getElementById","innerHTML","getAttribute","tmplAttr","jsvTmpl","tmplName","setAttribute","compiledTmpl","tmplOrMarkup","_html","markup","tmplObject","tmplFn","replace","rEscapeQuotes","getDefaultVal","defaultVal","call","unmapArray","modelArr","arr","compileViewModel","GetNew","vm","iterate","action","getterType","ob","j","g","getters","getter","viewModels","JSON","parse","merge","viewModel","$expando","getterNames","mod","assigned","newModArr","k","model","$observable","refresh","concat","extend","proto","body","observable","privField","setProperty","set","Function","htmlTag","wrapMap","$subSettingsAdvanced","_wm","rFirstElem","exec","toLowerCase","div","trim","registerStore","storeSettings","theStore","item","compile","thisStore","onStore","OBJECT","getTgt","addSetting","st","Map","baseMap","noIteration","isTopRenderCall","prevData","prevIndex","result","useViews","setItemVar","newCtx","itemVar","newView","childView","itemResult","swapContent","outerOnRender","_wrp","syntaxError","helpers","contentView","onRenderError","fallback","Err","isLinkExpr","convertBack","hasElse","pushprecedingContent","shift","loc","substr","rNewLine","blockTagCheck","block","parseTag","all","bind","colon","codeTag","slash","bind2","closeBlock","late","pathBindings","ctxProps","paramsArgs","paramsProps","paramsCtxProps","useTrigger","allowCode","rUnescapeQuotes","rTestElseIf","current","substring","stack","pop","parseParams","rBuildHash","onerror","isCtx","keyToken","keyValue","arg","param","hasHandlers","newNode","parsedParam","bindings","astTop","buildCode","setPaths","pathsArr","paths","hasOwnProperty","skp","paramStructure","parts","parseTokens","lftPrn0","lftPrn","path","operator","err","eq","path2","prn","comma","lftPrn2","apos","quot","rtPrn","rtPrnDot","prn2","space","full","parsePath","allPath","not","object","helper","viewProperty","pathTokens","leafToken","subPath","binds","named","bindto","_jsvto","bndCtx","bd","theOb","_cpfn","sb","pathStart","parenDepth","expr","exprFn","newOb","rtSq","aposed","quoted","boundName","bndStack","prm","tmplLinks","indexOf","paramIndex","split","join","rPath","fnCall","0","rParams","ast","node","hasTag","hasEncoder","getsVal","hasCnvt","useCnvt","tmplBindings","boundOnErrStart","boundOnErrEnd","tagRender","nestedTmpls","nestedTmpl","tagAndElses","nextIsElse","oldCode","isElse","isGetVal","tagCtxFn","tagStart","trigger","tmplBindingKey","templates","converters","code","tmplOptions","debug","debugMode","_tag","parentContext","getCharEntity","ch","charEntities","charCodeAt","getTargetProps","$fnRender","tmplElem","jquery","htmlEncode","text","rIsHtml","rHtmlEncode","setGlobals","jsvStoreName","setting","versionNumber","rAttrEncode","&","<",">","\u0000","'","\"","`","=","$render","jsr","jsrender","jsrToJq","jsviews","sub","syntaxErr","settings","advSet","_ths","_gm","_cnvt","_err","_sq","token","advanced","Error","bndArgs","expando","renderFile","__express","isFunction","Array","obj","_jq","jq","_jsv","if","done","selected","for","finalElse","include","*",":*","dbg","url","encodeURI","window"],"mappings":"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","file":"jsrender.min.js","sourcesContent":["/*! JsRender v0.9.90 (Beta): http://jsviews.com/#jsrender */\n/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */\n/*\n * Best-of-breed templating in browser or on Node.js.\n * Does not require jQuery, or HTML DOM\n * Integrates with JsViews (http://jsviews.com/#jsviews)\n *\n * Copyright 2017, Boris Moore\n * Released under the MIT License.\n */\n\n//jshint -W018, -W041, -W120\n\n(function(factory, global) {\n\t// global var is the this object, which is window when running in the usual browser environment\n\tvar $ = global.jQuery;\n\n\tif (typeof exports === \"object\") { // CommonJS e.g. Browserify\n\t\tmodule.exports = $\n\t\t\t? factory(global, $)\n\t\t\t: function($) { // If no global jQuery, take optional jQuery passed as parameter: require('jsrender')(jQuery)\n\t\t\t\tif ($ && !$.fn) {\n\t\t\t\t\tthrow \"Provide jQuery or null\";\n\t\t\t\t}\n\t\t\t\treturn factory(global, $);\n\t\t\t};\n\t} else if (typeof define === \"function\" && define.amd) { // AMD script loader, e.g. RequireJS\n\t\tdefine(function() {\n\t\t\treturn factory(global);\n\t\t});\n\t} else { // Browser using plain {% endif %} + {% if current_page.title == config.extra.gdcmvs_viewer_page_id %} + + + + + + {% endif %}